holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/vfw.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
equal deleted inserted replaced
19:da7c1a80df0d 20:d2d6724aef32
       
     1 #ifndef _VFW_H
       
     2 #define _VFW_H
       
     3 #if __GNUC__ >= 3
       
     4 #pragma GCC system_header
       
     5 #endif
       
     6 
       
     7 #ifndef _WINDOWS_H
       
     8 #include <windows.h>
       
     9 #endif
       
    10 #ifndef _MMSYSTEM_H
       
    11 #include <mmsystem.h>
       
    12 #endif
       
    13 #if !defined  (_OLE2_H) && !defined (_OBJC_NO_COM)
       
    14 #include <ole2.h>
       
    15 #endif
       
    16 
       
    17 #define VFWAPI WINAPI
       
    18 #define VFWAPIV WINAPIV
       
    19 
       
    20 #include <pshpack8.h>
       
    21 
       
    22 #ifdef __cplusplus
       
    23 extern "C" {
       
    24 #endif
       
    25 
       
    26 #define	ICERR_OK	0
       
    27 #define	ICERR_DONTDRAW	1
       
    28 #define	ICERR_NEWPALETTE	2
       
    29 #define	ICERR_GOTOKEYFRAME	3
       
    30 #define	ICERR_STOPDRAWING	4
       
    31 #define	ICERR_UNSUPPORTED	-1
       
    32 #define	ICERR_BADFORMAT	-2
       
    33 #define	ICERR_MEMORY	-3
       
    34 #define	ICERR_INTERNAL	-4
       
    35 #define	ICERR_BADFLAGS	-5
       
    36 #define	ICERR_BADPARAM	-6
       
    37 #define	ICERR_BADSIZE	-7
       
    38 #define	ICERR_BADHANDLE	-8
       
    39 #define	ICERR_CANTUPDATE	-9
       
    40 #define	ICERR_ABORT	-10
       
    41 #define	ICERR_ERROR	-100
       
    42 #define	ICERR_BADBITDEPTH	-200
       
    43 #define	ICERR_BADIMAGESIZE	-201
       
    44 #define	ICERR_CUSTOM	-400
       
    45 #define ICCOMPRESSFRAMES_PADDING	0x01
       
    46 #define	ICM_USER	(DRV_USER+0x0000)
       
    47 #define	ICM_RESERVED_LOW	(DRV_USER+0x1000)
       
    48 #define	ICM_RESERVED_HIGH	(DRV_USER+0x2000)
       
    49 #define	ICM_RESERVED	ICM_RESERVED_LOW
       
    50 #define	ICM_GETSTATE	(ICM_RESERVED+0)
       
    51 #define	ICM_SETSTATE	(ICM_RESERVED+1)
       
    52 #define	ICM_GETINFO	(ICM_RESERVED+2)
       
    53 #define	ICM_CONFIGURE	(ICM_RESERVED+10)
       
    54 #define	ICM_ABOUT	(ICM_RESERVED+11)
       
    55 #define	ICM_GETDEFAULTQUALITY	(ICM_RESERVED+30)
       
    56 #define	ICM_GETQUALITY	(ICM_RESERVED+31)
       
    57 #define	ICM_SETQUALITY	(ICM_RESERVED+32)
       
    58 #define	ICM_SET	(ICM_RESERVED+40)
       
    59 #define	ICM_GET	(ICM_RESERVED+41)
       
    60 #define ICM_FRAMERATE	mmioFOURCC('F','r','m','R')
       
    61 #define ICM_KEYFRAMERATE	mmioFOURCC('K','e','y','R')
       
    62 #define	ICM_COMPRESS_GET_FORMAT	(ICM_USER+4)
       
    63 #define	ICM_COMPRESS_GET_SIZE	(ICM_USER+5)
       
    64 #define	ICM_COMPRESS_QUERY	(ICM_USER+6)
       
    65 #define	ICM_COMPRESS_BEGIN	(ICM_USER+7)
       
    66 #define	ICM_COMPRESS	(ICM_USER+8)
       
    67 #define	ICM_COMPRESS_END	(ICM_USER+9)
       
    68 #define	ICM_DECOMPRESS_GET_FORMAT	(ICM_USER+10)
       
    69 #define	ICM_DECOMPRESS_QUERY	(ICM_USER+11)
       
    70 #define	ICM_DECOMPRESS_BEGIN	(ICM_USER+12)
       
    71 #define	ICM_DECOMPRESS	(ICM_USER+13)
       
    72 #define	ICM_DECOMPRESS_END	(ICM_USER+14)
       
    73 #define	ICM_DECOMPRESS_SET_PALETTE	(ICM_USER+29)
       
    74 #define	ICM_DECOMPRESS_GET_PALETTE	(ICM_USER+30)
       
    75 #define	ICM_DRAW_QUERY	(ICM_USER+31)
       
    76 #define	ICM_DRAW_BEGIN	(ICM_USER+15)
       
    77 #define	ICM_DRAW_GET_PALETTE	(ICM_USER+16)
       
    78 #define	ICM_DRAW_START	(ICM_USER+18)
       
    79 #define	ICM_DRAW_STOP	(ICM_USER+19)
       
    80 #define	ICM_DRAW_END	(ICM_USER+21)
       
    81 #define	ICM_DRAW_GETTIME	(ICM_USER+32)
       
    82 #define	ICM_DRAW	(ICM_USER+33)
       
    83 #define	ICM_DRAW_WINDOW	(ICM_USER+34)
       
    84 #define	ICM_DRAW_SETTIME	(ICM_USER+35)
       
    85 #define	ICM_DRAW_REALIZE	(ICM_USER+36)
       
    86 #define	ICM_DRAW_FLUSH	(ICM_USER+37)
       
    87 #define	ICM_DRAW_RENDERBUFFER	(ICM_USER+38)
       
    88 #define	ICM_DRAW_START_PLAY	(ICM_USER+39)
       
    89 #define	ICM_DRAW_STOP_PLAY	(ICM_USER+40)
       
    90 #define	ICM_DRAW_SUGGESTFORMAT	(ICM_USER+50)
       
    91 #define	ICM_DRAW_CHANGEPALETTE	(ICM_USER+51)
       
    92 #define	ICM_GETBUFFERSWANTED	(ICM_USER+41)
       
    93 #define	ICM_GETDEFAULTKEYFRAMERATE	(ICM_USER+42)
       
    94 #define	ICM_DECOMPRESSEX_BEGIN	(ICM_USER+60)
       
    95 #define	ICM_DECOMPRESSEX_QUERY	(ICM_USER+61)
       
    96 #define	ICM_DECOMPRESSEX	(ICM_USER+62)
       
    97 #define	ICM_DECOMPRESSEX_END	(ICM_USER+63)
       
    98 #define	ICM_COMPRESS_FRAMES_INFO	(ICM_USER+70)
       
    99 #define	ICM_SET_STATUS_PROC	(ICM_USER+72)
       
   100 #define ICMF_CONFIGURE_QUERY	0x01
       
   101 #define ICCOMPRESS_KEYFRAME	0x01
       
   102 #define ICSTATUS_START	0
       
   103 #define ICSTATUS_STATUS	1
       
   104 #define ICSTATUS_END	2
       
   105 #define ICSTATUS_ERROR	3
       
   106 #define ICSTATUS_YIELD	4
       
   107 #define	ICMODE_COMPRESS	1
       
   108 #define	ICMODE_DECOMPRESS	2
       
   109 #define	ICMODE_FASTDECOMPRESS	3
       
   110 #define	ICMODE_QUERY	4
       
   111 #define	ICMODE_FASTCOMPRESS	5
       
   112 #define	ICMODE_DRAW	8
       
   113 #define ICQUALITY_LOW	0
       
   114 #define ICQUALITY_HIGH	10000
       
   115 #define ICQUALITY_DEFAULT	-1
       
   116 #define	VIDCF_QUALITY	0x01
       
   117 #define	VIDCF_CRUNCH	0x02
       
   118 #define	VIDCF_TEMPORAL	0x04
       
   119 #define	VIDCF_COMPRESSFRAMES	0x08
       
   120 #define	VIDCF_DRAW	0x10
       
   121 #define	VIDCF_FASTTEMPORALC	0x20
       
   122 #define	VIDCF_FASTTEMPORALD	0x80
       
   123 #define	VIDCF_QUALITYTIME	0x40
       
   124 #define	VIDCF_FASTTEMPORAL	(VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
       
   125 #define ICMF_ABOUT_QUERY	0x01
       
   126 #define ICDECOMPRESS_HURRYUP	0x80000000
       
   127 #define ICDECOMPRESS_UPDATE	0x40000000
       
   128 #define ICDECOMPRESS_PREROLL	0x20000000
       
   129 #define ICDECOMPRESS_NULLFRAME	0x10000000
       
   130 #define ICDECOMPRESS_NOTKEYFRAME	0x8000000
       
   131 #define ICDRAW_QUERY	0x01L
       
   132 #define ICDRAW_FULLSCREEN	0x02L
       
   133 #define ICDRAW_HDC	0x04L
       
   134 #define ICDRAW_ANIMATE	0x08L
       
   135 #define ICDRAW_CONTINUE	0x10L
       
   136 #define ICDRAW_MEMORYDC	0x20L
       
   137 #define ICDRAW_UPDATING	0x40L
       
   138 #define ICDRAW_RENDER	0x80L
       
   139 #define ICDRAW_BUFFER	0x100L
       
   140 #define ICINSTALL_UNICODE	0x8000
       
   141 #define ICINSTALL_FUNCTION	0x01
       
   142 #define ICINSTALL_DRIVER	0x02
       
   143 #define ICINSTALL_HDRV	0x04
       
   144 #define ICINSTALL_DRIVERW	0x8002
       
   145 #define ICDRAW_HURRYUP	0x80000000L
       
   146 #define ICDRAW_UPDATE	0x40000000L
       
   147 #define ICDRAW_PREROLL	0x20000000L
       
   148 #define ICDRAW_NULLFRAME	0x10000000L
       
   149 #define ICDRAW_NOTKEYFRAME	0x8000000L
       
   150 #define ICMF_COMPVARS_VALID	0x01
       
   151 #define ICMF_CHOOSE_KEYFRAME	0x01
       
   152 #define ICMF_CHOOSE_DATARATE	0x02
       
   153 #define ICMF_CHOOSE_PREVIEW	0x04
       
   154 #define ICMF_CHOOSE_ALLCOMPRESSORS	0x08
       
   155 #define ICTYPE_VIDEO	mmioFOURCC('v','i','d','c')
       
   156 #define ICTYPE_AUDIO	mmioFOURCC('a','u','d','c')
       
   157 #define formtypeAVI	mmioFOURCC('A','V','I',' ')
       
   158 #define listtypeAVIHEADER	mmioFOURCC('h','d','r','l')
       
   159 #define ckidAVIMAINHDR	mmioFOURCC('a','v','i','h')
       
   160 #define listtypeSTREAMHEADER	mmioFOURCC('s','t','r','l')
       
   161 #define ckidSTREAMHEADER	mmioFOURCC('s','t','r','h')
       
   162 #define ckidSTREAMFORMAT	mmioFOURCC('s','t','r','f')
       
   163 #define ckidSTREAMHANDLERDATA	mmioFOURCC('s','t','r','d')
       
   164 #define ckidSTREAMNAME	mmioFOURCC('s','t','r','n')
       
   165 #define listtypeAVIMOVIE	mmioFOURCC('m','o','v','i')
       
   166 #define listtypeAVIRECORD	mmioFOURCC('r','e','c',' ')
       
   167 #define ckidAVINEWINDEX	mmioFOURCC('i', 'd', 'x', '1')
       
   168 #define streamtypeANY	0UL
       
   169 #define streamtypeVIDEO	mmioFOURCC('v','i','d','s')
       
   170 #define streamtypeAUDIO	mmioFOURCC('a','u','d','s')
       
   171 #define streamtypeMIDI	mmioFOURCC('m','i','d','s')
       
   172 #define streamtypeTEXT	mmioFOURCC('t','x','t','s')
       
   173 #define cktypeDIBbits	aviTWOCC('d','b')
       
   174 #define cktypeDIBcompressed	aviTWOCC('d','c')
       
   175 #define cktypePALchange	aviTWOCC('p','c')
       
   176 #define cktypeWAVEbytes	aviTWOCC('w','b')
       
   177 #define ckidAVIPADDING	mmioFOURCC('J','U','N','K')
       
   178 #define FromHex(n) (((n)>='A')?((n)+10-'A'):((n)-'0'))
       
   179 #define StreamFromFOURCC(fcc) ((WORD)((FromHex(LOBYTE(LOWORD(fcc)))<<4)+(FromHex(HIBYTE(LOWORD(fcc))))))
       
   180 #define TWOCCFromFOURCC(fcc) HIWORD(fcc)
       
   181 #define ToHex(n) ((BYTE)(((n)>9)?((n)-10+'A'):((n)+'0')))
       
   182 #define MAKEAVICKID(tcc, stream) MAKELONG((ToHex((stream)&0x0f)<<8)|(ToHex(((stream)&0xf0)>>4)),tcc)
       
   183 #define AVIF_HASINDEX	0x10
       
   184 #define AVIF_MUSTUSEINDEX	0x20
       
   185 #define AVIF_ISINTERLEAVED	0x100
       
   186 #define AVIF_TRUSTCKTYPE	0x800
       
   187 #define AVIF_WASCAPTUREFILE	0x10000
       
   188 #define AVIF_COPYRIGHTED	0x20000
       
   189 #define AVI_HEADERSIZE	2048
       
   190 #define AVISF_DISABLED	0x01
       
   191 #define AVISF_VIDEO_PALCHANGES	0x10000
       
   192 #define AVIIF_LIST	0x01
       
   193 #define AVIIF_TWOCC	0x02
       
   194 #define AVIIF_KEYFRAME	0x10
       
   195 #define AVIIF_NOTIME	0x100
       
   196 #define AVIIF_COMPUSE	0xfff0000
       
   197 #define AVIIF_KEYFRAME	0x10
       
   198 #define	AVIGETFRAMEF_BESTDISPLAYFMT	1
       
   199 #define AVISTREAMINFO_DISABLED	0x01
       
   200 #define AVISTREAMINFO_FORMATCHANGES	0x10000
       
   201 #define AVIFILEINFO_HASINDEX	0x10
       
   202 #define AVIFILEINFO_MUSTUSEINDEX	0x20
       
   203 #define AVIFILEINFO_ISINTERLEAVED	0x100
       
   204 #define AVIFILEINFO_TRUSTCKTYPE	0x800
       
   205 #define AVIFILEINFO_WASCAPTUREFILE	0x10000
       
   206 #define AVIFILEINFO_COPYRIGHTED	0x20000
       
   207 #define AVIFILECAPS_CANREAD	0x01
       
   208 #define AVIFILECAPS_CANWRITE	0x02
       
   209 #define AVIFILECAPS_ALLKEYFRAMES	0x10
       
   210 #define AVIFILECAPS_NOCOMPRESSION	0x20
       
   211 #define AVICOMPRESSF_INTERLEAVE	0x01
       
   212 #define AVICOMPRESSF_DATARATE	0x02
       
   213 #define AVICOMPRESSF_KEYFRAMES	0x04
       
   214 #define AVICOMPRESSF_VALID	0x08
       
   215 #define FIND_DIR	0x0000000fL
       
   216 #define FIND_NEXT	0x00000001L
       
   217 #define FIND_PREV	0x00000004L
       
   218 #define FIND_FROM_START	0x00000008L
       
   219 #define FIND_TYPE	0x000000f0L
       
   220 #define FIND_KEY	0x00000010L
       
   221 #define FIND_ANY	0x00000020L
       
   222 #define FIND_FORMAT	0x00000040L
       
   223 #define FIND_RET	0x0000f000L
       
   224 #define FIND_POS	0x00000000L
       
   225 #define FIND_LENGTH	0x00001000L
       
   226 #define FIND_OFFSET	0x00002000L
       
   227 #define FIND_SIZE	0x00003000L
       
   228 #define FIND_INDEX	0x00004000L
       
   229 #define AVIERR_OK	0
       
   230 #define MAKE_AVIERR(e)	MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+e)
       
   231 #define AVIERR_UNSUPPORTED	MAKE_AVIERR(101)
       
   232 #define AVIERR_BADFORMAT	MAKE_AVIERR(102)
       
   233 #define AVIERR_MEMORY	MAKE_AVIERR(103)
       
   234 #define AVIERR_INTERNAL	MAKE_AVIERR(104)
       
   235 #define AVIERR_BADFLAGS	MAKE_AVIERR(105)
       
   236 #define AVIERR_BADPARAM	MAKE_AVIERR(106)
       
   237 #define AVIERR_BADSIZE	MAKE_AVIERR(107)
       
   238 #define AVIERR_BADHANDLE	MAKE_AVIERR(108)
       
   239 #define AVIERR_FILEREAD	MAKE_AVIERR(109)
       
   240 #define AVIERR_FILEWRITE	MAKE_AVIERR(110)
       
   241 #define AVIERR_FILEOPEN	MAKE_AVIERR(111)
       
   242 #define AVIERR_COMPRESSOR	MAKE_AVIERR(112)
       
   243 #define AVIERR_NOCOMPRESSOR	MAKE_AVIERR(113)
       
   244 #define AVIERR_READONLY	MAKE_AVIERR(114)
       
   245 #define AVIERR_NODATA	MAKE_AVIERR(115)
       
   246 #define AVIERR_BUFFERTOOSMALL	MAKE_AVIERR(116)
       
   247 #define AVIERR_CANTCOMPRESS	MAKE_AVIERR(117)
       
   248 #define AVIERR_USERABORT	MAKE_AVIERR(198)
       
   249 #define AVIERR_ERROR	MAKE_AVIERR(199)
       
   250 #define MCIWNDOPENF_NEW	0x0001
       
   251 #define MCIWNDF_NOAUTOSIZEWINDOW	0x0001
       
   252 #define MCIWNDF_NOPLAYBAR	0x0002
       
   253 #define MCIWNDF_NOAUTOSIZEMOVIE	0x0004
       
   254 #define MCIWNDF_NOMENU	0x0008
       
   255 #define MCIWNDF_SHOWNAME	0x0010
       
   256 #define MCIWNDF_SHOWPOS	0x0020
       
   257 #define MCIWNDF_SHOWMODE	0x0040
       
   258 #define MCIWNDF_SHOWALL	0x0070
       
   259 #define MCIWNDF_NOTIFYMODE	0x0100
       
   260 #define MCIWNDF_NOTIFYPOS	0x0200
       
   261 #define MCIWNDF_NOTIFYSIZE	0x0400
       
   262 #define MCIWNDF_NOTIFYERROR	0x1000
       
   263 #define MCIWNDF_NOTIFYALL	0x1F00
       
   264 #define MCIWNDF_NOTIFYANSI	0x0080
       
   265 #define MCIWNDF_NOTIFYMEDIAA	0x0880
       
   266 #define MCIWNDF_NOTIFYMEDIAW	0x0800
       
   267 #define MCIWNDF_RECORD	0x2000
       
   268 #define MCIWNDF_NOERRORDLG	0x4000
       
   269 #define MCIWNDF_NOOPEN	0x8000
       
   270 #define MCIWNDM_GETDEVICEID	(WM_USER + 100)
       
   271 #define MCIWNDM_GETSTART	(WM_USER + 103)
       
   272 #define MCIWNDM_GETLENGTH	(WM_USER + 104)
       
   273 #define MCIWNDM_GETEND	(WM_USER + 105)
       
   274 #define MCIWNDM_EJECT	(WM_USER + 107)
       
   275 #define MCIWNDM_SETZOOM	(WM_USER + 108)
       
   276 #define MCIWNDM_GETZOOM	(WM_USER + 109)
       
   277 #define MCIWNDM_SETVOLUME	(WM_USER + 110)
       
   278 #define MCIWNDM_GETVOLUME	(WM_USER + 111)
       
   279 #define MCIWNDM_SETSPEED	(WM_USER + 112)
       
   280 #define MCIWNDM_GETSPEED	(WM_USER + 113)
       
   281 #define MCIWNDM_SETREPEAT	(WM_USER + 114)
       
   282 #define MCIWNDM_GETREPEAT	(WM_USER + 115)
       
   283 #define MCIWNDM_REALIZE	(WM_USER + 118)
       
   284 #define MCIWNDM_VALIDATEMEDIA	(WM_USER + 121)
       
   285 #define MCIWNDM_PLAYFROM	(WM_USER + 122)
       
   286 #define MCIWNDM_PLAYTO	(WM_USER + 123)
       
   287 #define MCIWNDM_GETPALETTE	(WM_USER + 126)
       
   288 #define MCIWNDM_SETPALETTE	(WM_USER + 127)
       
   289 #define MCIWNDM_SETTIMERS	(WM_USER + 129)
       
   290 #define MCIWNDM_SETACTIVETIMER	(WM_USER + 130)
       
   291 #define MCIWNDM_SETINACTIVETIMER	(WM_USER + 131)
       
   292 #define MCIWNDM_GETACTIVETIMER	(WM_USER + 132)
       
   293 #define MCIWNDM_GETINACTIVETIMER	(WM_USER + 133)
       
   294 #define MCIWNDM_CHANGESTYLES	(WM_USER + 135)
       
   295 #define MCIWNDM_GETSTYLES	(WM_USER + 136)
       
   296 #define MCIWNDM_GETALIAS	(WM_USER + 137)
       
   297 #define MCIWNDM_PLAYREVERSE	(WM_USER + 139)
       
   298 #define MCIWNDM_GET_SOURCE	(WM_USER + 140)
       
   299 #define MCIWNDM_PUT_SOURCE	(WM_USER + 141)
       
   300 #define MCIWNDM_GET_DEST	(WM_USER + 142)
       
   301 #define MCIWNDM_PUT_DEST	(WM_USER + 143)
       
   302 #define MCIWNDM_CAN_PLAY	(WM_USER + 144)
       
   303 #define MCIWNDM_CAN_WINDOW	(WM_USER + 145)
       
   304 #define MCIWNDM_CAN_RECORD	(WM_USER + 146)
       
   305 #define MCIWNDM_CAN_SAVE	(WM_USER + 147)
       
   306 #define MCIWNDM_CAN_EJECT	(WM_USER + 148)
       
   307 #define MCIWNDM_CAN_CONFIG	(WM_USER + 149)
       
   308 #define MCIWNDM_PALETTEKICK	(WM_USER + 150)
       
   309 #define MCIWNDM_OPENINTERFACE	(WM_USER + 151)
       
   310 #define MCIWNDM_SETOWNER	(WM_USER + 152)
       
   311 #define MCIWNDM_SENDSTRINGA	(WM_USER + 101)
       
   312 #define MCIWNDM_GETPOSITIONA	(WM_USER + 102)
       
   313 #define MCIWNDM_GETMODEA	(WM_USER + 106)
       
   314 #define MCIWNDM_SETTIMEFORMATA	(WM_USER + 119)
       
   315 #define MCIWNDM_GETTIMEFORMATA	(WM_USER + 120)
       
   316 #define MCIWNDM_GETFILENAMEA	(WM_USER + 124)
       
   317 #define MCIWNDM_GETDEVICEA	(WM_USER + 125)
       
   318 #define MCIWNDM_GETERRORA	(WM_USER + 128)
       
   319 #define MCIWNDM_NEWA	(WM_USER + 134)
       
   320 #define MCIWNDM_RETURNSTRINGA	(WM_USER + 138)
       
   321 #define MCIWNDM_OPENA	(WM_USER + 153)
       
   322 #define MCIWNDM_SENDSTRINGW	(WM_USER + 201)
       
   323 #define MCIWNDM_GETPOSITIONW	(WM_USER + 202)
       
   324 #define MCIWNDM_GETMODEW	(WM_USER + 206)
       
   325 #define MCIWNDM_SETTIMEFORMATW	(WM_USER + 219)
       
   326 #define MCIWNDM_GETTIMEFORMATW	(WM_USER + 220)
       
   327 #define MCIWNDM_GETFILENAMEW	(WM_USER + 224)
       
   328 #define MCIWNDM_GETDEVICEW	(WM_USER + 225)
       
   329 #define MCIWNDM_GETERRORW	(WM_USER + 228)
       
   330 #define MCIWNDM_NEWW	(WM_USER + 234)
       
   331 #define MCIWNDM_RETURNSTRINGW	(WM_USER + 238)
       
   332 #define MCIWNDM_OPENW	(WM_USER + 252)
       
   333 #define MCIWNDM_NOTIFYMODE	(WM_USER + 200)
       
   334 #define MCIWNDM_NOTIFYPOS	(WM_USER + 201)
       
   335 #define MCIWNDM_NOTIFYSIZE	(WM_USER + 202)
       
   336 #define MCIWNDM_NOTIFYMEDIA	(WM_USER + 203)
       
   337 #define MCIWNDM_NOTIFYERROR	(WM_USER + 205)
       
   338 #define MCIWND_START	-1
       
   339 #define MCIWND_END	-2
       
   340 #define DDF_UPDATE	0x02
       
   341 #define DDF_SAME_HDC	0x04
       
   342 #define DDF_SAME_DRAW	0x08
       
   343 #define DDF_DONTDRAW	0x10
       
   344 #define DDF_ANIMATE	0x20
       
   345 #define DDF_BUFFER	0x40
       
   346 #define DDF_JUSTDRAWIT	0x80
       
   347 #define DDF_FULLSCREEN	0x100
       
   348 #define DDF_BACKGROUNDPAL	0x200
       
   349 #define DDF_NOTKEYFRAME	0x400
       
   350 #define DDF_HURRYUP	0x800
       
   351 #define DDF_HALFTONE	0x1000
       
   352 #define DDF_PREROLL	DDF_DONTDRAW
       
   353 #define DDF_SAME_DIB	DDF_SAME_DRAW
       
   354 #define DDF_SAME_SIZE	DDF_SAME_DRAW
       
   355 #define PD_CAN_DRAW_DIB	0x01
       
   356 #define PD_CAN_STRETCHDIB	0x02
       
   357 #define PD_STRETCHDIB_1_1_OK	0x04
       
   358 #define PD_STRETCHDIB_1_2_OK	0x08
       
   359 #define PD_STRETCHDIB_1_N_OK	0x10
       
   360 #ifndef mmioFOURCC
       
   361 #define mmioFOURCC(c0,c1,c2,c3) ((DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)|((DWORD)(BYTE)(c2)<<16)|((DWORD)(BYTE)(c3)<<24))
       
   362 #endif
       
   363 #ifndef aviTWOCC
       
   364 #define aviTWOCC(ch0,ch1) ((WORD)(BYTE)(ch0)|((WORD)(BYTE)(ch1)<<8))
       
   365 #endif
       
   366 
       
   367 #ifndef RC_INVOKED
       
   368 DECLARE_HANDLE(HIC);
       
   369 DECLARE_HANDLE(HDRAWDIB);
       
   370 typedef WORD TWOCC;
       
   371 typedef BOOL (CALLBACK *AVISAVECALLBACK)(INT);
       
   372 typedef struct {
       
   373 	DWORD dwSize;
       
   374 	DWORD fccType;
       
   375 	DWORD fccHandler;
       
   376 	DWORD dwVersion;
       
   377 	DWORD dwFlags;
       
   378 	LRESULT dwError;
       
   379 	LPVOID pV1Reserved;
       
   380 	LPVOID pV2Reserved;
       
   381 	DWORD dnDevNode;
       
   382 } ICOPEN,*LPICOPEN;
       
   383 typedef struct {
       
   384 	DWORD dwFlags;
       
   385 	LPBITMAPINFOHEADER lpbiOutput;
       
   386 	LPVOID lpOutput;
       
   387 	LPBITMAPINFOHEADER lpbiInput;
       
   388 	LPVOID lpInput;
       
   389 	LPDWORD lpckid;
       
   390 	LPDWORD lpdwFlags;
       
   391 	LONG lFrameNum;
       
   392 	DWORD dwFrameSize;
       
   393 	DWORD dwQuality;
       
   394 	LPBITMAPINFOHEADER lpbiPrev;
       
   395 	LPVOID lpPrev;
       
   396 } ICCOMPRESS;
       
   397 typedef struct {
       
   398 	DWORD dwFlags;
       
   399 	LPBITMAPINFOHEADER lpbiOutput;
       
   400 	LPARAM lOutput;
       
   401 	LPBITMAPINFOHEADER lpbiInput;
       
   402 	LPARAM lInput;
       
   403 	LONG lStartFrame;
       
   404 	LONG lFrameCount;
       
   405 	LONG lQuality;
       
   406 	LONG lDataRate;
       
   407 	LONG lKeyRate;
       
   408 	DWORD dwRate;
       
   409 	DWORD dwScale;
       
   410 	DWORD dwOverheadPerFrame;
       
   411 	DWORD dwReserved2;
       
   412 	LONG (CALLBACK *GetData)(LPARAM,LONG,LPVOID,LONG);
       
   413 	LONG (CALLBACK *PutData)(LPARAM,LONG,LPVOID,LONG);
       
   414 } ICCOMPRESSFRAMES;
       
   415 typedef struct {
       
   416 	DWORD dwFlags;
       
   417 	LPARAM lParam;
       
   418 	LONG (CALLBACK *Status)(LPARAM,UINT,LONG);
       
   419 } ICSETSTATUSPROC;
       
   420 typedef struct {
       
   421 	DWORD dwSize;
       
   422 	DWORD fccType;
       
   423 	DWORD fccHandler;
       
   424 	DWORD dwFlags;
       
   425 	DWORD dwVersion;
       
   426 	DWORD dwVersionICM;
       
   427 	WCHAR szName[16];
       
   428 	WCHAR szDescription[128];
       
   429 	WCHAR szDriver[128];
       
   430 } ICINFO;
       
   431 typedef struct {
       
   432 	DWORD dwFlags;
       
   433 	LPBITMAPINFOHEADER lpbiInput;
       
   434 	LPVOID lpInput;
       
   435 	LPBITMAPINFOHEADER lpbiOutput;
       
   436 	LPVOID lpOutput;
       
   437 	DWORD ckid;
       
   438 } ICDECOMPRESS;
       
   439 typedef struct {
       
   440 	DWORD dwFlags;
       
   441 	LPBITMAPINFOHEADER lpbiSrc;
       
   442 	LPVOID lpSrc;
       
   443 	LPBITMAPINFOHEADER lpbiDst;
       
   444 	LPVOID lpDst;
       
   445 	INT xDst;
       
   446 	INT yDst;
       
   447 	INT dxDst;
       
   448 	INT dyDst;
       
   449 	INT xSrc;
       
   450 	INT ySrc;
       
   451 	INT dxSrc;
       
   452 	INT dySrc;
       
   453 } ICDECOMPRESSEX;
       
   454 typedef struct {
       
   455 	DWORD dwFlags;
       
   456 	LPBITMAPINFOHEADER lpbiIn;
       
   457 	LPBITMAPINFOHEADER lpbiSuggest;
       
   458 	INT dxSrc;
       
   459 	INT dySrc;
       
   460 	INT dxDst;
       
   461 	INT dyDst;
       
   462 	HIC hicDecompressor;
       
   463 } ICDRAWSUGGEST;
       
   464 typedef struct {
       
   465 	DWORD dwFlags;
       
   466 	INT iStart;
       
   467 	INT iLen;
       
   468 	LPPALETTEENTRY lppe;
       
   469 } ICPALETTE;
       
   470 typedef struct {
       
   471 	DWORD dwFlags;
       
   472 	HPALETTE hpal;
       
   473 	HWND hwnd;
       
   474 	HDC hdc;
       
   475 	INT xDst;
       
   476 	INT yDst;
       
   477 	INT dxDst;
       
   478 	INT dyDst;
       
   479 	LPBITMAPINFOHEADER lpbi;
       
   480 	INT xSrc;
       
   481 	INT ySrc;
       
   482 	INT dxSrc;
       
   483 	INT dySrc;
       
   484 	DWORD dwRate;
       
   485 	DWORD dwScale;
       
   486 } ICDRAWBEGIN;
       
   487 typedef struct {
       
   488 	DWORD dwFlags;
       
   489 	LPVOID lpFormat;
       
   490 	LPVOID lpData;
       
   491 	DWORD cbData;
       
   492 	LONG lTime;
       
   493 } ICDRAW;
       
   494 typedef struct {
       
   495 	LONG cbSize;
       
   496 	DWORD dwFlags;
       
   497 	HIC hic;
       
   498 	DWORD fccType;
       
   499 	DWORD fccHandler;
       
   500 	LPBITMAPINFO lpbiIn;
       
   501 	LPBITMAPINFO lpbiOut;
       
   502 	LPVOID lpBitsOut;
       
   503 	LPVOID lpBitsPrev;
       
   504 	LONG lFrame;
       
   505 	LONG lKey;
       
   506 	LONG lDataRate;
       
   507 	LONG lQ;
       
   508 	LONG lKeyCount;
       
   509 	LPVOID lpState;
       
   510 	LONG cbState;
       
   511 } COMPVARS, *PCOMPVARS;
       
   512 typedef struct _MainAVIHeader
       
   513 {
       
   514 	DWORD dwMicroSecPerFrame;
       
   515 	DWORD dwMaxBytesPerSec;
       
   516 	DWORD dwPaddingGranularity;
       
   517 	DWORD dwFlags;
       
   518 	DWORD dwTotalFrames;
       
   519 	DWORD dwInitialFrames;
       
   520 	DWORD dwStreams;
       
   521 	DWORD dwSuggestedBufferSize;
       
   522 	DWORD dwWidth;
       
   523 	DWORD dwHeight;
       
   524 	DWORD dwReserved[4];
       
   525 } MainAVIHeader;
       
   526 typedef struct {
       
   527 	FOURCC fccType;
       
   528 	FOURCC fccHandler;
       
   529 	DWORD dwFlags;
       
   530 	WORD wPriority;
       
   531 	WORD wLanguage;
       
   532 	DWORD dwInitialFrames;
       
   533 	DWORD dwScale;
       
   534 	DWORD dwRate;
       
   535 	DWORD dwStart;
       
   536 	DWORD dwLength;
       
   537 	DWORD dwSuggestedBufferSize;
       
   538 	DWORD dwQuality;
       
   539 	DWORD dwSampleSize;
       
   540 	RECT rcFrame;
       
   541 } AVIStreamHeader;
       
   542 typedef struct _AVIINDEXENTRY {
       
   543 	DWORD ckid;
       
   544 	DWORD dwFlags;
       
   545 	DWORD dwChunkOffset;
       
   546 	DWORD dwChunkLength;
       
   547 } AVIINDEXENTRY;
       
   548 typedef struct _AVIPALCHANGE {
       
   549 	BYTE bFirstEntry;
       
   550 	BYTE bNumEntries;
       
   551 	WORD wFlags;
       
   552 	PALETTEENTRY peNew[1];
       
   553 } AVIPALCHANGE;
       
   554 typedef struct _AVISTREAMINFOA {
       
   555 	DWORD fccType;
       
   556 	DWORD fccHandler;
       
   557 	DWORD dwFlags;
       
   558 	DWORD dwCaps;
       
   559 	WORD wPriority;
       
   560 	WORD wLanguage;
       
   561 	DWORD dwScale;
       
   562 	DWORD dwRate;
       
   563 	DWORD dwStart;
       
   564 	DWORD dwLength;
       
   565 	DWORD dwInitialFrames;
       
   566 	DWORD dwSuggestedBufferSize;
       
   567 	DWORD dwQuality;
       
   568 	DWORD dwSampleSize;
       
   569 	RECT rcFrame;
       
   570 	DWORD dwEditCount;
       
   571 	DWORD dwFormatChangeCount;
       
   572 	CHAR szName[64];
       
   573 } AVISTREAMINFOA, * LPAVISTREAMINFOA, *PAVISTREAMINFOA;
       
   574 typedef struct _AVISTREAMINFOW {
       
   575 	DWORD fccType;
       
   576 	DWORD fccHandler;
       
   577 	DWORD dwFlags;
       
   578 	DWORD dwCaps;
       
   579 	WORD wPriority;
       
   580 	WORD wLanguage;
       
   581 	DWORD dwScale;
       
   582 	DWORD dwRate;
       
   583 	DWORD dwStart;
       
   584 	DWORD dwLength;
       
   585 	DWORD dwInitialFrames;
       
   586 	DWORD dwSuggestedBufferSize;
       
   587 	DWORD dwQuality;
       
   588 	DWORD dwSampleSize;
       
   589 	RECT rcFrame;
       
   590 	DWORD dwEditCount;
       
   591 	DWORD dwFormatChangeCount;
       
   592 	WCHAR szName[64];
       
   593 } AVISTREAMINFOW, * LPAVISTREAMINFOW, *PAVISTREAMINFOW;
       
   594 typedef struct _AVIFILEINFOW {
       
   595 	DWORD dwMaxBytesPerSec;
       
   596 	DWORD dwFlags;
       
   597 	DWORD dwCaps;
       
   598 	DWORD dwStreams;
       
   599 	DWORD dwSuggestedBufferSize;
       
   600 	DWORD dwWidth;
       
   601 	DWORD dwHeight;
       
   602 	DWORD dwScale;
       
   603 	DWORD dwRate;
       
   604 	DWORD dwLength;
       
   605 	DWORD dwEditCount;
       
   606 	WCHAR szFileType[64];
       
   607 } AVIFILEINFOW, *LPAVIFILEINFOW, *PAVIFILEINFOW;
       
   608 typedef struct _AVIFILEINFOA {
       
   609 	DWORD dwMaxBytesPerSec;
       
   610 	DWORD dwFlags;
       
   611 	DWORD dwCaps;
       
   612 	DWORD dwStreams;
       
   613 	DWORD dwSuggestedBufferSize;
       
   614 	DWORD dwWidth;
       
   615 	DWORD dwHeight;
       
   616 	DWORD dwScale;
       
   617 	DWORD dwRate;
       
   618 	DWORD dwLength;
       
   619 	DWORD dwEditCount;
       
   620 	CHAR szFileType[64];
       
   621 } AVIFILEINFOA, *LPAVIFILEINFOA, *PAVIFILEINFOA;
       
   622 typedef struct _AVICOMPRESSOPTIONS {
       
   623 	DWORD fccType;
       
   624 	DWORD fccHandler;
       
   625 	DWORD dwKeyFrameEvery;
       
   626 	DWORD dwQuality;
       
   627 	DWORD dwBytesPerSecond;
       
   628 	DWORD dwFlags;
       
   629 	LPVOID lpFormat;
       
   630 	DWORD cbFormat;
       
   631 	LPVOID lpParms;
       
   632 	DWORD cbParms;
       
   633 	DWORD dwInterleaveEvery;
       
   634 } AVICOMPRESSOPTIONS, *LPAVICOMPRESSOPTIONS,*PAVICOMPRESSOPTIONS;
       
   635 
       
   636 #if !defined (_OBJC_NO_COM)
       
   637 #define DEFINE_AVIGUID(name,l,w1,w2) DEFINE_GUID(name,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
       
   638 DEFINE_AVIGUID(IID_IAVIFile,0x00020020,0,0);
       
   639 DEFINE_AVIGUID(IID_IAVIStream,0x00020021,0,0);
       
   640 DEFINE_AVIGUID(IID_IAVIStreaming,0x00020022,0,0);
       
   641 DEFINE_AVIGUID(IID_IGetFrame,0x00020023,0,0);
       
   642 DEFINE_AVIGUID(IID_IAVIEditStream,0x00020024,0,0);
       
   643 DEFINE_AVIGUID(CLSID_AVIFile,0x00020000,0,0);
       
   644 
       
   645 #define INTERFACE IAVIStream
       
   646 DECLARE_INTERFACE_(IAVIStream, IUnknown)
       
   647 {
       
   648 	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
       
   649 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
       
   650 	STDMETHOD_(ULONG,Release)(THIS) PURE;
       
   651 	STDMETHOD(Create)(THIS_ LPARAM,LPARAM) PURE;
       
   652 	STDMETHOD(Info)(THIS_ AVISTREAMINFOW*,LONG) PURE;
       
   653 	STDMETHOD_(LONG,FindSample)(THIS_ LONG,LONG) PURE;
       
   654 	STDMETHOD(ReadFormat)(THIS_ LONG,LPVOID,LONG*) PURE;
       
   655 	STDMETHOD(SetFormat)(THIS_ LONG,LPVOID,LONG) PURE;
       
   656 	STDMETHOD(Read)(THIS_ LONG,LONG,LPVOID,LONG,LONG*,LONG*) PURE;
       
   657 	STDMETHOD(Write)(THIS_ LONG,LONG,LPVOID,LONG,DWORD,LONG*,LONG*) PURE;
       
   658 	STDMETHOD(Delete)(THIS_ LONG,LONG) PURE;
       
   659 	STDMETHOD(ReadData)(THIS_ DWORD,LPVOID,LONG*) PURE;
       
   660 	STDMETHOD(WriteData)(THIS_ DWORD,LPVOID,LONG) PURE;
       
   661 	STDMETHOD(SetInfo)(THIS_ AVISTREAMINFOW*,LONG) PURE;
       
   662 };
       
   663 #undef INTERFACE
       
   664 typedef IAVIStream *PAVISTREAM;
       
   665 
       
   666 #define INTERFACE IAVIStreaming
       
   667 DECLARE_INTERFACE_(IAVIStreaming, IUnknown)
       
   668 {
       
   669 	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
       
   670 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
       
   671 	STDMETHOD_(ULONG,Release)(THIS) PURE;
       
   672 	STDMETHOD(Begin)(THIS_ LONG,LONG,LONG) PURE;	 
       
   673 	STDMETHOD(End)(THIS) PURE;
       
   674 };
       
   675 #undef INTERFACE
       
   676 typedef IAVIStreaming *PAVISTREAMING;
       
   677 
       
   678 #define INTERFACE IAVIEditStream
       
   679 DECLARE_INTERFACE_(IAVIEditStream, IUnknown)
       
   680 {
       
   681 	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
       
   682 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
       
   683 	STDMETHOD_(ULONG,Release)(THIS) PURE;
       
   684 	STDMETHOD(Cut)(THIS_ LONG*,LONG*,PAVISTREAM*) PURE;
       
   685 	STDMETHOD(Copy)(THIS_ LONG*,LONG*,PAVISTREAM*) PURE;
       
   686 	STDMETHOD(Paste)(THIS_ LONG*,LONG*,PAVISTREAM,LONG,LONG) PURE;
       
   687 	STDMETHOD(Clone)(THIS_ PAVISTREAM*) PURE;
       
   688 	STDMETHOD(SetInfo)(THIS_ LPAVISTREAMINFOW,LONG) PURE;
       
   689 };
       
   690 #undef INTERFACE
       
   691 typedef IAVIEditStream *PAVIEDITSTREAM;
       
   692 
       
   693 #define INTERFACE IAVIFile
       
   694 DECLARE_INTERFACE_(IAVIFile, IUnknown)
       
   695 {
       
   696 	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
       
   697 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
       
   698 	STDMETHOD_(ULONG,Release)(THIS) PURE;
       
   699 	STDMETHOD(Info)(THIS_ AVIFILEINFOW*,LONG) PURE;
       
   700 	STDMETHOD(GetStream)(THIS_ PAVISTREAM*,DWORD,LONG) PURE;
       
   701 	STDMETHOD(CreateStream)(THIS_ PAVISTREAM*,AVISTREAMINFOW*) PURE;
       
   702 	STDMETHOD(WriteData)(THIS_ DWORD,LPVOID,LONG) PURE;
       
   703 	STDMETHOD(ReadData)(THIS_ DWORD,LPVOID,LONG*) PURE;
       
   704 	STDMETHOD(EndRecord)(THIS) PURE;
       
   705 	STDMETHOD(DeleteStream)(THIS_ DWORD,LONG) PURE;
       
   706 };
       
   707 #undef INTERFACE
       
   708 typedef IAVIFile *PAVIFILE;
       
   709 
       
   710 #define INTERFACE IGetFrame
       
   711 DECLARE_INTERFACE_(IGetFrame, IUnknown)
       
   712 {
       
   713 	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
       
   714 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
       
   715 	STDMETHOD_(ULONG,Release)(THIS) PURE;
       
   716 	STDMETHOD_(LPVOID,GetFrame)(THIS_ LONG) PURE;
       
   717 	STDMETHOD(Begin)(THIS_ LONG,LONG,LONG) PURE;
       
   718 	STDMETHOD(End)(THIS) PURE;
       
   719 	STDMETHOD(SetFormat)(THIS_ LPBITMAPINFOHEADER,LPVOID,INT,INT,INT,INT) PURE;
       
   720 };
       
   721 #undef INTERFACE
       
   722 typedef IGetFrame *PGETFRAME;
       
   723 #endif /* !defined (_OBJC_NO_COM) */
       
   724 
       
   725 DWORD VFWAPI VideoForWindowsVersion(VOID);
       
   726 LONG VFWAPI InitVFW(VOID);
       
   727 LONG VFWAPI TermVFW(VOID);
       
   728 DWORD VFWAPIV ICCompress(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID,LPDWORD,LPDWORD,LONG,DWORD,DWORD,LPBITMAPINFOHEADER,LPVOID);
       
   729 DWORD VFWAPIV ICDecompress(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID);
       
   730 LRESULT	VFWAPI ICSendMessage(HIC,UINT,DWORD,DWORD);
       
   731 HANDLE VFWAPI ICImageCompress(HIC,UINT,LPBITMAPINFO,LPVOID,LPBITMAPINFO,LONG,LONG*);
       
   732 HANDLE VFWAPI ICImageDecompress(HIC,UINT,LPBITMAPINFO,LPVOID,LPBITMAPINFO);
       
   733 BOOL VFWAPI ICInfo(DWORD,DWORD,ICINFO*);
       
   734 BOOL VFWAPI ICInstall(DWORD,DWORD,LPARAM,LPSTR,UINT);
       
   735 BOOL VFWAPI ICRemove(DWORD,DWORD,UINT);
       
   736 LRESULT VFWAPI ICGetInfo(HIC,ICINFO*,DWORD);
       
   737 HIC VFWAPI ICOpen(DWORD,DWORD,UINT);
       
   738 HIC VFWAPI ICOpenFunction(DWORD,DWORD,UINT,FARPROC);
       
   739 LRESULT VFWAPI ICClose(HIC hic);
       
   740 HIC VFWAPI ICLocate(DWORD,DWORD,LPBITMAPINFOHEADER,LPBITMAPINFOHEADER,WORD);
       
   741 HIC VFWAPI ICGetDisplayFormat(HIC,LPBITMAPINFOHEADER,LPBITMAPINFOHEADER,INT,INT,INT);
       
   742 DWORD VFWAPIV ICDrawBegin(HIC,DWORD,HPALETTE,HWND,HDC,INT,INT,INT,INT,LPBITMAPINFOHEADER,INT,INT,INT,INT,DWORD,DWORD);
       
   743 DWORD VFWAPIV ICDraw(HIC,DWORD,LPVOID,LPVOID,DWORD,LONG);
       
   744 BOOL VFWAPI ICCompressorChoose(HWND,UINT,LPVOID,LPVOID,PCOMPVARS,LPSTR);
       
   745 BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS,LPBITMAPINFO);
       
   746 void VFWAPI ICSeqCompressFrameEnd(PCOMPVARS);
       
   747 LPVOID VFWAPI ICSeqCompressFrame(PCOMPVARS,UINT,LPVOID,BOOL*,LONG*);
       
   748 void VFWAPI ICCompressorFree(PCOMPVARS);
       
   749 #if !defined (_OBJC_NO_COM)
       
   750 ULONG WINAPI AVIStreamAddRef(PAVISTREAM);
       
   751 ULONG WINAPI AVIStreamRelease(PAVISTREAM);
       
   752 HRESULT WINAPI AVIStreamCreate(PAVISTREAM*,LONG,LONG,CLSID*);
       
   753 HRESULT WINAPI AVIStreamInfoA(PAVISTREAM,AVISTREAMINFOA*,LONG);
       
   754 HRESULT WINAPI AVIStreamInfoW(PAVISTREAM,AVISTREAMINFOW*,LONG);
       
   755 HRESULT WINAPI AVIStreamFindSample(PAVISTREAM,LONG,DWORD);
       
   756 HRESULT WINAPI AVIStreamReadFormat(PAVISTREAM,LONG,LPVOID,LONG*);
       
   757 HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM,LONG,LPVOID,LONG);
       
   758 HRESULT WINAPI AVIStreamRead(PAVISTREAM,LONG,LONG,LPVOID,LONG,LONG*,LONG*);
       
   759 HRESULT WINAPI AVIStreamWrite(PAVISTREAM,LONG,LONG,LPVOID,LONG,DWORD,LONG*,LONG*);
       
   760 HRESULT WINAPI AVIStreamReadData(PAVISTREAM,DWORD,LPVOID,LONG*);
       
   761 HRESULT WINAPI AVIStreamWriteData(PAVISTREAM,DWORD,LPVOID,LONG);
       
   762 PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM,LPBITMAPINFOHEADER);
       
   763 LPVOID WINAPI AVIStreamGetFrame(PGETFRAME,LONG);
       
   764 HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME);
       
   765 HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM*,PAVISTREAM,AVICOMPRESSOPTIONS*,CLSID*);
       
   766 HRESULT WINAPI AVIMakeFileFromStreams(PAVIFILE*,INT,PAVISTREAM*);
       
   767 HRESULT WINAPI AVIStreamOpenFromFileA(PAVISTREAM*,LPCSTR,DWORD,LONG,UINT,CLSID*);
       
   768 HRESULT WINAPI AVIStreamOpenFromFileW(PAVISTREAM*,LPCWSTR,DWORD,LONG,UINT,CLSID*);
       
   769 HRESULT WINAPI AVIBuildFilterA(LPSTR,LONG,BOOL);
       
   770 HRESULT WINAPI AVIBuildFilterW(LPWSTR,LONG,BOOL);
       
   771 BOOL WINAPI AVISaveOptions(HWND,UINT,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*);
       
   772 HRESULT WINAPI AVISaveOptionsFree(INT,LPAVICOMPRESSOPTIONS*);
       
   773 HRESULT WINAPI AVISaveVA(LPCSTR,CLSID*,AVISAVECALLBACK,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*);
       
   774 HRESULT WINAPI AVISaveVW(LPCWSTR,CLSID*,AVISAVECALLBACK,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*);
       
   775 LONG WINAPI AVIStreamStart(PAVISTREAM);
       
   776 LONG WINAPI AVIStreamLength(PAVISTREAM);
       
   777 LONG WINAPI AVIStreamSampleToTime(PAVISTREAM,LONG);
       
   778 LONG WINAPI AVIStreamTimeToSample(PAVISTREAM,LONG);
       
   779 HRESULT WINAPI CreateEditableStream(PAVISTREAM*,PAVISTREAM);
       
   780 HRESULT WINAPI EditStreamClone(PAVISTREAM,PAVISTREAM*);
       
   781 HRESULT WINAPI EditStreamCopy(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
       
   782 HRESULT WINAPI EditStreamCut(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
       
   783 HRESULT WINAPI EditStreamPaste(PAVISTREAM,LONG*,LONG*,PAVISTREAM,LONG,LONG);
       
   784 HRESULT WINAPI EditStreamSetInfoA(PAVISTREAM,LPAVISTREAMINFOA,LONG);
       
   785 HRESULT WINAPI EditStreamSetInfoW(PAVISTREAM,LPAVISTREAMINFOW,LONG);
       
   786 HRESULT WINAPI EditStreamSetNameA(PAVISTREAM,LPCSTR);
       
   787 HRESULT WINAPI EditStreamSetNameW(PAVISTREAM,LPCWSTR);
       
   788 HRESULT WINAPI CreateEditableStream(PAVISTREAM*,PAVISTREAM);
       
   789 HRESULT WINAPI EditStreamClone(PAVISTREAM,PAVISTREAM*);
       
   790 HRESULT WINAPI EditStreamCopy(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
       
   791 HRESULT WINAPI EditStreamCut(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
       
   792 HRESULT WINAPI EditStreamPaste(PAVISTREAM,LONG*,LONG*,PAVISTREAM,LONG,LONG);
       
   793 HRESULT WINAPI EditStreamSetInfoA(PAVISTREAM,LPAVISTREAMINFOA,LONG);
       
   794 HRESULT WINAPI EditStreamSetInfoW(PAVISTREAM,LPAVISTREAMINFOW,LONG);
       
   795 HRESULT WINAPI EditStreamSetNameA(PAVISTREAM,LPCSTR);
       
   796 HRESULT WINAPI EditStreamSetNameW(PAVISTREAM,LPCWSTR);
       
   797 VOID WINAPI AVIFileInit(void);
       
   798 VOID WINAPI AVIFileExit(void);
       
   799 HRESULT WINAPI AVIFileOpenA(PAVIFILE*,LPCSTR,UINT,LPCLSID);
       
   800 HRESULT WINAPI AVIFileOpenW(PAVIFILE*,LPCWSTR,UINT,LPCLSID);
       
   801 ULONG WINAPI AVIFileAddRef(PAVIFILE);
       
   802 ULONG WINAPI AVIFileRelease(PAVIFILE);
       
   803 HRESULT WINAPI AVIFileInfoA(PAVIFILE,PAVIFILEINFOA,LONG);
       
   804 HRESULT WINAPI AVIFileInfoW(PAVIFILE,PAVIFILEINFOW,LONG);
       
   805 HRESULT WINAPI AVIFileGetStream(PAVIFILE,PAVISTREAM*,DWORD,LONG);
       
   806 HRESULT WINAPI AVIFileCreateStreamA(PAVIFILE,PAVISTREAM*,AVISTREAMINFOA*);
       
   807 HRESULT WINAPI AVIFileCreateStreamW(PAVIFILE,PAVISTREAM*,AVISTREAMINFOW*);
       
   808 HRESULT WINAPI AVIFileWriteData(PAVIFILE,DWORD,LPVOID,LONG);
       
   809 HRESULT WINAPI AVIFileReadData(PAVIFILE,DWORD,LPVOID,LPLONG);
       
   810 HRESULT WINAPI AVIFileEndRecord(PAVIFILE);
       
   811 HRESULT WINAPI AVIClearClipboard(VOID);
       
   812 HRESULT WINAPI AVIGetFromClipboard(PAVIFILE*);
       
   813 HRESULT WINAPI AVIPutFileOnClipboard(PAVIFILE);
       
   814 #endif /* _OBJC_NO_COM */
       
   815 #ifdef OFN_READONLY
       
   816 BOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA);
       
   817 BOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW);
       
   818 BOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA);
       
   819 BOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW);
       
   820 #endif
       
   821 HWND VFWAPIV MCIWndCreateA(HWND,HINSTANCE,DWORD,LPCSTR);
       
   822 HWND VFWAPIV MCIWndCreateW(HWND,HINSTANCE,DWORD,LPCWSTR);
       
   823 HDRAWDIB VFWAPI DrawDibOpen(VOID);
       
   824 UINT VFWAPI DrawDibRealize(HDRAWDIB,HDC,BOOL);
       
   825 BOOL VFWAPI DrawDibBegin(HDRAWDIB,HDC,INT,INT,LPBITMAPINFOHEADER,INT,INT,UINT);
       
   826 BOOL VFWAPI DrawDibDraw(HDRAWDIB,HDC,INT,INT,INT,INT,LPBITMAPINFOHEADER,LPVOID,INT,INT,INT,INT,UINT);
       
   827 BOOL VFWAPI DrawDibSetPalette(HDRAWDIB,HPALETTE);
       
   828 HPALETTE VFWAPI DrawDibGetPalette(HDRAWDIB);
       
   829 BOOL VFWAPI DrawDibChangePalette(HDRAWDIB,int,int,LPPALETTEENTRY);
       
   830 LPVOID VFWAPI DrawDibGetBuffer(HDRAWDIB,LPBITMAPINFOHEADER,DWORD,DWORD);
       
   831 BOOL VFWAPI DrawDibStart(HDRAWDIB,DWORD);
       
   832 BOOL VFWAPI DrawDibStop(HDRAWDIB);
       
   833 BOOL VFWAPI DrawDibEnd(HDRAWDIB);
       
   834 BOOL VFWAPI DrawDibClose(HDRAWDIB);
       
   835 DWORD VFWAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER);
       
   836 
       
   837 #define ICCompressGetFormat(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_FORMAT,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
       
   838 #define ICCompressGetFormatSize(hic,lpbi) ICCompressGetFormat(hic,lpbi,NULL)
       
   839 #define ICCompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_BEGIN,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
       
   840 #define ICCompressGetSize(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_SIZE,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
       
   841 #define ICCompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_QUERY,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
       
   842 #define ICCompressEnd(hic) ICSendMessage(hic,ICM_COMPRESS_END,0,0)
       
   843 #define ICQueryAbout(hic) (ICSendMessage(hic,ICM_ABOUT,(DWORD)-1,ICMF_ABOUT_QUERY)==ICERR_OK)
       
   844 #define ICAbout(hic,hwnd) ICSendMessage(hic,ICM_ABOUT,(DWORD)(hwnd),0)
       
   845 #define ICQueryConfigure(hic) (ICSendMessage(hic,ICM_CONFIGURE,(DWORD)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
       
   846 #define ICConfigure(hic,hwnd) ICSendMessage(hic,ICM_CONFIGURE,(DWORD)(hwnd),0)
       
   847 #define ICDecompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_BEGIN,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
       
   848 #define ICDecompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_QUERY,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
       
   849 #define ICDecompressGetFormat(hic,lpbiInput,lpbiOutput) (LONG)ICSendMessage(hic,ICM_DECOMPRESS_GET_FORMAT,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
       
   850 #define ICDecompressGetFormatSize(hic,lpbi) ICDecompressGetFormat(hic, lpbi, NULL)
       
   851 #define ICDecompressGetPalette(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_GET_PALETTE,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
       
   852 #define ICDecompressSetPalette(hic,lpbiPalette) ICSendMessage(hic,ICM_DECOMPRESS_SET_PALETTE,(DWORD)(lpbiPalette),0)
       
   853 #define ICDecompressEnd(hic) ICSendMessage(hic,ICM_DECOMPRESS_END,0,0)
       
   854 #define ICDecompressExEnd(hic) ICSendMessage(hic,ICM_DECOMPRESSEX_END,0,0)
       
   855 #define ICDecompressOpen(fccType,fccHandler,lpbiIn,lpbiOut) ICLocate(fccType,fccHandler,lpbiIn,lpbiOut,ICMODE_DECOMPRESS)
       
   856 #define ICDrawOpen(fccType,fccHandler,lpbiIn) ICLocate(fccType,fccHandler,lpbiIn,NULL,ICMODE_DRAW)
       
   857 #define ICGetState(hic,pv,cb) ICSendMessage(hic,ICM_GETSTATE,(DWORD)(pv),(DWORD)(cb))
       
   858 #define ICSetState(hic,pv,cb) ICSendMessage(hic,ICM_SETSTATE,(DWORD)(pv),(DWORD)(cb))
       
   859 #define ICGetStateSize(hic) ICGetState(hic,NULL,0)
       
   860 #define ICDrawWindow(hic,prc) ICSendMessage(hic,ICM_DRAW_WINDOW,(DWORD)(prc),sizeof(RECT))
       
   861 #define ICDrawQuery(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_QUERY,(DWORD)(lpbiInput),0)
       
   862 #define ICDrawChangePalette(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_CHANGEPALETTE,(DWORD)(lpbiInput),0)
       
   863 #define ICGetBuffersWanted(hic,lpdwBuffers) ICSendMessage(hic,ICM_GETBUFFERSWANTED,(DWORD)(lpdwBuffers),0)
       
   864 #define ICDrawEnd(hic) ICSendMessage(hic,ICM_DRAW_END,0,0)
       
   865 #define ICDrawStart(hic) ICSendMessage(hic,ICM_DRAW_START,0,0)
       
   866 #define ICDrawStartPlay(hic,lFrom,lTo) ICSendMessage(hic,ICM_DRAW_START_PLAY,(DWORD)(lFrom),(DWORD)(lTo))
       
   867 #define ICDrawStop(hic) ICSendMessage(hic,ICM_DRAW_STOP,0,0)
       
   868 #define ICDrawStopPlay(hic) ICSendMessage(hic,ICM_DRAW_STOP_PLAY,0,0)
       
   869 #define ICDrawGetTime(hic,lplTime) ICSendMessage(hic,ICM_DRAW_GETTIME,(DWORD)(lplTime),0)
       
   870 #define ICDrawSetTime(hic,lTime) ICSendMessage(hic,ICM_DRAW_SETTIME,(DWORD)lTime,0)
       
   871 #define ICDrawRealize(hic,hdc,fBackground) ICSendMessage(hic,ICM_DRAW_REALIZE,(DWORD)(hdc),(DWORD)(fBackground))
       
   872 #define ICDrawFlush(hic) ICSendMessage(hic,ICM_DRAW_FLUSH,0,0)
       
   873 #define ICDrawRenderBuffer(hic) ICSendMessage(hic,ICM_DRAW_RENDERBUFFER,0,0)
       
   874 #define AVIFileClose(pavi) AVIFileRelease(pavi)
       
   875 #define AVIStreamClose(pavi) AVIStreamRelease(pavi);
       
   876 #define AVIStreamEnd(pavi) (AVIStreamStart(pavi)+AVIStreamLength(pavi))
       
   877 #define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamEnd(pavi))
       
   878 #define AVIStreamFormatSize(pavi,lPos,plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize)
       
   879 #define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamLength(pavi))
       
   880 #define AVIStreamSampleSize(pavi,pos,psize) AVIStreamRead(pavi,pos,1,NULL,0,psize,NULL)
       
   881 #define AVIStreamSampleToSample(pavi1,pavi2,samp2) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2,samp2))
       
   882 #define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamStart(pavi))
       
   883 #define AVIStreamNextSample(pavi,pos) AVIStreamFindSample(pavi,pos+1,FIND_NEXT|FIND_ANY)
       
   884 #define AVIStreamPrevSample(pavi,pos) AVIStreamFindSample(pavi,pos-1,FIND_PREV|FIND_ANY)
       
   885 #define AVIStreamNearestSample(pavi, pos) AVIStreamFindSample(pavi,pos,FIND_PREV|FIND_ANY)
       
   886 #define AVStreamNextKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos+1,FIND_NEXT|FIND_KEY)
       
   887 #define AVStreamPrevKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos-1,FIND_NEXT|FIND_KEY)
       
   888 #define AVIStreamNearestKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos,FIND_PREV|FIND_KEY)
       
   889 #define AVIStreamIsKeyFrame(pavi, pos) (AVIStreamNearestKeyFrame(pavi,pos) == pos)
       
   890 #ifdef __cplusplus
       
   891 #define MCIWndSM ::SendMessage
       
   892 #else
       
   893 #define MCIWndSM SendMessage
       
   894 #endif
       
   895 #define MCIWndCanPlay(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_PLAY,0,0)
       
   896 #define MCIWndCanRecord(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_RECORD,0,0)
       
   897 #define MCIWndCanSave(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_SAVE,0,0)
       
   898 #define MCIWndCanWindow(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_WINDOW,0,0)
       
   899 #define MCIWndCanEject(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_EJECT,0,0)
       
   900 #define MCIWndCanConfig(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_CONFIG,0,0)
       
   901 #define MCIWndPaletteKick(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_PALETTEKICK,0,0)
       
   902 #define MCIWndSave(hWnd,szFile) (LONG)MCIWndSM(hWnd,MCI_SAVE,0,(LPARAM)(LPVOID)(szFile))
       
   903 #define MCIWndSaveDialog(hWnd) MCIWndSave(hWnd,-1)
       
   904 #define MCIWndNew(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_NEW,0,(LPARAM)(LPVOID)(lp))
       
   905 #define MCIWndRecord(hWnd) (LONG)MCIWndSM(hWnd,MCI_RECORD,0,0)
       
   906 #define MCIWndOpen(hWnd,sz,f) (LONG)MCIWndSM(hWnd,MCIWNDM_OPEN,(WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz))
       
   907 #define MCIWndOpenDialog(hWnd) MCIWndOpen(hWnd,-1,0)
       
   908 #define MCIWndClose(hWnd) (LONG)MCIWndSM(hWnd,MCI_CLOSE,0,0)
       
   909 #define MCIWndPlay(hWnd) (LONG)MCIWndSM(hWnd,MCI_PLAY,0,0)
       
   910 #define MCIWndStop(hWnd) (LONG)MCIWndSM(hWnd,MCI_STOP,0,0)
       
   911 #define MCIWndPause(hWnd) (LONG)MCIWndSM(hWnd,MCI_PAUSE,0,0)
       
   912 #define MCIWndResume(hWnd) (LONG)MCIWndSM(hWnd,MCI_RESUME,0,0)
       
   913 #define MCIWndSeek(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCI_SEEK,0,(LPARAM)(LONG)(lPos))
       
   914 #define MCIWndEject(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_EJECT,0,0)
       
   915 #define MCIWndHome(hWnd) MCIWndSeek(hWnd,MCIWND_START)
       
   916 #define MCIWndEnd(hWnd) MCIWndSeek(hWnd,MCIWND_END)
       
   917 #define MCIWndGetSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_SOURCE,0,(LPARAM)(LPRECT)(prc))
       
   918 #define MCIWndPutSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_SOURCE,0,(LPARAM)(LPRECT)(prc))
       
   919 #define MCIWndGetDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_DEST,0,(LPARAM)(LPRECT)(prc))
       
   920 #define MCIWndPutDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_DEST,0,(LPARAM)(LPRECT)(prc))
       
   921 #define MCIWndPlayReverse(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYREVERSE,0,0)
       
   922 #define MCIWndPlayFrom(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYFROM,0,(LPARAM)(LONG)(lPos))
       
   923 #define MCIWndPlayTo(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYTO,  0,(LPARAM)(LONG)(lPos))
       
   924 #define MCIWndPlayFromTo(hWnd,lStart,lEnd) (MCIWndSeek(hWnd,lStart),MCIWndPlayTo(hWnd,lEnd))
       
   925 #define MCIWndGetDeviceID(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETDEVICEID,0,0)
       
   926 #define MCIWndGetAlias(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETALIAS,0,0)
       
   927 #define MCIWndGetMode(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETMODE,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
       
   928 #define MCIWndGetPosition(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,0,0)
       
   929 #define MCIWndGetPositionString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
       
   930 #define MCIWndGetStart(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSTART,0,0)
       
   931 #define MCIWndGetLength(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETLENGTH,0,0)
       
   932 #define MCIWndGetEnd(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETEND,0,0)
       
   933 #define MCIWndStep(hWnd,n) (LONG)MCIWndSM(hWnd,MCI_STEP,0,(LPARAM)(long)(n))
       
   934 #define MCIWndDestroy(hWnd) (VOID)MCIWndSM(hWnd,WM_CLOSE,0,0)
       
   935 #define MCIWndSetZoom(hWnd,iZoom) (VOID)MCIWndSM(hWnd,MCIWNDM_SETZOOM,0,(LPARAM)(UINT)(iZoom))
       
   936 #define MCIWndGetZoom(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETZOOM,0,0)
       
   937 #define MCIWndSetVolume(hWnd,iVol) (LONG)MCIWndSM(hWnd,MCIWNDM_SETVOLUME,0,(LPARAM)(UINT)(iVol))
       
   938 #define MCIWndGetVolume(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETVOLUME,0,0)
       
   939 #define MCIWndSetSpeed(hWnd,iSpeed) (LONG)MCIWndSM(hWnd,MCIWNDM_SETSPEED,0,(LPARAM)(UINT)(iSpeed))
       
   940 #define MCIWndGetSpeed(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSPEED,0,0)
       
   941 #define MCIWndSetTimeFormat(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_SETTIMEFORMAT,0,(LPARAM)(LPTSTR)(lp))
       
   942 #define MCIWndGetTimeFormat(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETTIMEFORMAT,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
       
   943 #define MCIWndValidateMedia(hWnd) (VOID)MCIWndSM(hWnd,MCIWNDM_VALIDATEMEDIA,0,0)
       
   944 #define MCIWndSetRepeat(hWnd,f) (void)MCIWndSM(hWnd,MCIWNDM_SETREPEAT,0,(LPARAM)(BOOL)(f))
       
   945 #define MCIWndGetRepeat(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_GETREPEAT,0,0)
       
   946 #define MCIWndUseFrames(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("frames"))
       
   947 #define MCIWndUseTime(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("ms"))
       
   948 #define MCIWndSetActiveTimer(hWnd,active) (VOID)MCIWndSM(hWnd,MCIWNDM_SETACTIVETIMER,(WPARAM)(UINT)(active),0L)
       
   949 #define MCIWndSetInactiveTimer(hWnd,inactive) (VOID)MCIWndSM(hWnd,MCIWNDM_SETINACTIVETIMER,(WPARAM)(UINT)(inactive),0L)
       
   950 #define MCIWndSetTimers(hWnd,active,inactive) (VOID)MCIWndSM(hWnd,MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active),(LPARAM)(UINT)(inactive))
       
   951 #define MCIWndGetActiveTimer(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETACTIVETIMER,0,0L);
       
   952 #define MCIWndGetInactiveTimer(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETINACTIVETIMER,0,0L);
       
   953 #define MCIWndRealize(hWnd,fBkgnd) (LONG)MCIWndSM(hWnd,MCIWNDM_REALIZE,(WPARAM)(BOOL)(fBkgnd),0)
       
   954 #define MCIWndSendString(hWnd,sz) (LONG)MCIWndSM(hWnd,MCIWNDM_SENDSTRING,0,(LPARAM)(LPTSTR)(sz))
       
   955 #define MCIWndReturnString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_RETURNSTRING,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
       
   956 #define MCIWndGetError(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETERROR,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
       
   957 #define MCIWndGetPalette(hWnd) (HPALETTE)MCIWndSM(hWnd,MCIWNDM_GETPALETTE,0,0)
       
   958 #define MCIWndSetPalette(hWnd,hpal) (LONG)MCIWndSM(hWnd,MCIWNDM_SETPALETTE,(WPARAM)(HPALETTE)(hpal),0)
       
   959 #define MCIWndGetFileName(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETFILENAME,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
       
   960 #define MCIWndGetDevice(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETDEVICE,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
       
   961 #define MCIWndGetStyles(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETSTYLES,0,0L)
       
   962 #define MCIWndChangeStyles(hWnd,mask,value) (LONG)MCIWndSM(hWnd,MCIWNDM_CHANGESTYLES,(WPARAM)(UINT)(mask),(LPARAM)(LONG)(value))
       
   963 #define MCIWndOpenInterface(hWnd,pUnk) (LONG)MCIWndSM(hWnd,MCIWNDM_OPENINTERFACE,0,(LPARAM)(LPUNKNOWN)(pUnk))
       
   964 #define MCIWndSetOwner(hWnd,hWndP) (LONG)MCIWndSM(hWnd,MCIWNDM_SETOWNER,(WPARAM)(hWndP),0)
       
   965 #define DrawDibUpdate(hdd,hdc,x,y) DrawDibDraw(hdd,hdc,x,y,0,0,NULL,NULL,0,0,0,0,DDF_UPDATE)
       
   966 static __inline DWORD
       
   967 ICGetDefaultQuality(HIC hic)
       
   968 {
       
   969    DWORD dwICValue;
       
   970    ICSendMessage(hic, ICM_GETDEFAULTQUALITY, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD));
       
   971    return dwICValue;
       
   972 }
       
   973 static __inline DWORD
       
   974 ICGetDefaultKeyFrameRate(HIC hic)
       
   975 {
       
   976    DWORD dwICValue;
       
   977    ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD));
       
   978    return dwICValue;
       
   979 }
       
   980 static __inline LRESULT
       
   981 ICDrawSuggestFormat(HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,INT dxSrc,INT dySrc,INT dxDst,INT dyDst,HIC hicDecomp)
       
   982 {
       
   983 	ICDRAWSUGGEST ic;
       
   984 	ic.lpbiIn = lpbiIn;
       
   985 	ic.lpbiSuggest = lpbiOut;
       
   986 	ic.dxSrc = dxSrc;
       
   987 	ic.dySrc = dySrc;
       
   988 	ic.dxDst = dxDst;
       
   989 	ic.dyDst = dyDst;
       
   990 	ic.hicDecompressor = hicDecomp;
       
   991 	return ICSendMessage(hic,ICM_DRAW_SUGGESTFORMAT,(DWORD)&ic,sizeof(ic));
       
   992 }
       
   993 static __inline LRESULT
       
   994 ICSetStatusProc(HIC hic,DWORD dwFlags,LRESULT lParam,LONG (CALLBACK *fpfnStatus)(LPARAM,UINT,LONG))
       
   995 {
       
   996 	ICSETSTATUSPROC ic;
       
   997 	ic.dwFlags = dwFlags;
       
   998 	ic.lParam = lParam;
       
   999 	ic.Status = fpfnStatus;
       
  1000 	return ICSendMessage(hic,ICM_SET_STATUS_PROC,(DWORD)&ic,sizeof(ic));
       
  1001 }
       
  1002 static __inline LRESULT 
       
  1003 ICDecompressEx(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
       
  1004 {
       
  1005 	ICDECOMPRESSEX ic;
       
  1006 	ic.dwFlags = dwFlags;
       
  1007 	ic.lpbiSrc = lpbiSrc;
       
  1008 	ic.lpSrc = lpSrc;
       
  1009 	ic.xSrc = xSrc;
       
  1010 	ic.ySrc = ySrc;
       
  1011 	ic.dxSrc = dxSrc;
       
  1012 	ic.dySrc = dySrc;
       
  1013 	ic.lpbiDst = lpbiDst;
       
  1014 	ic.lpDst = lpDst;
       
  1015 	ic.xDst = xDst;
       
  1016 	ic.yDst = yDst;
       
  1017 	ic.dxDst = dxDst;
       
  1018 	ic.dyDst = dyDst;
       
  1019 	return ICSendMessage(hic,ICM_DECOMPRESSEX,(DWORD)&ic,sizeof(ic));
       
  1020 }
       
  1021 static __inline LRESULT
       
  1022 ICDecompressExBegin(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
       
  1023 {
       
  1024 	ICDECOMPRESSEX ic;
       
  1025 	ic.dwFlags = dwFlags;
       
  1026 	ic.lpbiSrc = lpbiSrc;
       
  1027 	ic.lpSrc = lpSrc;
       
  1028 	ic.xSrc = xSrc;
       
  1029 	ic.ySrc = ySrc;
       
  1030 	ic.dxSrc = dxSrc;
       
  1031 	ic.dySrc = dySrc;
       
  1032 	ic.lpbiDst = lpbiDst;
       
  1033 	ic.lpDst = lpDst;
       
  1034 	ic.xDst = xDst;
       
  1035 	ic.yDst = yDst;
       
  1036 	ic.dxDst = dxDst;
       
  1037 	ic.dyDst = dyDst;
       
  1038 	return ICSendMessage(hic,ICM_DECOMPRESSEX_BEGIN,(DWORD)&ic,sizeof(ic));
       
  1039 }
       
  1040 static __inline LRESULT
       
  1041 ICDecompressExQuery(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
       
  1042 {
       
  1043 	ICDECOMPRESSEX ic;
       
  1044 	ic.dwFlags = dwFlags;
       
  1045 	ic.lpbiSrc = lpbiSrc;
       
  1046 	ic.lpSrc = lpSrc;
       
  1047 	ic.xSrc = xSrc;
       
  1048 	ic.ySrc = ySrc;
       
  1049 	ic.dxSrc = dxSrc;
       
  1050 	ic.dySrc = dySrc;
       
  1051 	ic.lpbiDst = lpbiDst;
       
  1052 	ic.lpDst = lpDst;
       
  1053 	ic.xDst = xDst;
       
  1054 	ic.yDst = yDst;
       
  1055 	ic.dxDst = dxDst;
       
  1056 	ic.dyDst = dyDst;
       
  1057 	return ICSendMessage(hic,ICM_DECOMPRESSEX_QUERY,(DWORD)&ic,sizeof(ic));
       
  1058 }
       
  1059 
       
  1060 /* AVICAP32 exports */
       
  1061 HWND VFWAPI capCreateCaptureWindowA (LPCSTR,DWORD,int,int,int,int,HWND,int);
       
  1062 HWND VFWAPI capCreateCaptureWindowW (LPCWSTR,DWORD,int,int,int,int,HWND,int);
       
  1063 BOOL VFWAPI capGetDriverDescriptionA (UINT,LPSTR,int,LPSTR,int);
       
  1064 BOOL VFWAPI capGetDriverDescriptionW (UINT,LPWSTR,int,LPWSTR,int);
       
  1065 
       
  1066 #ifdef UNICODE
       
  1067 #define AVISTREAMINFO AVISTREAMINFOW
       
  1068 #define LPAVISTREAMINFO LPAVISTREAMINFOW
       
  1069 #define PAVISTREAMINFO PAVISTREAMINFOW
       
  1070 #define AVIFILEINFO AVIFILEINFOW
       
  1071 #define PAVIFILEINFO PAVIFILEINFOW
       
  1072 #define LPAVIFILEINFO LPAVIFILEINFOW
       
  1073 #define AVIStreamInfo AVIStreamInfoW
       
  1074 #define AVIStreamOpenFromFile AVIStreamOpenFromFileW
       
  1075 #define AVIBuildFilter AVIBuildFilterW
       
  1076 #define AVISaveV AVISaveVW
       
  1077 #define EditStreamSetInfo EditStreamSetInfoW
       
  1078 #define EditStreamSetName EditStreamSetNameW
       
  1079 #define AVIFileOpen AVIFileOpenW
       
  1080 #define AVIFileInfo AVIFileInfoW
       
  1081 #define AVIFileCreateStream AVIFileCreateStreamW
       
  1082 #define GetOpenFileNamePreview GetOpenFileNamePreviewW
       
  1083 #define GetSaveFileNamePreview GetSaveFileNamePreviewW
       
  1084 #define MCIWndCreate MCIWndCreateW
       
  1085 #define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAW
       
  1086 #define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGW
       
  1087 #define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONW
       
  1088 #define MCIWNDM_GETMODE MCIWNDM_GETMODEW
       
  1089 #define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATW
       
  1090 #define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATW
       
  1091 #define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEW
       
  1092 #define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEW
       
  1093 #define MCIWNDM_GETERROR MCIWNDM_GETERRORW
       
  1094 #define MCIWNDM_NEW MCIWNDM_NEWW
       
  1095 #define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGW
       
  1096 #define MCIWNDM_OPEN MCIWNDM_OPENW
       
  1097 
       
  1098 #define capCreateCaptureWindow  capCreateCaptureWindowW
       
  1099 #define capGetDriverDescription capGetDriverDescriptionW
       
  1100 
       
  1101 #else
       
  1102 #define AVISTREAMINFO AVISTREAMINFOA
       
  1103 #define LPAVISTREAMINFO LPAVISTREAMINFOA
       
  1104 #define PAVISTREAMINFO PAVISTREAMINFOA
       
  1105 #define AVIFILEINFO AVIFILEINFOA
       
  1106 #define PAVIFILEINFO PAVIFILEINFOA
       
  1107 #define LPAVIFILEINFO LPAVIFILEINFOA
       
  1108 #define AVIStreamInfo AVIStreamInfoA
       
  1109 #define AVIStreamOpenFromFile AVIStreamOpenFromFileA
       
  1110 #define AVIBuildFilter AVIBuildFilterA
       
  1111 #define AVISaveV AVISaveVA
       
  1112 #define EditStreamSetInfo EditStreamSetInfoA
       
  1113 #define EditStreamSetName EditStreamSetNameA
       
  1114 #define AVIFileOpen AVIFileOpenA
       
  1115 #define AVIFileInfo AVIFileInfoA
       
  1116 #define AVIFileCreateStream AVIFileCreateStreamA
       
  1117 #define GetOpenFileNamePreview GetOpenFileNamePreviewA
       
  1118 #define GetSaveFileNamePreview GetSaveFileNamePreviewA
       
  1119 #define MCIWndCreate MCIWndCreateA
       
  1120 #define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAA
       
  1121 #define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGA
       
  1122 #define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONA
       
  1123 #define MCIWNDM_GETMODE MCIWNDM_GETMODEA
       
  1124 #define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATA
       
  1125 #define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATA
       
  1126 #define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEA
       
  1127 #define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEA
       
  1128 #define MCIWNDM_GETERROR MCIWNDM_GETERRORA
       
  1129 #define MCIWNDM_NEW MCIWNDM_NEWA
       
  1130 #define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGA
       
  1131 #define MCIWNDM_OPEN MCIWNDM_OPENA
       
  1132 
       
  1133 #define capCreateCaptureWindow  capCreateCaptureWindowA
       
  1134 #define capGetDriverDescription capGetDriverDescriptionA
       
  1135 
       
  1136 #endif
       
  1137 
       
  1138 #endif /* RC_INVOKED */
       
  1139 
       
  1140 #ifdef __cplusplus
       
  1141 }
       
  1142 #endif
       
  1143 #include <poppack.h>
       
  1144 #endif /* _VFW_H */