Updated AVI* class interface to new ICOM_ methods.

diff --git a/include/vfw.h b/include/vfw.h
index ce4af50..83f1e4e 100644
--- a/include/vfw.h
+++ b/include/vfw.h
@@ -5,6 +5,7 @@
 #include "mmsystem.h"
 #include "wingdi.h"
 #include "wine/obj_base.h"
+#include "unknwn.h"
 
 #define VFWAPI	WINAPI
 #define VFWAPIV	WINAPIV
@@ -26,15 +27,15 @@
 
 /* Installable Compressor M? */
 
-/* HIC32 struct (same layout as Win95 one) */
+/* HIC struct (same layout as Win95 one) */
 typedef struct tagWINE_HIC {
 	DWORD		magic;		/* 00: 'Smag' */
 	HANDLE	curthread;	/* 04: */
 	DWORD		type;		/* 08: */
 	DWORD		handler;	/* 0C: */
 	HDRVR		hdrv;		/* 10: */
-	DWORD		private;	/* 14:(handled by SendDriverMessage32)*/
-	FARPROC	driverproc;	/* 18:(handled by SendDriverMessage32)*/
+	DWORD		private;	/* 14:(handled by SendDriverMessage)*/
+	FARPROC	driverproc;	/* 18:(handled by SendDriverMessage)*/
 	DWORD		x1;		/* 1c: name? */
 	WORD		x2;		/* 20: */
 	DWORD		x3;		/* 22: */
@@ -367,6 +368,8 @@
 BOOL	VFWAPI	ICInfo(DWORD fccType, DWORD fccHandler, ICINFO * lpicinfo);
 LRESULT	VFWAPI	ICGetInfo(HIC hic,ICINFO *picinfo, DWORD cb);
 HIC	VFWAPI	ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode);
+HIC	VFWAPI	ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler);
+
 LRESULT VFWAPI ICClose(HIC hic);
 LRESULT	VFWAPI	ICSendMessage(HIC hic, UINT msg, DWORD dw1, DWORD dw2);
 HIC	VFWAPI ICLocate(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags);
@@ -390,6 +393,41 @@
         DWORD			dwScale
 );
 
+/* as passed to ICM_DRAW_BEGIN (FIXME: correct only for Win32?)  */
+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;
+
+#define ICDRAW_HURRYUP      0x80000000L   // don't draw just buffer (hurry up!)
+#define ICDRAW_UPDATE       0x40000000L   // don't draw just update screen
+#define ICDRAW_PREROLL      0x20000000L   // this frame is before real start
+#define ICDRAW_NULLFRAME    0x10000000L   // repeat last frame
+#define ICDRAW_NOTKEYFRAME  0x08000000L   // this frame is not a key frame
+
+typedef struct {
+	DWORD	dwFlags;
+	LPVOID	lpFormat;
+	LPVOID	lpData;
+	DWORD	cbData;
+	LONG	lTime;
+} ICDRAW;
+
+DWORD VFWAPIV ICDraw(HIC hic,DWORD dwFlags,LPVOID lpFormat,LPVOID lpData,DWORD cbData,LONG lTime);
+
 /********************* AVIFILE function declarations *************************/
 
 #define streamtypeVIDEO         mmioFOURCC('v', 'i', 'd', 's')
@@ -603,53 +641,59 @@
 
 DEFINE_AVIGUID(CLSID_AVIFile,           0x00020000, 0, 0);
 
-
-/* IAVIStream32 interface. */
+/* IAVIStream interface. */
+typedef struct IAVIStream IAVIStream,*LPAVISTREAM,*PAVISTREAM;
 #define ICOM_INTERFACE IAVIStream
