1972 lines
78 KiB
C
1972 lines
78 KiB
C
|
/*
|
||
|
* vfw.h Video for Windows (VfW) functions
|
||
|
*
|
||
|
* =========================================================================
|
||
|
*
|
||
|
* Open Watcom Project
|
||
|
*
|
||
|
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
|
||
|
*
|
||
|
* This file is automatically generated. Do not edit directly.
|
||
|
*
|
||
|
* =========================================================================
|
||
|
*/
|
||
|
|
||
|
#ifndef _INC_VFW
|
||
|
#define _INC_VFW
|
||
|
|
||
|
#ifndef _ENABLE_AUTODEPEND
|
||
|
#pragma read_only_file;
|
||
|
#endif
|
||
|
|
||
|
#include <mmsystem.h>
|
||
|
#include <mmreg.h>
|
||
|
#include <ole2.h>
|
||
|
#include <msacm.h>
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/* VfW calling conventions */
|
||
|
#define VFWAPI WINAPI
|
||
|
#define VFWAPIV WINAPIV
|
||
|
|
||
|
/* VfW handle data types */
|
||
|
DECLARE_HANDLE( HIC );
|
||
|
DECLARE_HANDLE( HVIDEO );
|
||
|
|
||
|
/* VfW pointer to handle data types */
|
||
|
typedef HVIDEO *LPHVIDEO;
|
||
|
|
||
|
/* VfW primitive data types */
|
||
|
typedef HANDLE HDRAWDIB;
|
||
|
typedef WORD TWOCC;
|
||
|
|
||
|
/* Installable compression version */
|
||
|
#define ICVERSION 0x0104
|
||
|
|
||
|
/* Bitmap compression type */
|
||
|
#define BI_1632 0x32333631
|
||
|
|
||
|
/* Macro to make a TWOCC value */
|
||
|
#define aviTWOCC( p1, p2 ) ((WORD)(BYTE)(p1) | ((WORD)(BYTE)(p2) << 8))
|
||
|
|
||
|
/* Installable compression types */
|
||
|
#define ICTYPE_VIDEO mmioFOURCC( 'v', 'i', 'd', 'c' )
|
||
|
#define ICTYPE_AUDIO mmioFOURCC( 'a', 'u', 'd', 'c' )
|
||
|
|
||
|
/* Installable compression errors */
|
||
|
#define ICERR_OK 0L
|
||
|
#define ICERR_DONTDRAW 1L
|
||
|
#define ICERR_NEWPALETTE 2L
|
||
|
#define ICERR_GOTOKEYFRAME 3L
|
||
|
#define ICERR_STOPDRAWING 4L
|
||
|
#define ICERR_UNSUPPORTED (-1L)
|
||
|
#define ICERR_BADFORMAT (-2L)
|
||
|
#define ICERR_MEMORY (-3L)
|
||
|
#define ICERR_INTERNAL (-4L)
|
||
|
#define ICERR_BADFLAGS (-5L)
|
||
|
#define ICERR_BADPARAM (-6L)
|
||
|
#define ICERR_BADSIZE (-7L)
|
||
|
#define ICERR_BADHANDLE (-8L)
|
||
|
#define ICERR_CANTUPDATE (-9L)
|
||
|
#define ICERR_ABORT (-10L)
|
||
|
#define ICERR_ERROR (-100L)
|
||
|
#define ICERR_BADBITDEPTH (-200L)
|
||
|
#define ICERR_BADIMAGESIZE (-201L)
|
||
|
#define ICERR_CUSTOM (-400L)
|
||
|
|
||
|
/* ICOpen() flags */
|
||
|
#define ICMODE_COMPRESS 1
|
||
|
#define ICMODE_DECOMPRESS 2
|
||
|
#define ICMODE_FASTDECOMPRESS 3
|
||
|
#define ICMODE_QUERY 4
|
||
|
#define ICMODE_FASTCOMPRESS 5
|
||
|
#define ICMODE_DRAW 8
|
||
|
|
||
|
/* AVI file index flags */
|
||
|
#define AVIIF_LIST 0x00000001L
|
||
|
#define AVIIF_TWOCC 0x00000002L
|
||
|
#define AVIIF_KEYFRAME 0x00000010L
|
||
|
|
||
|
/* Installable compression quality values */
|
||
|
#define ICQUALITY_LOW 0
|
||
|
#define ICQUALITY_HIGH 10000
|
||
|
#define ICQUALITY_DEFAULT (-1)
|
||
|
|
||
|
/* Installable compression messages */
|
||
|
#define ICM_USER (DRV_USER + 0x0000)
|
||
|
#define ICM_RESERVED_LOW (DRV_USER + 0x1000)
|
||
|
#define ICM_RESERVED_HIGH (DRV_USER + 0x2000)
|
||
|
#define ICM_RESERVED ICM_RESERVED_LOW
|
||
|
#define ICM_GETSTATE (ICM_RESERVED + 0)
|
||
|
#define ICM_SETSTATE (ICM_RESERVED + 1)
|
||
|
#define ICM_GETINFO (ICM_RESERVED + 2)
|
||
|
#define ICM_CONFIGURE (ICM_RESERVED + 10)
|
||
|
#define ICM_ABOUT (ICM_RESERVED + 11)
|
||
|
#define ICM_GETERRORTEXT (ICM_RESERVED + 12)
|
||
|
#define ICM_GETFORMATNAME (ICM_RESERVED + 20)
|
||
|
#define ICM_ENUMFORMATS (ICM_RESERVED + 21)
|
||
|
#define ICM_GETDEFAULTQUALITY (ICM_RESERVED + 30)
|
||
|
#define ICM_GETQUALITY (ICM_RESERVED + 31)
|
||
|
#define ICM_SETQUALITY (ICM_RESERVED + 32)
|
||
|
#define ICM_SET (ICM_RESERVED + 40)
|
||
|
#define ICM_GET (ICM_RESERVED + 41)
|
||
|
|
||
|
/* Installable compression specific messages */
|
||
|
#define ICM_COMPRESS_GET_FORMAT (ICM_USER + 4)
|
||
|
#define ICM_COMPRESS_GET_SIZE (ICM_USER + 5)
|
||
|
#define ICM_COMPRESS_QUERY (ICM_USER + 6)
|
||
|
#define ICM_COMPRESS_BEGIN (ICM_USER + 7)
|
||
|
#define ICM_COMPRESS (ICM_USER + 8)
|
||
|
#define ICM_COMPRESS_END (ICM_USER + 9)
|
||
|
#define ICM_DECOMPRESS_GET_FORMAT (ICM_USER + 10)
|
||
|
#define ICM_DECOMPRESS_QUERY (ICM_USER + 11)
|
||
|
#define ICM_DECOMPRESS_BEGIN (ICM_USER + 12)
|
||
|
#define ICM_DECOMPRESS (ICM_USER + 13)
|
||
|
#define ICM_DECOMPRESS_END (ICM_USER + 14)
|
||
|
#define ICM_DECOMPRESS_SET_PALETTE (ICM_USER + 29)
|
||
|
#define ICM_DECOMPRESS_GET_PALETTE (ICM_USER + 30)
|
||
|
#define ICM_DRAW_QUERY (ICM_USER + 31)
|
||
|
#define ICM_DRAW_BEGIN (ICM_USER + 15)
|
||
|
#define ICM_DRAW_GET_PALETTE (ICM_USER + 16)
|
||
|
#define ICM_DRAW_UPDATE (ICM_USER + 17)
|
||
|
#define ICM_DRAW_START (ICM_USER + 18)
|
||
|
#define ICM_DRAW_STOP (ICM_USER + 19)
|
||
|
#define ICM_DRAW_BITS (ICM_USER + 20)
|
||
|
#define ICM_DRAW_END (ICM_USER + 21)
|
||
|
#define ICM_DRAW_GETTIME (ICM_USER + 32)
|
||
|
#define ICM_DRAW (ICM_USER + 33)
|
||
|
#define ICM_DRAW_WINDOW (ICM_USER + 34)
|
||
|
#define ICM_DRAW_SETTIME (ICM_USER + 35)
|
||
|
#define ICM_DRAW_REALIZE (ICM_USER + 36)
|
||
|
#define ICM_DRAW_FLUSH (ICM_USER + 37)
|
||
|
#define ICM_DRAW_RENDERBUFFER (ICM_USER + 38)
|
||
|
#define ICM_DRAW_START_PLAY (ICM_USER + 39)
|
||
|
#define ICM_DRAW_STOP_PLAY (ICM_USER + 40)
|
||
|
#define ICM_DRAW_SUGGESTFORMAT (ICM_USER + 50)
|
||
|
#define ICM_DRAW_CHANGEPALETTE (ICM_USER + 51)
|
||
|
#define ICM_DRAW_IDLE (ICM_USER + 52)
|
||
|
#define ICM_GETBUFFERSWANTED (ICM_USER + 41)
|
||
|
#define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER + 42)
|
||
|
#define ICM_DECOMPRESSEX_BEGIN (ICM_USER + 60)
|
||
|
#define ICM_DECOMPRESSEX_QUERY (ICM_USER + 61)
|
||
|
#define ICM_DECOMPRESSEX (ICM_USER + 62)
|
||
|
#define ICM_DECOMPRESSEX_END (ICM_USER + 63)
|
||
|
#define ICM_COMPRESS_FRAMES_INFO (ICM_USER + 70)
|
||
|
#define ICM_COMPRESS_FRAMES (ICM_USER + 71)
|
||
|
#define ICM_SET_STATUS_PROC (ICM_USER + 72)
|
||
|
|
||
|
/* ICM_SET constants */
|
||
|
#define ICM_FRAMERATE mmioFOURCC( 'F', 'r', 'm', 'R' )
|
||
|
#define ICM_KEYFRAMERATE mmioFOURCC( 'K', 'e', 'y', 'R' )
|
||
|
|
||
|
/* Installable compression information flags */
|
||
|
#define VIDCF_QUALITY 0x00000001L
|
||
|
#define VIDCF_CRUNCH 0x00000002L
|
||
|
#define VIDCF_TEMPORAL 0x00000004L
|
||
|
#define VIDCF_COMPRESSFRAMES 0x00000008L
|
||
|
#define VIDCF_DRAW 0x00000010L
|
||
|
#define VIDCF_FASTTEMPORALC 0x00000020L
|
||
|
#define VIDCF_FASTTEMPORALD 0x00000080L
|
||
|
|
||
|
/* ICCompress() flags */
|
||
|
#define ICCOMPRESS_KEYFRAME 0x00000001L
|
||
|
|
||
|
/* ICCompressFrames() flags */
|
||
|
#define ICCOMPRESSFRAMES_PADDING 0x00000001L
|
||
|
|
||
|
/* ICStatus() callback messages */
|
||
|
#define ICSTATUS_START 0
|
||
|
#define ICSTATUS_STATUS 1
|
||
|
#define ICSTATUS_END 2
|
||
|
#define ICSTATUS_ERROR 3
|
||
|
#define ICSTATUS_YIELD 4
|
||
|
|
||
|
/* ICDecompress() flags */
|
||
|
#define ICDECOMPRESS_HURRYUP 0x80000000L
|
||
|
#define ICDECOMPRESS_UPDATE 0x40000000L
|
||
|
#define ICDECOMPRESS_PREROLL 0x20000000L
|
||
|
#define ICDECOMPRESS_NULLFRAME 0x10000000L
|
||
|
#define ICDECOMPRESS_NOTKEYFRAME 0x08000000L
|
||
|
|
||
|
/* ICDrawBegin() flags */
|
||
|
#define ICDRAW_QUERY 0x00000001L
|
||
|
#define ICDRAW_FULLSCREEN 0x00000002L
|
||
|
#define ICDRAW_HDC 0x00000004L
|
||
|
#define ICDRAW_ANIMATE 0x00000008L
|
||
|
#define ICDRAW_CONTINUE 0x00000010L
|
||
|
#define ICDRAW_MEMORYDC 0x00000020L
|
||
|
#define ICDRAW_UPDATING 0x00000040L
|
||
|
#define ICDRAW_RENDER 0x00000080L
|
||
|
#define ICDRAW_BUFFER 0x00000100L
|
||
|
|
||
|
/* ICDraw() flags */
|
||
|
#define ICDRAW_HURRYUP 0x80000000L
|
||
|
#define ICDRAW_UPDATE 0x40000000L
|
||
|
#define ICDRAW_PREROLL 0x20000000L
|
||
|
#define ICDRAW_NULLFRAME 0x10000000L
|
||
|
#define ICDRAW_NOTKEYFRAME 0x08000000L
|
||
|
|
||
|
/* ICInstall() flags */
|
||
|
#define ICINSTALL_UNICODE 0x8000
|
||
|
#define ICINSTALL_FUNCTION 0x0001
|
||
|
#define ICINSTALL_DRIVER 0x0002
|
||
|
#define ICINSTALL_HDRV 0x0004
|
||
|
#define ICINSTALL_DRIVERW 0x8002
|
||
|
|
||
|
/* Installable compression manager query flags */
|
||
|
#define ICMF_CONFIGURE_QUERY 0x00000001
|
||
|
#define ICMF_ABOUT_QUERY 0x00000001
|
||
|
|
||
|
/* Compressor variables flags */
|
||
|
#define ICMF_COMPVARS_VALID 0x00000001L
|
||
|
|
||
|
/* ICCompressorChoose() flags */
|
||
|
#define ICMF_CHOOSE_KEYFRAME 0x0001
|
||
|
#define ICMF_CHOOSE_DATARATE 0x0002
|
||
|
#define ICMF_CHOOSE_PREVIEW 0x0004
|
||
|
#define ICMF_CHOOSE_ALLCOMPRESSORS 0x0008
|
||
|
|
||
|
/* Draw DIB flags */
|
||
|
#define DDF_UPDATE 0x0002
|
||
|
#define DDF_SAME_HDC 0x0004
|
||
|
#define DDF_SAME_DRAW 0x0008
|
||
|
#define DDF_DONTDRAW 0x0010
|
||
|
#define DDF_ANIMATE 0x0020
|
||
|
#define DDF_BUFFER 0x0040
|
||
|
#define DDF_JUSTDRAWIT 0x0080
|
||
|
#define DDF_FULLSCREEN 0x0100
|
||
|
#define DDF_BACKGROUNDPAL 0x0200
|
||
|
#define DDF_NOTKEYFRAME 0x0400
|
||
|
#define DDF_HURRYUP 0x0800
|
||
|
#define DDF_HALFTONE 0x1000
|
||
|
#define DDF_PREROLL DDF_DONTDRAW
|
||
|
#define DDF_SAME_DIB DDF_SAME_DRAW
|
||
|
#define DDF_SAME_SIZE DDF_SAME_DRAW
|
||
|
|
||
|
/* DrawDibProfileDisplay() flags */
|
||
|
#define PD_CAN_DRAW_DIB 0x0001
|
||
|
#define PD_CAN_STRETCHDIB 0x0002
|
||
|
#define PD_STRETCHDIB_1_1_OK 0x0004
|
||
|
#define PD_STRETCHDIB_1_2_OK 0x0008
|
||
|
#define PD_STRETCHDIB_1_N_OK 0x0010
|
||
|
|
||
|
/* Form, list, and chunk types */
|
||
|
#define formtypeAVI mmioFOURCC( 'A', 'V', 'I', ' ' )
|
||
|
#define listtypeAVIHEADER mmioFOURCC( 'h', 'd', 'r', 'l' )
|
||
|
#define ckidAVIMAINHDR mmioFOURCC( 'a', 'v', 'i', 'h' )
|
||
|
#define listtypeSTREAMHEADER mmioFOURCC( 's', 't', 'r', 'l' )
|
||
|
#define ckidSTREAMHEADER mmioFOURCC( 's', 't', 'r', 'h' )
|
||
|
#define ckidSTREAMFORMAT mmioFOURCC( 's', 't', 'r', 'f' )
|
||
|
#define ckidSTREAMHANDLERDATA mmioFOURCC( 's', 't', 'r', 'd' )
|
||
|
#define ckidSTREAMNAME mmioFOURCC( 's', 't', 'r', 'n' )
|
||
|
#define listtypeAVIMOVIE mmioFOURCC( 'm', 'o', 'v', 'i' )
|
||
|
#define listtypeAVIRECORD mmioFOURCC( 'r', 'e', 'c', ' ' )
|
||
|
#define ckidAVINEWINDEX mmioFOURCC( 'i', 'd', 'x', '1' )
|
||
|
#define ckidAVIPADDING mmioFOURCC( 'J', 'U', 'N', 'K' )
|
||
|
|
||
|
/* Stream types */
|
||
|
#define streamtypeVIDEO mmioFOURCC( 'v', 'i', 'd', 's' )
|
||
|
#define streamtypeAUDIO mmioFOURCC( 'a', 'u', 'd', 's' )
|
||
|
#define streamtypeMIDI mmioFOURCC( 'm', 'i', 'd', 's' )
|
||
|
#define streamtypeTEXT mmioFOURCC( 't', 'x', 't', 's' )
|
||
|
|
||
|
/* Basic chunk types */
|
||
|
#define cktypeDIBbits aviTWOCC( 'd', 'b' )
|
||
|
#define cktypeDIBcompressed aviTWOCC( 'd', 'c' )
|
||
|
#define cktypePALchange aviTWOCC( 'p', 'c' )
|
||
|
#define cktypeWAVEbytes aviTWOCC( 'w', 'b' )
|
||
|
|
||
|
/* AVI file header flags */
|
||
|
#define AVIF_HASINDEX 0x00000010L
|
||
|
#define AVIF_MUSTUSEINDEX 0x00000020L
|
||
|
#define AVIF_ISINTERLEAVED 0x00000040L
|
||
|
#define AVIF_WASCAPTUREFILE 0x00010000L
|
||
|
#define AVIF_COPYRIGHTED 0x00020000L
|
||
|
|
||
|
/* AVI header size */
|
||
|
#define AVI_HEADERSIZE 2048
|
||
|
|
||
|
/* AVI stream header flags */
|
||
|
#define AVISF_DISABLED 0x00000001L
|
||
|
#define AVISF_VIDEO_PALCHANGES 0x00010000L
|
||
|
|
||
|
/* AVI index flags */
|
||
|
#define AVIIF_LIST 0x00000001L
|
||
|
#define AVIIF_KEYFRAME 0x00000010L
|
||
|
#define AVIIF_FIRSTPART 0x00000020L
|
||
|
#define AVIIF_LASTPART 0x00000040L
|
||
|
#define AVIIF_MIDPART (AVIIF_LASTPART | AVIIF_FIRSTPART)
|
||
|
#define AVIIF_NOTIME 0x00000100L
|
||
|
#define AVIIF_COMPUSE 0x0FFF0000L
|
||
|
|
||
|
/* AVIGetFrame() flags */
|
||
|
#define AVIGETFRAMEF_BESTDISPLAYFMT 1
|
||
|
|
||
|
/* AVI stream information flags */
|
||
|
#define AVISTREAMINFO_DISABLED 0x00000001L
|
||
|
#define AVISTREAMINFO_FORMATCHANGES 0x00010000L
|
||
|
|
||
|
/* AVI file information flags */
|
||
|
#define AVIFILEINFO_HASINDEX 0x00000010L
|
||
|
#define AVIFILEINFO_MUSTUSEINDEX 0x00000020L
|
||
|
#define AVIFILEINFO_ISINTERLEAVED 0x00000100L
|
||
|
#define AVIFILEINFO_WASCAPTUREFILE 0x00010000L
|
||
|
#define AVIFILEINFO_COPYRIGHTED 0x00020000L
|
||
|
|
||
|
/* AVI file capability flags */
|
||
|
#define AVIFILECAPS_CANREAD 0x00000001L
|
||
|
#define AVIFILECAPS_CANWRITE 0x00000002L
|
||
|
#define AVIFILECAPS_ALLKEYFRAMES 0x00000010L
|
||
|
#define AVIFILECAPS_NOCOMPRESSION 0x00000020L
|
||
|
|
||
|
/* AVI compression flags */
|
||
|
#define AVICOMPRESSF_INTERLEAVE 0x00000001L
|
||
|
#define AVICOMPRESSF_DATARATE 0x00000002L
|
||
|
#define AVICOMPRESSF_KEYFRAMES 0x00000004L
|
||
|
#define AVICOMPRESSF_VALID 0x00000008L
|
||
|
|
||
|
/* Macro to define GUIDs for AVI interfaces */
|
||
|
#define DEFINE_AVIGUID( x, p1, p2, p3 ) \
|
||
|
DEFINE_GUID( x, p1, p2, p3, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 )
|
||
|
|
||
|
/* AVI file handler flags */
|
||
|
#define AVIFILEHANDLER_CANREAD 0x0001
|
||
|
#define AVIFILEHANDLER_CANWRITE 0x0002
|
||
|
#define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004
|
||
|
|
||
|
/* AVIStreamRead() special value */
|
||
|
#define AVISTREAMREAD_CONVENIENT (-1L)
|
||
|
|
||
|
/* AVIStreamFindSample() flags */
|
||
|
#define FIND_DIR 0x0000000FL
|
||
|
#define FIND_NEXT 0x00000001L
|
||
|
#define FIND_PREV 0x00000004L
|
||
|
#define FIND_FROM_START 0x00000008L
|
||
|
#define FIND_TYPE 0x000000F0L
|
||
|
#define FIND_KEY 0x00000010L
|
||
|
#define FIND_ANY 0x00000020L
|
||
|
#define FIND_FORMAT 0x00000040L
|
||
|
#define FIND_RET 0x0000F000L
|
||
|
#define FIND_POS 0x00000000L
|
||
|
#define FIND_LENGTH 0x00001000L
|
||
|
#define FIND_OFFSET 0x00002000L
|
||
|
#define FIND_SIZE 0x00003000L
|
||
|
#define FIND_INDEX 0x00004000L
|
||
|
#define SEARCH_NEAREST FIND_PREV
|
||
|
#define SEARCH_BACKWARD FIND_PREV
|
||
|
#define SEARCH_FORWARD FIND_NEXT
|
||
|
#define SEARCH_KEY FIND_KEY
|
||
|
#define SEARCH_ANY FIND_ANY
|
||
|
|
||
|
/* Compression types */
|
||
|
#define comptypeDIB mmioFOURCC( 'D', 'I', 'B', ' ' )
|
||
|
|
||
|
/* Macro to make AVI error codes */
|
||
|
#define MAKE_AVIERR( x ) MAKE_SCODE( SEVERITY_ERROR, FACILITY_ITF, 0x4000 + x )
|
||
|
|
||
|
/* AVI error codes */
|
||
|
#define AVIERR_OK 0L
|
||
|
#define AVIERR_UNSUPPORTED MAKE_AVIERR( 101 )
|
||
|
#define AVIERR_BADFORMAT MAKE_AVIERR( 102 )
|
||
|
#define AVIERR_MEMORY MAKE_AVIERR( 103 )
|
||
|
#define AVIERR_INTERNAL MAKE_AVIERR( 104 )
|
||
|
#define AVIERR_BADFLAGS MAKE_AVIERR( 105 )
|
||
|
#define AVIERR_BADPARAM MAKE_AVIERR( 106 )
|
||
|
#define AVIERR_BADSIZE MAKE_AVIERR( 107 )
|
||
|
#define AVIERR_BADHANDLE MAKE_AVIERR( 108 )
|
||
|
#define AVIERR_FILEREAD MAKE_AVIERR( 109 )
|
||
|
#define AVIERR_FILEWRITE MAKE_AVIERR( 110 )
|
||
|
#define AVIERR_FILEOPEN MAKE_AVIERR( 111 )
|
||
|
#define AVIERR_COMPRESSOR MAKE_AVIERR( 112 )
|
||
|
#define AVIERR_NOCOMPRESSOR MAKE_AVIERR( 113 )
|
||
|
#define AVIERR_READONLY MAKE_AVIERR( 114 )
|
||
|
#define AVIERR_NODATA MAKE_AVIERR( 115 )
|
||
|
#define AVIERR_BUFFERTOOSMALL MAKE_AVIERR( 116 )
|
||
|
#define AVIERR_CANTCOMPRESS MAKE_AVIERR( 117 )
|
||
|
#define AVIERR_USERABORT MAKE_AVIERR( 198 )
|
||
|
#define AVIERR_ERROR MAKE_AVIERR( 199 )
|
||
|
|
||
|
/* These macros are used by other macros in this file to invoke SendMessage(). */
|
||
|
#ifdef __cplusplus
|
||
|
#define MCIWndSM ::SendMessage
|
||
|
#define AVICapSM( x, p1, p2, p3 ) \
|
||
|
(::IsWindow( x ) ? ::SendMessage( x, p1, p2, p3 ) : 0)
|
||
|
#else
|
||
|
#define MCIWndSM SendMessage
|
||
|
#define AVICapSM( x, p1, p2, p3 ) \
|
||
|
((IsWindow( x )) ? SendMessage( x, p1, p2, p3 ) : 0)
|
||
|
#endif
|
||
|
|
||
|
/* MCI window class */
|
||
|
#define MCIWND_WINDOW_CLASS TEXT( "MCIWndClass" )
|
||
|
|
||
|
/* MCIWndOpen() flags */
|
||
|
#define MCIWNDOPENF_NEW 0x0001
|
||
|
|
||
|
/* MCI window styles */
|
||
|
#define MCIWNDF_NOAUTOSIZEWINDOW 0x0001L
|
||
|
#define MCIWNDF_NOPLAYBAR 0x0002L
|
||
|
#define MCIWNDF_NOAUTOSIZEMOVIE 0x0004L
|
||
|
#define MCIWNDF_NOMENU 0x0008L
|
||
|
#define MCIWNDF_SHOWNAME 0x0010L
|
||
|
#define MCIWNDF_SHOWPOS 0x0020L
|
||
|
#define MCIWNDF_SHOWMODE 0x0040L
|
||
|
#define MCIWNDF_SHOWALL 0x0070L
|
||
|
#define MCIWNDF_NOTIFYMODE 0x0100L
|
||
|
#define MCIWNDF_NOTIFYPOS 0x0200L
|
||
|
#define MCIWNDF_NOTIFYSIZE 0x0400L
|
||
|
#define MCIWNDF_NOTIFYERROR 0x1000L
|
||
|
#define MCIWNDF_NOTIFYALL 0x1F00L
|
||
|
#define MCIWNDF_NOTIFYANSI 0x0080L
|
||
|
#define MCIWNDF_NOTIFYMEDIAA 0x0880L
|
||
|
#define MCIWNDF_NOTIFYMEDIAW 0x0800L
|
||
|
#define MCIWNDF_RECORD 0x2000L
|
||
|
#define MCIWNDF_NOERRORDLG 0x4000L
|
||
|
#define MCIWNDF_NOOPEN 0x8000L
|
||
|
#ifdef UNICODE
|
||
|
#define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAW
|
||
|
#else
|
||
|
#define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAA
|
||
|
#endif
|
||
|
|
||
|
/* MCI window messages */
|
||
|
#define MCIWNDM_GETDEVICEID (WM_USER + 100)
|
||
|
#define MCIWNDM_SENDSTRINGA (WM_USER + 101)
|
||
|
#define MCIWNDM_GETPOSITIONA (WM_USER + 102)
|
||
|
#define MCIWNDM_GETSTART (WM_USER + 103)
|
||
|
#define MCIWNDM_GETLENGTH (WM_USER + 104)
|
||
|
#define MCIWNDM_GETEND (WM_USER + 105)
|
||
|
#define MCIWNDM_GETMODEA (WM_USER + 106)
|
||
|
#define MCIWNDM_EJECT (WM_USER + 107)
|
||
|
#define MCIWNDM_SETZOOM (WM_USER + 108)
|
||
|
#define MCIWNDM_GETZOOM (WM_USER + 109)
|
||
|
#define MCIWNDM_SETVOLUME (WM_USER + 110)
|
||
|
#define MCIWNDM_GETVOLUME (WM_USER + 111)
|
||
|
#define MCIWNDM_SETSPEED (WM_USER + 112)
|
||
|
#define MCIWNDM_GETSPEED (WM_USER + 113)
|
||
|
#define MCIWNDM_SETREPEAT (WM_USER + 114)
|
||
|
#define MCIWNDM_GETREPEAT (WM_USER + 115)
|
||
|
#define MCIWNDM_REALIZE (WM_USER + 118)
|
||
|
#define MCIWNDM_SETTIMEFORMATA (WM_USER + 119)
|
||
|
#define MCIWNDM_GETTIMEFORMATA (WM_USER + 120)
|
||
|
#define MCIWNDM_VALIDATEMEDIA (WM_USER + 121)
|
||
|
#define MCIWNDM_PLAYFROM (WM_USER + 122)
|
||
|
#define MCIWNDM_PLAYTO (WM_USER + 123)
|
||
|
#define MCIWNDM_GETFILENAMEA (WM_USER + 124)
|
||
|
#define MCIWNDM_GETDEVICEA (WM_USER + 125)
|
||
|
#define MCIWNDM_GETPALETTE (WM_USER + 126)
|
||
|
#define MCIWNDM_SETPALETTE (WM_USER + 127)
|
||
|
#define MCIWNDM_GETERRORA (WM_USER + 128)
|
||
|
#define MCIWNDM_SETTIMERS (WM_USER + 129)
|
||
|
#define MCIWNDM_SETACTIVETIMER (WM_USER + 130)
|
||
|
#define MCIWNDM_SETINACTIVETIMER (WM_USER + 131)
|
||
|
#define MCIWNDM_GETACTIVETIMER (WM_USER + 132)
|
||
|
#define MCIWNDM_GETINACTIVETIMER (WM_USER + 133)
|
||
|
#define MCIWNDM_NEWA (WM_USER + 134)
|
||
|
#define MCIWNDM_CHANGESTYLES (WM_USER + 135)
|
||
|
#define MCIWNDM_GETSTYLES (WM_USER + 136)
|
||
|
#define MCIWNDM_GETALIAS (WM_USER + 137)
|
||
|
#define MCIWNDM_RETURNSTRINGA (WM_USER + 138)
|
||
|
#define MCIWNDM_PLAYREVERSE (WM_USER + 139)
|
||
|
#define MCIWNDM_GET_SOURCE (WM_USER + 140)
|
||
|
#define MCIWNDM_PUT_SOURCE (WM_USER + 141)
|
||
|
#define MCIWNDM_GET_DEST (WM_USER + 142)
|
||
|
#define MCIWNDM_PUT_DEST (WM_USER + 143)
|
||
|
#define MCIWNDM_CAN_PLAY (WM_USER + 144)
|
||
|
#define MCIWNDM_CAN_WINDOW (WM_USER + 145)
|
||
|
#define MCIWNDM_CAN_RECORD (WM_USER + 146)
|
||
|
#define MCIWNDM_CAN_SAVE (WM_USER + 147)
|
||
|
#define MCIWNDM_CAN_EJECT (WM_USER + 148)
|
||
|
#define MCIWNDM_CAN_CONFIG (WM_USER + 149)
|
||
|
#define MCIWNDM_PALETTEKICK (WM_USER + 150)
|
||
|
#define MCIWNDM_OPENINTERFACE (WM_USER + 151)
|
||
|
#define MCIWNDM_SETOWNER (WM_USER + 152)
|
||
|
#define MCIWNDM_OPENA (WM_USER + 153)
|
||
|
#define MCIWNDM_SENDSTRINGW (WM_USER + 201)
|
||
|
#define MCIWNDM_GETPOSITIONW (WM_USER + 202)
|
||
|
#define MCIWNDM_GETMODEW (WM_USER + 206)
|
||
|
#define MCIWNDM_SETTIMEFORMATW (WM_USER + 219)
|
||
|
#define MCIWNDM_GETTIMEFORMATW (WM_USER + 220)
|
||
|
#define MCIWNDM_GETFILENAMEW (WM_USER + 224)
|
||
|
#define MCIWNDM_GETDEVICEW (WM_USER + 225)
|
||
|
#define MCIWNDM_GETERRORW (WM_USER + 228)
|
||
|
#define MCIWNDM_NEWW (WM_USER + 234)
|
||
|
#define MCIWNDM_RETURNSTRINGW (WM_USER + 238)
|
||
|
#define MCIWNDM_OPENW (WM_USER + 252)
|
||
|
#ifdef UNICODE
|
||
|
#define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGW
|
||
|
#define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONW
|
||
|
#define MCIWNDM_GETMODE MCIWNDM_GETMODEW
|
||
|
#define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATW
|
||
|
#define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATW
|
||
|
#define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEW
|
||
|
#define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEW
|
||
|
#define MCIWNDM_GETERROR MCIWNDM_GETERRORW
|
||
|
#define MCIWNDM_NEW MCIWNDM_NEWW
|
||
|
#define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGW
|
||
|
#define MCIWNDM_OPEN MCIWNDM_OPENW
|
||
|
#else
|
||
|
#define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGA
|
||
|
#define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONA
|
||
|
#define MCIWNDM_GETMODE MCIWNDM_GETMODEA
|
||
|
#define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATA
|
||
|
#define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATA
|
||
|
#define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEA
|
||
|
#define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEA
|
||
|
#define MCIWNDM_GETERROR MCIWNDM_GETERRORA
|
||
|
#define MCIWNDM_NEW MCIWNDM_NEWA
|
||
|
#define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGA
|
||
|
#define MCIWNDM_OPEN MCIWNDM_OPENA
|
||
|
#endif
|
||
|
|
||
|
/* MCI window notification messages */
|
||
|
#define MCIWNDM_NOTIFYMODE (WM_USER + 200)
|
||
|
#define MCIWNDM_NOTIFYPOS (WM_USER + 201)
|
||
|
#define MCIWNDM_NOTIFYSIZE (WM_USER + 202)
|
||
|
#define MCIWNDM_NOTIFYMEDIA (WM_USER + 203)
|
||
|
#define MCIWNDM_NOTIFYERROR (WM_USER + 205)
|
||
|
|
||
|
/* MCI window seek values */
|
||
|
#define MCIWND_START (-1)
|
||
|
#define MCIWND_END (-2)
|
||
|
|
||
|
/* Video capture error codes */
|
||
|
#define DV_ERR_OK 0
|
||
|
#define DV_ERR_BASE 1
|
||
|
#define DV_ERR_NONSPECIFIC DV_ERR_BASE
|
||
|
#define DV_ERR_BADFORMAT (DV_ERR_BASE + 1)
|
||
|
#define DV_ERR_STILLPLAYING (DV_ERR_BASE + 2)
|
||
|
#define DV_ERR_UNPREPARED (DV_ERR_BASE + 3)
|
||
|
#define DV_ERR_SYNC (DV_ERR_BASE + 4)
|
||
|
#define DV_ERR_TOOMANYCHANNELS (DV_ERR_BASE + 5)
|
||
|
#define DV_ERR_NOTDETECTED (DV_ERR_BASE + 6)
|
||
|
#define DV_ERR_BADINSTALL (DV_ERR_BASE + 7)
|
||
|
#define DV_ERR_CREATEPALETTE (DV_ERR_BASE + 8)
|
||
|
#define DV_ERR_SIZEFIELD (DV_ERR_BASE + 9)
|
||
|
#define DV_ERR_PARAM1 (DV_ERR_BASE + 10)
|
||
|
#define DV_ERR_PARAM2 (DV_ERR_BASE + 11)
|
||
|
#define DV_ERR_CONFIG1 (DV_ERR_BASE + 12)
|
||
|
#define DV_ERR_CONFIG2 (DV_ERR_BASE + 13)
|
||
|
#define DV_ERR_FLAGS (DV_ERR_BASE + 14)
|
||
|
#define DV_ERR_13 (DV_ERR_BASE + 15)
|
||
|
#define DV_ERR_NOTSUPPORTED (DV_ERR_BASE + 16)
|
||
|
#define DV_ERR_NOMEM (DV_ERR_BASE + 17)
|
||
|
#define DV_ERR_ALLOCATED (DV_ERR_BASE + 18)
|
||
|
#define DV_ERR_BADDEVICEID (DV_ERR_BASE + 19)
|
||
|
#define DV_ERR_INVALHANDLE (DV_ERR_BASE + 20)
|
||
|
#define DV_ERR_BADERRNUM (DV_ERR_BASE + 21)
|
||
|
#define DV_ERR_NO_BUFFERS (DV_ERR_BASE + 22)
|
||
|
#define DV_ERR_MEM_CONFLICT (DV_ERR_BASE + 23)
|
||
|
#define DV_ERR_IO_CONFLICT (DV_ERR_BASE + 24)
|
||
|
#define DV_ERR_DMA_CONFLICT (DV_ERR_BASE + 25)
|
||
|
#define DV_ERR_INT_CONFLICT (DV_ERR_BASE + 26)
|
||
|
#define DV_ERR_PROTECT_ONLY (DV_ERR_BASE + 27)
|
||
|
#define DV_ERR_LASTERROR (DV_ERR_BASE + 27)
|
||
|
#define DV_ERR_USER_MSG (DV_ERR_BASE + 1000)
|
||
|
|
||
|
/* Video capture driver messages */
|
||
|
#define DV_VM_OPEN MM_DRVM_OPEN
|
||
|
#define DV_VM_CLOSE MM_DRVM_CLOSE
|
||
|
#define DV_VM_DATA MM_DRVM_DATA
|
||
|
#define DV_VM_ERROR MM_DRVM_ERROR
|
||
|
|
||
|
/* Video header flags */
|
||
|
#define VHDR_DONE 0x00000001L
|
||
|
#define VHDR_PREPARED 0x00000002L
|
||
|
#define VHDR_INQUEUE 0x00000004L
|
||
|
#define VHDR_KEYFRAME 0x00000008L
|
||
|
#define VHDR_VALID 0x0000000FL
|
||
|
|
||
|
/* Channel capabilities flags */
|
||
|
#define VCAPS_OVERLAY 0x00000001L
|
||
|
#define VCAPS_SRC_CAN_CLIP 0x00000002L
|
||
|
#define VCAPS_DST_CAN_CLIP 0x00000004L
|
||
|
#define VCAPS_CAN_SCALE 0x00000008L
|
||
|
|
||
|
/* videoOpen() flags */
|
||
|
#define VIDEO_EXTERNALIN 0x0001
|
||
|
#define VIDEO_EXTERNALOUT 0x0002
|
||
|
#define VIDEO_IN 0x0004
|
||
|
#define VIDEO_OUT 0x0008
|
||
|
#define VIDEO_DLG_QUERY 0x0010
|
||
|
|
||
|
/* videoConfigure() flags */
|
||
|
#define VIDEO_CONFIGURE_QUERYSIZE 0x0001
|
||
|
#define VIDEO_CONFIGURE_CURRENT 0x0010
|
||
|
#define VIDEO_CONFIGURE_NORMAL 0x0020
|
||
|
#define VIDEO_CONFIGURE_MIN 0x0040
|
||
|
#define VIDEO_CONFIGURE_MAX 0x0080
|
||
|
#define VIDEO_CONFIGURE_SET 0x1000
|
||
|
#define VIDEO_CONFIGURE_GET 0x2000
|
||
|
#define VIDEO_CONFIGURE_QUERY 0x8000
|
||
|
|
||
|
/* Video capture configuration messages */
|
||
|
#define DVM_USER 0x4000
|
||
|
#define DVM_CONFIGURE_START 0x1000
|
||
|
#define DVM_CONFIGURE_END 0x1FFF
|
||
|
#define DVM_PALETTE (DVM_CONFIGURE_START + 1)
|
||
|
#define DVM_FORMAT (DVM_CONFIGURE_START + 2)
|
||
|
#define DVM_PALETTERGB555 (DVM_CONFIGURE_START + 3)
|
||
|
#define DVM_SRC_RECT (DVM_CONFIGURE_START + 4)
|
||
|
#define DVM_DST_RECT (DVM_CONFIGURE_START + 5)
|
||
|
|
||
|
/* Video capture messages */
|
||
|
#define WM_CAP_START WM_USER
|
||
|
#define WM_CAP_UNICODE_START (WM_USER + 100)
|
||
|
#define WM_CAP_GET_CAPSTREAMPTR (WM_CAP_START + 1)
|
||
|
#define WM_CAP_SET_CALLBACK_ERRORA (WM_CAP_START + 2)
|
||
|
#define WM_CAP_SET_CALLBACK_ERRORW (WM_CAP_UNICODE_START + 2)
|
||
|
#define WM_CAP_SET_CALLBACK_STATUSA (WM_CAP_START + 3)
|
||
|
#define WM_CAP_SET_CALLBACK_STATUSW (WM_CAP_UNICODE_START + 3)
|
||
|
#define WM_CAP_SET_CALLBACK_YIELD (WM_CAP_START + 4)
|
||
|
#define WM_CAP_SET_CALLBACK_FRAME (WM_CAP_START + 5)
|
||
|
#define WM_CAP_SET_CALLBACK_VIDEOSTREAM (WM_CAP_START + 6)
|
||
|
#define WM_CAP_SET_CALLBACK_WAVESTREAM (WM_CAP_START + 7)
|
||
|
#define WM_CAP_GET_USER_DATA (WM_CAP_START + 8)
|
||
|
#define WM_CAP_SET_USER_DATA (WM_CAP_START + 9)
|
||
|
#define WM_CAP_DRIVER_CONNECT (WM_CAP_START + 10)
|
||
|
#define WM_CAP_DRIVER_DISCONNECT (WM_CAP_START + 11)
|
||
|
#define WM_CAP_DRIVER_GET_NAMEA (WM_CAP_START + 12)
|
||
|
#define WM_CAP_DRIVER_GET_NAMEW (WM_CAP_UNICODE_START + 12)
|
||
|
#define WM_CAP_DRIVER_GET_VERSIONA (WM_CAP_START + 13)
|
||
|
#define WM_CAP_DRIVER_GET_VERSIONW (WM_CAP_UNICODE_START + 13)
|
||
|
#define WM_CAP_DRIVER_GET_CAPS (WM_CAP_START + 14)
|
||
|
#define WM_CAP_FILE_SET_CAPTURE_FILEA (WM_CAP_START + 20)
|
||
|
#define WM_CAP_FILE_SET_CAPTURE_FILEW (WM_CAP_UNICODE_START + 20)
|
||
|
#define WM_CAP_FILE_GET_CAPTURE_FILEA (WM_CAP_START + 21)
|
||
|
#define WM_CAP_FILE_GET_CAPTURE_FILEW (WM_CAP_UNICODE_START + 21)
|
||
|
#define WM_CAP_FILE_ALLOCATE (WM_CAP_START + 22)
|
||
|
#define WM_CAP_FILE_SAVEASA (WM_CAP_START + 23)
|
||
|
#define WM_CAP_FILE_SAVEASW (WM_CAP_UNICODE_START + 23)
|
||
|
#define WM_CAP_FILE_SET_INFOCHUNK (WM_CAP_START + 24)
|
||
|
#define WM_CAP_FILE_SAVEDIBA (WM_CAP_START + 25)
|
||
|
#define WM_CAP_FILE_SAVEDIBW (WM_CAP_UNICODE_START + 25)
|
||
|
#define WM_CAP_EDIT_COPY (WM_CAP_START + 30)
|
||
|
#define WM_CAP_SET_AUDIOFORMAT (WM_CAP_START + 35)
|
||
|
#define WM_CAP_GET_AUDIOFORMAT (WM_CAP_START + 36)
|
||
|
#define WM_CAP_DLG_VIDEOFORMAT (WM_CAP_START + 41)
|
||
|
#define WM_CAP_DLG_VIDEOSOURCE (WM_CAP_START + 42)
|
||
|
#define WM_CAP_DLG_VIDEODISPLAY (WM_CAP_START + 43)
|
||
|
#define WM_CAP_GET_VIDEOFORMAT (WM_CAP_START + 44)
|
||
|
#define WM_CAP_SET_VIDEOFORMAT (WM_CAP_START + 45)
|
||
|
#define WM_CAP_DLG_VIDEOCOMPRESSION (WM_CAP_START + 46)
|
||
|
#define WM_CAP_SET_PREVIEW (WM_CAP_START + 50)
|
||
|
#define WM_CAP_SET_OVERLAY (WM_CAP_START + 51)
|
||
|
#define WM_CAP_SET_PREVIEWRATE (WM_CAP_START + 52)
|
||
|
#define WM_CAP_SET_SCALE (WM_CAP_START + 53)
|
||
|
#define WM_CAP_GET_STATUS (WM_CAP_START + 54)
|
||
|
#define WM_CAP_SET_SCROLL (WM_CAP_START + 55)
|
||
|
#define WM_CAP_GRAB_FRAME (WM_CAP_START + 60)
|
||
|
#define WM_CAP_GRAB_FRAME_NOSTOP (WM_CAP_START + 61)
|
||
|
#define WM_CAP_SEQUENCE (WM_CAP_START + 62)
|
||
|
#define WM_CAP_SEQUENCE_NOFILE (WM_CAP_START + 63)
|
||
|
#define WM_CAP_SET_SEQUENCE_SETUP (WM_CAP_START + 64)
|
||
|
#define WM_CAP_GET_SEQUENCE_SETUP (WM_CAP_START + 65)
|
||
|
#define WM_CAP_SET_MCI_DEVICEA (WM_CAP_START + 66)
|
||
|
#define WM_CAP_SET_MCI_DEVICEW (WM_CAP_UNICODE_START + 66)
|
||
|
#define WM_CAP_GET_MCI_DEVICEA (WM_CAP_START + 67)
|
||
|
#define WM_CAP_GET_MCI_DEVICEW (WM_CAP_UNICODE_START + 67)
|
||
|
#define WM_CAP_STOP (WM_CAP_START + 68)
|
||
|
#define WM_CAP_ABORT (WM_CAP_START + 69)
|
||
|
#define WM_CAP_SINGLE_FRAME_OPEN (WM_CAP_START + 70)
|
||
|
#define WM_CAP_SINGLE_FRAME_CLOSE (WM_CAP_START + 71)
|
||
|
#define WM_CAP_SINGLE_FRAME (WM_CAP_START + 72)
|
||
|
#define WM_CAP_PAL_OPENA (WM_CAP_START + 80)
|
||
|
#define WM_CAP_PAL_OPENW (WM_CAP_UNICODE_START + 80)
|
||
|
#define WM_CAP_PAL_SAVEA (WM_CAP_START + 81)
|
||
|
#define WM_CAP_PAL_SAVEW (WM_CAP_UNICODE_START + 81)
|
||
|
#define WM_CAP_PAL_PASTE (WM_CAP_START + 82)
|
||
|
#define WM_CAP_PAL_AUTOCREATE (WM_CAP_START + 83)
|
||
|
#define WM_CAP_PAL_MANUALCREATE (WM_CAP_START + 84)
|
||
|
#define WM_CAP_SET_CALLBACK_CAPCONTROL (WM_CAP_START + 85)
|
||
|
#define WM_CAP_UNICODE_END WM_CAP_PAL_SAVEW
|
||
|
#define WM_CAP_END WM_CAP_UNICODE_END
|
||
|
#ifdef UNICODE
|
||
|
#define WM_CAP_SET_CALLBACK_ERROR WM_CAP_SET_CALLBACK_ERRORW
|
||
|
#define WM_CAP_SET_CALLBACK_STATUS WM_CAP_SET_CALLBACK_STATUSW
|
||
|
#define WM_CAP_DRIVER_GET_NAME WM_CAP_DRIVER_GET_NAMEW
|
||
|
#define WM_CAP_DRIVER_GET_VERSION WM_CAP_DRIVER_GET_VERSIONW
|
||
|
#define WM_CAP_FILE_SET_CAPTURE_FILE WM_CAP_FILE_SET_CAPTURE_FILEW
|
||
|
#define WM_CAP_FILE_GET_CAPTURE_FILE WM_CAP_FILE_GET_CAPTURE_FILEW
|
||
|
#define WM_CAP_FILE_SAVEAS WM_CAP_FILE_SAVEASW
|
||
|
#define WM_CAP_FILE_SAVEDIB WM_CAP_FILE_SAVEDIBW
|
||
|
#define WM_CAP_SET_MCI_DEVICE WM_CAP_SET_MCI_DEVICEW
|
||
|
#define WM_CAP_GET_MCI_DEVICE WM_CAP_GET_MCI_DEVICEW
|
||
|
#define WM_CAP_PAL_OPEN WM_CAP_PAL_OPENW
|
||
|
#define WM_CAP_PAL_SAVE WM_CAP_PAL_SAVEW
|
||
|
#else
|
||
|
#define WM_CAP_SET_CALLBACK_ERROR WM_CAP_SET_CALLBACK_ERRORA
|
||
|
#define WM_CAP_SET_CALLBACK_STATUS WM_CAP_SET_CALLBACK_STATUSA
|
||
|
#define WM_CAP_DRIVER_GET_NAME WM_CAP_DRIVER_GET_NAMEA
|
||
|
#define WM_CAP_DRIVER_GET_VERSION WM_CAP_DRIVER_GET_VERSIONA
|
||
|
#define WM_CAP_FILE_SET_CAPTURE_FILE WM_CAP_FILE_SET_CAPTURE_FILEA
|
||
|
#define WM_CAP_FILE_GET_CAPTURE_FILE WM_CAP_FILE_GET_CAPTURE_FILEA
|
||
|
#define WM_CAP_FILE_SAVEAS WM_CAP_FILE_SAVEASA
|
||
|
#define WM_CAP_FILE_SAVEDIB WM_CAP_FILE_SAVEDIBA
|
||
|
#define WM_CAP_SET_MCI_DEVICE WM_CAP_SET_MCI_DEVICEA
|
||
|
#define WM_CAP_GET_MCI_DEVICE WM_CAP_GET_MCI_DEVICEA
|
||
|
#define WM_CAP_PAL_OPEN WM_CAP_PAL_OPENA
|
||
|
#define WM_CAP_PAL_SAVE WM_CAP_PAL_SAVEA
|
||
|
#endif
|
||
|
|
||
|
/* Audio/video stream master flags */
|
||
|
#define AVSTREAMMASTER_AUDIO 0
|
||
|
#define AVSTREAMMASTER_NONE 1
|
||
|
|
||
|
/* Video capture control callback */
|
||
|
#define CONTROLCALLBACK_PREROLL 1
|
||
|
#define CONTROLCALLBACK_CAPTURING 2
|
||
|
|
||
|
/* Information types */
|
||
|
#define infotypeDIGITIZATION_TIME mmioFOURCC( 'I', 'D', 'I', 'T' )
|
||
|
#define infotypeSMPTE_TIME mmioFOURCC( 'I', 'S', 'M', 'P' )
|
||
|
|
||
|
/* Video capture string resource identifiers */
|
||
|
#define IDS_CAP_BEGIN 300
|
||
|
#define IDS_CAP_END 301
|
||
|
#define IDS_CAP_INFO 401
|
||
|
#define IDS_CAP_OUTOFMEM 402
|
||
|
#define IDS_CAP_FILEEXISTS 403
|
||
|
#define IDS_CAP_ERRORPALOPEN 404
|
||
|
#define IDS_CAP_ERRORPALSAVE 405
|
||
|
#define IDS_CAP_ERRORDIBSAVE 406
|
||
|
#define IDS_CAP_DEFAVIEXT 407
|
||
|
#define IDS_CAP_DEDPALEXT 408
|
||
|
#define IDS_CAP_CANTOPEN 409
|
||
|
#define IDS_CAP_SEQ_MSGSTART 410
|
||
|
#define IDS_CAP_SEQ_MSGSTOP 411
|
||
|
#define IDS_CAP_VIDEDITERR 412
|
||
|
#define IDS_CAP_READONLYFILE 413
|
||
|
#define IDS_CAP_WRITEERROR 414
|
||
|
#define IDS_CAP_NODISKSPACE 415
|
||
|
#define IDS_CAP_SETFILESIZE 416
|
||
|
#define IDS_CAP_SAVEASPERCENT 417
|
||
|
#define IDS_CAP_DRIVER_ERROR 418
|
||
|
#define IDS_CAP_WAVE_OPEN_ERROR 419
|
||
|
#define IDS_CAP_WAVE_ALLOC_ERROR 420
|
||
|
#define IDS_CAP_WAVE_PREPARE_ERROR 421
|
||
|
#define IDS_CAP_WAVE_ADD_ERROR 422
|
||
|
#define IDS_CAP_WAVE_SIZE_ERROR 423
|
||
|
#define IDS_CAP_VIDEO_OPEN_ERROR 424
|
||
|
#define IDS_CAP_VIDEO_ALLOC_ERROR 425
|
||
|
#define IDS_CAP_VIDEO_PREPARE_ERROR 426
|
||
|
#define IDS_CAP_VIDEO_ADD_ERROR 427
|
||
|
#define IDS_CAP_VIDEO_SIZE_ERROR 428
|
||
|
#define IDS_CAP_FILE_OPEN_ERROR 429
|
||
|
#define IDS_CAP_FILE_WRITE_ERROR 430
|
||
|
#define IDS_CAP_RECORDING_ERROR 431
|
||
|
#define IDS_CAP_RECORDING_ERROR2 432
|
||
|
#define IDS_CAP_AVI_INIT_ERROR 433
|
||
|
#define IDS_CAP_NO_FRAME_CAP_ERROR 434
|
||
|
#define IDS_CAP_NO_PALETTE_WARN 435
|
||
|
#define IDS_CAP_MCI_CONTROL_ERROR 436
|
||
|
#define IDS_CAP_MCI_CANT_STEP_ERROR 437
|
||
|
#define IDS_CAP_NO_AUDIO_CAP_ERROR 438
|
||
|
#define IDS_CAP_AVI_DRAWDIB_ERROR 439
|
||
|
#define IDS_CAP_COMPRESSOR_ERROR 440
|
||
|
#define IDS_CAP_AUDIO_DROP_ERROR 441
|
||
|
#define IDS_CAP_AUDIO_DROP_COMPERROR 442
|
||
|
#define IDS_CAP_STAT_LIVE_MODE 500
|
||
|
#define IDS_CAP_STAT_OVERLAY_MODE 501
|
||
|
#define IDS_CAP_STAT_CAP_INIT 502
|
||
|
#define IDS_CAP_STAT_CAP_FINI 503
|
||
|
#define IDS_CAP_STAT_PALETTE_BUILD 504
|
||
|
#define IDS_CAP_STAT_OPTPAL_BUILD 505
|
||
|
#define IDS_CAP_STAT_I_FRAMES 506
|
||
|
#define IDS_CAP_STAT_L_FRAMES 507
|
||
|
#define IDS_CAP_STAT_CAP_L_FRAMES 508
|
||
|
#define IDS_CAP_STAT_CAP_AUDIO 509
|
||
|
#define IDS_CAP_STAT_VIDEOCURRENT 510
|
||
|
#define IDS_CAP_STAT_VIDEOAUDIO 511
|
||
|
#define IDS_CAP_STAT_VIDEOONLY 512
|
||
|
#define IDS_CAP_STAT_FRAMESDROPPED 513
|
||
|
|
||
|
/* ICOpen() parameters */
|
||
|
typedef struct {
|
||
|
DWORD dwSize;
|
||
|
DWORD fccType;
|
||
|
DWORD fccHandler;
|
||
|
DWORD dwVersion;
|
||
|
DWORD dwFlags;
|
||
|
LRESULT dwError;
|
||
|
LPVOID pV1Reserved;
|
||
|
LPVOID pV2Reserved;
|
||
|
DWORD dnDevNode;
|
||
|
} ICOPEN;
|
||
|
|
||
|
/* ICInfo() parameters */
|
||
|
typedef struct {
|
||
|
DWORD dwSize;
|
||
|
DWORD fccType;
|
||
|
DWORD fccHandler;
|
||
|
DWORD dwFlags;
|
||
|
DWORD dwVersion;
|
||
|
DWORD dwVersionICM;
|
||
|
WCHAR szName[16];
|
||
|
WCHAR szDescription[128];
|
||
|
WCHAR szDriver[128];
|
||
|
} ICINFO;
|
||
|
|
||
|
/* ICCompress() parameters */
|
||
|
typedef struct {
|
||
|
DWORD dwFlags;
|
||
|
LPBITMAPINFOHEADER lpbiOutput;
|
||
|
LPVOID lpOutput;
|
||
|
LPBITMAPINFOHEADER lpbiInput;
|
||
|
LPVOID lpInput;
|
||
|
LPDWORD lpckid;
|
||
|
LPDWORD lpdwFlags;
|
||
|
LONG lFrameNum;
|
||
|
DWORD dwFrameSize;
|
||
|
DWORD dwQuality;
|
||
|
LPBITMAPINFOHEADER lpbiPrev;
|
||
|
LPVOID lpPrev;
|
||
|
} ICCOMPRESS;
|
||
|
|
||
|
/* ICCompressFrames() parameters */
|
||
|
typedef struct {
|
||
|
DWORD dwFlags;
|
||
|
LPBITMAPINFOHEADER lpbiOutput;
|
||
|
LPARAM lOutput;
|
||
|
LPBITMAPINFOHEADER lpbiInput;
|
||
|
LPARAM lInput;
|
||
|
LONG lStartFrame;
|
||
|
LONG lFrameCount;
|
||
|
LONG lQuality;
|
||
|
LONG lDataRate;
|
||
|
LONG lKeyRate;
|
||
|
DWORD dwRate;
|
||
|
DWORD dwScale;
|
||
|
DWORD dwOverheadPerFrame;
|
||
|
DWORD dwReserved2;
|
||
|
LONG (CALLBACK *GetData)( LPARAM, LONG, LPVOID, LONG );
|
||
|
LONG (CALLBACK *PutData)( LPARAM, LONG, LPVOID, LONG );
|
||
|
} ICCOMPRESSFRAMES;
|
||
|
|
||
|
/* ICSetStatusProc() parameters */
|
||
|
typedef struct {
|
||
|
DWORD dwFlags;
|
||
|
LPARAM lParam;
|
||
|
LONG (CALLBACK *Status)( LPARAM, UINT, LONG );
|
||
|
} ICSETSTATUSPROC;
|
||
|
|
||
|
/* ICDecompress() parameters */
|
||
|
typedef struct {
|
||
|
DWORD dwFlags;
|
||
|
LPBITMAPINFOHEADER lpbiInput;
|
||
|
LPVOID lpInput;
|
||
|
LPBITMAPINFOHEADER lpbiOutput;
|
||
|
LPVOID lpOutput;
|
||
|
DWORD ckid;
|
||
|
} ICDECOMPRESS;
|
||
|
|
||
|
/* ICDecompressEx() parameters */
|
||
|
typedef struct {
|
||
|
DWORD dwFlags;
|
||
|
LPBITMAPINFOHEADER lpbiSrc;
|
||
|
LPVOID lpSrc;
|
||
|
LPBITMAPINFOHEADER lpbiDst;
|
||
|
LPVOID lpDst;
|
||
|
int xDst;
|
||
|
int yDst;
|
||
|
int dxDst;
|
||
|
int dyDst;
|
||
|
int xSrc;
|
||
|
int ySrc;
|
||
|
int dxSrc;
|
||
|
int dySrc;
|
||
|
} ICDECOMPRESSEX;
|
||
|
|
||
|
/* ICDrawBegin() parameters */
|
||
|
typedef struct {
|
||
|
DWORD dwFlags;
|
||
|
HPALETTE hpal;
|
||
|
HWND hwnd;
|
||
|
HDC hdc;
|
||
|
int xDst;
|
||
|
int yDst;
|
||
|
int dxDst;
|
||
|
int dyDst;
|
||
|
LPBITMAPINFOHEADER lpbi;
|
||
|
int xSrc;
|
||
|
int ySrc;
|
||
|
int dxSrc;
|
||
|
int dySrc;
|
||
|
DWORD dwRate;
|
||
|
DWORD dwScale;
|
||
|
} ICDRAWBEGIN;
|
||
|
|
||
|
/* ICDraw() parameters */
|
||
|
typedef struct {
|
||
|
DWORD dwFlags;
|
||
|
LPVOID lpFormat;
|
||
|
LPVOID lpData;
|
||
|
DWORD cbData;
|
||
|
LONG lTime;
|
||
|
} ICDRAW;
|
||
|
|
||
|
/* ICDrawSuggestFormat() parameters */
|
||
|
typedef struct {
|
||
|
LPBITMAPINFOHEADER lpbiIn;
|
||
|
LPBITMAPINFOHEADER lpbiSuggest;
|
||
|
int dxSrc;
|
||
|
int dySrc;
|
||
|
int dxDst;
|
||
|
int dyDst;
|
||
|
HIC hicDecompressor;
|
||
|
} ICDRAWSUGGEST;
|
||
|
|
||
|
/* ICPalette() parameters */
|
||
|
typedef struct {
|
||
|
DWORD dwFlags;
|
||
|
int iStart;
|
||
|
int iLen;
|
||
|
LPPALETTEENTRY lppe;
|
||
|
} ICPALETTE;
|
||
|
|
||
|
/* Compressor variables */
|
||
|
typedef struct {
|
||
|
LONG cbSize;
|
||
|
DWORD dwFlags;
|
||
|
HIC hic;
|
||
|
DWORD fccType;
|
||
|
DWORD fccHandler;
|
||
|
LPBITMAPINFO lpbiIn;
|
||
|
LPBITMAPINFO lpbiOut;
|
||
|
LPVOID lpBitsIn;
|
||
|
LPVOID lpBitsPrev;
|
||
|
LONG lFrame;
|
||
|
LONG lKey;
|
||
|
LONG lDataRate;
|
||
|
LONG lQ;
|
||
|
LONG lKeyCount;
|
||
|
LPVOID lpState;
|
||
|
LONG cbState;
|
||
|
} COMPVARS;
|
||
|
typedef COMPVARS *PCOMPVARS;
|
||
|
|
||
|
/* DrawDibTime() parameters */
|
||
|
typedef struct {
|
||
|
LONG timeCount;
|
||
|
LONG timeDraw;
|
||
|
LONG timeDecompress;
|
||
|
LONG timeDither;
|
||
|
LONG timeStretch;
|
||
|
LONG timeBlt;
|
||
|
LONG timeSetDIBits;
|
||
|
} DRAWDIBTIME;
|
||
|
typedef DRAWDIBTIME *LPDRAWDIBTIME;
|
||
|
|
||
|
/* Main AVI header */
|
||
|
typedef struct {
|
||
|
DWORD dwMicroSecPerFrame;
|
||
|
DWORD dwMaxBytesPerSec;
|
||
|
DWORD dwPaddingGranularity;
|
||
|
DWORD dwFlags;
|
||
|
DWORD dwTotalFrames;
|
||
|
DWORD dwInitialFrames;
|
||
|
DWORD dwStreams;
|
||
|
DWORD dwSuggestedBufferSize;
|
||
|
DWORD dwWidth;
|
||
|
DWORD dwHeight;
|
||
|
DWORD dwReserved[4];
|
||
|
} MainAVIHeader;
|
||
|
|
||
|
/* AVI stream header */
|
||
|
typedef struct {
|
||
|
FOURCC fccType;
|
||
|
FOURCC fccHandler;
|
||
|
DWORD dwFlags;
|
||
|
WORD wPriority;
|
||
|
WORD wLanguage;
|
||
|
DWORD dwInitialFrames;
|
||
|
DWORD dwScale;
|
||
|
DWORD dwRate;
|
||
|
DWORD dwStart;
|
||
|
DWORD dwLength;
|
||
|
DWORD dwSuggestedBufferSize;
|
||
|
DWORD dwQuality;
|
||
|
DWORD dwSampleSize;
|
||
|
RECT rcFrame;
|
||
|
} AVIStreamHeader;
|
||
|
|
||
|
/* AVI index entry */
|
||
|
typedef struct {
|
||
|
DWORD ckid;
|
||
|
DWORD dwFlags;
|
||
|
DWORD dwChunkOffset;
|
||
|
DWORD dwChunkLength;
|
||
|
} AVIINDEXENTRY;
|
||
|
|
||
|
/* AVI palette change */
|
||
|
typedef struct {
|
||
|
BYTE bFirstEntry;
|
||
|
BYTE bNumEntries;
|
||
|
WORD wFlags;
|
||
|
PALETTEENTRY peNew[1];
|
||
|
} AVIPALCHANGE;
|
||
|
|
||
|
/* AVI stream information */
|
||
|
typedef struct _AVISTREAMINFOA {
|
||
|
DWORD fccType;
|
||
|
DWORD fccHandler;
|
||
|
DWORD dwFlags;
|
||
|
DWORD dwCaps;
|
||
|
WORD wPriority;
|
||
|
WORD wLanguage;
|
||
|
DWORD dwScale;
|
||
|
DWORD dwRate;
|
||
|
DWORD dwStart;
|
||
|
DWORD dwLength;
|
||
|
DWORD dwInitialFrames;
|
||
|
DWORD dwSuggestedBufferSize;
|
||
|
DWORD dwQuality;
|
||
|
DWORD dwSampleSize;
|
||
|
RECT rcFrame;
|
||
|
DWORD dwEditCount;
|
||
|
DWORD dwFormatChangeCount;
|
||
|
char szName[64];
|
||
|
} AVISTREAMINFOA;
|
||
|
typedef AVISTREAMINFOA *LPAVISTREAMINFOA;
|
||
|
typedef struct _AVISTREAMINFOW {
|
||
|
DWORD fccType;
|
||
|
DWORD fccHandler;
|
||
|
DWORD dwFlags;
|
||
|
DWORD dwCaps;
|
||
|
WORD wPriority;
|
||
|
WORD wLanguage;
|
||
|
DWORD dwScale;
|
||
|
DWORD dwRate;
|
||
|
DWORD dwStart;
|
||
|
DWORD dwLength;
|
||
|
DWORD dwInitialFrames;
|
||
|
DWORD dwSuggestedBufferSize;
|
||
|
DWORD dwQuality;
|
||
|
DWORD dwSampleSize;
|
||
|
RECT rcFrame;
|
||
|
DWORD dwEditCount;
|
||
|
DWORD dwFormatChangeCount;
|
||
|
WCHAR szName[64];
|
||
|
} AVISTREAMINFOW;
|
||
|
typedef AVISTREAMINFOW *LPAVISTREAMINFOW;
|
||
|
#ifdef UNICODE
|
||
|
typedef AVISTREAMINFOW AVISTREAMINFO;
|
||
|
typedef LPAVISTREAMINFOW LPAVISTREAMINFO;
|
||
|
#else
|
||
|
typedef AVISTREAMINFOA AVISTREAMINFO;
|
||
|
typedef LPAVISTREAMINFOA LPAVISTREAMINFO;
|
||
|
#endif
|
||
|
|
||
|
/* AVI file information */
|
||
|
typedef struct _AVIFILEINFOA {
|
||
|
DWORD dwMaxBytesPerSec;
|
||
|
DWORD dwFlags;
|
||
|
DWORD dwCaps;
|
||
|
DWORD dwStreams;
|
||
|
DWORD dwSuggestedBufferSize;
|
||
|
DWORD dwWidth;
|
||
|
DWORD dwHeight;
|
||
|
DWORD dwScale;
|
||
|
DWORD dwRate;
|
||
|
DWORD dwLength;
|
||
|
DWORD dwEditCount;
|
||
|
char szFileType[64];
|
||
|
} AVIFILEINFOA;
|
||
|
typedef AVIFILEINFOA *LPAVIFILEINFOA;
|
||
|
typedef struct _AVIFILEINFOW {
|
||
|
DWORD dwMaxBytesPerSec;
|
||
|
DWORD dwFlags;
|
||
|
DWORD dwCaps;
|
||
|
DWORD dwStreams;
|
||
|
DWORD dwSuggestedBufferSize;
|
||
|
DWORD dwWidth;
|
||
|
DWORD dwHeight;
|
||
|
DWORD dwScale;
|
||
|
DWORD dwRate;
|
||
|
DWORD dwLength;
|
||
|
DWORD dwEditCount;
|
||
|
WCHAR szFileType[64];
|
||
|
} AVIFILEINFOW;
|
||
|
typedef AVIFILEINFOW *LPAVIFILEINFOW;
|
||
|
#ifdef UNICODE
|
||
|
typedef AVIFILEINFOW AVIFILEINFO;
|
||
|
typedef LPAVIFILEINFOW LPAVIFILEINFO;
|
||
|
#else
|
||
|
typedef AVIFILEINFOA AVIFILEINFO;
|
||
|
typedef LPAVIFILEINFOA LPAVIFILEINFO;
|
||
|
#endif
|
||
|
|
||
|
/* AVI save callback */
|
||
|
typedef BOOL (WINAPI *AVISAVECALLBACK)( int );
|
||
|
|
||
|
/* AVI compression options */
|
||
|
typedef struct {
|
||
|
DWORD fccType;
|
||
|
DWORD fccHandler;
|
||
|
DWORD dwKeyFrameEvery;
|
||
|
DWORD dwQuality;
|
||
|
DWORD dwBytesPerSecond;
|
||
|
DWORD dwFlags;
|
||
|
LPVOID lpFormat;
|
||
|
DWORD cbFormat;
|
||
|
LPVOID lpParms;
|
||
|
DWORD cbParms;
|
||
|
DWORD dwInterleaveEvery;
|
||
|
} AVICOMPRESSOPTIONS;
|
||
|
typedef AVICOMPRESSOPTIONS *LPAVICOMPRESSOPTIONS;
|
||
|
|
||
|
/* Video header */
|
||
|
typedef struct videohdr_tag {
|
||
|
LPBYTE lpData;
|
||
|
DWORD dwBufferLength;
|
||
|
DWORD dwBytesUsed;
|
||
|
DWORD dwTimeCaptured;
|
||
|
DWORD_PTR dwUser;
|
||
|
DWORD dwFlags;
|
||
|
DWORD_PTR dwReserved[4];
|
||
|
} VIDEOHDR;
|
||
|
typedef VIDEOHDR *PVIDEOHDR;
|
||
|
typedef VIDEOHDR *LPVIDEOHDR;
|
||
|
|
||
|
/* Channel capabilities */
|
||
|
typedef struct channel_caps_tag {
|
||
|
DWORD dwFlags;
|
||
|
DWORD dwSrcRectXMod;
|
||
|
DWORD dwSrcRectYMod;
|
||
|
DWORD dwSrcRectWidthMod;
|
||
|
DWORD dwSrcRectHeightMod;
|
||
|
DWORD dwDstRectXMod;
|
||
|
DWORD dwDstRectYMod;
|
||
|
DWORD dwDstRectWidthMod;
|
||
|
DWORD dwDstRectHeightMod;
|
||
|
} CHANNEL_CAPS;
|
||
|
typedef CHANNEL_CAPS *PCHANNEL_CAPS;
|
||
|
typedef CHANNEL_CAPS *LPCHANNEL_CAPS;
|
||
|
|
||
|
/* Video capture driver capabilities */
|
||
|
typedef struct tagCapDriverCaps {
|
||
|
UINT wDeviceIndex;
|
||
|
BOOL fHasOverlay;
|
||
|
BOOL fHasDlgVideoSource;
|
||
|
BOOL fHasDlgVideoFormat;
|
||
|
BOOL fHasDlgVideoDisplay;
|
||
|
BOOL fCaptureInitialized;
|
||
|
BOOL fDriverSuppliesPalettes;
|
||
|
HANDLE hVideoIn;
|
||
|
HANDLE hVideoOut;
|
||
|
HANDLE hVideoExtIn;
|
||
|
HANDLE hVideoExtOut;
|
||
|
} CAPDRIVERCAPS;
|
||
|
typedef CAPDRIVERCAPS *PCAPDRIVERCAPS;
|
||
|
typedef CAPDRIVERCAPS *LPCAPDRIVERCAPS;
|
||
|
|
||
|
/* Video capture status */
|
||
|
typedef struct tagCapStatus {
|
||
|
UINT uiImageWidth;
|
||
|
UINT uiImageHeight;
|
||
|
BOOL fLiveWindow;
|
||
|
BOOL fOverlayWindow;
|
||
|
BOOL fScale;
|
||
|
POINT ptScroll;
|
||
|
BOOL fUsingDefaultPalette;
|
||
|
BOOL fAudioHardware;
|
||
|
BOOL fCapFileExists;
|
||
|
DWORD dwCurrentVideoFrame;
|
||
|
DWORD dwCurrentVideoFramesDropped;
|
||
|
DWORD dwCurrentWaveSamples;
|
||
|
DWORD dwCurrentTimeElapsedMS;
|
||
|
HPALETTE hPalCurrent;
|
||
|
BOOL fCapturingNow;
|
||
|
DWORD dwReturn;
|
||
|
UINT wNumVideoAllocated;
|
||
|
UINT wNumAudioAllocated;
|
||
|
} CAPSTATUS;
|
||
|
typedef CAPSTATUS *PCAPSTATUS;
|
||
|
typedef CAPSTATUS *LPCAPSTATUS;
|
||
|
|
||
|
/* Video capture parameters */
|
||
|
typedef struct tagCaptureParms {
|
||
|
DWORD dwRequestMicroSecPerFrame;
|
||
|
BOOL fMakeUserHitOKToCapture;
|
||
|
UINT wPercentDropForError;
|
||
|
BOOL fYield;
|
||
|
DWORD dwIndexSize;
|
||
|
UINT wChunkGranularity;
|
||
|
BOOL fUsingDOSMemory;
|
||
|
UINT wNumVideoRequested;
|
||
|
BOOL fCaptureAudio;
|
||
|
UINT wNumAudioRequested;
|
||
|
UINT vKeyAbort;
|
||
|
BOOL fAbortLeftMouse;
|
||
|
BOOL fAbortRightMouse;
|
||
|
BOOL fLimitEnabled;
|
||
|
UINT wTimeLimit;
|
||
|
BOOL fMCIControl;
|
||
|
BOOL fStepMCIDevice;
|
||
|
DWORD dwMCIStartTime;
|
||
|
DWORD dwMCIStopTime;
|
||
|
BOOL fStepCaptureAt2x;
|
||
|
UINT wStepCaptureAverageFrames;
|
||
|
DWORD dwAudioBufferSize;
|
||
|
BOOL fDisableWriteCache;
|
||
|
UINT AVStreamMaster;
|
||
|
} CAPTUREPARMS;
|
||
|
typedef CAPTUREPARMS *PCAPTUREPARMS;
|
||
|
typedef CAPTUREPARMS *LPCAPTUREPARMS;
|
||
|
|
||
|
/* Video capture information chunk */
|
||
|
typedef struct tagCapInfoChunk {
|
||
|
FOURCC fccInfoID;
|
||
|
LPVOID lpData;
|
||
|
LONG cbData;
|
||
|
} CAPINFOCHUNK;
|
||
|
typedef CAPINFOCHUNK *PCAPINFOCHUNK;
|
||
|
typedef CAPINFOCHUNK *LPCAPINFOCHUNK;
|
||
|
|
||
|
/* Video capture callbacks */
|
||
|
typedef LRESULT (CALLBACK *CAPYIELDCALLBACK)( HWND );
|
||
|
typedef LRESULT (CALLBACK *CAPSTATUSCALLBACKA)( HWND, int, LPCSTR );
|
||
|
typedef LRESULT (CALLBACK *CAPSTATUSCALLBACKW)( HWND, int, LPCWSTR );
|
||
|
typedef LRESULT (CALLBACK *CAPERRORCALLBACKA)( HWND, int, LPCSTR );
|
||
|
typedef LRESULT (CALLBACK *CAPERRORCALLBACKW)( HWND, int, LPCWSTR );
|
||
|
typedef LRESULT (CALLBACK *CAPVIDEOCALLBACK)( HWND, LPVIDEOHDR );
|
||
|
typedef LRESULT (CALLBACK *CAPWAVECALLBACK)( HWND, LPWAVEHDR );
|
||
|
typedef LRESULT (CALLBACK *CAPCONTROLCALLBACK)( HWND, int );
|
||
|
#ifdef UNICODE
|
||
|
#define CAPSTATUSCALLBACK CAPSTATUSCALLBACKW
|
||
|
#define CAPERRORCALLBACK CAPERRORCALLBACKW
|
||
|
#else
|
||
|
#define CAPSTATUSCALLBACK CAPSTATUSCALLBACKA
|
||
|
#define CAPERRORCALLBACK CAPERRORCALLBACKA
|
||
|
#endif
|
||
|
|
||
|
/* GUIDs */
|
||
|
EXTERN_C const IID IID_IAVIFile;
|
||
|
EXTERN_C const IID IID_IAVIStream;
|
||
|
EXTERN_C const IID IID_IAVIStreaming;
|
||
|
EXTERN_C const IID IID_IGetFrame;
|
||
|
EXTERN_C const IID IID_IAVIEditStream;
|
||
|
EXTERN_C const IID IID_IAVIPersistFile;
|
||
|
EXTERN_C const CLSID CLSID_AVISimpleUnMarshal;
|
||
|
EXTERN_C const CLSID CLSID_AVIFile;
|
||
|
|
||
|
/* IAVIStream interface */
|
||
|
#undef INTERFACE
|
||
|
#define INTERFACE IAVIStream
|
||
|
DECLARE_INTERFACE_( IAVIStream, IUnknown ) {
|
||
|
/* IUnknown methods */
|
||
|
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
|
||
|
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
|
||
|
STDMETHOD_( ULONG, Release )( THIS ) PURE;
|
||
|
|
||
|
/* IAVIStream methods */
|
||
|
STDMETHOD( Create )( THIS_ LPARAM, LPARAM ) PURE;
|
||
|
STDMETHOD( Info )( THIS_ AVISTREAMINFOW *, LONG ) PURE;
|
||
|
STDMETHOD_( LONG, FindSample )( THIS_ LONG, LONG ) PURE;
|
||
|
STDMETHOD( ReadFormat )( THIS_ LONG, LPVOID, LONG * ) PURE;
|
||
|
STDMETHOD( SetFormat )( THIS_ LONG, LPVOID, LONG ) PURE;
|
||
|
STDMETHOD( Read )( THIS_ LONG, LONG, LPVOID, LONG, LONG *, LONG * ) PURE;
|
||
|
STDMETHOD( Write )( THIS_ LONG, LONG, LPVOID, LONG, DWORD, LONG *, LONG * ) PURE;
|
||
|
STDMETHOD( Delete )( THIS_ LONG, LONG ) PURE;
|
||
|
STDMETHOD( ReadData )( THIS_ DWORD, LPVOID, LONG * ) PURE;
|
||
|
STDMETHOD( WriteData )( THIS_ DWORD, LPVOID, LONG ) PURE;
|
||
|
STDMETHOD( SetInfo )( THIS_ AVISTREAMINFOW *, LONG ) PURE;
|
||
|
};
|
||
|
typedef IAVIStream *PAVISTREAM;
|
||
|
|
||
|
/* IAVIStreaming interface */
|
||
|
#undef INTERFACE
|
||
|
#define INTERFACE IAVIStreaming
|
||
|
DECLARE_INTERFACE_( IAVIStreaming, IUnknown ) {
|
||
|
/* IUnknown methods */
|
||
|
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
|
||
|
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
|
||
|
STDMETHOD_( ULONG, Release )( THIS ) PURE;
|
||
|
|
||
|
/* IAVIStreaming methods */
|
||
|
STDMETHOD( Begin )( THIS_ LONG, LONG, LONG ) PURE;
|
||
|
STDMETHOD( End )( THIS ) PURE;
|
||
|
};
|
||
|
typedef IAVIStreaming *PAVISTREAMING;
|
||
|
|
||
|
/* IAVIEditStream interface */
|
||
|
#undef INTERFACE
|
||
|
#define INTERFACE IAVIEditStream
|
||
|
DECLARE_INTERFACE_( IAVIEditStream, IUnknown ) {
|
||
|
/* IUnknown methods */
|
||
|
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
|
||
|
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
|
||
|
STDMETHOD_( ULONG, Release )( THIS ) PURE;
|
||
|
|
||
|
/* IAVIEditStream methods */
|
||
|
STDMETHOD( Cut )( THIS_ LONG *, LONG *, PAVISTREAM * ) PURE;
|
||
|
STDMETHOD( Copy )( THIS_ LONG *, LONG *, PAVISTREAM * ) PURE;
|
||
|
STDMETHOD( Paste )( THIS_ LONG *, LONG *, PAVISTREAM, LONG, LONG ) PURE;
|
||
|
STDMETHOD( Clone )( THIS_ PAVISTREAM * ) PURE;
|
||
|
STDMETHOD( SetInfo )( THIS_ AVISTREAMINFOW *, LONG ) PURE;
|
||
|
};
|
||
|
typedef IAVIEditStream *PAVIEDITSTREAM;
|
||
|
|
||
|
/* IAVIPersistFile interface */
|
||
|
#undef INTERFACE
|
||
|
#define INTERFACE IAVIPersistFile
|
||
|
DECLARE_INTERFACE_( IAVIPersistFile, IPersistFile ) {
|
||
|
/* IUnknown methods */
|
||
|
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
|
||
|
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
|
||
|
STDMETHOD_( ULONG, Release )( THIS ) PURE;
|
||
|
|
||
|
/* IPersist methods */
|
||
|
STDMETHOD( GetClassID )( THIS_ CLSID * ) PURE;
|
||
|
|
||
|
/* IPersistFile methods */
|
||
|
STDMETHOD( IsDirty )( THIS ) PURE;
|
||
|
STDMETHOD( Load )( THIS_ LPCOLESTR, DWORD ) PURE;
|
||
|
STDMETHOD( Save )( THIS_ LPCOLESTR, BOOL ) PURE;
|
||
|
STDMETHOD( SaveCompleted )( THIS_ LPCOLESTR ) PURE;
|
||
|
STDMETHOD( GetCurFile )( THIS_ LPOLESTR * ) PURE;
|
||
|
|
||
|
/* IAVIPersistFile methods */
|
||
|
STDMETHOD( Reserved1 )( THIS ) PURE;
|
||
|
};
|
||
|
typedef IAVIPersistFile *PAVIPERSISTFILE;
|
||
|
|
||
|
/* IAVIFile interface */
|
||
|
#undef INTERFACE
|
||
|
#define INTERFACE IAVIFile
|
||
|
DECLARE_INTERFACE_( IAVIFile, IUnknown ) {
|
||
|
/* IUnknown methods */
|
||
|
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
|
||
|
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
|
||
|
STDMETHOD_( ULONG, Release )( THIS ) PURE;
|
||
|
|
||
|
/* IAVIFile methods */
|
||
|
STDMETHOD( Info )( THIS_ AVIFILEINFOW *, LONG ) PURE;
|
||
|
STDMETHOD( GetStream )( THIS_ PAVISTREAM *, DWORD, LONG ) PURE;
|
||
|
STDMETHOD( CreateStream )( THIS_ PAVISTREAM *, AVISTREAMINFOW * ) PURE;
|
||
|
STDMETHOD( WriteData )( THIS_ DWORD, LPVOID, LONG ) PURE;
|
||
|
STDMETHOD( ReadData )( THIS_ DWORD, LPVOID, LONG * ) PURE;
|
||
|
STDMETHOD( EndRecord )( THIS ) PURE;
|
||
|
STDMETHOD( DeleteStream )( THIS_ DWORD, LONG ) PURE;
|
||
|
};
|
||
|
typedef IAVIFile *PAVIFILE;
|
||
|
|
||
|
/* IGetFrame interface */
|
||
|
#undef INTERFACE
|
||
|
#define INTERFACE IGetFrame
|
||
|
DECLARE_INTERFACE_( IGetFrame, IUnknown ) {
|
||
|
/* IUnknown methods */
|
||
|
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
|
||
|
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
|
||
|
STDMETHOD_( ULONG, Release )( THIS ) PURE;
|
||
|
|
||
|
/* IGetFrame methods */
|
||
|
STDMETHOD_( LPVOID, GetFrame )( THIS_ LONG ) PURE;
|
||
|
STDMETHOD( Begin )( THIS_ LONG, LONG, LONG ) PURE;
|
||
|
STDMETHOD( End )( THIS ) PURE;
|
||
|
STDMETHOD( SetFormat )( THIS_ LPBITMAPINFOHEADER, LPVOID, int, int, int, int ) PURE;
|
||
|
};
|
||
|
typedef IGetFrame *PGETFRAME;
|
||
|
|
||
|
/* Functions in MSVFW32.DLL */
|
||
|
BOOL VFWAPI DrawDibBegin( HDRAWDIB, HDC, int, int, LPBITMAPINFOHEADER, int, int, UINT );
|
||
|
BOOL VFWAPI DrawDibChangePalette( HDRAWDIB, int, int, LPPALETTEENTRY );
|
||
|
BOOL VFWAPI DrawDibClose( HDRAWDIB );
|
||
|
BOOL VFWAPI DrawDibDraw( HDRAWDIB, HDC, int, int, int, int, LPBITMAPINFOHEADER, LPVOID, int, int, int, int, UINT );
|
||
|
BOOL VFWAPI DrawDibEnd( HDRAWDIB );
|
||
|
LPVOID VFWAPI DrawDibGetBuffer( HDRAWDIB, LPBITMAPINFOHEADER, DWORD, DWORD );
|
||
|
HPALETTE VFWAPI DrawDibGetPalette( HDRAWDIB );
|
||
|
HDRAWDIB VFWAPI DrawDibOpen( void );
|
||
|
LRESULT VFWAPI DrawDibProfileDisplay( LPBITMAPINFOHEADER );
|
||
|
UINT VFWAPI DrawDibRealize( HDRAWDIB, HDC, BOOL );
|
||
|
BOOL VFWAPI DrawDibSetPalette( HDRAWDIB, HPALETTE );
|
||
|
BOOL VFWAPI DrawDibStart( HDRAWDIB, DWORD );
|
||
|
BOOL VFWAPI DrawDibStop( HDRAWDIB );
|
||
|
BOOL VFWAPI DrawDibTime( HDRAWDIB, LPDRAWDIBTIME );
|
||
|
LRESULT VFWAPI ICClose( HIC );
|
||
|
DWORD VFWAPIV ICCompress( HIC, DWORD, LPBITMAPINFOHEADER, LPVOID, LPBITMAPINFOHEADER, LPVOID, LPDWORD, LPDWORD, LONG, DWORD, DWORD, LPBITMAPINFOHEADER, LPVOID );
|
||
|
BOOL VFWAPI ICCompressorChoose( HWND, UINT, LPVOID, LPVOID, PCOMPVARS, LPSTR );
|
||
|
void VFWAPI ICCompressorFree( PCOMPVARS );
|
||
|
DWORD VFWAPIV ICDecompress( HIC, DWORD, LPBITMAPINFOHEADER, LPVOID, LPBITMAPINFOHEADER, LPVOID );
|
||
|
DWORD VFWAPIV ICDraw( HIC, DWORD, LPVOID, LPVOID, DWORD, LONG );
|
||
|
DWORD VFWAPIV ICDrawBegin( HIC, DWORD, HPALETTE, HWND, HDC, int, int, int, int, LPBITMAPINFOHEADER, int, int, int, int, DWORD, DWORD );
|
||
|
HIC VFWAPI ICGetDisplayFormat( HIC, LPBITMAPINFOHEADER, LPBITMAPINFOHEADER, int, int, int );
|
||
|
LRESULT VFWAPI ICGetInfo( HIC, ICINFO *, DWORD );
|
||
|
HANDLE VFWAPI ICImageCompress( HIC, UINT, LPBITMAPINFO, LPVOID, LPBITMAPINFO, LONG, LONG * );
|
||
|
HANDLE VFWAPI ICImageDecompress( HIC, UINT, LPBITMAPINFO, LPVOID, LPBITMAPINFO );
|
||
|
BOOL VFWAPI ICInfo( DWORD, DWORD, ICINFO * );
|
||
|
BOOL VFWAPI ICInstall( DWORD, DWORD, LPARAM, LPSTR, UINT );
|
||
|
HIC VFWAPI ICLocate( DWORD, DWORD, LPBITMAPINFOHEADER, LPBITMAPINFOHEADER, WORD );
|
||
|
HIC VFWAPI ICOpen( DWORD, DWORD, UINT );
|
||
|
HIC VFWAPI ICOpenFunction( DWORD, DWORD, UINT, FARPROC );
|
||
|
BOOL VFWAPI ICRemove( DWORD, DWORD, UINT );
|
||
|
LRESULT VFWAPI ICSendMessage( HIC, UINT, DWORD_PTR, DWORD_PTR );
|
||
|
LPVOID VFWAPI ICSeqCompressFrame( PCOMPVARS, UINT, LPVOID, BOOL *, LONG * );
|
||
|
void VFWAPI ICSeqCompressFrameEnd( PCOMPVARS );
|
||
|
BOOL VFWAPI ICSeqCompressFrameStart( PCOMPVARS, LPBITMAPINFO );
|
||
|
HWND VFWAPIV MCIWndCreateA( HWND, HINSTANCE, DWORD, LPCSTR );
|
||
|
HWND VFWAPIV MCIWndCreateW( HWND, HINSTANCE, DWORD, LPCWSTR );
|
||
|
BOOL VFWAPIV MCIWndRegisterClass( void );
|
||
|
DWORD VFWAPI VideoForWindowsVersion( void );
|
||
|
#ifdef DRAWDIB_INCLUDE_STRETCHDIB
|
||
|
void VFWAPI StretchDIB( LPBITMAPINFOHEADER, LPVOID, int, int, int, int, LPBITMAPINFOHEADER, LPVOID, int, int, int, int );
|
||
|
#endif
|
||
|
#ifdef _INC_COMMDLG
|
||
|
BOOL VFWAPI GetOpenFileNamePreviewA( LPOPENFILENAMEA );
|
||
|
BOOL VFWAPI GetOpenFileNamePreviewW( LPOPENFILENAMEW );
|
||
|
BOOL VFWAPI GetSaveFileNamePreviewA( LPOPENFILENAMEA );
|
||
|
BOOL VFWAPI GetSaveFileNamePreviewW( LPOPENFILENAMEW );
|
||
|
#endif
|
||
|
|
||
|
/* Functions in AVIFIL32.DLL */
|
||
|
STDAPI AVIBuildFilterA( LPSTR, LONG, BOOL );
|
||
|
STDAPI AVIBuildFilterW( LPWSTR, LONG, BOOL );
|
||
|
STDAPI AVIClearClipboard( void );
|
||
|
STDAPI_( ULONG ) AVIFileAddRef( PAVIFILE );
|
||
|
STDAPI AVIFileCreateStreamA( PAVIFILE, PAVISTREAM *, AVISTREAMINFOA * );
|
||
|
STDAPI AVIFileCreateStreamW( PAVIFILE, PAVISTREAM *, AVISTREAMINFOW * );
|
||
|
STDAPI AVIFileEndRecord( PAVIFILE );
|
||
|
STDAPI_( void ) AVIFileExit( void );
|
||
|
STDAPI AVIFileGetStream( PAVIFILE, PAVISTREAM *, DWORD, LONG );
|
||
|
STDAPI AVIFileInfoA( PAVIFILE, LPAVIFILEINFOA, LONG );
|
||
|
STDAPI AVIFileInfoW( PAVIFILE, LPAVIFILEINFOW, LONG );
|
||
|
STDAPI_( void ) AVIFileInit( void );
|
||
|
STDAPI AVIFileOpenA( PAVIFILE *, LPCSTR, UINT, LPCLSID );
|
||
|
STDAPI AVIFileOpenW( PAVIFILE *, LPCWSTR, UINT, LPCLSID );
|
||
|
STDAPI AVIFileReadData( PAVIFILE, DWORD, LPVOID, LONG * );
|
||
|
STDAPI_( ULONG ) AVIFileRelease( PAVIFILE );
|
||
|
STDAPI AVIFileWriteData( PAVIFILE, DWORD, LPVOID, LONG );
|
||
|
STDAPI AVIGetFromClipboard( PAVIFILE * );
|
||
|
STDAPI AVIMakeCompressedStream( PAVISTREAM *, PAVISTREAM, AVICOMPRESSOPTIONS *, CLSID * );
|
||
|
STDAPI AVIMakeFileFromStreams( PAVIFILE *, int, PAVISTREAM * );
|
||
|
STDAPI AVIMakeStreamFromClipboard( UINT, HANDLE, PAVISTREAM * );
|
||
|
STDAPI AVIPutFileOnClipboard( PAVIFILE );
|
||
|
STDAPIV AVISaveA( LPCSTR, CLSID *, AVISAVECALLBACK, int, PAVISTREAM, LPAVICOMPRESSOPTIONS, ... );
|
||
|
STDAPI_( INT_PTR ) AVISaveOptions( HWND, UINT, int, PAVISTREAM *, LPAVICOMPRESSOPTIONS * );
|
||
|
STDAPI AVISaveOptionsFree( int, LPAVICOMPRESSOPTIONS * );
|
||
|
STDAPI AVISaveVA( LPCSTR, CLSID *, AVISAVECALLBACK, int, PAVISTREAM *, LPAVICOMPRESSOPTIONS * );
|
||
|
STDAPI AVISaveVW( LPCWSTR, CLSID *, AVISAVECALLBACK, int, PAVISTREAM *, LPAVICOMPRESSOPTIONS * );
|
||
|
STDAPIV AVISaveW( LPCWSTR, CLSID *, AVISAVECALLBACK, int, PAVISTREAM, LPAVICOMPRESSOPTIONS, ... );
|
||
|
STDAPI_( ULONG ) AVIStreamAddRef( PAVISTREAM );
|
||
|
STDAPI AVIStreamBeginStreaming( PAVISTREAM, LONG, LONG, LONG );
|
||
|
STDAPI AVIStreamCreate( PAVISTREAM *, LONG, LONG, CLSID * );
|
||
|
STDAPI AVIStreamEndStreaming( PAVISTREAM );
|
||
|
STDAPI_( LONG ) AVIStreamFindSample( PAVISTREAM, LONG, LONG );
|
||
|
STDAPI_( LPVOID ) AVIStreamGetFrame( PGETFRAME, LONG );
|
||
|
STDAPI AVIStreamGetFrameClose( PGETFRAME );
|
||
|
STDAPI_( PGETFRAME ) AVIStreamGetFrameOpen( PAVISTREAM, LPBITMAPINFOHEADER );
|
||
|
STDAPI AVIStreamInfoA( PAVISTREAM, LPAVISTREAMINFOA, LONG );
|
||
|
STDAPI AVIStreamInfoW( PAVISTREAM, LPAVISTREAMINFOW, LONG );
|
||
|
STDAPI_( LONG ) AVIStreamLength( PAVISTREAM );
|
||
|
STDAPI AVIStreamOpenFromFileA( PAVISTREAM *, LPCSTR, DWORD, LONG, UINT, CLSID * );
|
||
|
STDAPI AVIStreamOpenFileFromW( PAVISTREAM *, LPCWSTR, DWORD, LONG, UINT, CLSID * );
|
||
|
STDAPI AVIStreamRead( PAVISTREAM, LONG, LONG, LPVOID, LONG, LONG *, LONG * );
|
||
|
STDAPI AVIStreamReadData( PAVISTREAM, DWORD, LPVOID, LONG * );
|
||
|
STDAPI AVIStreamReadFormat( PAVISTREAM, LONG, LPVOID, LONG * );
|
||
|
STDAPI_( ULONG ) AVIStreamRelease( PAVISTREAM );
|
||
|
STDAPI_( LONG ) AVIStreamSampleToTime( PAVISTREAM, LONG );
|
||
|
STDAPI AVIStreamSetFormat( PAVISTREAM, LONG, LPVOID, LONG );
|
||
|
STDAPI_( LONG ) AVIStreamStart( PAVISTREAM );
|
||
|
STDAPI_( LONG ) AVIStreamTimeToSample( PAVISTREAM, LONG );
|
||
|
STDAPI AVIStreamWrite( PAVISTREAM, LONG, LONG, LPVOID, LONG, DWORD, LONG *, LONG * );
|
||
|
STDAPI AVIStreamWriteData( PAVISTREAM, DWORD, LPVOID, LONG );
|
||
|
STDAPI CreateEditableStream( PAVISTREAM *, PAVISTREAM );
|
||
|
STDAPI EditStreamClone( PAVISTREAM, PAVISTREAM * );
|
||
|
STDAPI EditStreamCopy( PAVISTREAM, LONG *, LONG *, PAVISTREAM * );
|
||
|
STDAPI EditStreamCut( PAVISTREAM, LONG *, LONG *, PAVISTREAM * );
|
||
|
STDAPI EditStreamPaste( PAVISTREAM, LONG *, LONG *, PAVISTREAM, LONG, LONG );
|
||
|
STDAPI EditStreamSetInfoA( PAVISTREAM, LPAVISTREAMINFOA, LONG );
|
||
|
STDAPI EditStreamSetInfoW( PAVISTREAM, LPAVISTREAMINFOW, LONG );
|
||
|
STDAPI EditStreamSetNameA( PAVISTREAM, LPCSTR );
|
||
|
STDAPI EditStreamSetNameW( PAVISTREAM, LPCWSTR );
|
||
|
|
||
|
/* Functions in AVICAP32.DLL */
|
||
|
HWND VFWAPI capCreateCaptureWindowA( LPCSTR, DWORD, int, int, int, int, HWND, int );
|
||
|
HWND VFWAPI capCreateCaptureWindowW( LPCWSTR, DWORD, int, int, int, int, HWND, int );
|
||
|
BOOL VFWAPI capGetDriverDescriptionA( UINT, LPSTR, int, LPSTR, int );
|
||
|
BOOL VFWAPI capGetDriverDescriptionW( UINT, LPWSTR, int, LPWSTR, int );
|
||
|
|
||
|
/* Variable used internally by various macros */
|
||
|
static DWORD dwICValue;
|
||
|
|
||
|
/* Functions implemented as macros */
|
||
|
#define ICQueryAbout( x ) \
|
||
|
(ICSendMessage( x, ICM_ABOUT, ((DWORD_PTR)-1), ICMF_ABOUT_QUERY ) == ICERR_OK)
|
||
|
#define ICAbout( x, p ) \
|
||
|
ICSendMessage( x, ICM_ABOUT, (DWORD_PTR)(UINT_PTR)(p), 0 )
|
||
|
#define ICQueryConfigure( x ) \
|
||
|
(ICSendMessage( x, ICM_CONFIGURE, ((DWORD_PTR)-1), ICMF_CONFIGURE_QUERY ) == ICERR_OK )
|
||
|
#define ICConfigure( x, p ) \
|
||
|
ICSendMessage( x, ICM_CONFIGURE, (DWORD_PTR)(UINT_PTR)(p), 0 )
|
||
|
#define ICGetState( x, p1, p2 ) \
|
||
|
ICSendMessage( x, ICM_GETSTATE, (DWORD_PTR)(LPVOID)(p1), (DWORD_PTR)(p2) )
|
||
|
#define ICSetState( x, p1, p2 ) \
|
||
|
ICSendMessage( x, ICM_SETSTATE, (DWORD_PTR)(LPVOID)(p1), (DWORD_PTR)(p2) )
|
||
|
#define ICGetStateSize( x ) \
|
||
|
(DWORD)ICGetState( x, NULL, 0 )
|
||
|
#define ICDrawWindow( x, p ) \
|
||
|
ICSendMessage( x, ICM_DRAW_WINDOW, (DWORD_PTR)(LPVOID)(p), sizeof( RECT ) )
|
||
|
#define ICCompressBegin( x, p1, p2 ) \
|
||
|
ICSendMessage( x, ICM_COMPRESS_BEGIN, (DWORD_PTR)(LPVOID)(p1), \
|
||
|
(DWORD_PTR)(LPVOID)(p2) )
|
||
|
#define ICCompressQuery( x, p1, p2 ) \
|
||
|
ICSendMessage( x, ICM_COMPRESS_QUERY, (DWORD_PTR)(LPVOID)(p1), \
|
||
|
(DWORD_PTR)(LPVOID)(p2) )
|
||
|
#define ICCompressGetFormat( x, p1, p2 ) \
|
||
|
ICSendMessage( x, ICM_COMPRESS_GET_FORMAT, (DWORD_PTR)(LPVOID)(p1), \
|
||
|
(DWORD_PTR)(LPVOID)(p2) )
|
||
|
#define ICCompressGetFormatSize( x, p ) \
|
||
|
(DWORD)ICCompressGetFormat( x, p, NULL )
|
||
|
#define ICCompressGetSize( x, p1, p2 ) \
|
||
|
(DWORD)ICSendMessage( x, ICM_COMPRESS_GET_SIZE, (DWORD_PTR)(LPVOID)(p1), \
|
||
|
(DWORD_PTR)(LPVOID)(p2) )
|
||
|
#define ICCompressEnd( x ) \
|
||
|
ICSendMessage( x, ICM_COMPRESS_END, 0, 0 )
|
||
|
#define ICDecompressBegin( x, p1, p2 ) \
|
||
|
ICSendMessage( x, ICM_DECOMPRESS_BEGIN, (DWORD_PTR)(LPVOID)(p1), \
|
||
|
(DWORD_PTR)(LPVOID)(p2) )
|
||
|
#define ICDecompressQuery( x, p1, p2 ) \
|
||
|
ICSendMessage( x, ICM_DECOMPRESS_QUERY, (DWORD_PTR)(LPVOID)(p1), \
|
||
|
(DWORD_PTR)(LPVOID)(p2) )
|
||
|
#define ICDecompressGetFormat( x, p1, p2 ) \
|
||
|
((LONG)ICSendMessage( x, ICM_DECOMPRESS_GET_FORMAT, (DWORD_PTR)(LPVOID)(p1), \
|
||
|
(DWORD_PTR)(LPVOID)(p2) ))
|
||
|
#define ICDecompressGetFormatSize( x, p ) \
|
||
|
ICDecompressGetFormat( x, p, NULL )
|
||
|
#define ICDecompressGetPalette( x, p1, p2 ) \
|
||
|
ICSendMessage( x, ICM_DECOMPRESS_GET_PALETTE, (DWORD_PTR)(LPVOID)(p1), \
|
||
|
(DWORD_PTR)(LPVOID)(p2) )
|
||
|
#define ICDecompressSetPalette( x, p ) \
|
||
|
ICSendMessage( x, ICM_DECOMPRESS_SET_PALETTE, (DWORD_PTR)(LPVOID)(p1), 0 )
|
||
|
#define ICDecompressEnd( x ) \
|
||
|
ICSendMessage( x, ICM_DECOMPRESS_END, 0, 0 )
|
||
|
#define ICDecompressExEnd( x ) \
|
||
|
ICSendMessage( x, ICM_DECOMPRESSEX_END, 0, 0 )
|
||
|
#define ICDrawQuery( x, p ) \
|
||
|
ICSendMessage( x, ICM_DRAW_QUERY, (DWORD_PTR)(LPVOID)(p), 0 )
|
||
|
#define ICDrawChangePalette( x, p ) \
|
||
|
ICSendMessage( x, ICM_DRAW_CHANGEPALETTE, (DWORD_PTR)(LPVOID)(p), 0 )
|
||
|
#define ICGetBuffersWanted( x, p ) \
|
||
|
ICSendMessage( x, ICM_GETBUFFERSWANTED, (DWORD_PTR)(LPVOID)(p), 0 )
|
||
|
#define ICDrawEnd( x ) \
|
||
|
ICSendMessage( x, ICM_DRAW_END, 0, 0 )
|
||
|
#define ICDrawStart( x ) \
|
||
|
ICSendMessage( x, ICM_DRAW_START, 0, 0 )
|
||
|
#define ICDrawStartPlay( x, p1, p2 ) \
|
||
|
ICSendMessage( x, ICM_DRAW_START_PLAY, (DWORD_PTR)(p1), (DWORD_PTR)(p2) )
|
||
|
#define ICDrawStop( x ) \
|
||
|
ICSendMessage( x, ICM_DRAW_STOP, 0, 0 )
|
||
|
#define ICDrawStopPlay( x ) \
|
||
|
ICSendMessage( x, ICM_DRAW_STOP_PLAY, 0, 0 )
|
||
|
#define ICDrawGetTime( x, p ) \
|
||
|
ICSendMessage( x, ICM_DRAW_GETTIME, (DWORD_PTR)(LPVOID)(p), 0 )
|
||
|
#define ICDrawSetTime( x, p ) \
|
||
|
ICSendMessage( x, ICM_DRAW_SETTIME, (DWORD_PTR)(p), 0 )
|
||
|
#define ICDrawRealize( x, p1, p2 ) \
|
||
|
ICSendMessage( x, ICM_DRAW_REALIZE, (DWORD_PTR)(UINT_PTR)(HDC)(p1), \
|
||
|
(DWORD_PTR)(BOOL)(p2) )
|
||
|
#define ICDrawFlush( x ) \
|
||
|
ICSendMessage( x, ICM_DRAW_FLUSH, 0, 0 )
|
||
|
#define ICDrawRenderBuffer( x ) \
|
||
|
ICSendMessage( x, ICM_DRAW_RENDERBUFFER, 0, 0 )
|
||
|
#define ICDecompressOpen( p1, p2, p3, p4 ) \
|
||
|
ICLocate( p1, p2, p3, p4, ICMODE_DECOMPRESS )
|
||
|
#define ICDrawOpen( p1, p2, p3 ) \
|
||
|
ICLocate( p1, p2, p3, NULL, ICMODE_DRAW )
|
||
|
#define DrawDibUpdate( p1, p2, p3, p4 ) \
|
||
|
DrawDibDraw( p1, p2, p3, p4, 0, 0, NULL, NULL, 0, 0, 0, 0, DDF_UPDATE )
|
||
|
#define FromHex( x ) \
|
||
|
(((x) >= 'A') ? ((x) + 10 - 'A') : ((x) - '0'))
|
||
|
#define StreamFromFOURCC( x ) \
|
||
|
((WORD)((FromHex( LOBYTE( LOWORD( x ) ) ) << 4) + \
|
||
|
FromHex( HIBYTE( LOWORD( x ) ) )))
|
||
|
#define TWOCCFromFOURCC( x ) \
|
||
|
HIWORD( x )
|
||
|
#define ToHex( x ) \
|
||
|
((BYTE)(((x) > 9) ? ((x) - 10 + 'A') : ((x) + '0')))
|
||
|
#define MAKEAVICKID( p1, p2 ) \
|
||
|
MAKELONG( (ToHex( (p2) & 0x0F ) << 8) | (ToHex( ((p2) & 0xF0) >> 4 )), p1 )
|
||
|
#define AVIStreamSampleToSample( p1, p2, p3 ) \
|
||
|
AVIStreamTimeToSample( p1, AVIStreamSampleToTime( p2, p3 ) )
|
||
|
#define AVIStreamNextSample( p1, p2 ) \
|
||
|
AVIStreamFindSample( p1, p2 + 1, FIND_NEXT | FIND_ANY )
|
||
|
#define AVIStreamPrevSample( p1, p2 ) \
|
||
|
AVIStreamFindSample( p1, p2 - 1, FIND_PREV | FIND_ANY )
|
||
|
#define AVIStreamNearestSample( p1, p2 ) \
|
||
|
AVIStreamFindSample( p1, p2, FIND_PREV | FIND_ANY )
|
||
|
#define AVIStreamNextKeyFrame( p1, p2 ) \
|
||
|
AVIStreamFindSample( p1, p2 + 1, FIND_NEXT | FIND_KEY )
|
||
|
#define AVIStreamPrevKeyFrame( p1, p2 ) \
|
||
|
AVIStreamFindSample( p1, p2 - 1, FIND_PREV | FIND_KEY )
|
||
|
#define AVIStreamNearestKeyFrame( p1, p2 ) \
|
||
|
AVIStreamFindSample( p1, p2, FIND_PREV | FIND_KEY )
|
||
|
#define AVIStreamIsKeyFrame( p1, p2 ) \
|
||
|
(AVIStreamNearestKeyFrame( p1, p2 ) == p2)
|
||
|
#define AVIStreamPrevSampleTime( p1, p2 ) \
|
||
|
AVIStreamSampleToTime( p1, AVIStreamPrevSample( p1, \
|
||
|
AVIStreamTimeToSample( p1, p2 ) ) )
|
||
|
#define AVIStreamNextSampleTime( p1, p2 ) \
|
||
|
AVIStreamSampleToTime( p1, AVIStreamNextSample( p1, \
|
||
|
AVIStreamTimeToSample( p1, p2 ) ) )
|
||
|
#define AVIStreamNearestSampleTime( p1, p2 ) \
|
||
|
AVIStreamSampleToTime( p1, AVIStreamNearestSample( p1, \
|
||
|
AVIStreamTimeToSample( p1, p2 ) ) )
|
||
|
#define AVIStreamNextKeyFrameTime( p1, p2 ) \
|
||
|
AVIStreamSampleToTime( p1, AVIStreamNextKeyFrame( p1, \
|
||
|
AVIStreamTimeToSample( p1, p2 ) ) )
|
||
|
#define AVIStreamPrevKeyFrameTime( p1, p2 ) \
|
||
|
AVIStreamSampleToTime( p1, AVIStreamPrevKeyFrame( p1, \
|
||
|
AVIStreamTimeToSample( p1, p2 ) ) )
|
||
|
#define AVIStreamNearestKeyFrameTime( p1, p2 ) \
|
||
|
AVIStreamSampleToTime( p1, AVIStreamNearestKeyFrame( p1, \
|
||
|
AVIStreamTimeToSample( p1, p2 ) ) )
|
||
|
#define AVIStreamStartTime( x ) \
|
||
|
AVIStreamSampleToTime( x, AVIStreamStart( x ) )
|
||
|
#define AVIStreamLengthTime( x ) \
|
||
|
AVIStreamSampleToTime( x, AVIStreamLength( x ) )
|
||
|
#define AVIStreamEnd( x ) \
|
||
|
(AVIStreamStart( x ) + AVIStreamLength( x ))
|
||
|
#define AVIStreamEndTime( x ) \
|
||
|
AVIStreamSampleToTime( x, AVIStreamEnd( x ) )
|
||
|
#define AVIStreamSampleSize( p1, p2, p3 ) \
|
||
|
AVIStreamRead( p1, p2, 1, NULL, 0, p3, NULL )
|
||
|
#define AVIStreamFormatSize( p1, p2, p3 ) \
|
||
|
AVIStreamReadFormat( p1, p2, NULL, p3 )
|
||
|
#define AVIStreamDataSize( p1, p2, p3 ) \
|
||
|
AVIStreamReadData( p1, p2, NULL, p3 )
|
||
|
#define MCIWndCanPlay( x ) \
|
||
|
(BOOL)MCIWndSM( x, MCIWNDM_CAN_PLAY, 0, 0 )
|
||
|
#define MCIWndCanRecord( x ) \
|
||
|
(BOOL)MCIWndSM( x, MCIWNDM_CAN_RECORD, 0, 0 )
|
||
|
#define MCIWndCanSave( x ) \
|
||
|
(BOOL)MCIWndSM( x, MCIWNDM_CAN_SAVE, 0, 0 )
|
||
|
#define MCIWndCanWindow( x ) \
|
||
|
(BOOL)MCIWndSM( x, MCIWNDM_CAN_WINDOW, 0, 0 )
|
||
|
#define MCIWndCanEject( x ) \
|
||
|
(BOOL)MCIWndSM( x, MCIWNDM_CAN_EJECT, 0, 0 )
|
||
|
#define MCIWndCanConfig( x ) \
|
||
|
(BOOL)MCIWndSM( x, MCIWNDM_CAN_CONFIG, 0, 0 )
|
||
|
#define MCIWndPaletteKick( x ) \
|
||
|
(BOOL)MCIWndSM( x, MCIWNDM_PALETTEKICK, 0, 0 )
|
||
|
#define MCIWndSave( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCI_SAVE, 0, (LPARAM)(LPVOID)(p) )
|
||
|
#define MCIWndSaveDialog( x ) \
|
||
|
MCIWndSave( x, -1 )
|
||
|
#define MCIWndNew( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_NEW, 0, (LPARAM)(LPVOID)(p) )
|
||
|
#define MCIWndRecord( x ) \
|
||
|
(LONG)MCIWndSM( x, MCI_RECORD, 0, 0 )
|
||
|
#define MCIWndOpen( x, p1, p2 ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_OPEN, (WPARAM)(UINT)(p2), (LPARAM)(LPVOID)(p1) )
|
||
|
#define MCIWndOpenDialog( x ) \
|
||
|
MCIWndOpen( x, -1, 0 )
|
||
|
#define MCIWndClose( x ) \
|
||
|
(LONG)MCIWndSM( x, MCI_CLOSE, 0, 0 )
|
||
|
#define MCIWndPlay( x ) \
|
||
|
(LONG)MCIWndSM( x, MCI_PLAY, 0, 0 )
|
||
|
#define MCIWndStop( x ) \
|
||
|
(LONG)MCIWndSM( x, MCI_STOP, 0, 0 )
|
||
|
#define MCIWndPause( x ) \
|
||
|
(LONG)MCIWndSM( x, MCI_PAUSE, 0, 0 )
|
||
|
#define MCIWndResume( x ) \
|
||
|
(LONG)MCIWndSM( x, MCI_RESUME, 0, 0 )
|
||
|
#define MCIWndSeek( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCI_SEEK, 0, (LPARAM)(LONG)(p) )
|
||
|
#define MCIWndEject( x ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_EJECT, 0, 0 )
|
||
|
#define MCIWndHome( x ) \
|
||
|
MCIWndSeek( x, MCIWND_START )
|
||
|
#define MCIWndEnd( x ) \
|
||
|
MCIWndSeek( x, MCIWND_END )
|
||
|
#define MCIWndGetSource( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GET_SOURCE, 0, (LPARAM)(LPRECT)(p) )
|
||
|
#define MCIWndPutSource( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_PUT_SOURCE, 0, (LPARAM)(LPRECT)(p) )
|
||
|
#define MCIWndGetDest( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GET_DEST, 0, (LPARAM)(LPRECT)(p) )
|
||
|
#define MCIWndPutDest( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_PUT_DEST, 0, (LPARAM)(LPRECT)(p) )
|
||
|
#define MCIWndPlayReverse( x ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_PLAYREVERSE, 0, 0 )
|
||
|
#define MCIWndPlayFrom( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_PLAYFROM, 0, (LPARAM)(LONG)(p) )
|
||
|
#define MCIWndPlayTo( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_PLAYTO, 0, (LPARAM)(LONG)(p) )
|
||
|
#define MCIWndPlayFromTo( x, p1, p2 ) \
|
||
|
(MCIWndSeek( x, p1 ), MCIWndPlayTo( x, p2 ))
|
||
|
#define MCIWndGetDeviceID( x ) \
|
||
|
(UINT)MCIWndSM( x, MCIWNDM_GETDEVICEID, 0, 0 )
|
||
|
#define MCIWndGetAlias( x ) \
|
||
|
(UINT)MCIWndSM( x, MCIWNDM_GETALIAS, 0, 0 )
|
||
|
#define MCIWndGetMode( x, p1, p2 ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GETMODE, (WPARAM)(UINT)(p2), (LPARAM)(LPTSTR)(p1) )
|
||
|
#define MCIWndGetPosition( x ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GETPOSITION, 0, 0 )
|
||
|
#define MCIWndGetPositionString( x, p1, p2 ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GETPOSITION, (WPARAM)(UINT)(p2), (LPARAM)(LPTSTR)(p1) )
|
||
|
#define MCIWndGetStart( x ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GETSTART, 0, 0 )
|
||
|
#define MCIWndGetLength( x ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GETLENGTH, 0, 0 )
|
||
|
#define MCIWndGetEnd( x ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GETEND, 0, 0 )
|
||
|
#define MCIWndStep( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCI_STEP, 0, (LPARAM)(long)(p) )
|
||
|
#define MCIWndDestroy( x ) \
|
||
|
(VOID)MCIWndSM( x, WM_CLOSE, 0, 0 )
|
||
|
#define MCIWndSetZoom( x, p ) \
|
||
|
(VOID)MCIWndSM( x, MCIWNDM_SETZOOM, 0, (LPARAM)(UINT)(p) )
|
||
|
#define MCIWndGetZoom( x ) \
|
||
|
(UINT)MCIWndSM( x, MCIWNDM_GETZOOM, 0, 0 )
|
||
|
#define MCIWndSetVolume( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_SETVOLUME, 0, (LPARAM)(UINT)(p) )
|
||
|
#define MCIWndGetVolume( x ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GETVOLUME, 0, 0 )
|
||
|
#define MCIWndSetSpeed( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_SETSPEED, 0, (LPARAM)(UINT)(p) )
|
||
|
#define MCIWndGetSpeed( x ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GETSPEED, 0, 0 )
|
||
|
#define MCIWndSetTimeFormat( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_SETTIMEFORMAT, 0, (LPARAM)(LPTSTR)(p) )
|
||
|
#define MCIWndGetTimeFormat( x, p1, p2 ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GETTIMEFORMAT, (WPARAM)(UINT)(p2), (LPARAM)(LPTSTR)(p2) )
|
||
|
#define MCIWndValidateMedia( x ) \
|
||
|
(VOID)MCIWndSM( x, MCIWNDM_VALIDATEMEDIA, 0, 0 )
|
||
|
#define MCIWndSetRepeat( x, p ) \
|
||
|
(void)MCIWndSM( x, MCIWNDM_SETREPEAT, 0, (LPARAM)(BOOL)(p) )
|
||
|
#define MCIWndGetRepeat( x ) \
|
||
|
(BOOL)MCIWndSM( x, MCIWNDM_GETREPEAT, 0, 0 )
|
||
|
#define MCIWndUseFrames( x ) \
|
||
|
MCIWndSetTimeFormat( x, TEXT( "frames" ) )
|
||
|
#define MCIWndUseTime( x ) \
|
||
|
MCIWndSetTimeFormat( x, TEXT( "ms" ) )
|
||
|
#define MCIWndSetActiveTimer( x, p ) \
|
||
|
(VOID)MCIWndSM( x, MCIWNDM_SETACTIVETIMER, (WPARAM)(UINT)(p), 0 )
|
||
|
#define MCIWndSetInactiveTimer( x, p ) \
|
||
|
(VOID)MCIWndSM( x, MCIWNDM_SETINACTIVETIMER, (WPARAM)(UINT)(p), 0 )
|
||
|
#define MCIWndSetTimers( x, p1, p2 ) \
|
||
|
(VOID)MCIWndSM( x, MCIWNDM_SETTIMERS, (WPARAM)(UINT)(p1), (LPARAM)(UINT)(p2) )
|
||
|
#define MCIWndGetActiveTimer( x ) \
|
||
|
(UINT)MCIWndSM( x, MCIWNDM_GETACTIVETIMER, 0, 0 )
|
||
|
#define MCIWndGetInactiveTimer( x ) \
|
||
|
(UINT)MCIWndSM( x, MCIWNDM_GETINACTIVETIMER, 0, 0 )
|
||
|
#define MCIWndRealize( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_REALIZE, (WPARAM)(BOOL)(p), 0 )
|
||
|
#define MCIWndSendString( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_SENDSTRING, 0, (LPARAM)(LPTSTR)(p) )
|
||
|
#define MCIWndReturnString( x, p1, p2 ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_RETURNSTRING, (WPARAM)(UINT)(p2), (LPARAM)(LPVOID)(p1) )
|
||
|
#define MCIWndGetError( x, p1, p2 ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GETERROR, (WPARAM)(UINT)(p2), (LPARAM)(LPVOID)(p1) )
|
||
|
#define MCIWndGetPalette( x ) \
|
||
|
(HPALETTE)MCIWndSM( x, MCIWNDM_GETPALETTE, 0, 0 )
|
||
|
#define MCIWndSetPalette( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_SETPALETTE, (WPARAM)(HPALETTE)(p), 0 )
|
||
|
#define MCIWndGetFileName( x, p1, p2 ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GETFILENAME, (WPARAM)(UINT)(p2), (LPARAM)(LPVOID)(p1) )
|
||
|
#define MCIWndGetDevice( x, p1, p2 ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_GETDEVICE, (WPARAM)(UINT)(p2), (LPARAM)(LPVOID)(p1) )
|
||
|
#define MCIWndGetStyles( x ) \
|
||
|
(UINT)MCIWndSM( x, MCIWNDM_GETSTYLES, 0, 0 )
|
||
|
#define MCIWndChangeStyles( x, p1, p2 ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_CHANGESTYLES, (WPARAM)(UINT)(p1), (LPARAM)(LONG)(p2) )
|
||
|
#define MCIWndOpenInterface( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_OPENINTERFACE, 0, (LPARAM)(LPUNKNOWN)(p) )
|
||
|
#define MCIWndSetOwner( x, p ) \
|
||
|
(LONG)MCIWndSM( x, MCIWNDM_SETOWNER, (WPARAM)(p), 0 )
|
||
|
#define capSetCallbackOnError( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_CALLBACK_ERROR, 0, (LPARAM)(LPVOID)(p) )
|
||
|
#define capSetCallbackOnStatus( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_CALLBACK_STATUS, 0, (LPARAM)(LPVOID)(p) )
|
||
|
#define capSetCallbackOnYield( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_CALLBACK_YIELD, 0, (LPARAM)(LPVOID)(p) )
|
||
|
#define capSetCallbackOnFrame( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_CALLBACK_FRAME, 0, (LPARAM)(LPVOID)(p) )
|
||
|
#define capSetCallbackOnVideoStream( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, (LPARAM)(LPVOID)(p) )
|
||
|
#define capSetCallbackOnWaveStream( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, (LPARAM)(LPVOID)(p) )
|
||
|
#define capSetCallbackOnCapControl( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, (LPARAM)(LPVOID)(p) )
|
||
|
#define capSetUserData( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_USER_DATA, 0, (LPARAM)(p) )
|
||
|
#define capGetUserData( x ) \
|
||
|
AVICapSM( x, WM_CAP_GET_USER_DATA, 0, 0 )
|
||
|
#define capDriverConnect( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_DRIVER_CONNECT, (WPARAM)(p), 0 )
|
||
|
#define capDriverDisconnect( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_DRIVER_DISCONNECT, 0, 0 )
|
||
|
#define capDriverGetName( x, p1, p2 ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_DRIVER_GET_NAME, (WPARAM)(p2), \
|
||
|
(LPARAM)(LPVOID)(LPTSTR)(p1) )
|
||
|
#define capDriverGetVersion( x, p1, p2 ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_DRIVER_GET_VERSION, (WPARAM)(p2), \
|
||
|
(LPARAM)(LPVOID)(LPTSTR)(p1) )
|
||
|
#define capDriverGetCaps( x, p1, p2 ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_DRIVER_GET_CAPS, (WPARAM)(p2), \
|
||
|
(LPARAM)(LPVOID)(LPCAPDRIVERCAPS)(p1) )
|
||
|
#define capFileSetCaptureFile( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_FILE_SET_CAPTURE_FILE, 0, (LPARAM)(LPVOID)(LPTSTR)(p) )
|
||
|
#define capFileGetCaptureFile( x, p1, p2 ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_FILE_GET_CAPTURE_FILE, (WPARAM)(p2), \
|
||
|
(LPARAM)(LPVOID)(LPTSTR)(p1) )
|
||
|
#define capFileAlloc( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_FILE_ALLOCATE, 0, (LPARAM)(DWORD)(p) )
|
||
|
#define capFileSaveAs( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_FILE_SAVEAS, 0, (LPARAM)(LPVOID)(LPTSTR)(p) )
|
||
|
#define capFileSetInfoChunk( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_FILE_SET_INFOCHUNK, 0, (LPARAM)(LPCAPINFOCHUNK)(p) )
|
||
|
#define capFileSaveDIB( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_FILE_SAVEDIB, 0, (LPARAM)(LPVOID)(LPTSTR)(p) )
|
||
|
#define capEditCopy( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_EDIT_COPY, 0, 0 )
|
||
|
#define capSetAudioFormat( x, p1, p2 ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_AUDIOFORMAT, (WPARAM)(p2), \
|
||
|
(LPARAM)(LPVOID)(LPWAVEFORMATEX)(p1) )
|
||
|
#define capGetAudioFormat( x, p1, p2 ) \
|
||
|
(DWORD)AVICapSM( x, WM_CAP_GET_AUDIOFORMAT, (WPARAM)(p2), \
|
||
|
(LPARAM)(LPVOID)(LPWAVEFORMATEX)(p1) )
|
||
|
#define capGetAudioFormatSize( x ) \
|
||
|
(DWORD)AVICapSM( x, WM_CAP_GET_AUDIOFORMAT, 0, 0 )
|
||
|
#define capDlgVideoFormat( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_DLG_VIDEOFORMAT, 0, 0 )
|
||
|
#define capDlgVideoSource( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_DLG_VIDEOSOURCE, 0, 0 )
|
||
|
#define capDlgVideoDisplay( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_DLG_VIDEODISPLAY, 0, 0 )
|
||
|
#define capDlgVideoCompression( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0 )
|
||
|
#define capGetVideoFormat( x, p1, p2 ) \
|
||
|
(DWORD)AVICapSM( x, WM_CAP_GET_VIDEOFORMAT, (WPARAM)(p2), (LPARAM)(LPVOID)(p1) )
|
||
|
#define capGetVideoFormatSize( x ) \
|
||
|
(DWORD)AVICapSM( x, WM_CAP_GET_VIDEOFORMAT, 0, 0 )
|
||
|
#define capSetVideoFormat( x, p1, p2 ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_VIDEOFORMAT, (WPARAM)(p2), (LPARAM)(LPVOID)(p1) )
|
||
|
#define capPreview( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_PREVIEW, (WPARAM)(BOOL)(p), 0 )
|
||
|
#define capPreviewRate( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_PREVIEWRATE, (WPARAM)(p), 0 )
|
||
|
#define capOverlay( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_OVERLAY, (WPARAM)(BOOL)(p), 0 )
|
||
|
#define capPreviewScale( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_SCALE, (WPARAM)(BOOL)(p), 0 )
|
||
|
#define capGetStatus( x, p1, p2 ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_GET_STATUS, (WPARAM)(p2), (LPARAM)(LPVOID)(LPCAPSTATUS)(p1) )
|
||
|
#define capSetScrollPos( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_SCROLL, 0, (LPARAM)(LPPOINT)(p) )
|
||
|
#define capGrabFrame( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_GRAB_FRAME, 0, 0 )
|
||
|
#define capGrabFrameNoStop( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0 )
|
||
|
#define capCaptureSequence( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SEQUENCE, 0, 0 )
|
||
|
#define capCaptureSequenceNoFile( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SEQUENCE_NOFILE, 0, 0 )
|
||
|
#define capCaptureStop( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_STOP, 0, 0 )
|
||
|
#define capCaptureAbort( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_ABORT, 0, 0 )
|
||
|
#define capCaptureSingleFrameOpen( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SINGLE_FRAME_OPEN, 0, 0 )
|
||
|
#define capCaptureSingleFrameClose( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0 )
|
||
|
#define capCaptureSingleFrame( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SINGLE_FRAME, 0, 0 )
|
||
|
#define capCaptureGetSetup( x, p1, p2 ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_GET_SEQUENCE_SETUP, (WPARAM)(p2), \
|
||
|
(LPARAM)(LPVOID)(LPCAPTUREPARMS)(p1) )
|
||
|
#define capCaptureSetSetup( x, p1, p2 ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_SEQUENCE_SETUP, (WPARAM)(p2), \
|
||
|
(LPARAM)(LPVOID)(LPCAPTUREPARMS)(p1) )
|
||
|
#define capSetMCIDeviceName( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_SET_MCI_DEVICE, 0, (LPARAM)(LPVOID)(LPTSTR)(p) )
|
||
|
#define capGetMCIDeviceName( x, p1, p2 ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_GET_MCI_DEVICE, (WPARAM)(p2), \
|
||
|
(LPARAM)(LPVOID)(LPTSTR)(p1) )
|
||
|
#define capPaletteOpen( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_PAL_OPEN, 0, (LPARAM)(LPVOID)(LPTSTR)(p) )
|
||
|
#define capPaletteSave( x, p ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_PAL_SAVE, 0, (LPARAM)(LPVOID)(LPTSTR)(p) )
|
||
|
#define capPalettePaste( x ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_PAL_PASTE, 0, 0 )
|
||
|
#define capPaletteAuto( x, p1, p2 ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_PAL_AUTOCREATE, (WPARAM)(p1), (LPARAM)(DWORD)(p2) )
|
||
|
#define capPaletteManual( x, p1, p2 ) \
|
||
|
(BOOL)AVICapSM( x, WM_CAP_PAL_MANUALCREATE, (WPARAM)(p1), (LPARAM)(DWORD)(p2) )
|
||
|
|
||
|
/* The following two functions are implemented inline rather than as macros to prevent
|
||
|
* a compiler warning that dwICValue has not been used.
|
||
|
*/
|
||
|
|
||
|
__inline DWORD ICGetDefaultQuality( HIC x )
|
||
|
/*****************************************/
|
||
|
{
|
||
|
ICSendMessage( x, ICM_GETDEFAULTQUALITY, (DWORD_PTR)(LPVOID)&dwICValue,
|
||
|
sizeof( DWORD ) );
|
||
|
return( dwICValue );
|
||
|
}
|
||
|
|
||
|
__inline DWORD ICGetDefaultKeyFrameRate( HIC x )
|
||
|
/**********************************************/
|
||
|
{
|
||
|
ICSendMessage( x, ICM_GETDEFAULTKEYFRAMERATE, (DWORD_PTR)(LPVOID)&dwICValue,
|
||
|
sizeof( DWORD ) );
|
||
|
return( dwICValue );
|
||
|
}
|
||
|
|
||
|
/* Aliases */
|
||
|
#define AVIFileClose AVIFileRelease
|
||
|
#define AVIStreamClose AVIStreamRelease
|
||
|
#define AVIStreamExit AVIFileExit
|
||
|
#define AVIStreamFindKeyFrame AVIStreamFindSample
|
||
|
#define AVIStreamInit AVIFileInit
|
||
|
#define FindKeyFrame FindSample
|
||
|
|
||
|
/* Map generic function names to the appropriate ANSI or Unicode version. */
|
||
|
#ifdef UNICODE
|
||
|
#define AVIBuildFilter AVIBuildFilterW
|
||
|
#define AVIFileCreateStream AVIFileCreateStreamW
|
||
|
#define AVIFileInfo AVIFileInfoW
|
||
|
#define AVIFileOpen AVIFileOpenW
|
||
|
#define AVISave AVISaveW
|
||
|
#define AVISaveV AVISaveVW
|
||
|
#define AVIStreamInfo AVIStreamInfoW
|
||
|
#define AVIStreamOpenFromFile AVIStreamOpenFromFileW
|
||
|
#define EditStreamSetInfo EditStreamSetInfoW
|
||
|
#define EditStreamSetName EditStreamSetNameW
|
||
|
#define MCIWndCreate MCIWndCreateW
|
||
|
#define capCreateCaptureWindow capCreateCaptureWindowW
|
||
|
#define capGetDriverDescription capGetDriverDescriptionW
|
||
|
#ifdef _INC_COMMDLG
|
||
|
#define GetOpenFileNamePreview GetOpenFileNamePreviewW
|
||
|
#define GetSaveFileNamePreview GetSaveFileNamePreviewW
|
||
|
#endif
|
||
|
#else
|
||
|
#define AVIBuildFilter AVIBuildFilterA
|
||
|
#define AVIFileCreateStream AVIFileCreateStreamA
|
||
|
#define AVIFileInfo AVIFileInfoA
|
||
|
#define AVIFileOpen AVIFileOpenA
|
||
|
#define AVISave AVISaveA
|
||
|
#define AVISaveV AVISaveVA
|
||
|
#define AVIStreamInfo AVIStreamInfoA
|
||
|
#define AVIStreamOpenFromFile AVIStreamOpenFromFileA
|
||
|
#define EditStreamSetInfo EditStreamSetInfoA
|
||
|
#define EditStreamSetName EditStreamSetNameA
|
||
|
#define MCIWndCreate MCIWndCreateA
|
||
|
#define capCreateCaptureWindow capCreateCaptureWindowA
|
||
|
#define capGetDriverDescription capGetDriverDescriptionA
|
||
|
#ifdef _INC_COMMDLG
|
||
|
#define GetOpenFileNamePreview GetOpenFileNamePreviewA
|
||
|
#define GetSaveFileNamePreview GetSaveFileNamePreviewA
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} /* extern "C" */
|
||
|
#endif
|
||
|
|
||
|
#endif /* _INC_VFW */
|