Updated msvideo / vfw.h, use builtin msvfw32.dll by default, added
aviinfo and aviplay programs.
diff --git a/include/vfw.h b/include/vfw.h
index ae0a174..6375419 100644
--- a/include/vfw.h
+++ b/include/vfw.h
@@ -32,8 +32,8 @@
DWORD type; /* 08: */
DWORD handler; /* 0C: */
HDRVR32 hdrv; /* 10: */
- DWORD private; /* 14: private data passed to drv */
- FARPROC32 driverproc; /* 18: */
+ DWORD private; /* 14:(handled by SendDriverMessage32)*/
+ FARPROC32 driverproc; /* 18:(handled by SendDriverMessage32)*/
DWORD x1; /* 1c: name? */
WORD x2; /* 20: */
DWORD x3; /* 22: */
@@ -260,7 +260,7 @@
WCHAR szDriver[128]; /* 138:driver that contains compressor*/
/* 238: */
} ICINFO32;
-DECL_WINELIB_TYPE(ICINFO);
+DECL_WINELIB_TYPE(ICINFO)
/* ICINFO.dwFlags */
#define VIDCF_QUALITY 0x0001 /* supports quality */
@@ -392,6 +392,9 @@
#define ICClose WINELIB_NAME(ICClose)
LRESULT VFWAPI ICSendMessage32(HIC32 hic, UINT32 msg, DWORD dw1, DWORD dw2);
#define ICSendMessage WINELIB_NAME(ICSendMessage)
+HIC32 VFWAPI ICLocate32(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags);
+#define ICLocate WINELIB_NAME(ICLocate)
+
DWORD VFWAPIV ICDrawBegin32(
HIC32 hic,
DWORD dwFlags,/* flags */
@@ -414,6 +417,20 @@
/********************* AVIFILE function declarations *************************/
+#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')
+
+/* Chunk id to use for extra chunks for padding. */
+#define ckidAVIPADDING mmioFOURCC('J', 'U', 'N', 'K')
+
/* AVIFileHdr.dwFlags */
#define AVIF_HASINDEX 0x00000010 /* Index at end of file? */
#define AVIF_MUSTUSEINDEX 0x00000020
@@ -424,6 +441,21 @@
#define AVI_HEADERSIZE 2048
+typedef struct _MainAVIHeader
+{
+ DWORD dwMicroSecPerFrame;
+ DWORD dwMaxBytesPerSec;
+ DWORD dwPaddingGranularity;
+ DWORD dwFlags;
+ DWORD dwTotalFrames;
+ DWORD dwInitialFrames;
+ DWORD dwStreams;
+ DWORD dwSuggestedBufferSize;
+ DWORD dwWidth;
+ DWORD dwHeight;
+ DWORD dwReserved[4];
+} MainAVIHeader;
+
/* AVIStreamHeader.dwFlags */
#define AVISF_DISABLED 0x00000001
#define AVISF_VIDEO_PALCHANGES 0x00010000
@@ -442,7 +474,7 @@
DWORD dwSuggestedBufferSize;
DWORD dwQuality;
DWORD dwSampleSize;
- RECT32 rcFrame;
+ RECT16 rcFrame; /* word.word - word.word in file */
} AVIStreamHeader;
/* AVIINDEXENTRY.dwFlags */
@@ -511,9 +543,9 @@
DWORD dwFormatChangeCount;
WCHAR szName[64];
} AVISTREAMINFO32W, * LPAVISTREAMINFO32W, *PAVISTREAMINFO32W;
-DECL_WINELIB_TYPE_AW(AVISTREAMINFO);
-DECL_WINELIB_TYPE_AW(LPAVISTREAMINFO);
-DECL_WINELIB_TYPE_AW(PAVISTREAMINFO);
+DECL_WINELIB_TYPE_AW(AVISTREAMINFO)
+DECL_WINELIB_TYPE_AW(LPAVISTREAMINFO)
+DECL_WINELIB_TYPE_AW(PAVISTREAMINFO)
#define AVISTREAMINFO_DISABLED 0x00000001
#define AVISTREAMINFO_FORMATCHANGES 0x00010000
@@ -557,11 +589,11 @@
DWORD dwRate;
DWORD dwLength;
DWORD dwEditCount;
- CHAR szFileType[64];
+ CHAR szFileType[64];
} AVIFILEINFO32A, * LPAVIFILEINFO32A, *PAVIFILEINFO32A;
-DECL_WINELIB_TYPE_AW(AVIFILEINFO);
-DECL_WINELIB_TYPE_AW(PAVIFILEINFO);
-DECL_WINELIB_TYPE_AW(LPAVIFILEINFO);
+DECL_WINELIB_TYPE_AW(AVIFILEINFO)
+DECL_WINELIB_TYPE_AW(PAVIFILEINFO)
+DECL_WINELIB_TYPE_AW(LPAVIFILEINFO)
/* AVICOMPRESSOPTIONS.dwFlags. determines presence of fields in below struct */
#define AVICOMPRESSF_INTERLEAVE 0x00000001
@@ -615,6 +647,9 @@
ICOM_END(IAVIStream32)
#undef ICOM_INTERFACE
+DECL_WINELIB_TYPE(IAVIStream)
+DECL_WINELIB_TYPE(PAVISTREAM)
+
/* IAVIFile32 interface. In Win32 this interface uses UNICODE only */
#define ICOM_INTERFACE IAVIFile32
typedef struct IAVIFile32 IAVIFile32,*PAVIFILE32;
@@ -629,6 +664,23 @@
ICOM_END(IAVIFile32)
#undef ICOM_INTERFACE
+DECL_WINELIB_TYPE(IAVIFile)
+DECL_WINELIB_TYPE(PAVIFILE)
+
+/* IGetFrame32 interface */
+#define ICOM_INTERFACE IGetFrame32
+typedef struct IGetFrame32 IGetFrame32,*PGETFRAME32;
+ICOM_BEGIN(IGetFrame32,IUnknown)
+ ICOM_METHOD1(LPVOID,GetFrame,LONG,);
+ ICOM_METHOD3(HRESULT,Begin,LONG,,LONG,,LONG,);
+ ICOM_METHOD (HRESULT,End);
+ ICOM_METHOD6(HRESULT,SetFormat,LPBITMAPINFOHEADER,,LPVOID,,INT32,,INT32,,INT32,,INT32,);
+ICOM_END(IGetFrame32)
+#undef ICOM_INTERFACE
+
+DECL_WINELIB_TYPE(IGetFrame)
+DECL_WINELIB_TYPE(PGETFRAME)
+
#define AVIERR_OK 0
#define MAKE_AVIERR(error) MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+error)
@@ -652,15 +704,6 @@
#define AVIERR_USERABORT MAKE_AVIERR(198)
#define AVIERR_ERROR MAKE_AVIERR(199)
-void WINAPI AVIFileInit32(void);
-#define AVIFileInit WINELIB_NAME(AVIFileInit)
-
-HRESULT WINAPI AVIFileOpen32A(PAVIFILE32 * ppfile,LPCSTR szFile,UINT32 uMode,LPCLSID lpHandler);
-#define AVIFileOpen WINELIB_NAME_AW(AVIFileOpen)
-
-HRESULT WINAPI AVIFileCreateStream32A(PAVIFILE32 pfile,PAVISTREAM32 *ppavi,AVISTREAMINFO32A * psi);
-HRESULT WINAPI AVIFileCreateStream32W(PAVIFILE32 pfile,PAVISTREAM32 *ppavi,AVISTREAMINFO32W * psi);
-#define AVIFileCreateStream WINELIB_NAME_AW(AVIFileCreateStream)
HRESULT WINAPI AVIMakeCompressedStream32(PAVISTREAM32*ppsCompressed,PAVISTREAM32 ppsSource,AVICOMPRESSOPTIONS *lpOptions,CLSID*pclsidHandler);
#define AVIMakeCompressedStream WINELIB_NAME_AW(AVIMakeCompressedStream)
HRESULT WINAPI AVIStreamSetFormat32(PAVISTREAM32 iface,LONG pos,LPVOID format,LONG formatsize);
@@ -669,10 +712,47 @@
#define AVIStreamWrite WINELIB_NAME(AVIStreamWrite)
ULONG WINAPI AVIStreamRelease32(PAVISTREAM32 iface);
#define AVIStreamRelease WINELIB_NAME(AVIStreamRelease)
+LONG WINAPI AVIStreamStart32(PAVISTREAM32 iface);
+#define AVIStreamStart WINELIB_NAME(AVIStreamStart)
+LONG WINAPI AVIStreamLength32(PAVISTREAM32 iface);
+#define AVIStreamLength WINELIB_NAME(AVIStreamLength)
+HRESULT WINAPI AVIStreamReadFormat32(PAVISTREAM32 iface,LONG pos,LPVOID format,LONG *formatsize);
+#define AVIStreamReadFormat WINELIB_NAME(AVIStreamReadFormat)
+HRESULT WINAPI AVIStreamWrite32(PAVISTREAM32 iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten);
+#define AVIStreamWrite WINELIB_NAME(AVIStreamWrite)
+HRESULT WINAPI AVIStreamRead32(PAVISTREAM32 iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread);
+#define AVIStreamRead WINELIB_NAME(AVIStreamRead)
+HRESULT WINAPI AVIStreamWriteData32(PAVISTREAM32 iface,DWORD fcc,LPVOID lp,LONG size);
+#define AVIStreamWriteData WINELIB_NAME(AVIStreamWriteData)
+HRESULT WINAPI AVIStreamReadData32(PAVISTREAM32 iface,DWORD fcc,LPVOID lp,LONG *lpread);
+#define AVIStreamReadData WINELIB_NAME(AVIStreamReadData)
+HRESULT WINAPI AVIStreamInfo32A(PAVISTREAM32 iface,AVISTREAMINFO32A *asi,LONG size);
+HRESULT WINAPI AVIStreamInfo32W(PAVISTREAM32 iface,AVISTREAMINFO32W *asi,LONG size);
+#define AVIStreamInfo WINELIB_NAME_AW(AVIStreamInfo)
+PGETFRAME32 WINAPI AVIStreamGetFrameOpen32(PAVISTREAM32 pavi,LPBITMAPINFOHEADER lpbiWanted);
+#define AVIStreamGetFrameOpen WINELIB_NAME(AVIStreamGetFrameOpen)
+HRESULT WINAPI AVIStreamGetFrameClose32(PGETFRAME32 pg);
+#define AVIStreamGetFrameClose WINELIB_NAME(AVIStreamGetFrameClose)
+PGETFRAME32 WINAPI AVIStreamGetFrameOpen32(PAVISTREAM32 pavi,LPBITMAPINFOHEADER lpbiWanted);
+#define AVIStreamGetFrameOpen WINELIB_NAME(AVIStreamGetFrameOpen)
+LPVOID WINAPI AVIStreamGetFrame32(PGETFRAME32 pg,LONG pos);
+#define AVIStreamGetFrame WINELIB_NAME(AVIStreamGetFrame)
+
+void WINAPI AVIFileInit32(void);
+#define AVIFileInit WINELIB_NAME(AVIFileInit)
+HRESULT WINAPI AVIFileOpen32A(PAVIFILE32 * ppfile,LPCSTR szFile,UINT32 uMode,LPCLSID lpHandler);
+#define AVIFileOpen WINELIB_NAME_AW(AVIFileOpen)
+HRESULT WINAPI AVIFileCreateStream32A(PAVIFILE32 pfile,PAVISTREAM32 *ppavi,AVISTREAMINFO32A * psi);
+HRESULT WINAPI AVIFileCreateStream32W(PAVIFILE32 pfile,PAVISTREAM32 *ppavi,AVISTREAMINFO32W * psi);
+#define AVIFileCreateStream WINELIB_NAME_AW(AVIFileCreateStream)
ULONG WINAPI AVIFileRelease32(PAVIFILE32 iface);
#define AVIFileRelease WINELIB_NAME(AVIFileRelease)
+HRESULT WINAPI AVIFileInfo32A(PAVIFILE32 pfile,PAVIFILEINFO32A,LONG);
+HRESULT WINAPI AVIFileInfo32W(PAVIFILE32 pfile,PAVIFILEINFO32W,LONG);
+#define AVIFileInfo WINELIB_NAME_AW(AVIFileInfo)
+HRESULT WINAPI AVIFileGetStream32(PAVIFILE32 pfile,PAVISTREAM32*avis,DWORD fccType,LONG lParam);
+#define AVIFileGetStream WINELIB_NAME(AVIFileGetStream)
void WINAPI AVIFileExit32(void);
#define AVIFileExit WINELIB_NAME(AVIFileExit)
-
#endif