-typedef struct IAVIStream IAVIStream,*PAVISTREAM;
-ICOM_BEGIN(IAVIStream, IUnknown)
-    ICOM_METHOD2(HRESULT,Create,LPARAM,,LPARAM,);
-    ICOM_METHOD2(HRESULT,Info,AVISTREAMINFOW*,,LONG,);
-    ICOM_METHOD2(LONG,FindSample,LONG,,LONG,);
-    ICOM_METHOD3(HRESULT,ReadFormat,LONG,,LPVOID,,LONG*,);
-    ICOM_METHOD3(HRESULT,SetFormat,LONG,,LPVOID,,LONG,);
-    ICOM_METHOD6(HRESULT,Read,LONG,,LONG,,LPVOID,,LONG,,LONG*,,LONG*,);
-    ICOM_METHOD7(HRESULT,Write,LONG,,LONG,,LPVOID,,LONG,,DWORD,,LONG*,,LONG*,);
-    ICOM_METHOD2(HRESULT,Delete,LONG,,LONG,);
-    ICOM_METHOD3(HRESULT,ReadData,DWORD,,LPVOID,,LONG*,);
-    ICOM_METHOD3(HRESULT,WriteData,DWORD,,LPVOID,,LONG,);
-    ICOM_METHOD2(HRESULT,SetInfo,AVISTREAMINFOW*,,LONG,);
-ICOM_END(IAVIStream)
+#define IAVIStream_METHODS						\
+    ICOM_METHOD2(HRESULT,Create,LPARAM,,LPARAM,)			\
+    ICOM_METHOD2(HRESULT,Info,AVISTREAMINFOW*,,LONG,)			\
+    ICOM_METHOD2(LONG,FindSample,LONG,,LONG,)				\
+    ICOM_METHOD3(HRESULT,ReadFormat,LONG,,LPVOID,,LONG*,)		\
+    ICOM_METHOD3(HRESULT,SetFormat,LONG,,LPVOID,,LONG,)			\
+    ICOM_METHOD6(HRESULT,Read,LONG,,LONG,,LPVOID,,LONG,,LONG*,,LONG*,)	\
+    ICOM_METHOD7(HRESULT,Write,LONG,,LONG,,LPVOID,,LONG,,DWORD,,LONG*,,LONG*,)\
+    ICOM_METHOD2(HRESULT,Delete,LONG,,LONG,)				\
+    ICOM_METHOD3(HRESULT,ReadData,DWORD,,LPVOID,,LONG*,)		\
+    ICOM_METHOD3(HRESULT,WriteData,DWORD,,LPVOID,,LONG,)		\
+    ICOM_METHOD2(HRESULT,SetInfo,AVISTREAMINFOW*,,LONG,)
+#define IAVIStream_IMETHODS	\
+	IUnknown_IMETHODS	\
+	IAVIStream_METHODS
+ICOM_DEFINE(IAVIStream, IUnknown)
 #undef ICOM_INTERFACE
 
-
-/* IAVIFile32 interface. In Win32 this interface uses UNICODE only */
+/* IAVIFile interface. In Win32 this interface uses UNICODE only */
+typedef struct IAVIFile IAVIFile,*LPAVIFile,*PAVIFILE;
 #define ICOM_INTERFACE IAVIFile
-typedef struct IAVIFile IAVIFile,*PAVIFILE;
-ICOM_BEGIN(IAVIFile,IUnknown)
-	ICOM_METHOD2(HRESULT,Info,AVIFILEINFOW*,,LONG,);
-	ICOM_METHOD3(HRESULT,GetStream,PAVISTREAM*,,DWORD,,LONG,);
-	ICOM_METHOD2(HRESULT,CreateStream,PAVISTREAM*,,AVISTREAMINFOW*,);
-	ICOM_METHOD3(HRESULT,WriteData,DWORD,,LPVOID,,LONG,);
-	ICOM_METHOD3(HRESULT,ReadData,DWORD,,LPVOID,,LONG*,);
-	ICOM_METHOD (HRESULT,EndRecord);
-	ICOM_METHOD2(HRESULT,DeleteStream,DWORD,,LONG,);
-ICOM_END(IAVIFile)
+#define IAVIFile_METHODS 						\
+	ICOM_METHOD2(HRESULT,Info,AVIFILEINFOW*,,LONG,)		\
+	ICOM_METHOD3(HRESULT,GetStream,PAVISTREAM*,,DWORD,,LONG,)	\
+	ICOM_METHOD2(HRESULT,CreateStream,PAVISTREAM*,,AVISTREAMINFOW*,) \
+	ICOM_METHOD3(HRESULT,WriteData,DWORD,,LPVOID,,LONG,)		\
+	ICOM_METHOD3(HRESULT,ReadData,DWORD,,LPVOID,,LONG*,)		\
+	ICOM_METHOD (HRESULT,EndRecord)					\
+	ICOM_METHOD2(HRESULT,DeleteStream,DWORD,,LONG,)
+#define IAVIFile_IMETHODS 	\
+	IUnknown_IMETHODS	\
+	IAVIFile_METHODS
+ICOM_DEFINE(IAVIFile,IUnknown)
 #undef ICOM_INTERFACE
 
