/* * 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 #include #include #include #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 */