-
-/* IGetFrame32 interface */
+/* IGetFrame interface */
 #define ICOM_INTERFACE IGetFrame
-typedef struct IGetFrame IGetFrame,*PGETFRAME;
-ICOM_BEGIN(IGetFrame,IUnknown)
-	ICOM_METHOD1(LPVOID,GetFrame,LONG,);
-	ICOM_METHOD3(HRESULT,Begin,LONG,,LONG,,LONG,);
-	ICOM_METHOD (HRESULT,End);
-	ICOM_METHOD6(HRESULT,SetFormat,LPBITMAPINFOHEADER,,LPVOID,,INT,,INT,,INT,,INT,);
-ICOM_END(IGetFrame)
+typedef struct IGetFrame IGetFrame,*PGETFRAME,*LPGETFRAME;
+#define ICOM_INTERFACE IGetFrame
+#define IGetFrame_METHODS					\
+	ICOM_METHOD1(LPVOID,GetFrame,LONG,)			\
+	ICOM_METHOD3(HRESULT,Begin,LONG,,LONG,,LONG,)		\
+	ICOM_METHOD (HRESULT,End)				\
+	ICOM_METHOD6(HRESULT,SetFormat,LPBITMAPINFOHEADER,,LPVOID,,INT,,INT,,INT,,INT,)
+#define IGetFrame_IMETHODS	\
+	IUnknown_IMETHODS	\
+	IGetFrame_METHODS
+ICOM_DEFINE(IGetFrame,IUnknown)
 #undef ICOM_INTERFACE
 
-
 #define AVIERR_OK		0
 #define MAKE_AVIERR(error)	MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+error)
 
@@ -674,7 +718,6 @@
 #define AVIERR_ERROR		MAKE_AVIERR(199)
 
 HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM*ppsCompressed,PAVISTREAM ppsSource,AVICOMPRESSOPTIONS *lpOptions,CLSID*pclsidHandler); 
-#define AVIMakeCompressedStream WINELIB_NAME_AW(AVIMakeCompressedStream)
 HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM iface,LONG pos,LPVOID format,LONG formatsize);
 HRESULT WINAPI AVIStreamWrite(PAVISTREAM iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten);
 ULONG WINAPI AVIStreamRelease(PAVISTREAM iface);
@@ -687,7 +730,6 @@
 HRESULT WINAPI AVIStreamReadData(PAVISTREAM iface,DWORD fcc,LPVOID lp,LONG *lpread);
 HRESULT WINAPI AVIStreamInfoA(PAVISTREAM iface,AVISTREAMINFOA *asi,LONG size);
 HRESULT WINAPI AVIStreamInfoW(PAVISTREAM iface,AVISTREAMINFOW *asi,LONG size);
-#define AVIStreamInfo WINELIB_NAME_AW(AVIStreamInfo)
 PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM pavi,LPBITMAPINFOHEADER lpbiWanted);
 HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME pg);
 PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM pavi,LPBITMAPINFOHEADER lpbiWanted);
@@ -695,14 +737,11 @@
 
 void WINAPI AVIFileInit(void);
 HRESULT WINAPI AVIFileOpenA(PAVIFILE * ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler);
-#define AVIFileOpen WINELIB_NAME_AW(AVIFileOpen)
 HRESULT WINAPI AVIFileCreateStreamA(PAVIFILE pfile,PAVISTREAM *ppavi,AVISTREAMINFOA * psi);
 HRESULT WINAPI AVIFileCreateStreamW(PAVIFILE pfile,PAVISTREAM *ppavi,AVISTREAMINFOW * psi);
-#define AVIFileCreateStream WINELIB_NAME_AW(AVIFileCreateStream)
 ULONG WINAPI AVIFileRelease(PAVIFILE iface);
 HRESULT WINAPI AVIFileInfoA(PAVIFILE pfile,PAVIFILEINFOA,LONG);
 HRESULT WINAPI AVIFileInfoW(PAVIFILE pfile,PAVIFILEINFOW,LONG);
-#define AVIFileInfo WINELIB_NAME_AW(AVIFileInfo)
 HRESULT WINAPI AVIFileGetStream(PAVIFILE pfile,PAVISTREAM*avis,DWORD fccType,LONG lParam);
 void WINAPI AVIFileExit(void);