Removed a bunch of multimedia code at Hidenori's request.

diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index 1bdb310..e7abe94 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -517,8 +517,8 @@
 avicap32/avicap32.dll$(DLLEXT): dummy ntdll.dll$(DLLEXT)
 	@cd avicap32 && $(MAKE) avicap32.dll$(DLLEXT)
 
-avifil32/avifil32.dll$(DLLEXT): dummy msvfw32.dll$(DLLEXT) ole32.dll$(DLLEXT) \
-  kernel32.dll$(DLLEXT) ntdll.dll$(DLLEXT)
+avifil32/avifil32.dll$(DLLEXT): dummy msvfw32.dll$(DLLEXT) kernel32.dll$(DLLEXT) \
+  ntdll.dll$(DLLEXT)
 	@cd avifil32 && $(MAKE) avifil32.dll$(DLLEXT)
 
 comctl32/comctl32.dll$(DLLEXT): dummy winmm.dll$(DLLEXT) user32.dll$(DLLEXT) \
@@ -577,8 +577,7 @@
 imagehlp/imagehlp.dll$(DLLEXT): dummy kernel32.dll$(DLLEXT) ntdll.dll$(DLLEXT)
 	@cd imagehlp && $(MAKE) imagehlp.dll$(DLLEXT)
 
-imm32/imm32.dll$(DLLEXT): dummy user32.dll$(DLLEXT) gdi32.dll$(DLLEXT) \
-  advapi32.dll$(DLLEXT) kernel32.dll$(DLLEXT) ntdll.dll$(DLLEXT)
+imm32/imm32.dll$(DLLEXT): dummy kernel32.dll$(DLLEXT) ntdll.dll$(DLLEXT)
 	@cd imm32 && $(MAKE) imm32.dll$(DLLEXT)
 
 kernel/kernel32.dll$(DLLEXT): dummy ntdll.dll$(DLLEXT) libntdll.dll.$(LIBEXT)
@@ -674,9 +673,7 @@
 qcap/qcap.dll$(DLLEXT): dummy ntdll.dll$(DLLEXT)
 	@cd qcap && $(MAKE) qcap.dll$(DLLEXT)
 
-quartz/quartz.dll$(DLLEXT): dummy oleaut32.dll$(DLLEXT) ole32.dll$(DLLEXT) \
-  msvfw32.dll$(DLLEXT) msacm32.dll$(DLLEXT) winmm.dll$(DLLEXT) user32.dll$(DLLEXT) \
-  gdi32.dll$(DLLEXT) advapi32.dll$(DLLEXT) kernel32.dll$(DLLEXT) ntdll.dll$(DLLEXT)
+quartz/quartz.dll$(DLLEXT): dummy ntdll.dll$(DLLEXT)
 	@cd quartz && $(MAKE) quartz.dll$(DLLEXT)
 
 rasapi32/rasapi32.dll$(DLLEXT): dummy kernel32.dll$(DLLEXT) ntdll.dll$(DLLEXT)
diff --git a/dlls/avifil32/Makefile.in b/dlls/avifil32/Makefile.in
index 0c1f495..5d2ecdf 100644
--- a/dlls/avifil32/Makefile.in
+++ b/dlls/avifil32/Makefile.in
@@ -10,15 +10,8 @@
 SYMBOLFILE = $(MODULE).tmp.o
 
 C_SRCS = \
-	api.c \
-	comentry.c \
-	iafile.c \
-	iastream.c \
-	igframe.c \
-	main.c \
-	string.c
+	avifile.c
 
 @MAKE_DLL_RULES@
 
 ### Dependencies:
-
diff --git a/dlls/avifil32/api.c b/dlls/avifil32/api.c
deleted file mode 100644
index 43a24f1..0000000
--- a/dlls/avifil32/api.c
+++ /dev/null
@@ -1,566 +0,0 @@
-/*
- * Copyright 1999 Marcus Meissner
- * Copyright 2001 Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include <string.h>
-#include <stdio.h>
-#include <assert.h>
-
-#include "winbase.h"
-#include "winnls.h"
-#include "mmsystem.h"
-#include "winerror.h"
-#include "ole2.h"
-#include "vfw.h"
-#include "wine/debug.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(avifile);
-
-#include "avifile_private.h"
-
-
-/***********************************************************************
- *		AVIFileInit (AVIFILE.100)
- *		AVIFileInit (AVIFIL32.@)
- */
-void WINAPI AVIFileInit(void)
-{
-	TRACE("()\n");
-	if ( AVIFILE_data.dwAVIFileRef == 0 )
-	{
-		if ( FAILED(CoInitialize(NULL)) )
-			AVIFILE_data.fInitCOM = FALSE;
-		else
-			AVIFILE_data.fInitCOM = TRUE;
-	}
-	AVIFILE_data.dwAVIFileRef ++;
-}
-
-/***********************************************************************
- *		AVIFileExit (AVIFILE.101)
- *		AVIFileExit (AVIFIL32.@)
- */
-void WINAPI AVIFileExit(void)
-{
-	TRACE("()\n");
-	if ( AVIFILE_data.dwAVIFileRef == 0 )
-	{
-		ERR( "unexpected AVIFileExit()\n" );
-		return;
-	}
-
-	AVIFILE_data.dwAVIFileRef --;
-	if ( AVIFILE_data.dwAVIFileRef == 0 )
-	{
-		if ( AVIFILE_data.fInitCOM )
-		{
-			CoUninitialize();
-			AVIFILE_data.fInitCOM = FALSE;
-		}
-	}
-}
-
-/***********************************************************************
- *		AVIFileAddRef (AVIFIL32.@)
- */
-ULONG WINAPI AVIFileAddRef(PAVIFILE pfile)
-{
-	return IAVIFile_AddRef( pfile );
-}
-
-/***********************************************************************
- *		AVIFileRelease (AVIFILE.141)
- *		AVIFileRelease (AVIFIL32.@)
- */
-ULONG WINAPI AVIFileRelease(PAVIFILE pfile)
-{
-	return IAVIFile_Release( pfile );
-}
-
-/***********************************************************************
- *		AVIFileOpen  (AVIFILE.102)
- *		AVIFileOpenA (AVIFIL32.@)
- */
-HRESULT WINAPI AVIFileOpenA(
-	PAVIFILE* ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler )
-{
-	WCHAR*	pwsz;
-	HRESULT	hr;
-
-	TRACE("(%p,%p,%u,%p)\n",ppfile,szFile,uMode,lpHandler);
-	pwsz = AVIFILE_strdupAtoW( szFile );
-	if ( pwsz == NULL )
-		return AVIERR_MEMORY;
-	hr = AVIFileOpenW(ppfile,pwsz,uMode,lpHandler);
-	HeapFree( AVIFILE_data.hHeap, 0, pwsz );
-	return hr;
-}
-
-/***********************************************************************
- *		AVIFileOpenW (AVIFIL32.@)
- */
-HRESULT WINAPI AVIFileOpenW(
-	PAVIFILE* ppfile,LPCWSTR szFile,UINT uMode,LPCLSID lpHandler )
-{
-	HRESULT	hr;
-	IClassFactory*	pcf;
-	CLSID	clsRIFF;
-
-	TRACE("(%p,%p,%u,%p)\n",ppfile,szFile,uMode,lpHandler);
-	*ppfile = (PAVIFILE)NULL;
-
-	if ( lpHandler == NULL )
-	{
-		/* FIXME - check RIFF type and get a handler from registry
-		 *         if IAVIFile::Open is worked...
-		 */
-		memcpy( &clsRIFF, &CLSID_AVIFile, sizeof(CLSID) );
-		lpHandler = &clsRIFF;
-	}
-
-	/*
-	 * FIXME - MS says IAVIFile::Open will be called,
-	 *         but no such method in vfw.h... why????
-	 */
-	if ( !IsEqualGUID( lpHandler, &CLSID_AVIFile ) )
-		return REGDB_E_CLASSNOTREG;
-
-	hr = AVIFILE_DllGetClassObject(&CLSID_AVIFile,
-				       &IID_IClassFactory,(void**)&pcf);
-	if ( hr != S_OK )
-		return hr;
-
-	hr = IClassFactory_CreateInstance( pcf, NULL, &IID_IAVIFile,
-					   (void**)ppfile );
-	IClassFactory_Release( pcf );
-
-	if ( hr == S_OK )
-	{
-		/* FIXME??? */
-		hr = AVIFILE_IAVIFile_Open( *ppfile, szFile, uMode );
-		if ( hr != S_OK )
-		{
-			IAVIFile_Release( (*ppfile) );
-			*ppfile = NULL;
-		}
-	}
-
-	return hr;
-}
-
-/***********************************************************************
- *		AVIFileInfoW (AVIFIL32.@)
- */
-HRESULT WINAPI AVIFileInfoW(PAVIFILE pfile,AVIFILEINFOW* pfi,LONG lSize)
-{
-	return IAVIFile_Info( pfile, pfi, lSize );
-}
-
-/***********************************************************************
- *		AVIFileInfo  (AVIFIL32.@)
- *		AVIFileInfoA (AVIFIL32.@)
- */
-HRESULT WINAPI AVIFileInfoA(PAVIFILE pfile,AVIFILEINFOA* pfi,LONG lSize)
-{
-	AVIFILEINFOW	fiw;
-	HRESULT		hr;
-
-	if ( lSize < sizeof(AVIFILEINFOA) )
-		return AVIERR_BADSIZE;
-	hr = AVIFileInfoW( pfile, &fiw, sizeof(AVIFILEINFOW) );
-	if ( hr != S_OK )
-		return hr;
-	memcpy( pfi,&fiw,sizeof(AVIFILEINFOA) );
-	AVIFILE_strncpyWtoA( pfi->szFileType, fiw.szFileType,
-			     sizeof(pfi->szFileType) );
-	pfi->szFileType[sizeof(pfi->szFileType)-1] = 0;
-
-	return S_OK;
-}
-
-/***********************************************************************
- *		AVIFileGetStream (AVIFILE.143)
- *		AVIFileGetStream (AVIFIL32.@)
- */
-HRESULT WINAPI AVIFileGetStream(PAVIFILE pfile,PAVISTREAM* pas,DWORD fccType,LONG lParam)
-{
-	return IAVIFile_GetStream(pfile,pas,fccType,lParam);
-}
-
-/***********************************************************************
- *		AVIFileCreateStreamW (AVIFIL32.@)
- */
-HRESULT WINAPI AVIFileCreateStreamW(PAVIFILE pfile,PAVISTREAM* ppas,AVISTREAMINFOW* pasi)
-{
-	return IAVIFile_CreateStream(pfile,ppas,pasi);
-}
-
-/***********************************************************************
- *		AVIFileCreateStreamA (AVIFIL32.@)
- */
-HRESULT WINAPI AVIFileCreateStreamA(PAVIFILE pfile,PAVISTREAM* ppas,AVISTREAMINFOA* pasi)
-{
-	AVISTREAMINFOW	siw;
-	HRESULT		hr;
-
-	memcpy( &siw,pasi,sizeof(AVISTREAMINFOA) );
-	AVIFILE_strncpyAtoW( siw.szName, pasi->szName,
-		sizeof(siw.szName)/sizeof(siw.szName[0]) );
-	siw.szName[sizeof(siw.szName)/sizeof(siw.szName[0])-1] = 0;
-
-	hr = AVIFileCreateStreamW(pfile,ppas,&siw);
-
-	return hr;
-}
-
-/***********************************************************************
- *		AVIFileWriteData (AVIFIL32.@)
- */
-HRESULT WINAPI AVIFileWriteData(
-	PAVIFILE pfile,DWORD dwChunkId,LPVOID lpvData,LONG cbData )
-{
-	return IAVIFile_WriteData( pfile,dwChunkId,lpvData,cbData );
-}
-
-/***********************************************************************
- *		AVIFileReadData (AVIFIL32.@)
- */
-HRESULT WINAPI AVIFileReadData(
-	PAVIFILE pfile,DWORD dwChunkId,LPVOID lpvData,LPLONG pcbData )
-{
-	return IAVIFile_ReadData( pfile,dwChunkId,lpvData,pcbData );
-}
-
-/***********************************************************************
- *		AVIFileEndRecord (AVIFIL32.@)
- */
-HRESULT WINAPI AVIFileEndRecord( PAVIFILE pfile )
-{
-	return IAVIFile_EndRecord( pfile );
-}
-
-/***********************************************************************
- *		AVIStreamAddRef (AVIFIL32.@)
- */
-ULONG WINAPI AVIStreamAddRef(PAVISTREAM pas)
-{
-	return IAVIStream_Release(pas);
-}
-
-/***********************************************************************
- *		AVIStreamRelease (AVIFIL32.@)
- */
-ULONG WINAPI AVIStreamRelease(PAVISTREAM pas)
-{
-	return IAVIStream_Release(pas);
-}
-
-/***********************************************************************
- *		AVIStreamInfoW (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamInfoW(PAVISTREAM pas,AVISTREAMINFOW* psi,LONG lSize)
-{
- 	return IAVIStream_Info(pas,psi,lSize);
-}
-
-/***********************************************************************
- *		AVIStreamInfo  (AVIFIL32.@)
- *		AVIStreamInfoA (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamInfoA(PAVISTREAM pas,AVISTREAMINFOA* psi,LONG lSize)
-{
- 	AVISTREAMINFOW	siw;
-	HRESULT		hr;
-
-	if (lSize < sizeof(AVISTREAMINFOA))
-		return AVIERR_BADSIZE;
- 	hr = AVIStreamInfoW(pas,&siw,sizeof(AVISTREAMINFOW));
-	if ( hr != S_OK )
-		return hr;
-	memcpy( psi,&siw,sizeof(AVIFILEINFOA) );
-	AVIFILE_strncpyWtoA( psi->szName, siw.szName, sizeof(psi->szName) );
-	psi->szName[sizeof(psi->szName)-1] = 0;
-
-	return hr;
-}
-
-/***********************************************************************
- *		AVIStreamFindSample (AVIFIL32.@)
- */
-LONG WINAPI AVIStreamFindSample(PAVISTREAM pas,LONG lPos,LONG lFlags)
-{
-	return IAVIStream_FindSample(pas,lPos,lFlags);
-}
-
-/***********************************************************************
- *		AVIStreamReadFormat (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamReadFormat(PAVISTREAM pas,LONG pos,LPVOID format,LONG *formatsize) {
-	return IAVIStream_ReadFormat(pas,pos,format,formatsize);
-}
-
-/***********************************************************************
- *		AVIStreamSetFormat (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM pas,LONG pos,LPVOID format,LONG formatsize) {
-	return IAVIStream_SetFormat(pas,pos,format,formatsize);
-}
-
-/***********************************************************************
- *		AVIStreamReadData (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamReadData(PAVISTREAM pas,DWORD fcc,LPVOID lp,LONG *lpread) {
-	return IAVIStream_ReadData(pas,fcc,lp,lpread);
-}
-
-/***********************************************************************
- *		AVIStreamWriteData (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamWriteData(PAVISTREAM pas,DWORD fcc,LPVOID lp,LONG size) {
-	return IAVIStream_WriteData(pas,fcc,lp,size);
-}
-
-/***********************************************************************
- *		AVIStreamRead (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamRead(PAVISTREAM pas,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread)
-{
-	return IAVIStream_Read(pas,start,samples,buffer,buffersize,bytesread,samplesread);
-}
-
-/***********************************************************************
- *		AVIStreamWrite (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamWrite(PAVISTREAM pas,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten) {
-	return IAVIStream_Write(pas,start,samples,buffer,buffersize,flags,sampwritten,byteswritten);
-}
-
-
-/***********************************************************************
- *		AVIStreamStart (AVIFIL32.@)
- */
-LONG WINAPI AVIStreamStart(PAVISTREAM pas)
-{
-	AVISTREAMINFOW	si;
-	HRESULT			hr;
-
-	hr = IAVIStream_Info(pas,&si,sizeof(si));
-	if (hr != S_OK)
-		return -1;
-	return (LONG)si.dwStart;
-}
-
-/***********************************************************************
- *		AVIStreamLength (AVIFIL32.@)
- */
-LONG WINAPI AVIStreamLength(PAVISTREAM pas)
-{
-	AVISTREAMINFOW	si;
-	HRESULT			hr;
-
-	hr = IAVIStream_Info(pas,&si,sizeof(si));
-	if (hr != S_OK)
-		return -1;
-	return (LONG)si.dwLength;
-}
-
-/***********************************************************************
- *		AVIStreamTimeToSample (AVIFIL32.@)
- */
-LONG WINAPI AVIStreamTimeToSample(PAVISTREAM pas,LONG lTime)
-{
-	AVISTREAMINFOW	si;
-	HRESULT			hr;
-
-	hr = IAVIStream_Info(pas,&si,sizeof(si));
-	if (hr != S_OK)
-		return -1;
-
-	/* I am too lazy... */
-	FIXME("(%p,%ld)",pas,lTime);
-	return (LONG)-1L;
-}
-
-/***********************************************************************
- *		AVIStreamSampleToTime (AVIFIL32.@)
- */
-LONG WINAPI AVIStreamSampleToTime(PAVISTREAM pas,LONG lSample)
-{
-	AVISTREAMINFOW	si;
-	HRESULT			hr;
-
-	hr = IAVIStream_Info(pas,&si,sizeof(si));
-	if (hr != S_OK)
-		return -1;
-
-	/* I am too lazy... */
-	FIXME("(%p,%ld)",pas,lSample);
-	return (LONG)-1L;
-}
-
-/***********************************************************************
- *		AVIStreamBeginStreaming (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamBeginStreaming(PAVISTREAM pas,LONG lStart,LONG lEnd,LONG lRate)
-{
-	FIXME("(%p)->(%ld,%ld,%ld),stub!\n",pas,lStart,lEnd,lRate);
-	return E_FAIL;
-}
-
-/***********************************************************************
- *		AVIStreamEndStreaming (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamEndStreaming(PAVISTREAM pas)
-{
-	FIXME("(%p)->(),stub!\n",pas);
-	return E_FAIL;
-}
-
-/***********************************************************************
- *		AVIStreamGetFrameOpen (AVIFIL32.@)
- */
-PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM pas,LPBITMAPINFOHEADER pbi)
-{
-	IGetFrame*	pgf;
-	HRESULT		hr;
-	AVISTREAMINFOW	si;
-
-	FIXME("(%p,%p)\n",pas,pbi);
-
-	hr = IAVIStream_Info(pas,&si,sizeof(si));
-	if (hr != S_OK)
-		return NULL;
-
-	hr = AVIFILE_CreateIGetFrame((void**)&pgf,pas,pbi);
-	if ( hr != S_OK )
-		return NULL;
-	hr = IGetFrame_Begin( pgf, si.dwStart, si.dwLength, 1000 );
-	if ( hr != S_OK )
-	{
-		IGetFrame_Release( pgf );
-		return NULL;
-	}
-
-	return pgf;
-}
-
-/***********************************************************************
- *		AVIStreamGetFrame (AVIFIL32.@)
- */
-LPVOID WINAPI AVIStreamGetFrame(PGETFRAME pgf, LONG lPos)
-{
-	return IGetFrame_GetFrame(pgf,lPos);
-}
-
-/***********************************************************************
- *		AVIStreamGetFrameClose (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME pgf)
-{
-	return IGetFrame_End(pgf);
-}
-
-/***********************************************************************
- *		AVIStreamOpenFromFileA (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamOpenFromFileA(PAVISTREAM* ppas, LPCSTR szFile, DWORD fccType, LONG lParam, UINT uMode, CLSID* lpHandler)
-{
-	WCHAR*	pwsz;
-	HRESULT	hr;
-
-	pwsz = AVIFILE_strdupAtoW( szFile );
-	if ( pwsz == NULL )
-		return AVIERR_MEMORY;
-	hr = AVIStreamOpenFromFileW(ppas,pwsz,fccType,lParam,uMode,lpHandler);
-	HeapFree( AVIFILE_data.hHeap, 0, pwsz );
-	return hr;
-}
-
-/***********************************************************************
- *		AVIStreamOpenFromFileW (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamOpenFromFileW(PAVISTREAM* ppas, LPCWSTR szFile, DWORD fccType, LONG lParam, UINT uMode, CLSID* lpHandler)
-{
-	HRESULT	hr;
-	PAVIFILE	paf;
-	AVIFILEINFOW	fi;
-
-	*ppas = NULL;
-	hr = AVIFileOpenW(&paf,szFile,uMode,lpHandler);
-	if ( hr != S_OK )
-		return hr;
-	hr = AVIFileInfoW(paf,&fi,sizeof(AVIFILEINFOW));
-	if ( hr == S_OK )
-		hr = AVIFileGetStream(paf,ppas,fccType,lParam);
-
-	IAVIFile_Release(paf);
-
-	return hr;
-}
-
-/***********************************************************************
- *		AVIStreamCreate (AVIFIL32.@)
- */
-HRESULT WINAPI AVIStreamCreate(PAVISTREAM* ppas, LONG lParam1, LONG lParam2, CLSID* lpHandler)
-{
-	HRESULT	hr;
-	IClassFactory*	pcf;
-
-	*ppas = NULL;
-
-	if ( lpHandler == NULL )
-	{
-		hr = AVIFILE_DllGetClassObject(&CLSID_AVIFile,
-					       &IID_IClassFactory,(void**)&pcf);
-	}
-	else
-	{
-		if ( !AVIFILE_data.fInitCOM )
-			return E_UNEXPECTED;
-		hr = CoGetClassObject(lpHandler,CLSCTX_INPROC_SERVER,
-				      NULL,&IID_IClassFactory,(void**)&pcf);
-	}
-	if ( hr != S_OK )
-		return hr;
-
-	hr = IClassFactory_CreateInstance( pcf, NULL, &IID_IAVIStream,
-					   (void**)ppas );
-	IClassFactory_Release( pcf );
-
-	if ( hr == S_OK )
-	{
-		hr = IAVIStream_Create((*ppas),lParam1,lParam2);
-		if ( hr != S_OK )
-		{
-			IAVIStream_Release((*ppas));
-			*ppas = NULL;
-		}
-	}
-
-	return hr;
-}
-
-/***********************************************************************
- *		AVIMakeCompressedStream (AVIFIL32.@)
- */
-HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM *ppsCompressed,PAVISTREAM ppsSource,AVICOMPRESSOPTIONS *aco,CLSID *pclsidHandler)
-{
-	FIXME("(%p,%p,%p,%p)\n",ppsCompressed,ppsSource,aco,pclsidHandler);
-	return E_FAIL;
-}
-
diff --git a/dlls/avifil32/avifil32.spec b/dlls/avifil32/avifil32.spec
index d04fc98..d19a396 100644
--- a/dlls/avifil32/avifil32.spec
+++ b/dlls/avifil32/avifil32.spec
@@ -1,9 +1,7 @@
 name	avifil32
 type	win32
-init	AVIFILE_DllMain
 
 import msvfw32.dll
-import ole32.dll
 import kernel32.dll
 import ntdll.dll
 
@@ -13,11 +11,11 @@
 @ stub    AVIBuildFilterA
 @ stub    AVIBuildFilterW
 @ stub    AVIClearClipboard
-@ stdcall AVIFileAddRef(ptr) AVIFileAddRef
+@ stub    AVIFileAddRef
 @ stub    AVIFileCreateStream
 @ stdcall AVIFileCreateStreamA(ptr ptr ptr) AVIFileCreateStreamA
 @ stdcall AVIFileCreateStreamW(ptr ptr ptr) AVIFileCreateStreamW
-@ stdcall AVIFileEndRecord(ptr) AVIFileEndRecord
+@ stub    AVIFileEndRecord
 @ stdcall AVIFileExit() AVIFileExit
 @ stdcall AVIFileGetStream(ptr ptr long long) AVIFileGetStream
 @ stdcall AVIFileInfo (ptr ptr long) AVIFileInfoA # A in both Win95 and NT
@@ -26,10 +24,10 @@
 @ stdcall AVIFileInit() AVIFileInit
 @ stub    AVIFileOpen
 @ stdcall AVIFileOpenA(ptr str long ptr) AVIFileOpenA
-@ stdcall AVIFileOpenW(ptr wstr long ptr) AVIFileOpenW
-@ stdcall AVIFileReadData(ptr long ptr ptr) AVIFileReadData
+@ stub    AVIFileOpenW
+@ stub    AVIFileReadData
 @ stdcall AVIFileRelease(ptr) AVIFileRelease
-@ stdcall AVIFileWriteData(ptr long ptr long) AVIFileWriteData
+@ stub    AVIFileWriteData
 @ stub    AVIGetFromClipboard
 @ stdcall AVIMakeCompressedStream(ptr ptr ptr ptr) AVIMakeCompressedStream
 @ stub    AVIMakeFileFromStreams
@@ -43,11 +41,11 @@
 @ stub    AVISaveVA
 @ stub    AVISaveVW
 @ stub    AVISaveW
-@ stdcall AVIStreamAddRef(ptr) AVIStreamAddRef
-@ stdcall AVIStreamBeginStreaming(ptr long long long) AVIStreamBeginStreaming
-@ stdcall AVIStreamCreate(ptr long long ptr) AVIStreamCreate
-@ stdcall AVIStreamEndStreaming(ptr) AVIStreamEndStreaming
-@ stdcall AVIStreamFindSample(ptr long long) AVIStreamFindSample
+@ stub    AVIStreamAddRef
+@ stub    AVIStreamBeginStreaming
+@ stub    AVIStreamCreate
+@ stub    AVIStreamEndStreaming
+@ stub    AVIStreamFindSample
 @ stdcall AVIStreamGetFrame(ptr long) AVIStreamGetFrame
 @ stdcall AVIStreamGetFrameClose(ptr) AVIStreamGetFrameClose
 @ stdcall AVIStreamGetFrameOpen(ptr ptr) AVIStreamGetFrameOpen
@@ -56,16 +54,16 @@
 @ stdcall AVIStreamInfoW(ptr ptr long) AVIStreamInfoW
 @ stdcall AVIStreamLength(ptr) AVIStreamLength
 @ stub    AVIStreamOpenFromFile
-@ stdcall AVIStreamOpenFromFileA(ptr str long long long ptr) AVIStreamOpenFromFileA
-@ stdcall AVIStreamOpenFromFileW(ptr wstr long long long ptr) AVIStreamOpenFromFileW
+@ stub    AVIStreamOpenFromFileA
+@ stub    AVIStreamOpenFromFileW
 @ stdcall AVIStreamRead(ptr long long ptr long ptr ptr) AVIStreamRead
 @ stdcall AVIStreamReadData(ptr long ptr ptr) AVIStreamReadData
 @ stdcall AVIStreamReadFormat(ptr long ptr long) AVIStreamReadFormat
 @ stdcall AVIStreamRelease(ptr) AVIStreamRelease
-@ stdcall AVIStreamSampleToTime(ptr long) AVIStreamSampleToTime
+@ stub    AVIStreamSampleToTime
 @ stdcall AVIStreamSetFormat(ptr long ptr long) AVIStreamSetFormat
 @ stdcall AVIStreamStart(ptr) AVIStreamStart
-@ stdcall AVIStreamTimeToSample(ptr long) AVIStreamTimeToSample
+@ stub    AVIStreamTimeToSample
 @ stdcall AVIStreamWrite(ptr long long ptr long long ptr ptr) AVIStreamWrite
 @ stdcall AVIStreamWriteData(ptr long ptr long) AVIStreamWriteData
 @ stub    CLSID_AVISimpleUnMarshal
diff --git a/dlls/avifil32/avifile.c b/dlls/avifil32/avifile.c
new file mode 100644
index 0000000..c04f238
--- /dev/null
+++ b/dlls/avifil32/avifile.c
@@ -0,0 +1,616 @@
+/*				   
+ * Copyright 1999 Marcus Meissner
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <assert.h>
+
+#include "winbase.h"
+#include "winnls.h"
+#include "mmsystem.h"
+#include "winerror.h"
+#include "vfw.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(avifile);
+
+static HRESULT WINAPI IAVIFile_fnQueryInterface(IAVIFile* iface,REFIID refiid,LPVOID *obj);
+static ULONG WINAPI IAVIFile_fnAddRef(IAVIFile* iface);
+static ULONG WINAPI IAVIFile_fnRelease(IAVIFile* iface);
+static HRESULT WINAPI IAVIFile_fnInfo(IAVIFile*iface,AVIFILEINFOW*afi,LONG size);
+static HRESULT WINAPI IAVIFile_fnGetStream(IAVIFile*iface,PAVISTREAM*avis,DWORD fccType,LONG lParam);
+static HRESULT WINAPI IAVIFile_fnCreateStream(IAVIFile*iface,PAVISTREAM*avis,AVISTREAMINFOW*asi);
+static HRESULT WINAPI IAVIFile_fnWriteData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG size);
+static HRESULT WINAPI IAVIFile_fnReadData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG *size);
+static HRESULT WINAPI IAVIFile_fnEndRecord(IAVIFile*iface);
+static HRESULT WINAPI IAVIFile_fnDeleteStream(IAVIFile*iface,DWORD fccType,LONG lParam);
+
+struct ICOM_VTABLE(IAVIFile) iavift = {
+    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+    IAVIFile_fnQueryInterface,
+    IAVIFile_fnAddRef,
+    IAVIFile_fnRelease,
+    IAVIFile_fnInfo,
+    IAVIFile_fnGetStream,
+    IAVIFile_fnCreateStream,
+    IAVIFile_fnWriteData,
+    IAVIFile_fnReadData,
+    IAVIFile_fnEndRecord,
+    IAVIFile_fnDeleteStream
+};
+
+static HRESULT WINAPI IAVIStream_fnQueryInterface(IAVIStream*iface,REFIID refiid,LPVOID *obj);
+static ULONG WINAPI IAVIStream_fnAddRef(IAVIStream*iface);
+static ULONG WINAPI IAVIStream_fnRelease(IAVIStream* iface);
+static HRESULT WINAPI IAVIStream_fnCreate(IAVIStream*iface,LPARAM lParam1,LPARAM lParam2);
+static HRESULT WINAPI IAVIStream_fnInfo(IAVIStream*iface,AVISTREAMINFOW *psi,LONG size);
+static LONG WINAPI IAVIStream_fnFindSample(IAVIStream*iface,LONG pos,LONG flags);
+static HRESULT WINAPI IAVIStream_fnReadFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG *formatsize);
+static HRESULT WINAPI IAVIStream_fnSetFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG formatsize);
+static HRESULT WINAPI IAVIStream_fnRead(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread);
+static HRESULT WINAPI IAVIStream_fnWrite(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten);
+static HRESULT WINAPI IAVIStream_fnDelete(IAVIStream*iface,LONG start,LONG samples);
+static HRESULT WINAPI IAVIStream_fnReadData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG *lpread);
+static HRESULT WINAPI IAVIStream_fnWriteData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG size);
+static HRESULT WINAPI IAVIStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen);
+
+struct ICOM_VTABLE(IAVIStream) iavist = {
+    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+    IAVIStream_fnQueryInterface,
+    IAVIStream_fnAddRef,
+    IAVIStream_fnRelease,
+    IAVIStream_fnCreate,
+    IAVIStream_fnInfo,
+    IAVIStream_fnFindSample,
+    IAVIStream_fnReadFormat,
+    IAVIStream_fnSetFormat,
+    IAVIStream_fnRead,
+    IAVIStream_fnWrite,
+    IAVIStream_fnDelete,
+    IAVIStream_fnReadData,
+    IAVIStream_fnWriteData,
+    IAVIStream_fnSetInfo
+};
+
+typedef struct IAVIStreamImpl {
+	/* IUnknown stuff */
+	ICOM_VFIELD(IAVIStream);
+	DWORD		ref;
+	/* IAVIStream stuff */
+	LPVOID		lpInputFormat;
+	DWORD		inputformatsize;
+	BOOL		iscompressing;
+	DWORD		curframe;
+
+	    /* Compressor stuff */
+	    HIC	hic;
+	    LPVOID	lpCompressFormat;
+	    ICINFO	icinfo;
+	    DWORD	compbufsize;
+	    LPVOID	compbuffer;
+
+	    DWORD	decompbufsize;
+	    LPVOID	decompbuffer;
+	    LPVOID	decompformat;
+	    AVICOMPRESSOPTIONS	aco;
+
+	    LPVOID	lpPrev;	/* pointer to decompressed frame later */
+	    LPVOID	lpPrevFormat; /* pointer to decompressed info later */
+} IAVIStreamImpl;
+
+/***********************************************************************
+ *		AVIFileInit (AVIFIL32.@)
+ *		AVIFileInit (AVIFILE.100)
+ */
+void WINAPI
+AVIFileInit(void) {
+	FIXME("(),stub!\n");
+}
+
+typedef struct IAVIFileImpl {
+	/* IUnknown stuff */
+	ICOM_VFIELD(IAVIFile);
+	DWORD				ref;
+	/* IAVIFile stuff... */
+} IAVIFileImpl;
+
+static HRESULT WINAPI IAVIFile_fnQueryInterface(IAVIFile* iface,REFIID refiid,LPVOID *obj) {
+	ICOM_THIS(IAVIFileImpl,iface);
+
+	TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj);
+	if (	!memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) ||
+		!memcmp(&IID_IAVIFile,refiid,sizeof(IID_IAVIFile))
+	) {
+		*obj = iface;
+		return S_OK;
+	}
+	return OLE_E_ENUM_NOMORE;
+}
+
+static ULONG WINAPI IAVIFile_fnAddRef(IAVIFile* iface) {
+	ICOM_THIS(IAVIFileImpl,iface);
+	
+	FIXME("(%p)->AddRef()\n",iface);
+	return ++(This->ref);
+}
+
+static ULONG WINAPI IAVIFile_fnRelease(IAVIFile* iface) {
+	ICOM_THIS(IAVIFileImpl,iface);
+	
+	FIXME("(%p)->Release()\n",iface);
+	if (!--(This->ref)) {
+		HeapFree(GetProcessHeap(),0,iface);
+		return 0;
+	}
+	return This->ref;
+}
+
+static HRESULT WINAPI IAVIFile_fnInfo(IAVIFile*iface,AVIFILEINFOW*afi,LONG size) {
+	FIXME("(%p)->Info(%p,%ld)\n",iface,afi,size);
+
+	/* FIXME: fill out struct? */
+	return E_FAIL;
+}
+
+static HRESULT WINAPI IAVIFile_fnGetStream(IAVIFile*iface,PAVISTREAM*avis,DWORD fccType,LONG lParam) {
+	FIXME("(%p)->GetStream(%p,0x%08lx,%ld)\n",iface,avis,fccType,lParam);
+	/* FIXME: create interface etc. */
+	return E_FAIL;
+}
+
+static HRESULT WINAPI IAVIFile_fnCreateStream(IAVIFile*iface,PAVISTREAM*avis,AVISTREAMINFOW*asi) {
+	ICOM_THIS(IAVIStreamImpl,iface);
+	char		fcc[5];
+	IAVIStreamImpl	*istream;
+
+	FIXME("(%p,%p,%p)\n",This,avis,asi);
+	istream = (IAVIStreamImpl*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IAVIStreamImpl));
+	istream->ref = 1;
+	ICOM_VTBL(istream) = &iavist;
+	fcc[4]='\0';
+	memcpy(fcc,(char*)&(asi->fccType),4);
+	FIXME("\tfccType '%s'\n",fcc);
+	memcpy(fcc,(char*)&(asi->fccHandler),4);
+	FIXME("\tfccHandler '%s'\n",fcc);
+	FIXME("\tdwFlags 0x%08lx\n",asi->dwFlags);
+	FIXME("\tdwCaps 0x%08lx\n",asi->dwCaps);
+	FIXME("\tname %s\n",debugstr_w(asi->szName));
+
+	istream->curframe = 0;
+	*avis = (PAVISTREAM)istream;
+	return S_OK;
+}
+
+static HRESULT WINAPI IAVIFile_fnWriteData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG size) {
+	FIXME("(%p)->WriteData(0x%08lx,%p,%ld)\n",iface,ckid,lpData,size);
+	/* FIXME: write data to file */
+	return E_FAIL;
+}
+
+static HRESULT WINAPI IAVIFile_fnReadData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG *size) {
+	FIXME("(%p)->ReadData(0x%08lx,%p,%p)\n",iface,ckid,lpData,size);
+	/* FIXME: read at most size bytes from file */
+	return E_FAIL;
+}
+
+static HRESULT WINAPI IAVIFile_fnEndRecord(IAVIFile*iface) {
+	FIXME("(%p)->EndRecord()\n",iface);
+	/* FIXME: end record? */
+	return E_FAIL;
+}
+
+static HRESULT WINAPI IAVIFile_fnDeleteStream(IAVIFile*iface,DWORD fccType,LONG lParam) {
+	FIXME("(%p)->DeleteStream(0x%08lx,%ld)\n",iface,fccType,lParam);
+	/* FIXME: delete stream? */
+	return E_FAIL;
+}
+
+/***********************************************************************
+ *		AVIFileOpenA (AVIFIL32.@)
+ *		AVIFileOpenA (AVIFILE.102)
+ */
+HRESULT WINAPI AVIFileOpenA(
+	PAVIFILE * ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler
+) {
+	IAVIFileImpl	*iavi;
+
+	FIXME("(%p,%s,0x%08lx,%s),stub!\n",ppfile,szFile,(DWORD)uMode,debugstr_guid(lpHandler));
+	iavi = (IAVIFileImpl*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IAVIFileImpl));
+	iavi->ref = 1;
+	ICOM_VTBL(iavi) = &iavift;
+	*ppfile = (LPVOID)iavi;
+	return S_OK;
+}
+
+static HRESULT WINAPI IAVIStream_fnQueryInterface(IAVIStream*iface,REFIID refiid,LPVOID *obj) {
+	ICOM_THIS(IAVIStreamImpl,iface);
+
+	TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj);
+	if (	!memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) ||
+		!memcmp(&IID_IAVIStream,refiid,sizeof(IID_IAVIStream))
+	) {
+		*obj = This;
+		return S_OK;
+	}
+	/* can return IGetFrame interface too */
+	return OLE_E_ENUM_NOMORE;
+}
+
+static ULONG WINAPI IAVIStream_fnAddRef(IAVIStream*iface) {
+	ICOM_THIS(IAVIStreamImpl,iface);
+	
+	FIXME("(%p)->AddRef()\n",iface);
+	return ++(This->ref);
+}
+
+static ULONG WINAPI IAVIStream_fnRelease(IAVIStream* iface) {
+	ICOM_THIS(IAVIStreamImpl,iface);
+	
+	FIXME("(%p)->Release()\n",iface);
+	if (!--(This->ref)) {
+		HeapFree(GetProcessHeap(),0,This);
+		return 0;
+	}
+	return This->ref;
+}
+
+static HRESULT WINAPI IAVIStream_fnCreate(IAVIStream*iface,LPARAM lParam1,LPARAM lParam2) {
+	FIXME("(%p)->Create(0x%08lx,0x%08lx)\n",iface,lParam1,lParam2);
+	return E_FAIL;
+}
+
+static HRESULT WINAPI IAVIStream_fnInfo(IAVIStream*iface,AVISTREAMINFOW *psi,LONG size) {
+	FIXME("(%p)->Info(%p,%ld)\n",iface,psi,size);
+	return E_FAIL;
+}
+
+static LONG WINAPI IAVIStream_fnFindSample(IAVIStream*iface,LONG pos,LONG flags) {
+	FIXME("(%p)->FindSample(%ld,0x%08lx)\n",iface,pos,flags);
+	return E_FAIL;
+}
+
+static HRESULT WINAPI IAVIStream_fnReadFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG *formatsize) {
+	FIXME("(%p)->ReadFormat(%ld,%p,%p)\n",iface,pos,format,formatsize);
+	return E_FAIL;
+}
+
+/***********************************************************************
+ *		IAVIStream::SetFormat
+ */
+static HRESULT WINAPI IAVIStream_fnSetFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG formatsize) {
+	IAVIStreamImpl	*as = (IAVIStreamImpl*)iface;
+
+	FIXME("(%p)->SetFormat(%ld,%p,%ld)\n",iface,pos,format,formatsize);
+	if (as->lpInputFormat) HeapFree(GetProcessHeap(),0,as->lpInputFormat);
+	as->inputformatsize = formatsize;
+	as->lpInputFormat = HeapAlloc(GetProcessHeap(),0,formatsize);
+	memcpy(as->lpInputFormat,format,formatsize);
+	if (as->iscompressing) {
+		int	xsize; 
+		/* Set up the Compressor part */
+		xsize = ICCompressGetFormatSize(as->hic,as->lpInputFormat);
+		as->lpCompressFormat = HeapAlloc(GetProcessHeap(),0,xsize);
+		ICCompressGetFormat(as->hic,as->lpInputFormat,as->lpCompressFormat);
+		ICCompressBegin(as->hic,as->lpInputFormat,as->lpCompressFormat);
+		as->compbufsize = ICCompressGetSize(as->hic,as->lpInputFormat,as->lpCompressFormat);
+		as->compbuffer = HeapAlloc(GetProcessHeap(),0,as->compbufsize);
+
+		/* Set up the Decompressor part (for prev frames?) */
+		xsize=ICDecompressGetFormatSize(as->hic,as->lpCompressFormat);
+		as->decompformat = HeapAlloc(GetProcessHeap(),0,xsize);
+		ICDecompressGetFormat(as->hic,as->lpCompressFormat,as->decompformat);
+		as->decompbufsize=((LPBITMAPINFOHEADER)as->decompbuffer)->biSizeImage;
+		as->decompbuffer = HeapReAlloc(GetProcessHeap(),0,as->decompbuffer,as->decompbufsize);
+		memset(as->decompbuffer,0xff,as->decompbufsize);
+		assert(HeapValidate(GetProcessHeap(),0,NULL));
+
+		ICDecompressGetFormat(as->hic,as->lpCompressFormat,as->decompformat);
+		ICDecompressBegin(as->hic,as->lpCompressFormat,as->decompformat);
+		as->lpPrev = as->lpPrevFormat = NULL;
+	}
+	return S_OK;
+}
+
+static HRESULT WINAPI IAVIStream_fnRead(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread) {
+	FIXME("(%p)->Read(%ld,%ld,%p,%ld,%p,%p)\n",iface,start,samples,buffer,buffersize,bytesread,samplesread);
+	return E_FAIL;
+}
+
+static HRESULT WINAPI IAVIStream_fnWrite(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten) {
+	IAVIStreamImpl	*as = (IAVIStreamImpl*)iface;
+	DWORD		ckid,xflags;
+
+	FIXME("(%p)->Write(%ld,%ld,%p,%ld,0x%08lx,%p,%p)\n",iface,start,samples,buffer,buffersize,flags,sampwritten,byteswritten);
+
+	ICCompress(
+		as->hic,flags,
+		as->lpCompressFormat,
+		as->compbuffer,
+		as->lpInputFormat,buffer,
+		&ckid,&xflags,
+		as->curframe,0xffffff/*framesize*/,as->aco.dwQuality,
+		as->lpPrevFormat,as->lpPrev
+	);
+	ICDecompress(
+		as->hic,
+		flags,	/* FIXME: check */
+		as->lpCompressFormat,
+		as->compbuffer,
+		as->decompformat,
+		as->decompbuffer
+	);
+	/* We now have a prev format for the next compress ... */
+	as->lpPrevFormat = as->decompformat;
+	as->lpPrev = as->decompbuffer;
+	return S_OK;
+}
+
+static HRESULT WINAPI IAVIStream_fnDelete(IAVIStream*iface,LONG start,LONG samples) {
+	FIXME("(%p)->Delete(%ld,%ld)\n",iface,start,samples);
+	return E_FAIL;
+}
+static HRESULT WINAPI IAVIStream_fnReadData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG *lpread) {
+	FIXME("(%p)->ReadData(0x%08lx,%p,%p)\n",iface,fcc,lp,lpread);
+	return E_FAIL;
+}
+
+static HRESULT WINAPI IAVIStream_fnWriteData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG size) {
+	FIXME("(%p)->WriteData(0x%08lx,%p,%ld)\n",iface,fcc,lp,size);
+	return E_FAIL;
+}
+
+static HRESULT WINAPI IAVIStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen) {
+	FIXME("(%p)->SetInfo(%p,%ld)\n",iface,info,infolen);
+	return E_FAIL;
+}
+
+/***********************************************************************
+ *		AVIFileCreateStreamA (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIFileCreateStreamA(PAVIFILE iface,PAVISTREAM *ppavi,AVISTREAMINFOA * psi) {
+	AVISTREAMINFOW	psiw;
+	
+	/* Only the szName at the end is different */
+	memcpy(&psiw,psi,sizeof(*psi)-sizeof(psi->szName));
+        MultiByteToWideChar( CP_ACP, 0, psi->szName, -1,
+                             psiw.szName, sizeof(psiw.szName) / sizeof(WCHAR) );
+	return IAVIFile_CreateStream(iface,ppavi,&psiw);
+}
+
+/***********************************************************************
+ *		AVIFileCreateStreamW (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIFileCreateStreamW(IAVIFile*iface,PAVISTREAM*avis,AVISTREAMINFOW*asi) {
+	return IAVIFile_CreateStream(iface,avis,asi);
+}
+
+
+/***********************************************************************
+ *		AVIFileGetStream (AVIFIL32.@)
+ *		AVIFileGetStream (AVIFILE.143)
+ */
+HRESULT WINAPI AVIFileGetStream(IAVIFile*iface,PAVISTREAM*avis,DWORD fccType,LONG lParam) {
+	return IAVIFile_GetStream(iface,avis,fccType,lParam);
+}
+
+/***********************************************************************
+ *		AVIFileInfoA (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIFileInfoA(PAVIFILE iface,LPAVIFILEINFOA afi,LONG size) {
+	AVIFILEINFOW	afiw;
+	HRESULT		hres;
+
+	if (size < sizeof(AVIFILEINFOA))
+		return AVIERR_BADSIZE;
+	hres = IAVIFile_Info(iface,&afiw,sizeof(afiw));
+	memcpy(afi,&afiw,sizeof(*afi)-sizeof(afi->szFileType));
+        WideCharToMultiByte( CP_ACP, 0, afiw.szFileType, -1,
+                             afi->szFileType, sizeof(afi->szFileType), NULL, NULL );
+        afi->szFileType[sizeof(afi->szFileType)-1] = 0;
+	return hres;
+}
+
+/***********************************************************************
+ *		AVIStreamInfoW (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIStreamInfoW(PAVISTREAM iface,AVISTREAMINFOW *asi,LONG
+ size) {
+ 	return IAVIFile_Info(iface,asi,size);
+}
+
+/***********************************************************************
+ *		AVIStreamInfoA (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIStreamInfoA(PAVISTREAM iface,AVISTREAMINFOA *asi,LONG
+ size) {
+ 	AVISTREAMINFOW	asiw;
+	HRESULT			hres;
+
+	if (size<sizeof(AVISTREAMINFOA))
+		return AVIERR_BADSIZE;
+ 	hres = IAVIFile_Info(iface,&asiw,sizeof(asiw));
+	memcpy(asi,&asiw,sizeof(asiw)-sizeof(asiw.szName));
+        WideCharToMultiByte( CP_ACP, 0, asiw.szName, -1,
+                             asi->szName, sizeof(asi->szName), NULL, NULL );
+        asi->szName[sizeof(asi->szName)-1] = 0;
+	return hres;
+}
+
+/***********************************************************************
+ *		AVIFileInfoW (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIFileInfoW(PAVIFILE iface,LPAVIFILEINFOW afi,LONG size) {
+	return IAVIFile_Info(iface,afi,size);
+}
+
+/***********************************************************************
+ *		AVIMakeCompressedStream (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM *ppsCompressed,PAVISTREAM ppsSource,AVICOMPRESSOPTIONS *aco,CLSID *pclsidHandler) {
+	char			fcc[5];
+	IAVIStreamImpl	*as;
+	FIXME("(%p,%p,%p,%p)\n",ppsCompressed,ppsSource,aco,pclsidHandler);
+	fcc[4]='\0';
+	memcpy(fcc,&(aco->fccType),4);
+	FIXME("\tfccType: '%s'\n",fcc);
+	memcpy(fcc,&(aco->fccHandler),4);
+	FIXME("\tfccHandler: '%s'\n",fcc);
+	FIXME("\tdwFlags: 0x%08lx\n",aco->dwFlags);
+
+	/* we just create a duplicate for now */
+	IAVIStream_AddRef(ppsSource);
+	*ppsCompressed = ppsSource;
+	as = (IAVIStreamImpl*)ppsSource;
+
+	/* this is where the fun begins. Open a compressor and prepare it. */
+	as->hic = ICOpen(aco->fccType,aco->fccHandler,ICMODE_COMPRESS);
+
+	/* May happen. for instance if the codec is not able to compress */
+	if (!as->hic) 
+		return AVIERR_UNSUPPORTED;
+
+	ICGetInfo(as->hic,&(as->icinfo),sizeof(ICINFO));
+	FIXME("Opened compressor: %s %s\n",debugstr_w(as->icinfo.szName),debugstr_w(as->icinfo.szDescription));
+	as->iscompressing = TRUE;
+	memcpy(&(as->aco),aco,sizeof(*aco));
+	if (as->icinfo.dwFlags & VIDCF_COMPRESSFRAMES) {
+		ICCOMPRESSFRAMES	icf;
+
+		/* now what to fill in there ... Hmm */
+		memset(&icf,0,sizeof(icf));
+		icf.lDataRate 	= aco->dwBytesPerSecond;
+		icf.lQuality 	= aco->dwQuality;
+		icf.lKeyRate 	= aco->dwKeyFrameEvery;
+
+		icf.GetData = (void *)0xdead4242;
+		icf.PutData = (void *)0xdead4243;
+		ICSendMessage(as->hic,ICM_COMPRESS_FRAMES_INFO,(LPARAM)&icf,sizeof(icf));
+	}
+	return S_OK;
+}
+
+/***********************************************************************
+ *		AVIStreamSetFormat (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM iface,LONG pos,LPVOID format,LONG formatsize) {
+	return IAVIStream_SetFormat(iface,pos,format,formatsize);
+}
+
+/***********************************************************************
+ *		AVIStreamReadFormat (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIStreamReadFormat(PAVISTREAM iface,LONG pos,LPVOID format,LONG *formatsize) {
+	return IAVIStream_ReadFormat(iface,pos,format,formatsize);
+}
+
+/***********************************************************************
+ *		AVIStreamWrite (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIStreamWrite(PAVISTREAM iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten) {
+	return IAVIStream_Write(iface,start,samples,buffer,buffersize,flags,sampwritten,byteswritten);
+}
+
+/***********************************************************************
+ *		AVIStreamRead (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIStreamRead(PAVISTREAM iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread) {
+	return IAVIStream_Read(iface,start,samples,buffer,buffersize,bytesread,samplesread);
+}
+
+/***********************************************************************
+ *		AVIStreamWriteData (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIStreamWriteData(PAVISTREAM iface,DWORD fcc,LPVOID lp,LONG size) {
+	return IAVIStream_WriteData(iface,fcc,lp,size);
+}
+
+/***********************************************************************
+ *		AVIStreamReadData (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIStreamReadData(PAVISTREAM iface,DWORD fcc,LPVOID lp,LONG *lpread) {
+	return IAVIStream_ReadData(iface,fcc,lp,lpread);
+}
+
+/***********************************************************************
+ *		AVIStreamStart (AVIFIL32.@)
+ */
+LONG WINAPI AVIStreamStart(PAVISTREAM iface) {
+	AVISTREAMINFOW	si;
+
+	IAVIStream_Info(iface,&si,sizeof(si));
+	return si.dwStart;
+}
+
+/***********************************************************************
+ *		AVIStreamLength (AVIFIL32.@)
+ */
+LONG WINAPI AVIStreamLength(PAVISTREAM iface) {
+	AVISTREAMINFOW	si;
+	HRESULT			ret;
+
+	ret = IAVIStream_Info(iface,&si,sizeof(si));
+	if (ret) /* error */
+		return 1;
+	return si.dwLength;
+}
+
+/***********************************************************************
+ *		AVIStreamRelease (AVIFIL32.@)
+ */
+ULONG WINAPI AVIStreamRelease(PAVISTREAM iface) {
+	return IAVIStream_Release(iface);
+}
+
+/***********************************************************************
+ *		AVIStreamGetFrameOpen (AVIFIL32.@)
+ */
+PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM iface,LPBITMAPINFOHEADER bmi) {
+	FIXME("(%p)->(%p),stub!\n",iface,bmi);
+	return NULL;
+}
+
+/***********************************************************************
+ *		AVIStreamGetFrame (AVIFIL32.@)
+ */
+LPVOID WINAPI AVIStreamGetFrame(PGETFRAME pg,LONG pos) {
+	return IGetFrame_GetFrame(pg,pos);
+}
+
+/***********************************************************************
+ *		AVIStreamGetFrameClose (AVIFIL32.@)
+ */
+HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME pg) {
+	if (pg) IGetFrame_Release(pg);
+	return 0;
+}
+
+/***********************************************************************
+ *		AVIFileRelease (AVIFIL32.@)
+ *		AVIFileRelease (AVIFILE.141)
+ */
+ULONG WINAPI AVIFileRelease(PAVIFILE iface) {
+	return IAVIFile_Release(iface);
+}
+
+/***********************************************************************
+ *		AVIFileExit (AVIFIL32.@)
+ *		AVIFileExit (AVIFILE.101)
+ */
+void WINAPI AVIFileExit(void) {
+	FIXME("(), stub.\n");
+}
diff --git a/dlls/avifil32/avifile_private.h b/dlls/avifil32/avifile_private.h
deleted file mode 100644
index 756e553..0000000
--- a/dlls/avifil32/avifile_private.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2001 Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_AVIFILE_PRIVATE_H
-#define __WINE_AVIFILE_PRIVATE_H
-
-typedef struct
-{
-	HANDLE	hHeap;
-	DWORD	dwAVIFileRef;
-	DWORD	dwClassObjRef;
-	BOOL	fInitCOM;
-} WINE_AVIFILE_DATA;
-
-extern WINE_AVIFILE_DATA	AVIFILE_data;
-
-INT AVIFILE_strlenAtoW( LPCSTR lpstr );
-INT AVIFILE_strlenWtoA( LPCWSTR lpwstr );
-LPWSTR AVIFILE_strncpyAtoW( LPWSTR lpwstr, LPCSTR lpstr, INT wbuflen );
-LPSTR AVIFILE_strncpyWtoA( LPSTR lpstr, LPCWSTR lpwstr, INT abuflen );
-LPWSTR AVIFILE_strdupAtoW( LPCSTR lpstr );
-LPSTR AVIFILE_strdupWtoA( LPCWSTR lpwstr );
-
-HRESULT WINAPI AVIFILE_DllGetClassObject(const CLSID* pclsid,const IID* piid,void** ppv);
-
-HRESULT AVIFILE_CreateIAVIFile(void** ppobj);
-HRESULT AVIFILE_IAVIFile_Open( PAVIFILE paf, LPCWSTR szFile, UINT uMode );
-HRESULT AVIFILE_IAVIFile_GetIndexTable( PAVIFILE paf, DWORD dwStreamIndex,
-					AVIINDEXENTRY** ppIndexEntry,
-					DWORD* pdwCountOfIndexEntry );
-HRESULT AVIFILE_IAVIFile_ReadMovieData( PAVIFILE paf, DWORD dwOffset,
-					DWORD dwLength, LPVOID lpvBuf );
-
-HRESULT AVIFILE_CreateIAVIStream(void** ppobj);
-
-HRESULT AVIFILE_CreateIGetFrame(void** ppobj,
-				IAVIStream* pstr,LPBITMAPINFOHEADER lpbi);
-
-
-typedef struct
-{
-	DWORD	dwStreamIndex;
-	AVIStreamHeader*	pstrhdr;
-	BYTE*	pbFmt;
-	DWORD	dwFmtLen;
-} WINE_AVISTREAM_DATA;
-
-WINE_AVISTREAM_DATA* AVIFILE_Alloc_IAVIStreamData( DWORD dwFmtLen );
-void AVIFILE_Free_IAVIStreamData( WINE_AVISTREAM_DATA* pData );
-
-/* this should be moved to vfw.h */
-#ifndef FIND_DIR
-#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
-#endif
-
-#endif  /* __WINE_AVIFILE_PRIVATE_H */
diff --git a/dlls/avifil32/comentry.c b/dlls/avifil32/comentry.c
deleted file mode 100644
index 1ead934..0000000
--- a/dlls/avifil32/comentry.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright 2001 Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include <string.h>
-#include <stdio.h>
-#include <assert.h>
-
-#include "winbase.h"
-#include "winnls.h"
-#include "mmsystem.h"
-#include "winerror.h"
-#include "ole2.h"
-#include "vfw.h"
-#include "wine/debug.h"
-#include "avifile_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(avifile);
-
-static HRESULT WINAPI
-IClassFactory_fnQueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj);
-static ULONG WINAPI IClassFactory_fnAddRef(LPCLASSFACTORY iface);
-static ULONG WINAPI IClassFactory_fnRelease(LPCLASSFACTORY iface);
-static HRESULT WINAPI IClassFactory_fnCreateInstance(LPCLASSFACTORY iface,LPUNKNOWN pOuter,REFIID riid,LPVOID *ppobj);
-static HRESULT WINAPI IClassFactory_fnLockServer(LPCLASSFACTORY iface,BOOL dolock);
-
-static ICOM_VTABLE(IClassFactory) iclassfact =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	IClassFactory_fnQueryInterface,
-	IClassFactory_fnAddRef,
-	IClassFactory_fnRelease,
-	IClassFactory_fnCreateInstance,
-	IClassFactory_fnLockServer
-};
-
-typedef struct
-{
-	/* IUnknown fields */
-	ICOM_VFIELD(IClassFactory);
-	DWORD	ref;
-} IClassFactoryImpl;
-
-static IClassFactoryImpl AVIFILE_GlobalCF = {&iclassfact, 0 };
-
-
-
-static HRESULT WINAPI
-IClassFactory_fnQueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
-{
-	ICOM_THIS(IClassFactoryImpl,iface);
-
-	TRACE("(%p)->(%p,%p)\n",This,riid,ppobj);
-	if ( ( IsEqualGUID( &IID_IUnknown, riid ) ) ||
-	     ( IsEqualGUID( &IID_IClassFactory, riid ) ) )
-	{
-		*ppobj = iface;
-		IClassFactory_AddRef(iface);
-		return S_OK;
-	}
-
-	return E_NOINTERFACE;
-}
-
-static ULONG WINAPI IClassFactory_fnAddRef(LPCLASSFACTORY iface)
-{
-	ICOM_THIS(IClassFactoryImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-	if ( (This->ref) == 0 )
-		AVIFILE_data.dwClassObjRef ++;
-
-	return ++(This->ref);
-}
-
-static ULONG WINAPI IClassFactory_fnRelease(LPCLASSFACTORY iface)
-{
-	ICOM_THIS(IClassFactoryImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-	if ( (--(This->ref)) > 0 )
-		return This->ref;
-
-	AVIFILE_data.dwClassObjRef --;
-	return 0;
-}
-
-static HRESULT WINAPI IClassFactory_fnCreateInstance(LPCLASSFACTORY iface,LPUNKNOWN pOuter,REFIID riid,LPVOID *ppobj)
-{
-    /*ICOM_THIS(IClassFactoryImpl,iface);*/
-
-	*ppobj = NULL;
-	if ( pOuter != NULL )
-		return E_FAIL;
-
-	if ( IsEqualGUID( &IID_IAVIFile, riid ) )
-		return AVIFILE_CreateIAVIFile(ppobj);
-	if ( IsEqualGUID( &IID_IAVIStream, riid ) )
-		return AVIFILE_CreateIAVIStream(ppobj);
-
-	return E_NOINTERFACE;
-}
-
-static HRESULT WINAPI IClassFactory_fnLockServer(LPCLASSFACTORY iface,BOOL dolock)
-{
-	ICOM_THIS(IClassFactoryImpl,iface);
-	HRESULT	hr;
-
-	FIXME("(%p)->(%d),stub!\n",This,dolock);
-	if (dolock)
-		hr = IClassFactory_AddRef(iface);
-	else
-		hr = IClassFactory_Release(iface);
-
-	return hr;
-}
-
-
-/***********************************************************************
- *		DllGetClassObject (AVIFIL32.@)
- */
-HRESULT WINAPI AVIFILE_DllGetClassObject(const CLSID* pclsid,const IID* piid,void** ppv)
-{
-	*ppv = NULL;
-	if ( IsEqualCLSID( &IID_IClassFactory, piid ) )
-	{
-		*ppv = (LPVOID)&AVIFILE_GlobalCF;
-		IClassFactory_AddRef((IClassFactory*)*ppv);
-		return S_OK;
-	}
-
-	return CLASS_E_CLASSNOTAVAILABLE;
-}
-
-/*****************************************************************************
- *		DllCanUnloadNow (AVIFIL32.@)
- */
-DWORD WINAPI AVIFILE_DllCanUnloadNow(void)
-{
-	return ( AVIFILE_data.dwClassObjRef == 0 ) ? S_OK : S_FALSE;
-}
-
diff --git a/dlls/avifil32/iafile.c b/dlls/avifil32/iafile.c
deleted file mode 100644
index 92b05ec..0000000
--- a/dlls/avifil32/iafile.c
+++ /dev/null
@@ -1,758 +0,0 @@
-/*
- * Copyright 1999 Marcus Meissner
- * Copyright 2001 Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * FIXME - implements editing/writing.
- */
-
-#include <string.h>
-#include <stdio.h>
-#include <assert.h>
-
-#include "winbase.h"
-#include "winnls.h"
-#include "mmsystem.h"
-#include "winerror.h"
-#include "vfw.h"
-#include "wine/debug.h"
-#include "avifile_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(avifile);
-
-#define	AVIFILE_STREAMS_MAX	4
-
-
-static HRESULT WINAPI IAVIFile_fnQueryInterface(IAVIFile* iface,REFIID refiid,LPVOID *obj);
-static ULONG WINAPI IAVIFile_fnAddRef(IAVIFile* iface);
-static ULONG WINAPI IAVIFile_fnRelease(IAVIFile* iface);
-static HRESULT WINAPI IAVIFile_fnInfo(IAVIFile*iface,AVIFILEINFOW*afi,LONG size);
-static HRESULT WINAPI IAVIFile_fnGetStream(IAVIFile*iface,PAVISTREAM*avis,DWORD fccType,LONG lParam);
-static HRESULT WINAPI IAVIFile_fnCreateStream(IAVIFile*iface,PAVISTREAM*avis,AVISTREAMINFOW*asi);
-static HRESULT WINAPI IAVIFile_fnWriteData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG size);
-static HRESULT WINAPI IAVIFile_fnReadData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG *size);
-static HRESULT WINAPI IAVIFile_fnEndRecord(IAVIFile*iface);
-static HRESULT WINAPI IAVIFile_fnDeleteStream(IAVIFile*iface,DWORD fccType,LONG lParam);
-
-struct ICOM_VTABLE(IAVIFile) iavift = {
-    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-    IAVIFile_fnQueryInterface,
-    IAVIFile_fnAddRef,
-    IAVIFile_fnRelease,
-    IAVIFile_fnInfo,
-    IAVIFile_fnGetStream,
-    IAVIFile_fnCreateStream,
-    IAVIFile_fnWriteData,
-    IAVIFile_fnReadData,
-    IAVIFile_fnEndRecord,
-    IAVIFile_fnDeleteStream,
-    /* IAVIFILE_fnOpen */ /* FIXME? */
-};
-
-
-typedef struct IAVIFileImpl
-{
-	ICOM_VFIELD(IAVIFile);
-	/* IUnknown stuff */
-	DWORD			ref;
-	/* IAVIFile stuff */
-	HANDLE			hf;
-	DWORD			dwAVIFileCaps;
-	DWORD			dwAVIFileScale;
-	DWORD			dwAVIFileRate;
-	DWORD			dwAVIFileLength;
-	DWORD			dwAVIFileEditCount;
-	MainAVIHeader		hdr;
-	IAVIStream*		pStreams[AVIFILE_STREAMS_MAX];
-	AVIStreamHeader		strhdrs[AVIFILE_STREAMS_MAX];
-	DWORD			dwMoviTop;
-	DWORD			dwCountOfIndexEntry;
-	AVIINDEXENTRY*		pIndexEntry;
-	AVIINDEXENTRY*		pStreamIndexEntry[AVIFILE_STREAMS_MAX+1];
-} IAVIFileImpl;
-
-
-/****************************************************************************
- * AVI file parser.
- */
-
-static HRESULT AVIFILE_IAVIFile_ReadNextChunkHeader(
-		IAVIFileImpl* This, FOURCC* pfcc, DWORD* pdwSize )
-{
-	BYTE	buf[8];
-	DWORD	dwRead;
-
-	if ( ( !ReadFile( This->hf, buf, 8, &dwRead, NULL ) ) ||
-	     ( 8 != dwRead ) )
-		return AVIERR_FILEREAD;
-	*pfcc = mmioFOURCC(buf[0],buf[1],buf[2],buf[3]);
-	*pdwSize = ( ((DWORD)buf[4])       ) |
-		   ( ((DWORD)buf[5]) <<  8 ) |
-		   ( ((DWORD)buf[6]) << 16 ) |
-		   ( ((DWORD)buf[7]) << 24 );
-
-	return S_OK;
-}
-
-static HRESULT AVIFILE_IAVIFile_SkipChunkData(
-		IAVIFileImpl* This, DWORD dwChunkSize )
-{
-	LONG	lHigh = 0;
-	DWORD	dwRes;
-
-	if ( dwChunkSize == 0 )
-		return S_OK;
-
-	SetLastError(NO_ERROR);
-	dwRes = SetFilePointer( This->hf, (LONG)dwChunkSize,
-				&lHigh, FILE_CURRENT );
-	if ( dwRes == (DWORD)0xffffffff && GetLastError() != NO_ERROR )
-		return AVIERR_FILEREAD;
-
-	return S_OK;
-}
-
-static HRESULT AVIFILE_IAVIFile_ReadChunkData(
-		IAVIFileImpl* This, DWORD dwChunkSize,
-		LPVOID lpvBuf, DWORD dwBufSize, LPDWORD lpdwRead )
-{
-	if ( dwBufSize > dwChunkSize )
-		dwBufSize = dwChunkSize;
-	if ( ( !ReadFile( This->hf, lpvBuf, dwBufSize, lpdwRead, NULL ) ) ||
-	     ( dwBufSize != *lpdwRead ) )
-		return AVIERR_FILEREAD;
-
-	return AVIFILE_IAVIFile_SkipChunkData( This, dwChunkSize - dwBufSize );
-}
-
-static HRESULT AVIFILE_IAVIFile_SeekToSpecifiedChunk(
-		IAVIFileImpl* This, FOURCC fccType, DWORD* pdwLen )
-{
-	HRESULT	hr;
-	FOURCC	fcc;
-	BYTE	buf[4];
-	DWORD	dwRead;
-
-	while ( 1 )
-	{
-		hr = AVIFILE_IAVIFile_ReadNextChunkHeader(
-				This, &fcc, pdwLen );
-		if ( hr != S_OK )
-			return hr;
-		if ( fcc == fccType )
-			return S_OK;
-
-		if ( fcc == FOURCC_LIST )
-		{
-		    if ( ( !ReadFile( This->hf, buf, 4, &dwRead, NULL ) ) ||
-			 ( 4 != dwRead ) )
-			return AVIERR_FILEREAD;
-		}
-		else
-		{
-		    hr = AVIFILE_IAVIFile_SkipChunkData(
-					This, *pdwLen );
-		    if ( hr != S_OK )
-			return hr;
-		}
-	}
-}
-
-
-WINE_AVISTREAM_DATA* AVIFILE_Alloc_IAVIStreamData( DWORD dwFmtLen )
-{
-	WINE_AVISTREAM_DATA*	pData;
-
-	pData = (WINE_AVISTREAM_DATA*)
-		HeapAlloc( AVIFILE_data.hHeap,HEAP_ZERO_MEMORY,
-			   sizeof(WINE_AVISTREAM_DATA) );
-	if ( pData == NULL )
-		return NULL;
-	if ( dwFmtLen > 0 )
-	{
-		pData->pbFmt = (BYTE*)
-			HeapAlloc( AVIFILE_data.hHeap,HEAP_ZERO_MEMORY,
-				   sizeof(BYTE)*dwFmtLen );
-		if ( pData->pbFmt == NULL )
-		{
-			AVIFILE_Free_IAVIStreamData( pData );
-			return NULL;
-		}
-	}
-	pData->dwFmtLen = dwFmtLen;
-
-	return pData;
-}
-
-void AVIFILE_Free_IAVIStreamData( WINE_AVISTREAM_DATA* pData )
-{
-	if ( pData != NULL )
-	{
-		if ( pData->pbFmt != NULL )
-			HeapFree( AVIFILE_data.hHeap,0,pData->pbFmt );
-		HeapFree( AVIFILE_data.hHeap,0,pData );
-	}
-}
-
-static void AVIFILE_IAVIFile_InitIndexTable(
-		IAVIFileImpl* This,
-		AVIINDEXENTRY* pIndexBuf,
-		AVIINDEXENTRY* pIndexData,
-		DWORD dwCountOfIndexEntry )
-{
-	DWORD	dwStreamIndex;
-	DWORD	dwIndex;
-	FOURCC	ckid;
-
-	dwStreamIndex = 0;
-	for ( ; dwStreamIndex < (AVIFILE_STREAMS_MAX+1); dwStreamIndex ++ )
-		This->pStreamIndexEntry[dwStreamIndex] = NULL;
-
-	dwStreamIndex = 0;
-	for ( ; dwStreamIndex < This->hdr.dwStreams; dwStreamIndex ++ )
-	{
-		ckid = mmioFOURCC('0','0'+dwStreamIndex,0,0);
-		TRACE( "testing ckid %c%c%c%c\n",
-			(int)(ckid>> 0)&0xff,
-			(int)(ckid>> 8)&0xff,
-			(int)(ckid>>16)&0xff,
-			(int)(ckid>>24)&0xff );
-		This->pStreamIndexEntry[dwStreamIndex] = pIndexBuf;
-		FIXME( "pIndexBuf = %p\n", pIndexBuf );
-		for ( dwIndex = 0; dwIndex < dwCountOfIndexEntry; dwIndex++ )
-		{
-		    TRACE( "ckid %c%c%c%c\n",
-			    (int)(pIndexData[dwIndex].ckid>> 0)&0xff,
-                            (int)(pIndexData[dwIndex].ckid>> 8)&0xff,
-                            (int)(pIndexData[dwIndex].ckid>>16)&0xff,
-                            (int)(pIndexData[dwIndex].ckid>>24)&0xff );
-                            
-		    if ( (pIndexData[dwIndex].ckid & mmioFOURCC(0xff,0xff,0,0))
-								== ckid )
-		    {
-			memcpy( pIndexBuf, &pIndexData[dwIndex],
-				sizeof(AVIINDEXENTRY) );
-			pIndexBuf ++;
-		    }
-		}
-                FIXME( "pIndexBuf = %p\n", pIndexBuf );
-	}
-	This->pStreamIndexEntry[This->hdr.dwStreams] = pIndexBuf;
-}
-
-
-/****************************************************************************
- * Create an IAVIFile object.
- */
-
-static HRESULT AVIFILE_IAVIFile_Construct( IAVIFileImpl* This );
-static void AVIFILE_IAVIFile_Destruct( IAVIFileImpl* This );
-
-HRESULT AVIFILE_CreateIAVIFile(void** ppobj)
-{
-	IAVIFileImpl	*This;
-	HRESULT		hr;
-
-	TRACE("(%p)\n",ppobj);
-	*ppobj = NULL;
-	This = (IAVIFileImpl*)HeapAlloc(AVIFILE_data.hHeap,HEAP_ZERO_MEMORY,
-					sizeof(IAVIFileImpl));
-	if ( This == NULL )
-		return AVIERR_MEMORY;
-	This->ref = 1;
-	ICOM_VTBL(This) = &iavift;
-	hr = AVIFILE_IAVIFile_Construct( This );
-	if ( hr != S_OK )
-	{
-		AVIFILE_IAVIFile_Destruct( This );
-		return hr;
-	}
-
-	TRACE("new -> %p\n",This);
-	*ppobj = (LPVOID)This;
-
-	return S_OK;
-}
-
-/****************************************************************************
- * IUnknown interface
- */
-
-static HRESULT WINAPI IAVIFile_fnQueryInterface(IAVIFile* iface,REFIID refiid,LPVOID *obj) {
-	ICOM_THIS(IAVIFileImpl,iface);
-
-	TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj);
-	if ( IsEqualGUID(&IID_IUnknown,refiid) ||
-	     IsEqualGUID(&IID_IAVIFile,refiid) )
-	{
-		*obj = iface;
-		IAVIFile_AddRef(iface);
-		return S_OK;
-	}
-	return OLE_E_ENUM_NOMORE;
-}
-
-static ULONG WINAPI IAVIFile_fnAddRef(IAVIFile* iface) {
-	ICOM_THIS(IAVIFileImpl,iface);
-
-	TRACE("(%p)->AddRef()\n",iface);
-	return ++(This->ref);
-}
-
-static ULONG WINAPI IAVIFile_fnRelease(IAVIFile* iface) {
-	ICOM_THIS(IAVIFileImpl,iface);
-
-	TRACE("(%p)->Release()\n",iface);
-	if ( (--(This->ref)) > 0 )
-		return This->ref;
-
-	AVIFILE_IAVIFile_Destruct(This);
-	HeapFree(AVIFILE_data.hHeap,0,iface);
-	return 0;
-}
-
-/****************************************************************************
- * IAVIFile interface
- */
-
-static HRESULT AVIFILE_IAVIFile_Construct( IAVIFileImpl* This )
-{
-	DWORD	dwIndex;
-
-	This->hf = INVALID_HANDLE_VALUE;
-	This->dwAVIFileCaps = 0;
-	This->dwAVIFileScale = 0;
-	This->dwAVIFileRate = 0;
-	This->dwAVIFileLength = 0;
-	This->dwAVIFileEditCount = 0;
-	for ( dwIndex = 0; dwIndex < AVIFILE_STREAMS_MAX; dwIndex++ )
-		This->pStreams[dwIndex] = NULL;
-	This->dwCountOfIndexEntry = 0;
-	This->pIndexEntry = NULL;
-
-	AVIFILE_data.dwClassObjRef ++;
-
-	return S_OK;
-}
-
-static void AVIFILE_IAVIFile_Destruct( IAVIFileImpl* This )
-{
-	DWORD	dwIndex;
-
-	if ( This->pIndexEntry != NULL )
-	{
-		HeapFree(AVIFILE_data.hHeap,0,This->pIndexEntry);
-		This->pIndexEntry = NULL;
-	}
-
-	for ( dwIndex = 0; dwIndex < AVIFILE_STREAMS_MAX; dwIndex++ )
-	{
-		if ( This->pStreams[dwIndex] != NULL )
-		{
-			IAVIStream_Release( This->pStreams[dwIndex] );
-			This->pStreams[dwIndex] = NULL;
-		}
-	}
-
-	if ( This->hf != INVALID_HANDLE_VALUE )
-		CloseHandle( This->hf );
-
-	AVIFILE_data.dwClassObjRef --;
-}
-
-static HRESULT WINAPI IAVIFile_fnInfo(IAVIFile*iface,AVIFILEINFOW*afi,LONG size)
-{
-	ICOM_THIS(IAVIFileImpl,iface);
-	AVIFILEINFOW	fiw;
-
-	FIXME("(%p)->Info(%p,%ld)\n",iface,afi,size);
-
-	memset( &fiw, 0, sizeof(fiw) );
-	fiw.dwMaxBytesPerSec = This->hdr.dwMaxBytesPerSec;
-	fiw.dwFlags = This->hdr.dwFlags;
-	fiw.dwCaps = This->dwAVIFileCaps;
-	fiw.dwStreams = This->hdr.dwStreams;
-	fiw.dwSuggestedBufferSize = This->hdr.dwSuggestedBufferSize;
-	fiw.dwWidth = This->hdr.dwWidth;
-	fiw.dwHeight = This->hdr.dwHeight;
-	fiw.dwScale = This->dwAVIFileScale; /* FIXME */
-	fiw.dwRate = This->dwAVIFileRate; /* FIXME */
-	fiw.dwLength = This->dwAVIFileLength; /* FIXME */
-	fiw.dwEditCount = This->dwAVIFileEditCount; /* FIXME */
-	/* fiw.szFileType[64]; */
-
-	if ( size > sizeof(AVIFILEINFOW) )
-		size = sizeof(AVIFILEINFOW);
-	memcpy( afi, &fiw, size );
-
-	return S_OK;
-}
-
-static HRESULT WINAPI IAVIFile_fnGetStream(IAVIFile*iface,PAVISTREAM*avis,DWORD fccType,LONG lParam)
-{
-	ICOM_THIS(IAVIFileImpl,iface);
-
-	FIXME("(%p)->GetStream(%p,0x%08lx,%ld)\n",iface,avis,fccType,lParam);
-	if ( fccType != 0 )
-		return E_FAIL;
-	if ( lParam < 0 || lParam >= This->hdr.dwStreams )
-		return E_FAIL;
-	*avis = This->pStreams[lParam];
-	IAVIStream_AddRef( *avis );
-
-	return S_OK;
-}
-
-static HRESULT WINAPI IAVIFile_fnCreateStream(IAVIFile*iface,PAVISTREAM*avis,AVISTREAMINFOW*asi)
-{
-	ICOM_THIS(IAVIFileImpl,iface);
-
-	FIXME("(%p,%p,%p)\n",This,avis,asi);
-	return E_FAIL;
-}
-
-static HRESULT WINAPI IAVIFile_fnWriteData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG size)
-{
-	ICOM_THIS(IAVIFileImpl,iface);
-
-	FIXME("(%p)->WriteData(0x%08lx,%p,%ld)\n",This,ckid,lpData,size);
-	/* FIXME: write data to file */
-	return E_FAIL;
-}
-
-static HRESULT WINAPI IAVIFile_fnReadData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG *size)
-{
-	ICOM_THIS(IAVIFileImpl,iface);
-
-	FIXME("(%p)->ReadData(0x%08lx,%p,%p)\n",This,ckid,lpData,size);
-	/* FIXME: read at most size bytes from file */
-
-	return E_FAIL;
-}
-
-static HRESULT WINAPI IAVIFile_fnEndRecord(IAVIFile*iface)
-{
-	ICOM_THIS(IAVIFileImpl,iface);
-
-	FIXME("(%p)->EndRecord()\n",This);
-	/* FIXME: end record? */
-	return E_FAIL;
-}
-
-static HRESULT WINAPI IAVIFile_fnDeleteStream(IAVIFile*iface,DWORD fccType,LONG lParam)
-{
-	ICOM_THIS(IAVIFileImpl,iface);
-
-	FIXME("(%p)->DeleteStream(0x%08lx,%ld)\n",This,fccType,lParam);
-	/* FIXME: delete stream? */
-	return E_FAIL;
-}
-
-/*****************************************************************************
- *	AVIFILE_IAVIFile_Open (internal)
- */
-HRESULT AVIFILE_IAVIFile_Open( PAVIFILE paf, LPCWSTR szFile, UINT uMode )
-{
-	ICOM_THIS(IAVIFileImpl,paf);
-	HRESULT		hr;
-	DWORD		dwAcc;
-	DWORD		dwShared;
-	DWORD		dwCreate;
-	BYTE		buf[12];
-	DWORD		dwRead;
-	FOURCC		fccFileType;
-	DWORD		dwLen;
-	DWORD		dwIndex;
-
-	FIXME("(%p)->Open(%p,%u)\n",This,szFile,uMode);
-
-	if ( This->hf != INVALID_HANDLE_VALUE )
-	{
-		CloseHandle( This->hf );
-		This->hf = INVALID_HANDLE_VALUE;
-	}
-
-	switch ( uMode & 0x3 )
-	{
-	case OF_READ: /* 0x0 */
-		dwAcc = GENERIC_READ;
-		dwCreate = OPEN_EXISTING;
-		This->dwAVIFileCaps = AVIFILECAPS_CANREAD;
-		break;
-	case OF_WRITE: /* 0x1 */
-		dwAcc = GENERIC_WRITE;
-		dwCreate = OPEN_ALWAYS;
-		This->dwAVIFileCaps = AVIFILECAPS_CANWRITE;
-		break;
-	case OF_READWRITE: /* 0x2 */
-		dwAcc = GENERIC_READ|GENERIC_WRITE;
-		dwCreate = OPEN_ALWAYS;
-		This->dwAVIFileCaps = AVIFILECAPS_CANREAD|AVIFILECAPS_CANWRITE;
-		break;
-	default:
-		return E_FAIL;
-	}
-
-	if ( This->dwAVIFileCaps & AVIFILECAPS_CANWRITE )
-	{
-		FIXME( "editing AVI is currently not supported!\n" );
-		return E_FAIL;
-	}
-
-	switch ( uMode & 0x70 )
-	{
-	case OF_SHARE_COMPAT: /* 0x00 */
-		dwShared = FILE_SHARE_READ|FILE_SHARE_WRITE;
-		break;
-	case OF_SHARE_EXCLUSIVE: /* 0x10 */
-		dwShared = 0;
-		break;
-	case OF_SHARE_DENY_WRITE: /* 0x20 */
-		dwShared = FILE_SHARE_READ;
-		break;
-	case OF_SHARE_DENY_READ: /* 0x30 */
-		dwShared = FILE_SHARE_WRITE;
-		break;
-	case OF_SHARE_DENY_NONE: /* 0x40 */
-		dwShared = FILE_SHARE_READ|FILE_SHARE_WRITE;
-		break;
-	default:
-		return E_FAIL;
-	}
-	if ( uMode & OF_CREATE )
-		dwCreate = CREATE_ALWAYS;
-
-	This->hf = CreateFileW( szFile, dwAcc, dwShared, NULL,
-				dwCreate, FILE_ATTRIBUTE_NORMAL,
-				(HANDLE)NULL );
-	if ( This->hf == INVALID_HANDLE_VALUE )
-		return AVIERR_FILEOPEN;
-
-	if ( dwAcc & GENERIC_READ )
-	{
-	    if ( !ReadFile( This->hf, buf, 12, &dwRead, NULL ) )
-		return AVIERR_FILEREAD;
-	    if ( dwRead == 12 )
-	    {
-		if ( mmioFOURCC(buf[0],buf[1],buf[2],buf[3]) != FOURCC_RIFF )
-			return AVIERR_BADFORMAT;
-
-		fccFileType = mmioFOURCC(buf[8],buf[9],buf[10],buf[11]);
-		if ( fccFileType != formtypeAVI )
-			return AVIERR_BADFORMAT;
-
-		/* get AVI main header. */
-		hr = AVIFILE_IAVIFile_SeekToSpecifiedChunk(
-				This, ckidAVIMAINHDR, &dwLen );
-		if ( hr != S_OK )
-			return hr;
-		if ( dwLen < (sizeof(DWORD)*10) )
-			return AVIERR_BADFORMAT;
-		hr = AVIFILE_IAVIFile_ReadChunkData(
-				This, dwLen,
-				&(This->hdr), sizeof(MainAVIHeader), &dwLen );
-		if ( This->hdr.dwStreams == 0 ||
-		     This->hdr.dwStreams > AVIFILE_STREAMS_MAX )
-			return AVIERR_BADFORMAT;
-
-		/* get stream headers. */
-		dwIndex = 0;
-		while ( dwIndex < This->hdr.dwStreams )
-		{
-			WINE_AVISTREAM_DATA*	pData;
-
-			hr = AVIFILE_IAVIFile_SeekToSpecifiedChunk(
-					This, ckidSTREAMHEADER, &dwLen );
-			if ( hr != S_OK )
-				return hr;
-			if ( dwLen < (sizeof(DWORD)*12) )
-				return AVIERR_BADFORMAT;
-			hr = AVIFILE_IAVIFile_ReadChunkData(
-				This, dwLen,
-				&This->strhdrs[dwIndex],
-				sizeof(AVIStreamHeader), &dwLen );
-
-			hr = AVIFILE_IAVIFile_SeekToSpecifiedChunk(
-					This, ckidSTREAMFORMAT, &dwLen );
-			if ( hr != S_OK )
-				return hr;
-			pData = AVIFILE_Alloc_IAVIStreamData( dwLen );
-			if ( pData == NULL )
-				return AVIERR_MEMORY;
-			hr = AVIFILE_IAVIFile_ReadChunkData(
-				This, dwLen,
-				pData->pbFmt, dwLen, &dwLen );
-			if ( hr != S_OK )
-			{
-				AVIFILE_Free_IAVIStreamData( pData );
-				return hr;
-			}
-			pData->dwStreamIndex = dwIndex;
-			pData->pstrhdr = &This->strhdrs[dwIndex];
-
-			hr = AVIStreamCreate(&This->pStreams[dwIndex],
-					     (LONG)paf, (LONG)(pData), NULL );
-			if ( hr != S_OK )
-			{
-				AVIFILE_Free_IAVIStreamData( pData );
-				return hr;
-			}
-
-			if ( (This->strhdrs[dwIndex].fccType
-					== mmioFOURCC('v','i','d','s')) ||
-			     (This->strhdrs[dwIndex].fccType
-					== mmioFOURCC('V','I','D','S')) )
-			{
-				This->dwAVIFileScale =
-					This->strhdrs[dwIndex].dwScale;
-				This->dwAVIFileRate =
-					This->strhdrs[dwIndex].dwRate;
-				This->dwAVIFileLength =
-					This->strhdrs[dwIndex].dwLength;
-			}
-			else
-			if ( This->dwAVIFileScale == 0 )
-			{
-				This->dwAVIFileScale =
-					This->strhdrs[dwIndex].dwScale;
-				This->dwAVIFileRate =
-					This->strhdrs[dwIndex].dwRate;
-				This->dwAVIFileLength =
-					This->strhdrs[dwIndex].dwLength;
-			}
-
-			dwIndex ++;
-		}
-
-		/* skip movi. */
-		while ( 1 )
-		{
-			hr = AVIFILE_IAVIFile_SeekToSpecifiedChunk(
-					This, FOURCC_LIST, &dwLen );
-			if ( hr != S_OK )
-				return hr;
-			if ( dwLen < 4 )
-				return AVIERR_BADFORMAT;
-
-			This->dwMoviTop = SetFilePointer( This->hf,0,NULL,FILE_CURRENT );
-			if ( This->dwMoviTop == 0xffffffff )
-				return AVIERR_BADFORMAT;
-
-			if ( ( !ReadFile(This->hf, buf, 4, &dwRead, NULL) ) ||
-			     ( dwRead != 4 ) )
-				return AVIERR_FILEREAD;
-
-			hr = AVIFILE_IAVIFile_SkipChunkData(
-					This, dwLen - 4 );
-			if ( hr != S_OK )
-				return hr;
-			if ( mmioFOURCC(buf[0],buf[1],buf[2],buf[3])
-				== mmioFOURCC('m', 'o', 'v', 'i') )
-				break;
-		}
-
-		/* get idx1. */
-		hr = AVIFILE_IAVIFile_SeekToSpecifiedChunk(
-				This, ckidAVINEWINDEX, &dwLen );
-		if ( hr != S_OK )
-			return hr;
-
-		This->dwCountOfIndexEntry = dwLen / sizeof(AVIINDEXENTRY);
-		This->pIndexEntry = (AVIINDEXENTRY*)
-			HeapAlloc(AVIFILE_data.hHeap,HEAP_ZERO_MEMORY,
-				  sizeof(AVIINDEXENTRY) *
-				  This->dwCountOfIndexEntry * 2 );
-		if ( This->pIndexEntry == NULL )
-			return AVIERR_MEMORY;
-		hr = AVIFILE_IAVIFile_ReadChunkData(
-				This, dwLen,
-				This->pIndexEntry + This->dwCountOfIndexEntry,
-				sizeof(AVIINDEXENTRY) *
-				This->dwCountOfIndexEntry, &dwLen );
-		if ( hr != S_OK )
-			return hr;
-		AVIFILE_IAVIFile_InitIndexTable(
-				This, This->pIndexEntry,
-				This->pIndexEntry + This->dwCountOfIndexEntry,
-				This->dwCountOfIndexEntry );
-	    }
-	    else
-	    {
-		/* FIXME - create the handle has GENERIC_WRITE access. */
-		return AVIERR_FILEREAD;
-	    }
-	}
-	else
-	{
-	    return AVIERR_FILEOPEN; /* FIXME */
-	}
-
-	return S_OK;
-}
-
-/*****************************************************************************
- *	AVIFILE_IAVIFile_GetIndexTable (internal)
- */
-HRESULT AVIFILE_IAVIFile_GetIndexTable( PAVIFILE paf, DWORD dwStreamIndex,
-					AVIINDEXENTRY** ppIndexEntry,
-					DWORD* pdwCountOfIndexEntry )
-{
-	ICOM_THIS(IAVIFileImpl,paf);
-
-	if ( dwStreamIndex < 0 || dwStreamIndex >= This->hdr.dwStreams )
-	{
-		FIXME( "invalid stream index %lu\n", dwStreamIndex );
-		return E_FAIL;
-	}
-	FIXME( "cur %p, next %p\n",
-		This->pStreamIndexEntry[dwStreamIndex],
-		This->pStreamIndexEntry[dwStreamIndex+1] );
-	*ppIndexEntry = This->pStreamIndexEntry[dwStreamIndex];
-	*pdwCountOfIndexEntry =
-		This->pStreamIndexEntry[dwStreamIndex+1] -
-			This->pStreamIndexEntry[dwStreamIndex];
-
-	return S_OK;
-}
-
-/*****************************************************************************
- *	AVIFILE_IAVIFile_ReadMovieData (internal)
- */
-HRESULT AVIFILE_IAVIFile_ReadMovieData( PAVIFILE paf, DWORD dwOffset,
-					DWORD dwLength, LPVOID lpvBuf )
-{
-	ICOM_THIS(IAVIFileImpl,paf);
-	LONG	lHigh = 0;
-	DWORD	dwRes;
-
-	if ( dwLength == 0 )
-		return S_OK;
-	SetLastError(NO_ERROR);
-	dwRes = SetFilePointer( This->hf, (LONG)(dwOffset+This->dwMoviTop),
-				&lHigh, FILE_BEGIN );
-	if ( dwRes == (DWORD)0xffffffff && GetLastError() != NO_ERROR )
-		return AVIERR_FILEREAD;
-
-	if ( ( !ReadFile(This->hf, lpvBuf, dwLength, &dwRes, NULL) ) ||
-	     ( dwLength != dwRes ) )
-	{
-		FIXME( "error in ReadFile()\n" );
-		return AVIERR_FILEREAD;
-	}
-
-	return S_OK;
-}
-
diff --git a/dlls/avifil32/iastream.c b/dlls/avifil32/iastream.c
deleted file mode 100644
index bd76c3a..0000000
--- a/dlls/avifil32/iastream.c
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
- * Copyright 2001 Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include <string.h>
-#include <stdio.h>
-#include <assert.h>
-
-#include "winbase.h"
-#include "winnls.h"
-#include "mmsystem.h"
-#include "winerror.h"
-#include "vfw.h"
-#include "wine/debug.h"
-#include "avifile_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(avifile);
-
-static HRESULT WINAPI IAVIStream_fnQueryInterface(IAVIStream*iface,REFIID refiid,LPVOID *obj);
-static ULONG WINAPI IAVIStream_fnAddRef(IAVIStream*iface);
-static ULONG WINAPI IAVIStream_fnRelease(IAVIStream* iface);
-static HRESULT WINAPI IAVIStream_fnCreate(IAVIStream*iface,LPARAM lParam1,LPARAM lParam2);
-static HRESULT WINAPI IAVIStream_fnInfo(IAVIStream*iface,AVISTREAMINFOW *psi,LONG size);
-static LONG WINAPI IAVIStream_fnFindSample(IAVIStream*iface,LONG pos,LONG flags);
-static HRESULT WINAPI IAVIStream_fnReadFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG *formatsize);
-static HRESULT WINAPI IAVIStream_fnSetFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG formatsize);
-static HRESULT WINAPI IAVIStream_fnRead(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread);
-static HRESULT WINAPI IAVIStream_fnWrite(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten);
-static HRESULT WINAPI IAVIStream_fnDelete(IAVIStream*iface,LONG start,LONG samples);
-static HRESULT WINAPI IAVIStream_fnReadData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG *lpread);
-static HRESULT WINAPI IAVIStream_fnWriteData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG size);
-static HRESULT WINAPI IAVIStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen);
-
-
-struct ICOM_VTABLE(IAVIStream) iavist = {
-    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-    IAVIStream_fnQueryInterface,
-    IAVIStream_fnAddRef,
-    IAVIStream_fnRelease,
-    IAVIStream_fnCreate,
-    IAVIStream_fnInfo,
-    IAVIStream_fnFindSample,
-    IAVIStream_fnReadFormat,
-    IAVIStream_fnSetFormat,
-    IAVIStream_fnRead,
-    IAVIStream_fnWrite,
-    IAVIStream_fnDelete,
-    IAVIStream_fnReadData,
-    IAVIStream_fnWriteData,
-    IAVIStream_fnSetInfo
-};
-
-
-
-typedef struct IAVIStreamImpl
-{
-	ICOM_VFIELD(IAVIStream);
-	/* IUnknown stuff */
-	DWORD		ref;
-	/* IAVIStream stuff */
-	IAVIFile*		paf;
-	WINE_AVISTREAM_DATA*	pData;
-} IAVIStreamImpl;
-
-static HRESULT IAVIStream_Construct( IAVIStreamImpl* This );
-static void IAVIStream_Destruct( IAVIStreamImpl* This );
-
-HRESULT AVIFILE_CreateIAVIStream(void** ppobj)
-{
-	IAVIStreamImpl	*This;
-	HRESULT		hr;
-
-	*ppobj = NULL;
-	This = (IAVIStreamImpl*)HeapAlloc(AVIFILE_data.hHeap,HEAP_ZERO_MEMORY,
-					  sizeof(IAVIStreamImpl));
-	This->ref = 1;
-	ICOM_VTBL(This) = &iavist;
-	hr = IAVIStream_Construct( This );
-	if ( hr != S_OK )
-	{
-		IAVIStream_Destruct( This );
-		return hr;
-	}
-
-	*ppobj = (LPVOID)This;
-
-	return S_OK;
-}
-
-
-/****************************************************************************
- * IUnknown interface
- */
-
-static HRESULT WINAPI IAVIStream_fnQueryInterface(IAVIStream*iface,REFIID refiid,LPVOID *obj) {
-	ICOM_THIS(IAVIStreamImpl,iface);
-
-	TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj);
-	if ( IsEqualGUID(&IID_IUnknown,refiid) ||
-	     IsEqualGUID(&IID_IAVIStream,refiid) )
-	{
-		IAVIStream_AddRef(iface);
-		*obj = iface;
-		return S_OK;
-	}
-	/* can return IGetFrame interface too */
-
-	return OLE_E_ENUM_NOMORE;
-}
-
-static ULONG WINAPI IAVIStream_fnAddRef(IAVIStream*iface) {
-	ICOM_THIS(IAVIStreamImpl,iface);
-
-	TRACE("(%p)->AddRef()\n",iface);
-	return ++(This->ref);
-}
-
-static ULONG WINAPI IAVIStream_fnRelease(IAVIStream* iface) {
-	ICOM_THIS(IAVIStreamImpl,iface);
-
-	TRACE("(%p)->Release()\n",iface);
-	if ((--(This->ref)) > 0 )
-		return This->ref;
-	IAVIStream_Destruct(This);
-
-	HeapFree(AVIFILE_data.hHeap,0,iface);
-	return 0;
-}
-
-/****************************************************************************
- * IAVIStream interface
- */
-
-static HRESULT IAVIStream_Construct( IAVIStreamImpl* This )
-{
-	This->paf = NULL;
-	This->pData = NULL;
-
-	AVIFILE_data.dwClassObjRef ++;
-
-	return S_OK;
-}
-
-static void IAVIStream_Destruct( IAVIStreamImpl* This )
-{
-	AVIFILE_data.dwClassObjRef --;
-}
-
-static HRESULT WINAPI IAVIStream_fnCreate(IAVIStream*iface,LPARAM lParam1,LPARAM lParam2)
-{
-	ICOM_THIS(IAVIStreamImpl,iface);
-
-	FIXME("(%p)->Create(%ld,%ld)\n",iface,lParam1,lParam2);
-
-	This->paf = (IAVIFile*)lParam1;
-	This->pData = (WINE_AVISTREAM_DATA*)lParam2;
-
-	return S_OK;
-}
-
-static HRESULT WINAPI IAVIStream_fnInfo(IAVIStream*iface,AVISTREAMINFOW *psi,LONG size)
-{
-	ICOM_THIS(IAVIStreamImpl,iface);
-	AVISTREAMINFOW	siw;
-
-	FIXME("(%p)->Info(%p,%ld)\n",iface,psi,size);
-	if ( This->pData == NULL )
-		return E_UNEXPECTED;
-
-	memset( &siw, 0, sizeof(AVISTREAMINFOW) );
-	siw.fccType = This->pData->pstrhdr->fccType;
-	siw.fccHandler = This->pData->pstrhdr->fccHandler;
-	siw.dwFlags = This->pData->pstrhdr->dwFlags;
-	siw.dwCaps = 0; /* FIXME */
-	siw.wPriority = This->pData->pstrhdr->wPriority;
-	siw.wLanguage = This->pData->pstrhdr->wLanguage;
-	siw.dwScale = This->pData->pstrhdr->dwScale;
-	siw.dwRate = This->pData->pstrhdr->dwRate;
-	siw.dwStart = This->pData->pstrhdr->dwStart;
-	siw.dwLength = This->pData->pstrhdr->dwLength;
-	siw.dwInitialFrames = This->pData->pstrhdr->dwInitialFrames;
-	siw.dwSuggestedBufferSize = This->pData->pstrhdr->dwSuggestedBufferSize;
-	siw.dwQuality = This->pData->pstrhdr->dwQuality;
-	siw.dwSampleSize = This->pData->pstrhdr->dwSampleSize;
-	siw.rcFrame.left = This->pData->pstrhdr->rcFrame.left;
-	siw.rcFrame.top = This->pData->pstrhdr->rcFrame.top;
-	siw.rcFrame.right = This->pData->pstrhdr->rcFrame.right;
-	siw.rcFrame.bottom = This->pData->pstrhdr->rcFrame.bottom;
-	siw.dwEditCount = 0; /* FIXME */
-	siw.dwFormatChangeCount = 0; /* FIXME */
-	/* siw.szName[64] */
-
-	if ( size > sizeof(AVISTREAMINFOW) )
-		size = sizeof(AVISTREAMINFOW);
-	memcpy( psi, &siw, size );
-
-	return S_OK;
-}
-
-static LONG WINAPI IAVIStream_fnFindSample(IAVIStream*iface,LONG pos,LONG flags)
-{
-	ICOM_THIS(IAVIStreamImpl,iface);
-	HRESULT	hr;
-	AVIINDEXENTRY*	pIndexEntry;
-	DWORD		dwCountOfIndexEntry;
-	LONG		lCur, lAdd, lEnd;
-
-	FIXME("(%p)->FindSample(%ld,0x%08lx)\n",This,pos,flags);
-
-	hr = AVIFILE_IAVIFile_GetIndexTable(
-		This->paf, This->pData->dwStreamIndex,
-		&pIndexEntry, &dwCountOfIndexEntry );
-	if ( hr != S_OK )
-		return -1L;
-
-	if ( flags & (~(FIND_DIR|FIND_TYPE|FIND_RET)) )
-	{
-		FIXME( "unknown flag %08lx\n", flags );
-		return -1L;
-	}
-
-	switch ( flags & FIND_DIR )
-	{
-	case FIND_NEXT:
-		lCur = pos;
-		lAdd = 1;
-		lEnd = dwCountOfIndexEntry;
-		if ( lCur > dwCountOfIndexEntry )
-			return -1L;
-		break;
-	case FIND_PREV:
-		lCur = pos;
-		if ( lCur > dwCountOfIndexEntry )
-			lCur = dwCountOfIndexEntry;
-		lAdd = -1;
-		lEnd = 0;
-		break;
-	case FIND_FROM_START:
-		lCur = 0;
-		lAdd = 1;
-		lEnd = dwCountOfIndexEntry;
-		break;
-	default:
-		FIXME( "unknown direction flag %08lx\n", (flags & FIND_DIR) );
-		return -1L;
-	}
-
-	switch ( flags & FIND_TYPE )
-	{
-	case FIND_KEY:
-		while ( 1 )
-		{
-			if ( pIndexEntry[lCur].dwFlags & AVIIF_KEYFRAME )
-				break;
-			if ( lCur == lEnd )
-				return -1L;
-			lCur += lAdd;
-		}
-		break;
-	case FIND_ANY:
-		while ( 1 )
-		{
-			if ( !(pIndexEntry[lCur].dwFlags & AVIIF_NOTIME) )
-				break;
-			if ( lCur == lEnd )
-				return -1L;
-			lCur += lAdd;
-		}
-		break;
-	case FIND_FORMAT:
-		FIXME( "FIND_FORMAT is not implemented.\n" );
-		return -1L;
-	default:
-		FIXME( "unknown type flag %08lx\n", (flags & FIND_TYPE) );
-		return -1L;
-	}
-
-	switch ( flags & FIND_RET )
-	{
-	case FIND_POS:
-		return lCur;
-	case FIND_LENGTH:
-		FIXME( "FIND_LENGTH is not implemented.\n" );
-		return -1L;
-	case FIND_OFFSET:
-		return pIndexEntry[lCur].dwChunkOffset;
-	case FIND_SIZE:
-		return pIndexEntry[lCur].dwChunkLength;
-	case FIND_INDEX:
-		FIXME( "FIND_INDEX is not implemented.\n" );
-		return -1L;
-	default:
-		FIXME( "unknown return type flag %08lx\n", (flags & FIND_RET) );
-		break;
-	}
-
-	return -1L;
-}
-
-static HRESULT WINAPI IAVIStream_fnReadFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG *formatsize) {
-	ICOM_THIS(IAVIStreamImpl,iface);
-
-	TRACE("(%p)->ReadFormat(%ld,%p,%p)\n",This,pos,format,formatsize);
-	if ( This->pData == NULL )
-		return E_UNEXPECTED;
-
-	/* FIXME - check pos. */
-	if ( format == NULL )
-	{
-		*formatsize = This->pData->dwFmtLen;
-		return S_OK;
-	}
-	if ( (*formatsize) < This->pData->dwFmtLen )
-		return AVIERR_BUFFERTOOSMALL;
-
-	memcpy( format, This->pData->pbFmt, This->pData->dwFmtLen );
-	*formatsize = This->pData->dwFmtLen;
-
-	return S_OK;
-}
-
-static HRESULT WINAPI IAVIStream_fnSetFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG formatsize) {
-	ICOM_THIS(IAVIStreamImpl,iface);
-
-	FIXME("(%p)->SetFormat(%ld,%p,%ld)\n",This,pos,format,formatsize);
-	return E_FAIL;
-}
-
-static HRESULT WINAPI IAVIStream_fnRead(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread) {
-	ICOM_THIS(IAVIStreamImpl,iface);
-	HRESULT	hr;
-	AVIINDEXENTRY*	pIndexEntry;
-	DWORD		dwCountOfIndexEntry;
-	DWORD		dwFrameLength;
-
-	FIXME("(%p)->Read(%ld,%ld,%p,%ld,%p,%p)\n",This,start,samples,buffer,buffersize,bytesread,samplesread);
-
-	*bytesread = 0;
-	*samplesread = 0;
-
-	hr = AVIFILE_IAVIFile_GetIndexTable(
-		This->paf, This->pData->dwStreamIndex,
-		&pIndexEntry, &dwCountOfIndexEntry );
-	if ( hr != S_OK )
-		return hr;
-	if ( start < 0 )
-		return E_FAIL;
-	if ( start >= dwCountOfIndexEntry || samples <= 0 )
-	{
-		FIXME("start %ld,samples %ld,total %ld\n",start,samples,dwCountOfIndexEntry);
-		return S_OK;
-	}
-
-	/* FIXME - no audio support. */
-	dwFrameLength = pIndexEntry[start].dwChunkLength;
-
-	if ( buffer == NULL )
-	{
-		*bytesread = dwFrameLength;
-		*samplesread = 1;
-		return S_OK;
-	}
-	if ( buffersize < dwFrameLength )
-	{
-		FIXME( "buffer is too small!\n" );
-		return AVIERR_BUFFERTOOSMALL;
-	}
-
-	hr = AVIFILE_IAVIFile_ReadMovieData(
-			This->paf,
-			pIndexEntry[start].dwChunkOffset + sizeof(DWORD)*2,
-			dwFrameLength, buffer );
-	if ( hr != S_OK )
-	{
-		FIXME( "ReadMovieData failed!\n");
-		return hr;
-	}
-	*bytesread = dwFrameLength;
-	*samplesread = 1;
-
-	return S_OK;
-}
-
-static HRESULT WINAPI IAVIStream_fnWrite(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten) {
-	ICOM_THIS(IAVIStreamImpl,iface);
-
-
-	FIXME("(%p)->Write(%ld,%ld,%p,%ld,0x%08lx,%p,%p)\n",This,start,samples,buffer,buffersize,flags,sampwritten,byteswritten);
-	return E_FAIL;
-}
-
-static HRESULT WINAPI IAVIStream_fnDelete(IAVIStream*iface,LONG start,LONG samples) {
-	ICOM_THIS(IAVIStreamImpl,iface);
-
-	FIXME("(%p)->Delete(%ld,%ld)\n",This,start,samples);
-	return E_FAIL;
-}
-static HRESULT WINAPI IAVIStream_fnReadData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG *lpread) {
-	ICOM_THIS(IAVIStreamImpl,iface);
-
-	FIXME("(%p)->ReadData(0x%08lx,%p,%p)\n",This,fcc,lp,lpread);
-	return E_FAIL;
-}
-
-static HRESULT WINAPI IAVIStream_fnWriteData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG size) {
-	ICOM_THIS(IAVIStreamImpl,iface);
-
-	FIXME("(%p)->WriteData(0x%08lx,%p,%ld)\n",This,fcc,lp,size);
-	return E_FAIL;
-}
-
-static HRESULT WINAPI IAVIStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen) {
-	ICOM_THIS(IAVIStreamImpl,iface);
-
-	FIXME("(%p)->SetInfo(%p,%ld)\n",This,info,infolen);
-
-	return E_FAIL;
-}
-
diff --git a/dlls/avifil32/igframe.c b/dlls/avifil32/igframe.c
deleted file mode 100644
index 546a2fd..0000000
--- a/dlls/avifil32/igframe.c
+++ /dev/null
@@ -1,428 +0,0 @@
-/*
- * Copyright 2001 Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * FIXME - implements color space(depth) converter.
- */
-
-#include <string.h>
-#include <stdio.h>
-#include <assert.h>
-
-#include "winbase.h"
-#include "winnls.h"
-#include "mmsystem.h"
-#include "winerror.h"
-#include "vfw.h"
-#include "wine/debug.h"
-#include "avifile_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(avifile);
-
-static HRESULT WINAPI IGetFrame_fnQueryInterface(IGetFrame* iface,REFIID refiid,LPVOID *obj);
-static ULONG WINAPI IGetFrame_fnAddRef(IGetFrame* iface);
-static ULONG WINAPI IGetFrame_fnRelease(IGetFrame* iface);
-static LPVOID WINAPI IGetFrame_fnGetFrame(IGetFrame* iface,LONG lPos);
-static HRESULT WINAPI IGetFrame_fnBegin(IGetFrame* iface,LONG lStart,LONG lEnd,LONG lRate);
-static HRESULT WINAPI IGetFrame_fnEnd(IGetFrame* iface);
-static HRESULT WINAPI IGetFrame_fnSetFormat(IGetFrame* iface,LPBITMAPINFOHEADER lpbi,LPVOID lpBits,INT x,INT y,INT dx,INT dy);
-
-struct ICOM_VTABLE(IGetFrame) igetfrm = {
-    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	IGetFrame_fnQueryInterface,
-	IGetFrame_fnAddRef,
-	IGetFrame_fnRelease,
-	IGetFrame_fnGetFrame,
-	IGetFrame_fnBegin,
-	IGetFrame_fnEnd,
-	IGetFrame_fnSetFormat,
-};
-
-typedef struct IGetFrameImpl
-{
-	ICOM_VFIELD(IGetFrame);
-	/* IUnknown stuff */
-	DWORD			ref;
-	/* IGetFrame stuff */
-	IAVIStream*		pas;
-	HIC			hIC;
-	LONG			lCachedFrame;
-	BITMAPINFO*		pbiICIn;
-	BITMAPINFO*		pbiICOut;
-	LPVOID			pvICOutBits;
-	LPVOID			pvICInFmtBuf;
-	DWORD			dwICInDataBufSize;
-	LPVOID			pvICInDataBuf;
-	LPVOID			pvICOutBuf;
-} IGetFrameImpl;
-
-static HRESULT IGetFrame_Construct( IGetFrameImpl* This,
-				    IAVIStream* pstr,
-				    LPBITMAPINFOHEADER lpbi );
-static void IGetFrame_Destruct( IGetFrameImpl* This );
-
-
-
-
-static LPVOID AVIFILE_IGetFrame_DecodeFrame(IGetFrameImpl* This,LONG lPos)
-{
-	HRESULT	hr;
-	DWORD	dwRes;
-	LONG	lFrameLength;
-	LONG	lSampleCount;
-	ICDECOMPRESS	icd;
-
-	if ( This->hIC == (HIC)NULL )
-		return NULL;
-
-	hr = IAVIStream_Read(This->pas,lPos,1,NULL,0,
-			     &lFrameLength,&lSampleCount);
-	if ( hr != S_OK || lSampleCount <= 0 )
-	{
-		FIXME( "IAVIStream_Read failed! res = %08lx\n", hr );
-		return NULL;
-	}
-	TRACE( "frame length = %ld\n", lFrameLength );
-
-	if ( This->dwICInDataBufSize < lFrameLength )
-	{
-		LPVOID	lpv;
-
-		if ( This->pvICInDataBuf == NULL )
-		{
-			lpv = HeapAlloc(
-				AVIFILE_data.hHeap,HEAP_ZERO_MEMORY,
-				lFrameLength );
-		}
-		else
-		{
-			lpv = HeapReAlloc(
-				AVIFILE_data.hHeap,HEAP_ZERO_MEMORY,
-				This->pvICInDataBuf,lFrameLength );
-		}
-		if ( lpv == NULL )
-		{
-			ERR( "out of memory!\n" );
-			return NULL;
-		}
-		This->pvICInDataBuf = lpv;
-		This->dwICInDataBufSize = lFrameLength;
-	}
-
-	hr = IAVIStream_Read(This->pas,lPos,1,
-			     This->pvICInDataBuf,This->dwICInDataBufSize,
-			     &lFrameLength,&lSampleCount);
-	if ( hr != S_OK || lSampleCount <= 0 )
-	{
-		FIXME( "IAVIStream_Read to buffer failed! res = %08lx\n", hr );
-		return NULL;
-	}
-
-	This->pbiICIn->bmiHeader.biSizeImage = lFrameLength;
-
-	TRACE( "call ICM_DECOMPRESS\n" );
-	icd.dwFlags = 0;
-	if ( IAVIStream_FindSample(This->pas,lPos,FIND_PREV|FIND_KEY) != lPos )
-		icd.dwFlags = ICDECOMPRESS_NOTKEYFRAME;
-	icd.lpbiInput = &This->pbiICIn->bmiHeader;
-	icd.lpInput = (BYTE*)This->pvICInDataBuf;
-	icd.lpbiOutput = &This->pbiICOut->bmiHeader;
-	icd.lpOutput = This->pvICOutBits;
-	icd.ckid = *((DWORD*)This->pvICInDataBuf);
-	dwRes = ICSendMessage(This->hIC,ICM_DECOMPRESS,
-			      (DWORD)(&icd),sizeof(ICDECOMPRESS) );
-	TRACE( "returned from ICM_DECOMPRESS\n" );
-	if ( dwRes != ICERR_OK )
-	{
-		ERR( "ICDecompress failed!\n" );
-		return NULL;
-	}
-
-	This->lCachedFrame = lPos;
-
-	return This->pvICOutBits;
-}
-
-/****************************************************************************/
-
-HRESULT AVIFILE_CreateIGetFrame(void** ppobj,
-				IAVIStream* pstr,LPBITMAPINFOHEADER lpbi)
-{
-	IGetFrameImpl	*This;
-	HRESULT		hr;
-
-	*ppobj = NULL;
-	This = (IGetFrameImpl*)HeapAlloc(AVIFILE_data.hHeap,HEAP_ZERO_MEMORY,
-					  sizeof(IGetFrameImpl));
-	This->ref = 1;
-	ICOM_VTBL(This) = &igetfrm;
-	hr = IGetFrame_Construct( This, pstr, lpbi );
-	if ( hr != S_OK )
-	{
-		IGetFrame_Destruct( This );
-		return hr;
-	}
-
-	*ppobj = (LPVOID)This;
-
-	return S_OK;
-}
-
-/****************************************************************************
- * IUnknown interface
- */
-
-static HRESULT WINAPI IGetFrame_fnQueryInterface(IGetFrame* iface,REFIID refiid,LPVOID *obj)
-{
-	ICOM_THIS(IGetFrameImpl,iface);
-
-	TRACE("(%p)->QueryInterface(%s,%p)\n",This,debugstr_guid(refiid),obj);
-	if ( IsEqualGUID(&IID_IUnknown,refiid) ||
-	     IsEqualGUID(&IID_IGetFrame,refiid) )
-	{
-		IGetFrame_AddRef(iface);
-		*obj = iface;
-		return S_OK;
-	}
-
-	return OLE_E_ENUM_NOMORE;
-}
-
-static ULONG WINAPI IGetFrame_fnAddRef(IGetFrame* iface)
-{
-	ICOM_THIS(IGetFrameImpl,iface);
-
-	TRACE("(%p)->AddRef()\n",iface);
-	return ++(This->ref);
-}
-
-static ULONG WINAPI IGetFrame_fnRelease(IGetFrame* iface)
-{
-	ICOM_THIS(IGetFrameImpl,iface);
-
-	TRACE("(%p)->Release()\n",iface);
-	if ((--(This->ref)) > 0 )
-		return This->ref;
-	IGetFrame_Destruct(This);
-	if ( This->pas != NULL )
-		IAVIStream_Release( This->pas );
-
-	HeapFree(AVIFILE_data.hHeap,0,iface);
-	return 0;
-}
-
-/****************************************************************************
- * IGetFrrame interface
- */
-
-static LPVOID WINAPI IGetFrame_fnGetFrame(IGetFrame* iface,LONG lPos)
-{
-	ICOM_THIS(IGetFrameImpl,iface);
-	LPVOID	lpv;
-	LONG	lKeyFrame;
-
-	TRACE( "(%p)->(%ld)\n", This, lPos );
-
-	if ( lPos < 0 )
-		return NULL;
-
-	if ( This->lCachedFrame == lPos )
-		return This->pvICOutBits;
-	if ( (This->lCachedFrame+1) != lPos )
-	{
-		lKeyFrame = IAVIStream_FindSample( This->pas, lPos,
-						   FIND_KEY | FIND_PREV );
-		if ( lKeyFrame < 0 || lKeyFrame > lPos )
-			return NULL;
-		while ( ++lKeyFrame < lPos )
-		{
-			lpv = AVIFILE_IGetFrame_DecodeFrame(This, lKeyFrame);
-			if ( lpv == NULL )
-				return NULL;
-		}
-	}
-
-	lpv = AVIFILE_IGetFrame_DecodeFrame(This, lPos);
-	TRACE( "lpv = %p\n",lpv );
-	if ( lpv == NULL )
-		return NULL;
-
-	return lpv;
-}
-
-static HRESULT WINAPI IGetFrame_fnBegin(IGetFrame* iface,LONG lStart,LONG lEnd,LONG lRate)
-{
-	ICOM_THIS(IGetFrameImpl,iface);
-
-	TRACE( "(%p)->(%ld,%ld,%ld)\n", This, lStart, lEnd, lRate );
-
-	if ( This->hIC == (HIC)NULL )
-		return E_UNEXPECTED;
-
-	if ( ICDecompressBegin( This->hIC,
-				This->pbiICIn,
-				This->pbiICOut ) != ICERR_OK )
-		return E_FAIL;
-
-	return S_OK;
-}
-
-static HRESULT WINAPI IGetFrame_fnEnd(IGetFrame* iface)
-{
-	ICOM_THIS(IGetFrameImpl,iface);
-
-	TRACE( "(%p)->()\n", This );
-
-	if ( This->hIC == (HIC)NULL )
-		return E_UNEXPECTED;
-
-	if ( ICDecompressEnd( This->hIC ) != ICERR_OK )
-		return E_FAIL;
-
-	return S_OK;
-}
-
-static HRESULT WINAPI IGetFrame_fnSetFormat(IGetFrame* iface,LPBITMAPINFOHEADER lpbi,LPVOID lpBits,INT x,INT y,INT dx,INT dy)
-{
-	ICOM_THIS(IGetFrameImpl,iface);
-	HRESULT	hr;
-	LONG	fmtlen;
-	BITMAPINFOHEADER	biTemp;
-	DWORD	dwSizeImage;
-
-	FIXME( "(%p)->(%p,%p,%d,%d,%d,%d)\n",This,lpbi,lpBits,x,y,dx,dy );
-
-	IGetFrame_Destruct(This);
-
-	hr = IAVIStream_ReadFormat(This->pas,0,NULL,&fmtlen);
-	if ( hr != S_OK )
-		return hr;
-	This->pvICInFmtBuf = HeapAlloc(
-		AVIFILE_data.hHeap,HEAP_ZERO_MEMORY,fmtlen);
-	if ( This->pvICInFmtBuf == NULL )
-		return AVIERR_MEMORY;
-	hr = IAVIStream_ReadFormat(This->pas,0,This->pvICInFmtBuf,&fmtlen);
-	if ( hr != S_OK )
-		return hr;
-	This->pbiICIn = (LPBITMAPINFO)This->pvICInFmtBuf;
-
-	This->hIC = (HIC)ICOpen( ICTYPE_VIDEO,
-				 This->pbiICIn->bmiHeader.biCompression,
-				 ICMODE_DECOMPRESS );
-	if ( This->hIC == (HIC)NULL )
-	{
-		ERR( "no AVI decompressor for %c%c%c%c.\n",
-		     (int)(This->pbiICIn->bmiHeader.biCompression>> 0)&0xff,
-		     (int)(This->pbiICIn->bmiHeader.biCompression>> 8)&0xff,
-		     (int)(This->pbiICIn->bmiHeader.biCompression>>16)&0xff,
-		     (int)(This->pbiICIn->bmiHeader.biCompression>>24)&0xff );
-		return E_FAIL;
-	}
-
-	if ( lpbi == NULL || lpbi == ((LPBITMAPINFOHEADER)1) )
-	{
-		memset( &biTemp, 0, sizeof(biTemp) );
-		biTemp.biSize = sizeof(BITMAPINFOHEADER);
-		biTemp.biWidth = This->pbiICIn->bmiHeader.biWidth;
-		biTemp.biHeight = This->pbiICIn->bmiHeader.biHeight;
-		biTemp.biPlanes = 1;
-		biTemp.biBitCount = 24;
-		biTemp.biCompression = 0;
-		lpbi = &biTemp;
-	}
-
-	if ( lpbi->biPlanes != 1 || lpbi->biCompression != 0 )
-		return E_FAIL;
-
-	dwSizeImage =
-		((This->pbiICIn->bmiHeader.biWidth*lpbi->biBitCount+7)/8)*
-					This->pbiICIn->bmiHeader.biHeight;
-	This->pvICOutBuf = HeapAlloc(
-		AVIFILE_data.hHeap,HEAP_ZERO_MEMORY,
-		(sizeof(BITMAPINFO)+sizeof(RGBQUAD)*256)*2+
-		dwSizeImage );
-	if ( This->pvICOutBuf == NULL )
-		return AVIERR_MEMORY;
-
-	This->pbiICOut = (BITMAPINFO*)This->pvICOutBuf;
-	This->pvICOutBits = (LPVOID)( (BYTE*)This->pvICOutBuf +
-				sizeof(BITMAPINFO) + sizeof(RGBQUAD)*256 );
-
-	This->pbiICOut->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
-	This->pbiICOut->bmiHeader.biWidth = This->pbiICIn->bmiHeader.biWidth;
-	This->pbiICOut->bmiHeader.biHeight = This->pbiICIn->bmiHeader.biHeight;
-	This->pbiICOut->bmiHeader.biPlanes = 1;
-	This->pbiICOut->bmiHeader.biBitCount = lpbi->biBitCount;
-	This->pbiICOut->bmiHeader.biSizeImage = dwSizeImage;
-	memcpy( This->pvICOutBits, This->pbiICOut, sizeof(BITMAPINFOHEADER) );
-
-	return S_OK;
-}
-
-static HRESULT IGetFrame_Construct( IGetFrameImpl* This,
-				    IAVIStream* pstr,
-				    LPBITMAPINFOHEADER lpbi )
-{
-	HRESULT	hr;
-
-	TRACE( "(%p)->(%p,%p)\n",This,pstr,lpbi );
-
-	IAVIStream_AddRef( pstr );
-	This->pas = pstr;
-	This->hIC = (HIC)NULL;
-	This->lCachedFrame = -1L;
-	This->pbiICIn = NULL;
-	This->pbiICOut = NULL;
-	This->pvICInFmtBuf = NULL;
-	This->pvICInDataBuf = NULL;
-	This->dwICInDataBufSize = 0;
-	This->pvICOutBuf = NULL;
-
-	hr = IGetFrame_SetFormat((IGetFrame*)This,lpbi,NULL,0,0,0,0);
-	if ( hr != S_OK )
-		return hr;
-
-	return S_OK;
-}
-
-static void IGetFrame_Destruct( IGetFrameImpl* This )
-{
-	if ( This->hIC != (HIC)NULL )
-	{
-		ICClose( This->hIC );
-		This->hIC = (HIC)NULL;
-	}
-	if ( This->pvICInFmtBuf != NULL )
-	{
-		HeapFree( AVIFILE_data.hHeap, 0, This->pvICInFmtBuf );
-		This->pvICInFmtBuf = NULL;
-	}
-	if ( This->pvICInDataBuf != NULL )
-	{
-		HeapFree( AVIFILE_data.hHeap, 0, This->pvICInDataBuf );
-		This->pvICInDataBuf = NULL;
-	}
-	if ( This->pvICOutBuf != NULL )
-	{
-		HeapFree( AVIFILE_data.hHeap, 0, This->pvICOutBuf );
-		This->pvICOutBuf = NULL;
-	}
-
-	This->lCachedFrame = -1L;
-	This->pbiICIn = NULL;
-	This->pbiICOut = NULL;
-	This->dwICInDataBufSize = 0;
-}
diff --git a/dlls/avifil32/main.c b/dlls/avifil32/main.c
deleted file mode 100644
index bb09d87..0000000
--- a/dlls/avifil32/main.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2001 Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include <string.h>
-#include <stdio.h>
-#include <assert.h>
-
-#include "winbase.h"
-#include "winnls.h"
-#include "mmsystem.h"
-#include "winerror.h"
-#include "vfw.h"
-#include "wine/debug.h"
-#include "avifile_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(avifile);
-
-WINE_AVIFILE_DATA AVIFILE_data;
-
-
-/***********************************************************************
- *		AVIFILE_InitProcess (internal)
- */
-static BOOL AVIFILE_InitProcess( void )
-{
-	TRACE("()\n");
-
-	AVIFILE_data.dwAVIFileRef = 0;
-	AVIFILE_data.dwClassObjRef = 0;
-	AVIFILE_data.hHeap = (HANDLE)NULL;
-
-	AVIFILE_data.hHeap = HeapCreate( 0, 0x10000, 0 );
-	if ( AVIFILE_data.hHeap  == (HANDLE)NULL )
-	{
-		ERR( "cannot allocate heap for AVIFILE.\n" );
-		return FALSE;
-	}
-
-	return TRUE;
-}
-
-/***********************************************************************
- *		AVIFILE_UninitProcess (internal)
- */
-static void AVIFILE_UninitProcess( void )
-{
-	TRACE("()\n");
-
-	if ( AVIFILE_data.dwAVIFileRef != 0 )
-		ERR( "you must call AVIFileExit()\n" );
-
-	if ( AVIFILE_data.dwClassObjRef != 0 )
-		ERR( "you must release some objects allocated from AVIFile.\n" );
-
-	if ( AVIFILE_data.hHeap != (HANDLE)NULL )
-	{
-		HeapDestroy( AVIFILE_data.hHeap );
-		AVIFILE_data.hHeap = (HANDLE)NULL;
-	}
-}
-
-/***********************************************************************
- *		AVIFILE_DllMain
- */
-BOOL WINAPI AVIFILE_DllMain(
-	HINSTANCE hInstDLL,
-	DWORD fdwReason,
-	LPVOID lpvReserved )
-{
-	switch ( fdwReason )
-	{
-	case DLL_PROCESS_ATTACH:
-		if ( !AVIFILE_InitProcess() )
-			return FALSE;
-		break;
-	case DLL_PROCESS_DETACH:
-		AVIFILE_UninitProcess();
-		break;
-	case DLL_THREAD_ATTACH:
-		break;
-	case DLL_THREAD_DETACH:
-		break;
-	}
-
-	return TRUE;
-}
-
-
diff --git a/dlls/avifil32/string.c b/dlls/avifil32/string.c
deleted file mode 100644
index 0c85d58..0000000
--- a/dlls/avifil32/string.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright 2001 Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include <string.h>
-#include <stdio.h>
-#include <assert.h>
-
-#include "winbase.h"
-#include "winnls.h"
-#include "mmsystem.h"
-#include "winerror.h"
-#include "vfw.h"
-#include "wine/debug.h"
-#include "avifile_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(avifile);
-
-
-/****************************************************************************
- * string APIs (internal) - Copied from wine/dlls/imm32/string.c
- */
-
-INT AVIFILE_strlenAtoW( LPCSTR lpstr )
-{
-	INT	len;
-
-	len = MultiByteToWideChar( CP_ACP, 0, lpstr, -1, NULL, 0 );
-	return ( len > 0 ) ? (len-1) : 0;
-}
-
-INT AVIFILE_strlenWtoA( LPCWSTR lpwstr )
-{
-	INT	len;
-
-	len = WideCharToMultiByte( CP_ACP, 0, lpwstr, -1,
-				   NULL, 0, NULL, NULL );
-	return ( len > 0 ) ? (len-1) : 0;
-}
-
-LPWSTR AVIFILE_strncpyAtoW( LPWSTR lpwstr, LPCSTR lpstr, INT wbuflen )
-{
-	INT	len;
-
-	len = MultiByteToWideChar( CP_ACP, 0, lpstr, -1, lpwstr, wbuflen );
-	if ( len == 0 )
-		*lpwstr = 0;
-	return lpwstr;
-}
-
-LPSTR AVIFILE_strncpyWtoA( LPSTR lpstr, LPCWSTR lpwstr, INT abuflen )
-{
-	INT	len;
-
-	len = WideCharToMultiByte( CP_ACP, 0, lpwstr, -1,
-				   lpstr, abuflen, NULL, NULL );
-	if ( len == 0 )
-		*lpstr = 0;
-	return lpstr;
-}
-
-LPWSTR AVIFILE_strdupAtoW( LPCSTR lpstr )
-{
-	INT len;
-	LPWSTR lpwstr = NULL;
-
-	len = AVIFILE_strlenAtoW( lpstr );
-	if ( len > 0 )
-	{
-		lpwstr = (LPWSTR)HeapAlloc( AVIFILE_data.hHeap, 0, sizeof(WCHAR)*(len+1) );
-		if ( lpwstr != NULL )
-			(void)AVIFILE_strncpyAtoW( lpwstr, lpstr, len+1 );
-	}
-
-	return lpwstr;
-}
-
-LPSTR AVIFILE_strdupWtoA( LPCWSTR lpwstr )
-{
-	INT len;
-	LPSTR lpstr = NULL;
-
-	len = AVIFILE_strlenWtoA( lpwstr );
-	if ( len > 0 )
-	{
-		lpstr = (LPSTR)HeapAlloc( AVIFILE_data.hHeap, 0, sizeof(CHAR)*(len+1) );
-		if ( lpstr != NULL )
-			(void)AVIFILE_strncpyWtoA( lpstr, lpwstr, len+1 );
-	}
-
-	return lpstr;
-}
-
-
-
diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c
index a1f3b0a..6d6e064 100644
--- a/dlls/imm32/imm.c
+++ b/dlls/imm32/imm.c
@@ -1,8 +1,7 @@
 /*
- *	IMM32 - Input Method contexts Manager ???
+ * IMM32 library
  *
  * Copyright 1998 Patrik Stridvall
- * Copyright 2002 Hidenori Takeshima
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -17,24 +16,17 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * NOTE for implementors of forwarding to XIM/XIC:
- *	Implementing low-level APIs with XIM is too hard since
- *	XIM is a high-level interface.
- *	some comments are added for implementor with XIM.
  */
 
 #include "winbase.h"
 #include "windef.h"
 #include "wingdi.h"
 #include "winuser.h"
-#include "winnls.h"
 #include "winerror.h"
-#include "immddk.h"
-
 #include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(imm);
+#include "imm.h"
 
+WINE_DEFAULT_DEBUG_CHANNEL(imm);
 
 /***********************************************************************
  *		ImmAssociateContext (IMM32.@)
@@ -43,9 +35,6 @@
 {
   FIXME("(0x%08x, 0x%08x): stub\n",hWnd,hIMC);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-
-  /* changing contexts is hard -> return default dummy imc */
-
   return (HIMC)NULL;
 }
 
@@ -55,8 +44,6 @@
 BOOL WINAPI ImmConfigureIMEA(
   HKL hKL, HWND hWnd, DWORD dwMode, LPVOID lpData)
 {
-  /* are any configurations needed? */
-
   FIXME("(0x%08x, 0x%08x, %ld, %p): stub\n",
     hKL, hWnd, dwMode, lpData
   );
@@ -70,8 +57,6 @@
 BOOL WINAPI ImmConfigureIMEW(
   HKL hKL, HWND hWnd, DWORD dwMode, LPVOID lpData)
 {
-  /* are any configurations needed? */
-
   FIXME("(0x%08x, 0x%08x, %ld, %p): stub\n",
     hKL, hWnd, dwMode, lpData
   );
@@ -80,24 +65,66 @@
 }
 
 /***********************************************************************
- *		ImmDisableIME (IMM32.@)
+ *		ImmCreateContext (IMM32.@)
  */
-BOOL WINAPI ImmDisableIME(
-  DWORD idThread)
+HIMC WINAPI ImmCreateContext()
 {
-  FIXME("(idThread %lu): stub\n", idThread);
+  FIXME("(): stub\n");
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return (HIMC)NULL;
+}
+
+/***********************************************************************
+ *		ImmDestroyContext (IMM32.@)
+ */
+BOOL WINAPI ImmDestroyContext(HIMC hIMC)
+{
+  FIXME("(0x%08x): stub\n",hIMC);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
 }
 
 /***********************************************************************
+ *		ImmEnumRegisterWordA (IMM32.@)
+ */
+UINT WINAPI ImmEnumRegisterWordA(
+  HKL hKL, REGISTERWORDENUMPROCA lpfnEnumProc,
+  LPCSTR lpszReading, DWORD dwStyle,
+  LPCSTR lpszRegister, LPVOID lpData)
+{
+  FIXME("(0x%08x, %p, %s, %ld, %s, %p): stub\n",
+    hKL, lpfnEnumProc, 
+    debugstr_a(lpszReading), dwStyle,
+    debugstr_a(lpszRegister), lpData
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
+ *		ImmEnumRegisterWordW (IMM32.@)
+ */
+UINT WINAPI ImmEnumRegisterWordW(
+  HKL hKL, REGISTERWORDENUMPROCW lpfnEnumProc,
+  LPCWSTR lpszReading, DWORD dwStyle,
+  LPCWSTR lpszRegister, LPVOID lpData)
+{
+  FIXME("(0x%08x, %p, %s, %ld, %s, %p): stub\n",
+    hKL, lpfnEnumProc, 
+    debugstr_w(lpszReading), dwStyle,
+    debugstr_w(lpszRegister), lpData
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
  *		ImmEscapeA (IMM32.@)
  */
 LRESULT WINAPI ImmEscapeA(
   HKL hKL, HIMC hIMC, 
   UINT uEscape, LPVOID lpData)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, 0x%08x, %d, %p): stub\n",
     hKL, hIMC, uEscape, lpData
   );
@@ -112,7 +139,6 @@
   HKL hKL, HIMC hIMC,
   UINT uEscape, LPVOID lpData)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, 0x%08x, %d, %p): stub\n",
     hKL, hIMC, uEscape, lpData
   );
@@ -127,7 +153,6 @@
   HIMC hIMC, DWORD deIndex, 
   LPCANDIDATELIST lpCandList, DWORD dwBufLen)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %ld, %p, %ld): stub\n",
     hIMC, deIndex,
     lpCandList, dwBufLen
@@ -142,7 +167,6 @@
 DWORD WINAPI ImmGetCandidateListCountA(
   HIMC hIMC, LPDWORD lpdwListCount)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %p): stub\n", hIMC, lpdwListCount);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return 0;
@@ -154,7 +178,6 @@
 DWORD WINAPI ImmGetCandidateListCountW(
   HIMC hIMC, LPDWORD lpdwListCount)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %p): stub\n", hIMC, lpdwListCount);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return 0;
@@ -167,7 +190,6 @@
   HIMC hIMC, DWORD deIndex, 
   LPCANDIDATELIST lpCandList, DWORD dwBufLen)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %ld, %p, %ld): stub\n",
     hIMC, deIndex,
     lpCandList, dwBufLen
@@ -182,8 +204,6 @@
 BOOL WINAPI ImmGetCandidateWindow(
   HIMC hIMC, DWORD dwBufLen, LPCANDIDATEFORM lpCandidate)
 {
-  /* return positions of 'candidate window' -> hard? */
-
   FIXME("(0x%08x, %ld, %p): stub\n", hIMC, dwBufLen, lpCandidate);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -194,7 +214,6 @@
  */
 BOOL WINAPI ImmGetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %p): stub\n", hIMC, lplf);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -205,7 +224,6 @@
  */
 BOOL WINAPI ImmGetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %p): stub\n", hIMC, lplf);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -217,20 +235,18 @@
 LONG WINAPI ImmGetCompositionStringA(
   HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen)
 {
-	/* hard to implement with XIM */
   OSVERSIONINFOA version;
   FIXME("(0x%08x, %ld, %p, %ld): stub\n",
     hIMC, dwIndex, lpBuf, dwBufLen
   );
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  version.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
   GetVersionExA( &version );
   switch(version.dwPlatformId)
   {
   case VER_PLATFORM_WIN32_WINDOWS: return -1;
   case VER_PLATFORM_WIN32_NT: return 0;
   default:
-      FIXME("%ld not supported\n",version.dwPlatformId);
+      FIXME("%ld not supported",version.dwPlatformId);
       return -1;
   }
 }
@@ -242,20 +258,18 @@
   HIMC hIMC, DWORD dwIndex, 
   LPVOID lpBuf, DWORD dwBufLen)
 {
-	/* hard to implement with XIM */
   OSVERSIONINFOA version;
   FIXME("(0x%08x, %ld, %p, %ld): stub\n",
     hIMC, dwIndex, lpBuf, dwBufLen
   );
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  version.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
   GetVersionExA( &version );
   switch(version.dwPlatformId)
   {
   case VER_PLATFORM_WIN32_WINDOWS: return -1;
   case VER_PLATFORM_WIN32_NT: return 0;
   default:
-      FIXME("%ld not supported\n",version.dwPlatformId);
+      FIXME("%ld not supported",version.dwPlatformId);
       return -1;
   }
 }
@@ -265,8 +279,6 @@
  */
 BOOL WINAPI ImmGetCompositionWindow(HIMC hIMC, LPCOMPOSITIONFORM lpCompForm)
 {
-  /* return positions of 'composition window' -> hard? */
-
   FIXME("(0x%08x, %p): stub\n", hIMC, lpCompForm);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return 0;
@@ -277,8 +289,6 @@
  */
 HIMC WINAPI ImmGetContext(HWND hWnd)
 {
-  /* enter critical section of default context and return it */
-
   FIXME("(0x%08x): stub\n", hWnd);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return (HIMC)NULL;
@@ -292,7 +302,6 @@
   LPCSTR pSrc, LPCANDIDATELIST lpDst,
   DWORD dwBufLen, UINT uFlag)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, 0x%08x, %s, %p, %ld, %d): stub\n",
     hKL, hIMC, debugstr_a(pSrc), lpDst, dwBufLen, uFlag
   );
@@ -308,7 +317,6 @@
   LPCWSTR pSrc, LPCANDIDATELIST lpDst,
   DWORD dwBufLen, UINT uFlag)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, 0x%08x, %s, %p, %ld, %d): stub\n",
     hKL, hIMC, debugstr_w(pSrc), lpDst, dwBufLen, uFlag
   );
@@ -322,8 +330,6 @@
 BOOL WINAPI ImmGetConversionStatus(
   HIMC hIMC, LPDWORD lpfdwConversion, LPDWORD lpfdwSentence)
 {
-  /* hard -> pretend? */
-
   FIXME("(0x%08x, %p, %p): stub\n",
     hIMC, lpfdwConversion, lpfdwSentence
   );
@@ -336,7 +342,6 @@
  */
 HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x): stub\n", hWnd);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return (HWND)NULL;
@@ -373,8 +378,6 @@
 DWORD WINAPI ImmGetGuideLineA(
   HIMC hIMC, DWORD dwIndex, LPSTR lpBuf, DWORD dwBufLen)
 {
-  /* ??? hard?? */
-
   FIXME("(0x%08x, %ld, %s, %ld): stub\n",
     hIMC, dwIndex, debugstr_a(lpBuf), dwBufLen
   );
@@ -387,8 +390,6 @@
  */
 DWORD WINAPI ImmGetGuideLineW(HIMC hIMC, DWORD dwIndex, LPWSTR lpBuf, DWORD dwBufLen)
 {
-  /* ??? hard?? */
-
   FIXME("(0x%08x, %ld, %s, %ld): stub\n",
     hIMC, dwIndex, debugstr_w(lpBuf), dwBufLen
   );
@@ -397,24 +398,78 @@
 }
 
 /***********************************************************************
+ *		ImmGetIMEFileNameA (IMM32.@)
+ */
+UINT WINAPI ImmGetIMEFileNameA(
+  HKL hKL, LPSTR lpszFileName, UINT uBufLen)
+{
+  FIXME("(0x%08x, %s, %d): stub\n",
+    hKL, debugstr_a(lpszFileName), uBufLen
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
+ *		ImmGetIMEFileNameW (IMM32.@)
+ */
+UINT WINAPI ImmGetIMEFileNameW(
+  HKL hKL, LPWSTR lpszFileName, UINT uBufLen)
+{
+  FIXME("(0x%08x, %s, %d): stub\n",
+    hKL, debugstr_w(lpszFileName), uBufLen
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
  *		ImmGetOpenStatus (IMM32.@)
  */
 BOOL WINAPI ImmGetOpenStatus(HIMC hIMC)
 {
-  /* return whether XIC is activated */
-
   FIXME("(0x%08x): stub\n", hIMC);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
 }
 
 /***********************************************************************
+ *		ImmGetProperty (IMM32.@)
+ */
+DWORD WINAPI ImmGetProperty(HKL hKL, DWORD fdwIndex)
+{
+  FIXME("(0x%08x, %ld): stub\n", hKL, fdwIndex);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
+ *		ImmGetRegisterWordStyleA (IMM32.@)
+ */
+UINT WINAPI ImmGetRegisterWordStyleA(
+  HKL hKL, UINT nItem, LPSTYLEBUFA lpStyleBuf)
+{
+  FIXME("(0x%08x, %d, %p): stub\n", hKL, nItem, lpStyleBuf);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
+ *		ImmGetRegisterWordStyleW (IMM32.@)
+ */
+UINT WINAPI ImmGetRegisterWordStyleW(
+  HKL hKL, UINT nItem, LPSTYLEBUFW lpStyleBuf)
+{
+  FIXME("(0x%08x, %d, %p): stub\n", hKL, nItem, lpStyleBuf);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return 0;
+}
+
+/***********************************************************************
  *		ImmGetStatusWindowPos (IMM32.@)
  */
 BOOL WINAPI ImmGetStatusWindowPos(HIMC hIMC, LPPOINT lpptPos)
 {
-  /* hard??? */
-
   FIXME("(0x%08x, %p): stub\n", hIMC, lpptPos);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -425,11 +480,9 @@
  */
 UINT WINAPI ImmGetVirtualKey(HWND hWnd)
 {
-  /* hard??? */
   OSVERSIONINFOA version;
   FIXME("(0x%08x): stub\n", hWnd);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-  version.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
   GetVersionExA( &version );
   switch(version.dwPlatformId)
   {
@@ -438,18 +491,79 @@
   case VER_PLATFORM_WIN32_NT:
       return 0;
   default:
-      FIXME("%ld not supported\n",version.dwPlatformId);
+      FIXME("%ld not supported",version.dwPlatformId);
       return VK_PROCESSKEY;
   }
 }
 
 /***********************************************************************
+ *		ImmInstallIMEA (IMM32.@)
+ */
+HKL WINAPI ImmInstallIMEA(
+  LPCSTR lpszIMEFileName, LPCSTR lpszLayoutText)
+{
+  FIXME("(%s, %s): stub\n",
+    debugstr_a(lpszIMEFileName), debugstr_a(lpszLayoutText)
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return (HKL)NULL;
+}
+
+/***********************************************************************
+ *		ImmInstallIMEW (IMM32.@)
+ */
+HKL WINAPI ImmInstallIMEW(
+  LPCWSTR lpszIMEFileName, LPCWSTR lpszLayoutText)
+{
+  FIXME("(%s, %s): stub\n",
+    debugstr_w(lpszIMEFileName), debugstr_w(lpszLayoutText)
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return (HKL)NULL;
+}
+
+/***********************************************************************
+ *		ImmIsIME (IMM32.@)
+ */
+BOOL WINAPI ImmIsIME(HKL hKL)
+{
+  FIXME("(0x%08x): stub\n", hKL);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		ImmIsUIMessageA (IMM32.@)
+ */
+BOOL WINAPI ImmIsUIMessageA(
+  HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+  FIXME("(0x%08x, %d, %d, %ld): stub\n",
+    hWndIME, msg, wParam, lParam
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
+ *		ImmIsUIMessageW (IMM32.@)
+ */
+BOOL WINAPI ImmIsUIMessageW(
+  HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+  FIXME("(0x%08x, %d, %d, %ld): stub\n",
+    hWndIME, msg, wParam, lParam
+  );
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return FALSE;
+}
+
+/***********************************************************************
  *		ImmNotifyIME (IMM32.@)
  */
 BOOL WINAPI ImmNotifyIME(
   HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %ld, %ld, %ld): stub\n",
     hIMC, dwAction, dwIndex, dwValue
   );
@@ -463,7 +577,6 @@
 BOOL WINAPI ImmRegisterWordA(
   HKL hKL, LPCSTR lpszReading, DWORD dwStyle, LPCSTR lpszRegister)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %s, %ld, %s): stub\n",
     hKL, debugstr_a(lpszReading), dwStyle, debugstr_a(lpszRegister)
   );
@@ -477,7 +590,6 @@
 BOOL WINAPI ImmRegisterWordW(
   HKL hKL, LPCWSTR lpszReading, DWORD dwStyle, LPCWSTR lpszRegister)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %s, %ld, %s): stub\n",
     hKL, debugstr_w(lpszReading), dwStyle, debugstr_w(lpszRegister)
   );
@@ -490,8 +602,6 @@
  */
 BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
 {
-  /* release critical section of default context and return */
-
   FIXME("(0x%08x, 0x%08x): stub\n", hWnd, hIMC);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -503,8 +613,6 @@
 BOOL WINAPI ImmSetCandidateWindow(
   HIMC hIMC, LPCANDIDATEFORM lpCandidate)
 {
-	/* hard??? */
-
   FIXME("(0x%08x, %p): stub\n", hIMC, lpCandidate);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -515,7 +623,6 @@
  */
 BOOL WINAPI ImmSetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %p): stub\n", hIMC, lplf);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -526,7 +633,6 @@
  */
 BOOL WINAPI ImmSetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %p): stub\n", hIMC, lplf);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -540,8 +646,6 @@
   LPCVOID lpComp, DWORD dwCompLen, 
   LPCVOID lpRead, DWORD dwReadLen)
 {
-	/* hard??? */
-
   FIXME("(0x%08x, %ld, %p, %ld, %p, %ld): stub\n",
     hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen
   );
@@ -557,8 +661,6 @@
 	LPCVOID lpComp, DWORD dwCompLen,
 	LPCVOID lpRead, DWORD dwReadLen)
 {
-	/* hard??? */
-
   FIXME("(0x%08x, %ld, %p, %ld, %p, %ld): stub\n",
     hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen
   );
@@ -572,8 +674,6 @@
 BOOL WINAPI ImmSetCompositionWindow(
   HIMC hIMC, LPCOMPOSITIONFORM lpCompForm)
 {
-	/* hard??? */
-
   FIXME("(0x%08x, %p): stub\n", hIMC, lpCompForm);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -585,7 +685,6 @@
 BOOL WINAPI ImmSetConversionStatus(
   HIMC hIMC, DWORD fdwConversion, DWORD fdwSentence)
 {
-	/* hard to implement with XIM? */
   FIXME("(0x%08x, %ld, %ld): stub\n",
     hIMC, fdwConversion, fdwSentence
   );
@@ -598,8 +697,6 @@
  */
 BOOL WINAPI ImmSetOpenStatus(HIMC hIMC, BOOL fOpen)
 {
-	/* activate/inactivate XIC */
-
   FIXME("(0x%08x, %d): stub\n", hIMC, fOpen);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -610,8 +707,6 @@
  */
 BOOL WINAPI ImmSetStatusWindowPos(HIMC hIMC, LPPOINT lpptPos)
 {
-	/* hard??? */
-
   FIXME("(0x%08x, %p): stub\n", hIMC, lpptPos);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -622,8 +717,6 @@
  */
 BOOL WINAPI ImmSimulateHotKey(HWND hWnd, DWORD dwHotKeyID)
 {
-	/* hard??? */
-
   FIXME("(0x%08x, %ld): stub\n", hWnd, dwHotKeyID);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
@@ -635,7 +728,6 @@
 BOOL WINAPI ImmUnregisterWordA(
   HKL hKL, LPCSTR lpszReading, DWORD dwStyle, LPCSTR lpszUnregister)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %s, %ld, %s): stub\n",
     hKL, debugstr_a(lpszReading), dwStyle, debugstr_a(lpszUnregister)
   );
@@ -649,712 +741,9 @@
 BOOL WINAPI ImmUnregisterWordW(
   HKL hKL, LPCWSTR lpszReading, DWORD dwStyle, LPCWSTR lpszUnregister)
 {
-	/* hard to implement with XIM */
   FIXME("(0x%08x, %s, %ld, %s): stub\n",
     hKL, debugstr_w(lpszReading), dwStyle, debugstr_w(lpszUnregister)
   );
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
 }
-
-/***********************************************************************
- *		ImmCreateSoftKeyboard (IMM32.@)
- */
-HWND WINAPI ImmCreateSoftKeyboard(UINT uType, HWND hOwner, int x, int y)
-{
-	/* hard to implement with XIM */
-	FIXME("(0x%08x, 0x%08x, %d, %d): stub\n", uType, (unsigned)hOwner, x, y);
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return (HWND)NULL;
-}
-
-/***********************************************************************
- *		ImmDestroySoftKeyboard (IMM32.@)
- */
-BOOL WINAPI ImmDestroySoftKeyboard(HWND hwndSoftKeyboard)
-{
-	/* hard to implement with XIM */
-	FIXME("(0x%08x): stub\n", (unsigned)hwndSoftKeyboard);
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return FALSE;
-}
-
-/***********************************************************************
- *		ImmShowSoftKeyboard (IMM32.@)
- */
-BOOL WINAPI ImmShowSoftKeyboard(HWND hwndSoftKeyboard, int nCmdShow)
-{
-	/* hard to implement with XIM */
-	FIXME("(0x%08x, %d): stub\n", (unsigned)hwndSoftKeyboard, nCmdShow);
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return FALSE;
-}
-
-/***********************************************************************
- *		ImmGetHotKey (IMM32.@)
- */
-BOOL WINAPI ImmGetHotKey(DWORD dwHotKeyID, LPUINT lpuModifiers,
-			 LPUINT lpuVKey, LPHKL lphKL)
-{
-	/* hard??? */
-
-	FIXME("(0x%08lx, %p, %p, %p): stub\n",
-	       dwHotKeyID, lpuModifiers, lpuVKey, lphKL);
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return FALSE;
-}
-
-/***********************************************************************
- *		ImmSetHotKey (IMM32.@)
- */
-BOOL WINAPI ImmSetHotKey(DWORD dwHotKeyID, UINT uModifiers,
-			 UINT uVKey, HKL hKL)
-{
-	/* hard??? */
-
-	FIXME("(0x%08lx, 0x%08x, 0x%08x, 0x%08x): stub\n",
-	       dwHotKeyID, uModifiers, uVKey, (unsigned)hKL);
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return FALSE;
-}
-
-/***********************************************************************
- *		ImmGenerateMessage (IMM32.@)
- */
-BOOL WINAPI ImmGenerateMessage(HIMC hIMC)
-{
-	/* hard to implement with XIM */
-	FIXME("(0x%08x): stub\n", (unsigned)hIMC);
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return FALSE;
-}
-
-/***********************************************************************
- *		ImmCreateContext (IMM32.@)
- */
-HIMC WINAPI ImmCreateContext( void )
-{
-	/* hard to implement with XIM??? */
-	FIXME("(): stub\n");
-	return (HIMC)NULL;
-}
-
-/***********************************************************************
- *		ImmDestroyContext (IMM32.@)
- */
-BOOL WINAPI ImmDestroyContext( HIMC hIMC )
-{
-	/* hard to implement with XIM??? */
-	FIXME("(): stub\n");
-	return FALSE;
-}
-
-/***********************************************************************
- *		ImmLockIMC (IMM32.@)
- */
-LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC)
-{
-	/* don't need to implement unless use native drivers */
-	FIXME("(): stub\n");
-	return NULL;
-}
-
-/***********************************************************************
- *		ImmUnlockIMC (IMM32.@)
- */
-BOOL WINAPI ImmUnlockIMC(HIMC hIMC)
-{
-	/* don't need to implement unless use native drivers */
-	FIXME("(): stub\n");
-	return FALSE;
-}
-
-/***********************************************************************
- *		ImmGetIMCLockCount (IMM32.@)
- */
-DWORD WINAPI ImmGetIMCLockCount(HIMC hIMC)
-{
-	/* don't need to implement unless use native drivers */
-	FIXME("(): stub\n");
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return 0;
-}
-
-/***********************************************************************
- *		IMM32_IsUIMessage (internal)
- */
-static BOOL IMM32_IsUIMessage( UINT nMsg )
-{
-	switch ( nMsg )
-	{
-	case WM_IME_STARTCOMPOSITION:
-	case WM_IME_ENDCOMPOSITION:
-	case WM_IME_COMPOSITION:
-	case WM_IME_SETCONTEXT:
-	case WM_IME_NOTIFY:
-	case WM_IME_COMPOSITIONFULL:
-	case WM_IME_SELECT:
-	case 0x287: /* What is this message? IMM32.DLL returns TRUE. */
-		return TRUE;
-	}
-
-	return FALSE;
-}
-
-
-/***********************************************************************
- *		ImmIsUIMessageA (IMM32.@)
- */
-BOOL WINAPI ImmIsUIMessageA(
-	HWND hwndIME, UINT msg, WPARAM wParam, LPARAM lParam)
-{
-	TRACE("(0x%08x, %d, %d, %ld)\n",
-	      hwndIME, msg, wParam, lParam);
-
-	if ( !IMM32_IsUIMessage( msg ) )
-		return FALSE;
-	if ( hwndIME == (HWND)NULL )
-		return TRUE;
-
-	switch ( msg )
-	{
-	case WM_IME_STARTCOMPOSITION:
-	case WM_IME_ENDCOMPOSITION:
-	case WM_IME_COMPOSITION:
-	case WM_IME_SETCONTEXT:
-	case WM_IME_NOTIFY:
-	case WM_IME_COMPOSITIONFULL:
-	case WM_IME_SELECT:
-		SendMessageA( hwndIME, msg, wParam, lParam );
-		break;
-	case 0x287: /* What is this message? */
-		FIXME("(0x%08x, %d, %d, %ld) - unknown message 0x287.\n",
-		      hwndIME, msg, wParam, lParam);
-		SendMessageA( hwndIME, msg, wParam, lParam );
-		break;
-	}
-
-	return TRUE;
-}
-
-/***********************************************************************
- *		ImmIsUIMessageW (IMM32.@)
- */
-BOOL WINAPI ImmIsUIMessageW(
-	HWND hwndIME, UINT msg, WPARAM wParam, LPARAM lParam)
-{
-	TRACE("(0x%08x, %d, %d, %ld)\n",
-	      hwndIME, msg, wParam, lParam);
-
-	if ( !IMM32_IsUIMessage( msg ) )
-		return FALSE;
-	if ( hwndIME == (HWND)NULL )
-		return TRUE;
-
-	switch ( msg )
-	{
-	case WM_IME_STARTCOMPOSITION:
-	case WM_IME_ENDCOMPOSITION:
-	case WM_IME_COMPOSITION:
-	case WM_IME_SETCONTEXT:
-	case WM_IME_NOTIFY:
-	case WM_IME_COMPOSITIONFULL:
-	case WM_IME_SELECT:
-		SendMessageW( hwndIME, msg, wParam, lParam );
-		break;
-	case 0x287: /* What is this message? */
-		FIXME("(0x%08x, %d, %d, %ld) - unknown message 0x287.\n",
-		      hwndIME, msg, wParam, lParam);
-		SendMessageW( hwndIME, msg, wParam, lParam );
-		break;
-	}
-
-	return TRUE;
-}
-
-
-/***********************************************************************
- *		ImmInstallIMEA (IMM32.@)
- */
-HKL WINAPI ImmInstallIMEA(
-	LPCSTR lpszIMEFileName, LPCSTR lpszLayoutText)
-{
-	/* don't need to implement unless use native drivers */
-	FIXME("(): stub\n");
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return (HKL)NULL;
-}
-
-/***********************************************************************
- *		ImmInstallIMEW (IMM32.@)
- */
-HKL WINAPI ImmInstallIMEW(
-	LPCWSTR lpszIMEFileName, LPCWSTR lpszLayoutText)
-{
-	/* don't need to implement unless use native drivers */
-	FIXME("(): stub\n");
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return (HKL)NULL;
-}
-
-/***********************************************************************
- *		ImmIsIME (IMM32.@)
- */
-BOOL WINAPI ImmIsIME(HKL hkl)
-{
-	/* hard to implement with XIM */
-	FIXME("(): stub\n");
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return FALSE;
-}
-
-/***********************************************************************
- *		ImmGetIMEFileNameA (IMM32.@)
- */
-UINT WINAPI ImmGetIMEFileNameA(HKL hkl, LPSTR lpszFileName, UINT uBufLen)
-{
-	/* don't need to implement unless use native drivers */
-	FIXME("(): stub\n");
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return 0;
-}
-
-/***********************************************************************
- *		ImmGetIMEFileNameW (IMM32.@)
- */
-UINT WINAPI ImmGetIMEFileNameW(HKL hkl, LPWSTR lpszFileName, UINT uBufLen)
-{
-	/* don't need to implement unless use native drivers */
-	FIXME("(): stub\n");
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return 0;
-}
-
-/***********************************************************************
- *		ImmGetProperty (IMM32.@)
- */
-DWORD WINAPI ImmGetProperty(HKL hkl, DWORD fdwIndex)
-{
-	/* hard to implement with XIM */
-	FIXME("(): stub\n");
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return 0;
-}
-
-/***********************************************************************
- *		ImmEnumRegisterWordA (IMM32.@)
- */
-UINT WINAPI ImmEnumRegisterWordA(
-	HKL hkl, REGISTERWORDENUMPROCA lpfnEnumProc,
-	LPCSTR lpszReading, DWORD dwStyle,
-	LPCSTR lpszRegister, LPVOID lpData)
-{
-	/* hard to implement with XIM */
-	FIXME("(): stub\n");
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return 0;
-}
-
-/***********************************************************************
- *		ImmEnumRegisterWordW (IMM32.@)
- */
-UINT WINAPI ImmEnumRegisterWordW(
-	HKL hkl, REGISTERWORDENUMPROCW lpfnEnumProc,
-	LPCWSTR lpszReading, DWORD dwStyle,
-	LPCWSTR lpszRegister, LPVOID lpData)
-{
-	/* hard to implement with XIM */
-	FIXME("(): stub\n");
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return 0;
-}
-
-/***********************************************************************
- *		ImmGetRegisterWordStyleA (IMM32.@)
- */
-UINT WINAPI ImmGetRegisterWordStyleA(
-	HKL hkl, UINT nItem, LPSTYLEBUFA lpStyleBuf)
-{
-	/* hard to implement with XIM */
-	FIXME("(): stub\n");
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return 0;
-}
-
-/***********************************************************************
- *		ImmGetRegisterWordStyleW (IMM32.@)
- */
-UINT WINAPI ImmGetRegisterWordStyleW(
-	HKL hkl, UINT nItem, LPSTYLEBUFW lpStyleBuf)
-{
-	/* hard to implement with XIM */
-	FIXME("(): stub\n");
-	SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-	return 0;
-}
-
-/***********************************************************************
- *		IMM32_HeapAlloc (internal)
- */
-LPVOID IMM32_HeapAlloc( DWORD dwFlags, DWORD dwSize )
-{
-	return HeapAlloc( GetProcessHeap(), dwFlags, dwSize );
-}
-
-/***********************************************************************
- *		IMM32_HeapReAlloc (internal)
- */
-LPVOID IMM32_HeapReAlloc( DWORD dwFlags, LPVOID lpv, DWORD dwSize )
-{
-	if ( lpv == NULL )
-		return IMM32_HeapAlloc( dwFlags, dwSize );
-	return HeapReAlloc( GetProcessHeap(), dwFlags, lpv, dwSize );
-}
-
-/***********************************************************************
- *		IMM32_HeapFree (internal)
- */
-void IMM32_HeapFree( LPVOID lpv )
-{
-	if ( lpv != NULL )
-		HeapFree( GetProcessHeap(), 0, lpv );
-}
-
-
-/***********************************************************************
- *		IMM32_strlenAtoW (internal)
- */
-INT IMM32_strlenAtoW( LPCSTR lpstr )
-{
-	INT	len;
-
-	len = MultiByteToWideChar( CP_ACP, 0, lpstr, -1, NULL, 0 );
-	return ( len > 0 ) ? (len-1) : 0;
-}
-
-/***********************************************************************
- *		IMM32_strlenWtoA (internal)
- */
-INT IMM32_strlenWtoA( LPCWSTR lpwstr )
-{
-	INT	len;
-
-	len = WideCharToMultiByte( CP_ACP, 0, lpwstr, -1,
-				   NULL, 0, NULL, NULL );
-	return ( len > 0 ) ? (len-1) : 0;
-}
-
-/***********************************************************************
- *		IMM32_strncpyAtoW (internal)
- */
-LPWSTR IMM32_strncpyAtoW( LPWSTR lpwstr, LPCSTR lpstr, INT wbuflen )
-{
-	INT	len;
-
-	len = MultiByteToWideChar( CP_ACP, 0, lpstr, -1, lpwstr, wbuflen );
-	if ( len == 0 )
-		*lpwstr = 0;
-	return lpwstr;
-}
-
-/***********************************************************************
- *		IMM32_strncpyWtoA (internal)
- */
-LPSTR IMM32_strncpyWtoA( LPSTR lpstr, LPCWSTR lpwstr, INT abuflen )
-{
-	INT	len;
-
-	len = WideCharToMultiByte( CP_ACP, 0, lpwstr, -1,
-				   lpstr, abuflen, NULL, NULL );
-	if ( len == 0 )
-		*lpstr = 0;
-	return lpstr;
-}
-
-/***********************************************************************
- *		IMM32_strdupAtoW (internal)
- */
-LPWSTR IMM32_strdupAtoW( LPCSTR lpstr )
-{
-	INT len;
-	LPWSTR lpwstr = NULL;
-
-	len = IMM32_strlenAtoW( lpstr );
-	if ( len > 0 )
-	{
-		lpwstr = (LPWSTR)IMM32_HeapAlloc( 0, sizeof(WCHAR)*(len+1) );
-		if ( lpwstr != NULL )
-			(void)IMM32_strncpyAtoW( lpwstr, lpstr, len+1 );
-	}
-
-	return lpwstr;
-}
-
-/***********************************************************************
- *		IMM32_strdupWtoA (internal)
- */
-LPSTR IMM32_strdupWtoA( LPCWSTR lpwstr )
-{
-	INT len;
-	LPSTR lpstr = NULL;
-
-	len = IMM32_strlenWtoA( lpwstr );
-	if ( len > 0 )
-	{
-		lpstr = (LPSTR)IMM32_HeapAlloc( 0, sizeof(CHAR)*(len+1) );
-		if ( lpstr != NULL )
-			(void)IMM32_strncpyWtoA( lpstr, lpwstr, len+1 );
-	}
-
-	return lpstr;
-}
-
-
-#define	IMM32_MOVEABLEMEM_LOCK_MAX	((DWORD)0xffffffff)
-
-typedef struct IMM32_tagMOVEABLEMEM
-{
-	DWORD				dwLockCount;
-	DWORD				dwSize;
-	LPVOID				lpvMem;
-} IMM32_MOVEABLEMEM;
-
-/***********************************************************************
- *		IMM32_MoveableAlloc (internal)
- */
-IMM32_MOVEABLEMEM* IMM32_MoveableAlloc( DWORD dwHeapFlags, DWORD dwHeapSize )
-{
-	IMM32_MOVEABLEMEM*	lpMoveable;
-
-	lpMoveable = (IMM32_MOVEABLEMEM*)
-		IMM32_HeapAlloc( 0, sizeof( IMM32_MOVEABLEMEM ) );
-	if ( lpMoveable != NULL )
-	{
-		lpMoveable->dwLockCount = 0;
-		lpMoveable->dwSize = dwHeapSize;
-		lpMoveable->lpvMem = NULL;
-
-		if ( dwHeapSize > 0 )
-		{
-			lpMoveable->lpvMem =
-				IMM32_HeapAlloc( dwHeapFlags, dwHeapSize );
-			if ( lpMoveable->lpvMem == NULL )
-			{
-				IMM32_HeapFree( lpMoveable );
-				lpMoveable = NULL;
-			}
-		}
-	}
-
-	return lpMoveable;
-}
-
-/***********************************************************************
- *		IMM32_MoveableFree (internal)
- */
-void IMM32_MoveableFree( IMM32_MOVEABLEMEM* lpMoveable )
-{
-	IMM32_HeapFree( lpMoveable->lpvMem );
-	IMM32_HeapFree( lpMoveable );
-}
-
-/***********************************************************************
- *		IMM32_MoveableReAlloc (internal)
- */
-BOOL IMM32_MoveableReAlloc( IMM32_MOVEABLEMEM* lpMoveable,
-			    DWORD dwHeapFlags, DWORD dwHeapSize )
-{
-	LPVOID	lpv;
-
-	if ( dwHeapSize > 0 )
-	{
-		if ( lpMoveable->dwLockCount > 0 )
-			dwHeapFlags |= HEAP_REALLOC_IN_PLACE_ONLY;
-		lpv = IMM32_HeapReAlloc( dwHeapFlags,
-					 lpMoveable->lpvMem, dwHeapSize );
-		if ( lpv == NULL )
-			return FALSE;
-	}
-	else
-	{
-		IMM32_HeapFree( lpMoveable->lpvMem );
-		lpv = NULL;
-	}
-
-	lpMoveable->dwSize = dwHeapSize;
-	lpMoveable->lpvMem = lpv;
-
-	return TRUE;
-}
-
-/***********************************************************************
- *		IMM32_MoveableLock (internal)
- */
-LPVOID IMM32_MoveableLock( IMM32_MOVEABLEMEM* lpMoveable )
-{
-	if ( lpMoveable->dwLockCount == IMM32_MOVEABLEMEM_LOCK_MAX )
-	{
-		ERR( "lock count is 0xffffffff\n" );
-	}
-	else
-	{
-		lpMoveable->dwLockCount ++;
-	}
-
-	return lpMoveable->lpvMem;
-}
-
-/***********************************************************************
- *		IMM32_MoveableUnlock (internal)
- */
-BOOL IMM32_MoveableUnlock( IMM32_MOVEABLEMEM* lpMoveable )
-{
-	if ( lpMoveable->dwLockCount == 0 )
-		return FALSE;
-
-	if ( --lpMoveable->dwLockCount > 0 )
-		return TRUE;
-
-	return FALSE;
-}
-
-/***********************************************************************
- *		IMM32_MoveableGetLockCount (internal)
- */
-DWORD IMM32_MoveableGetLockCount( IMM32_MOVEABLEMEM* lpMoveable )
-{
-	return lpMoveable->dwLockCount;
-}
-
-/***********************************************************************
- *		IMM32_MoveableGetSize (internal)
- */
-DWORD IMM32_MoveableGetSize( IMM32_MOVEABLEMEM* lpMoveable )
-{
-	return lpMoveable->dwSize;
-}
-
-/***********************************************************************
- *		ImmCreateIMCC (IMM32.@)
- */
-HIMCC WINAPI ImmCreateIMCC(DWORD dwSize)
-{
-	IMM32_MOVEABLEMEM* lpMoveable;
-
-	TRACE("(%lu)\n", dwSize);
-
-	/* implemented but don't need to implement unless use native drivers */
-
-	lpMoveable = IMM32_MoveableAlloc( HEAP_ZERO_MEMORY, dwSize );
-	if ( lpMoveable == NULL )
-	{
-		SetLastError(ERROR_OUTOFMEMORY);
-		return (HIMCC)NULL;
-	}
-
-	return (HIMCC)lpMoveable;
-}
-
-/***********************************************************************
- *		ImmDestroyIMCC (IMM32.@)
- */
-HIMCC WINAPI ImmDestroyIMCC(HIMCC hIMCC)
-{
-	TRACE("(0x%08x)\n", (unsigned)hIMCC);
-
-	/* implemented but don't need to implement unless use native drivers */
-
-	IMM32_MoveableFree( (IMM32_MOVEABLEMEM*)hIMCC );
-	return (HIMCC)NULL;
-}
-
-/***********************************************************************
- *		ImmLockIMCC (IMM32.@)
- */
-LPVOID WINAPI ImmLockIMCC(HIMCC hIMCC)
-{
-	TRACE("(0x%08x)\n", (unsigned)hIMCC);
-
-	/* implemented but don't need to implement unless use native drivers */
-
-	return IMM32_MoveableLock( (IMM32_MOVEABLEMEM*)hIMCC );
-}
-
-/***********************************************************************
- *		ImmUnlockIMCC (IMM32.@)
- */
-BOOL WINAPI ImmUnlockIMCC(HIMCC hIMCC)
-{
-	TRACE("(0x%08x)\n", (unsigned)hIMCC);
-
-	/* implemented but don't need to implement unless use native drivers */
-
-	return IMM32_MoveableUnlock( (IMM32_MOVEABLEMEM*)hIMCC );
-}
-
-/***********************************************************************
- *		ImmGetIMCCLockCount (IMM32.@)
- */
-DWORD WINAPI ImmGetIMCCLockCount(HIMCC hIMCC)
-{
-	TRACE("(0x%08x)\n", (unsigned)hIMCC);
-
-	/* implemented but don't need to implement unless use native drivers */
-
-	return IMM32_MoveableGetLockCount( (IMM32_MOVEABLEMEM*)hIMCC );
-}
-
-/***********************************************************************
- *		ImmReSizeIMCC (IMM32.@)
- */
-HIMCC WINAPI ImmReSizeIMCC(HIMCC hIMCC, DWORD dwSize)
-{
-	TRACE("(0x%08x,%lu)\n", (unsigned)hIMCC, dwSize);
-
-	/* implemented but don't need to implement unless use native drivers */
-
-	if ( !IMM32_MoveableReAlloc( (IMM32_MOVEABLEMEM*)hIMCC,
-				     HEAP_ZERO_MEMORY, dwSize ) )
-	{
-		SetLastError(ERROR_OUTOFMEMORY);
-		return (HIMCC)NULL;
-	}
-
-	return hIMCC;
-}
-
-/***********************************************************************
- *		ImmGetIMCCSize (IMM32.@)
- */
-DWORD WINAPI ImmGetIMCCSize(HIMCC hIMCC)
-{
-	TRACE("(0x%08x)\n", (unsigned)hIMCC);
-
-	/* implemented but don't need to implement unless use native drivers */
-
-	return IMM32_MoveableGetSize( (IMM32_MOVEABLEMEM*)hIMCC );
-}
-
-
-/***********************************************************************
- *		IMM32_DllMain
- */
-BOOL WINAPI IMM32_DllMain(
-	HINSTANCE hInstDLL,
-	DWORD fdwReason,
-	LPVOID lpvReserved )
-{
-	switch ( fdwReason )
-	{
-	case DLL_PROCESS_ATTACH:
-		break;
-	case DLL_PROCESS_DETACH:
-		break;
-	case DLL_THREAD_ATTACH:
-		break;
-	case DLL_THREAD_DETACH:
-		break;
-	}
-
-	return TRUE;
-}
diff --git a/dlls/imm32/imm32.spec b/dlls/imm32/imm32.spec
index 19edb74..a87e526 100644
--- a/dlls/imm32/imm32.spec
+++ b/dlls/imm32/imm32.spec
@@ -1,34 +1,25 @@
 name	imm32
 type	win32
-init	IMM32_DllMain
 
-import	user32.dll
-# NOTE: gdi32.dll will be required for implementing IME global class.
-import	gdi32.dll
-import	advapi32.dll
 import	kernel32.dll
 import	ntdll.dll
 
 debug_channels (imm)
 
 @ stdcall ImmAssociateContext(long long) ImmAssociateContext
-@ stub ImmAssociateContextEx
-@ stub ImmConfigureIME
 @ stdcall ImmConfigureIMEA(long long long ptr) ImmConfigureIMEA
 @ stdcall ImmConfigureIMEW(long long long ptr) ImmConfigureIMEW
 @ stdcall ImmCreateContext() ImmCreateContext
-@ stdcall ImmCreateIMCC(long) ImmCreateIMCC
-@ stdcall ImmCreateSoftKeyboard(long long long long) ImmCreateSoftKeyboard
+@ stub ImmCreateIMCC
+@ stub ImmCreateSoftKeyboard
 @ stdcall ImmDestroyContext(long) ImmDestroyContext
-@ stdcall ImmDestroyIMCC(long) ImmDestroyIMCC
-@ stdcall ImmDestroySoftKeyboard(long) ImmDestroySoftKeyboard
-@ stdcall ImmDisableIME(long) ImmDisableIME
-@ stub ImmEnumInputContext
+@ stub ImmDestroyIMCC
+@ stub ImmDestroySoftKeyboard
 @ stdcall ImmEnumRegisterWordA(long ptr str long str ptr) ImmEnumRegisterWordA
 @ stdcall ImmEnumRegisterWordW(long ptr wstr long wstr ptr) ImmEnumRegisterWordW
 @ stdcall ImmEscapeA(long long long ptr) ImmEscapeA
 @ stdcall ImmEscapeW(long long long ptr) ImmEscapeW
-@ stdcall ImmGenerateMessage(long) ImmGenerateMessage
+@ stub ImmGenerateMessage
 @ stdcall ImmGetCandidateListA(long long ptr long) ImmGetCandidateListA
 @ stdcall ImmGetCandidateListCountA(long ptr) ImmGetCandidateListCountA
 @ stdcall ImmGetCandidateListCountW(long ptr) ImmGetCandidateListCountW
@@ -48,10 +39,10 @@
 @ stdcall ImmGetDescriptionW(long wstr long) ImmGetDescriptionW
 @ stdcall ImmGetGuideLineA(long long str long) ImmGetGuideLineA
 @ stdcall ImmGetGuideLineW(long long wstr long) ImmGetGuideLineW
-@ stdcall ImmGetHotKey(long ptr ptr ptr) ImmGetHotKey
-@ stdcall ImmGetIMCCLockCount(long) ImmGetIMCCLockCount
-@ stdcall ImmGetIMCCSize(long) ImmGetIMCCSize
-@ stdcall ImmGetIMCLockCount(long) ImmGetIMCLockCount
+@ stub ImmGetHotKey
+@ stub ImmGetIMCCLockCount
+@ stub ImmGetIMCCSize
+@ stub ImmGetIMCLockCount
 @ stdcall ImmGetIMEFileNameA(long str long) ImmGetIMEFileNameA
 @ stdcall ImmGetIMEFileNameW(long wstr long) ImmGetIMEFileNameW
 @ stdcall ImmGetOpenStatus(long) ImmGetOpenStatus
@@ -65,15 +56,13 @@
 @ stdcall ImmIsIME(long) ImmIsIME
 @ stdcall ImmIsUIMessageA(long long long long) ImmIsUIMessageA
 @ stdcall ImmIsUIMessageW(long long long long) ImmIsUIMessageW
-@ stdcall ImmLockIMC(long) ImmLockIMC
-@ stdcall ImmLockIMCC(long) ImmLockIMCC
+@ stub ImmLockIMC
+@ stub ImmLockIMCC
 @ stdcall ImmNotifyIME(long long long long) ImmNotifyIME
-@ stdcall ImmReSizeIMCC(long long) ImmReSizeIMCC
+@ stub ImmReSizeIMCC
 @ stdcall ImmRegisterWordA(long str long str) ImmRegisterWordA
 @ stdcall ImmRegisterWordW(long wstr long wstr) ImmRegisterWordW
 @ stdcall ImmReleaseContext(long long) ImmReleaseContext
-@ stub ImmRequestMessageA
-@ stub ImmRequestMessageW
 @ stdcall ImmSetCandidateWindow(long ptr) ImmSetCandidateWindow
 @ stdcall ImmSetCompositionFontA(long ptr) ImmSetCompositionFontA
 @ stdcall ImmSetCompositionFontW(long ptr) ImmSetCompositionFontW
@@ -81,13 +70,12 @@
 @ stdcall ImmSetCompositionStringW(long long ptr long ptr long) ImmSetCompositionStringW
 @ stdcall ImmSetCompositionWindow(long ptr) ImmSetCompositionWindow
 @ stdcall ImmSetConversionStatus(long long long) ImmSetConversionStatus
-@ stdcall ImmSetHotKey(long long long long) ImmSetHotKey
+@ stub ImmSetHotKey
 @ stdcall ImmSetOpenStatus(long long) ImmSetOpenStatus
 @ stdcall ImmSetStatusWindowPos(long ptr) ImmSetStatusWindowPos
-@ stdcall ImmShowSoftKeyboard(long long) ImmShowSoftKeyboard
+@ stub ImmShowSoftKeyboard
 @ stdcall ImmSimulateHotKey(long long) ImmSimulateHotKey
-@ stdcall ImmUnlockIMC(long) ImmUnlockIMC
-@ stdcall ImmUnlockIMCC(long) ImmUnlockIMCC
+@ stub ImmUnlockIMC
+@ stub ImmUnlockIMCC
 @ stdcall ImmUnregisterWordA(long str long str) ImmUnregisterWordA
 @ stdcall ImmUnregisterWordW(long wstr long wstr) ImmUnregisterWordW
-@ stub SKWndProcT1
diff --git a/dlls/imm32/immddk.h b/dlls/imm32/immddk.h
deleted file mode 100644
index e2f1780..0000000
--- a/dlls/imm32/immddk.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * DDK version of imm.h - imm.h for IMM and IME.
- *
- * Copyright 2000 Hidenori Takeshima
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_IMMDDK_H
-#define __WINE_IMMDDK_H
-
-#include "imm.h"
-
-/*** IMM and IME Structures ***/
-
-typedef struct tagINPUTCONTEXT {
-	HWND			hWnd;
-	BOOL			fOpen;
-	POINT			ptStatusWndPos;
-	POINT			ptSoftKbdPos;
-	DWORD			fdwConversion;
-	DWORD			fdwSentence;
-	union {
-		LOGFONTA		A;
-		LOGFONTW		W;
-	}			lfFont;
-	COMPOSITIONFORM		cfCompForm;
-	CANDIDATEFORM		cfCandForm[4];
-	HIMCC			hCompStr;
-	HIMCC			hCandInfo;
-	HIMCC			hGuideLine;
-	HIMCC			hPrivate;
-	DWORD			dwNumMsgBuf;
-	HIMCC			hMsgBuf;
-	DWORD			fdwInit;
-	DWORD			dwReserve[3];
-} INPUTCONTEXT, * LPINPUTCONTEXT;
-
-typedef struct tagCOMPOSITIONSTRING
-{
-	DWORD	dwSize;
-	DWORD	dwCompReadAttrLen;
-	DWORD	dwCompReadAttrOffset;
-	DWORD	dwCompReadClauseLen;
-	DWORD	dwCompReadClauseOffset;
-	DWORD	dwCompReadStrLen;
-	DWORD	dwCompReadStrOffset;
-	DWORD	dwCompAttrLen;
-	DWORD	dwCompAttrOffset;
-	DWORD	dwCompClauseLen;
-	DWORD	dwCompClauseOffset;
-	DWORD	dwCompStrLen;
-	DWORD	dwCompStrOffset;
-	DWORD	dwCursorPos;
-	DWORD	dwDeltaStart;
-	DWORD	dwResultReadClauseLen;
-	DWORD	dwResultReadClauseOffset;
-	DWORD	dwResultReadStrLen;
-	DWORD	dwResultReadStrOffset;
-	DWORD	dwResultClauseLen;
-	DWORD	dwResultClauseOffset;
-	DWORD	dwResultStrLen;
-	DWORD	dwResultStrOffset;
-	DWORD	dwPrivateSize;
-	DWORD	dwPrivateOffset;
-} COMPOSITIONSTRING, * LPCOMPOSITIONSTRING;
-
-typedef struct tagCANDIDATEINFO
-{
-	DWORD		dwSize;
-	DWORD		dwCount;
-	DWORD		dwOffset[32];
-	DWORD		dwPrivateSize;
-	DWORD		dwPrivateOffset;
-} CANDIDATEINFO, * LPCANDIDATEINFO;
-
-typedef struct tagGUIDELINE
-{
-	DWORD	dwSize;
-	DWORD	dwLevel;
-	DWORD	dwIndex;
-	DWORD	dwStrLen;
-	DWORD	dwStrOffset;
-	DWORD	dwPrivateSize;
-	DWORD	dwPrivateOffset;
-} GUIDELINE, * LPGUIDELINE;
-
-
-
-/*** IME Management Structures ***/
-
-typedef struct tagIMEINFO
-{
-	DWORD	dwPrivateDataSize;
-	DWORD	fdwProperty;
-	DWORD	fdwConversionCaps;
-	DWORD	fdwSentenceCaps;
-	DWORD	fdwUICaps;
-	DWORD	fdwSCSCaps;
-	DWORD	fdwSelectCaps;
-} IMEINFO, * LPIMEINFO;
-
-
-/*** IME Communication Structures ***/
-
-typedef struct tagSOFTKBDDATA
-{
-	UINT	uCount;
-	WORD	wCode[1][256];
-} SOFTKBDDATA, * LPSOFTKBDDATA;
-
-
-/*** IMM DDK APIs ***/
-
-HWND WINAPI ImmCreateSoftKeyboard(UINT uType, HWND hwndOwner, int x, int y);
-BOOL WINAPI ImmDestroySoftKeyboard(HWND hwndSoftKeyboard);
-BOOL WINAPI ImmShowSoftKeyboard(HWND hwndSoftKeyboard, int nCmdShow);
-
-LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC);
-BOOL WINAPI ImmUnlockIMC(HIMC hIMC);
-DWORD WINAPI ImmGetIMCLockCount(HIMC hIMC);
-
-HIMCC WINAPI ImmCreateIMCC(DWORD dwSize);
-HIMCC WINAPI ImmDestroyIMCC(HIMCC hIMCC);
-LPVOID WINAPI ImmLockIMCC(HIMCC hIMCC);
-BOOL WINAPI ImmUnlockIMCC(HIMCC hIMCC);
-DWORD WINAPI ImmGetIMCCLockCount(HIMCC hIMCC);
-HIMCC WINAPI ImmReSizeIMCC(HIMCC hIMCC, DWORD dwSize);
-DWORD WINAPI ImmGetIMCCSize(HIMCC hIMCC);
-
-
-#endif  /* __WINE_IMMDDK_H */
diff --git a/dlls/quartz/Makefile.in b/dlls/quartz/Makefile.in
index 5cd714b..3e51f71 100644
--- a/dlls/quartz/Makefile.in
+++ b/dlls/quartz/Makefile.in
@@ -3,57 +3,12 @@
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = quartz.dll
-EXTRALIBS = $(LIBUUID) @JPEGLIB@
 
 LDDLLFLAGS = @LDDLLFLAGS@
 SYMBOLFILE = $(MODULE).tmp.o
 
 C_SRCS = \
-	acmwrap.c \
-	amundoc.c \
-	asyncsrc.c \
-	audioutl.c \
-	audren.c \
-	avidec.c \
-	aviparse.c \
-	basefilt.c \
-	basepin.c \
-	capgraph.c \
-	complist.c \
-	csconv.c \
-	devenum.c \
-	enumunk.c \
-	fgevent.c \
-	fgpass.c \
-	fgraph.c \
-	filesink.c \
-	fmap.c \
-	ifgraph.c \
-	ijgdec.c \
-	imcntl.c \
-	imfilter.c \
-	impos.c \
-	imseek.c \
-	iunk.c \
-	main.c \
-	memalloc.c \
-	midparse.c \
-	mjpgdec.c \
-	mpadec.c \
-	mpgparse.c \
-	mpvdec.c \
-	mtype.c \
-	parser.c \
-	qtdec.c \
-	qtparse.c \
-	regsvr.c \
-	sample.c \
-	seekpass.c \
-	sysclock.c \
-	videoblt.c \
-	vidren.c \
-	wavparse.c \
-	xform.c
+	main.c
 
 @MAKE_DLL_RULES@
 
diff --git a/dlls/quartz/README b/dlls/quartz/README
deleted file mode 100644
index 95f2cd7..0000000
--- a/dlls/quartz/README
+++ /dev/null
@@ -1,32 +0,0 @@
-
-notes for implementing quartz.dll
-
-FIXMEs
-
-  - deadlocks
-  - merge some C sources
-  - implement filters
-  - color-space converter
-  - sort active filters in filter graph
-  - plug-in distributors
-  - seeking
-  - ACM wrapper
-  - mciqtz(mci driver for quartz)
-  - renderers
-  - notifications
-
-known issues
-
-  - all FIXMEs.
-
-known/unconfirmed patent issues
-
-  - Some kinds of implementation of asynchronous I/O
-  - ASF
-  - WM?
-  - MPEG-1/video
-  - MPEG-1/audio
-  - DVD navigator
-  - AC3 parser
-
-
diff --git a/dlls/quartz/acmwrap.c b/dlls/quartz/acmwrap.c
deleted file mode 100644
index dbc4cb4..0000000
--- a/dlls/quartz/acmwrap.c
+++ /dev/null
@@ -1,695 +0,0 @@
-/*
- * Implements ACM Wrapper(CLSID_ACMWrapper).
- *
- *	FIXME - stub
- *	FIXME - no encoding
- *
- * Copyright (C) 2002 Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "msacm.h"
-#include "strmif.h"
-#include "control.h"
-#include "amvideo.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "xform.h"
-#include "mtype.h"
-
-
-static const WCHAR ACMWrapper_FilterName[] =
-{'A','C','M',' ','W','r','a','p','p','e','r',0};
-
-
-typedef struct CACMWrapperImpl
-{
-	HACMSTREAM	has;
-	WAVEFORMATEX*	pwfxIn;
-	AM_MEDIA_TYPE*	pmtOuts;
-	DWORD		cOuts;
-	BYTE*		pConvBuf;
-	DWORD		cbConvBlockSize;
-	DWORD		cbConvCached;
-	DWORD		cbConvAllocated;
-} CACMWrapperImpl;
-
-
-static
-void ACMWrapper_CleanupMTypes( CACMWrapperImpl* This )
-{
-	DWORD	n;
-
-	if ( This->pmtOuts == NULL ) return;
-	for ( n = 0; n < This->cOuts; n++ )
-	{
-		QUARTZ_MediaType_Free( &This->pmtOuts[n] );
-	}
-	QUARTZ_FreeMem( This->pmtOuts );
-	This->pmtOuts = NULL;
-	This->cOuts = 0;
-}
-
-static
-void ACMWrapper_CleanupConvBuf( CACMWrapperImpl* This )
-{
-	if ( This->pConvBuf != NULL )
-	{
-		QUARTZ_FreeMem( This->pConvBuf );
-		This->pConvBuf = NULL;
-	}
-	This->cbConvBlockSize = 0;
-	This->cbConvCached = 0;
-	This->cbConvAllocated = 0;
-}
-
-static
-const WAVEFORMATEX* ACMWrapper_GetAudioFmt( const AM_MEDIA_TYPE* pmt )
-{
-	const WAVEFORMATEX*	pwfx;
-
-	if ( !IsEqualGUID( &pmt->majortype, &MEDIATYPE_Audio ) )
-		return NULL;
-	if ( !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_NULL ) &&
-		 !QUARTZ_MediaSubType_IsFourCC( &pmt->subtype ) )
-		return NULL;
-	if ( !IsEqualGUID( &pmt->formattype, &FORMAT_WaveFormatEx ) )
-		return NULL;
-	if ( pmt->pbFormat == NULL ||
-		 pmt->cbFormat < (sizeof(WAVEFORMATEX)-sizeof(WORD)) )
-		return NULL;
-
-	pwfx = (const WAVEFORMATEX*)pmt->pbFormat;
-
-	if ( pwfx->wFormatTag != 1 && pmt->cbFormat < sizeof(WAVEFORMATEX) )
-		return NULL;
-
-	return pwfx;
-}
-
-static
-HRESULT ACMWrapper_SetupAudioFmt(
-	AM_MEDIA_TYPE* pmt,
-	DWORD cbFormat, WORD wFormatTag, DWORD dwBlockAlign )
-{
-	ZeroMemory( pmt, sizeof(AM_MEDIA_TYPE) );
-	memcpy( &pmt->majortype, &MEDIATYPE_Audio, sizeof(GUID) );
-	QUARTZ_MediaSubType_FromFourCC( &pmt->subtype, (DWORD)wFormatTag );
-	pmt->bFixedSizeSamples = 1;
-	pmt->bTemporalCompression = 1;
-	pmt->lSampleSize = dwBlockAlign;
-	memcpy( &pmt->formattype, &FORMAT_WaveFormatEx, sizeof(GUID) );
-	pmt->pUnk = NULL;
-	pmt->cbFormat = cbFormat;
-	pmt->pbFormat = (BYTE*)CoTaskMemAlloc( cbFormat );
-	if ( pmt->pbFormat == NULL )
-		return E_OUTOFMEMORY;
-
-	return S_OK;
-}
-
-static
-void ACMWrapper_FillFmtPCM(
-	WAVEFORMATEX* pwfxOut,
-	const WAVEFORMATEX* pwfxIn,
-	WORD wBitsPerSampOut )
-{
-	pwfxOut->wFormatTag = 1;
-	pwfxOut->nChannels = pwfxIn->nChannels;
-	pwfxOut->nSamplesPerSec = pwfxIn->nSamplesPerSec;
-	pwfxOut->nAvgBytesPerSec = ((DWORD)pwfxIn->nSamplesPerSec * (DWORD)pwfxIn->nChannels * (DWORD)wBitsPerSampOut) >> 3;
-	pwfxOut->nBlockAlign = (pwfxIn->nChannels * wBitsPerSampOut) >> 3;
-	pwfxOut->wBitsPerSample = wBitsPerSampOut;
-	pwfxOut->cbSize = 0;
-}
-
-static
-BOOL ACMWrapper_IsSupported(
-	WAVEFORMATEX* pwfxOut,
-	WAVEFORMATEX* pwfxIn )
-{
-	MMRESULT	mr;
-
-	mr = acmStreamOpen(
-		NULL,(HACMDRIVER)NULL,
-		pwfxIn,pwfxOut,NULL,
-		0,0,ACM_STREAMOPENF_QUERY);
-	if ( mr == ACMERR_NOTPOSSIBLE )
-		mr = acmStreamOpen(
-			NULL,(HACMDRIVER)NULL,
-			pwfxIn,pwfxOut,NULL,
-			0,0,ACM_STREAMOPENF_NONREALTIME|ACM_STREAMOPENF_QUERY);
-	return !!(mr == MMSYSERR_NOERROR);
-}
-
-static
-HRESULT ACMWrapper_StreamOpen(
-	HACMSTREAM* phas,
-	WAVEFORMATEX* pwfxOut,
-	WAVEFORMATEX* pwfxIn )
-{
-	HACMSTREAM	has = (HACMSTREAM)NULL;
-	MMRESULT	mr;
-
-	mr = acmStreamOpen(
-		&has,(HACMDRIVER)NULL,
-		pwfxIn,pwfxOut,NULL,
-		0,0,0);
-	if ( mr == ACMERR_NOTPOSSIBLE )
-		mr = acmStreamOpen(
-			&has,(HACMDRIVER)NULL,
-			pwfxIn,pwfxOut,NULL,
-			0,0,ACM_STREAMOPENF_NONREALTIME);
-	if ( mr != MMSYSERR_NOERROR )
-	{
-		if ( mr == MMSYSERR_NOMEM )
-			return E_OUTOFMEMORY;
-		return E_FAIL;
-	}
-
-	*phas = has;
-	return S_OK;
-}
-
-/***************************************************************************
- *
- *	CACMWrapperImpl methods
- *
- */
-
-static void ACMWrapper_Close( CACMWrapperImpl* This )
-{
-	if ( This->has != (HACMSTREAM)NULL )
-	{
-		acmStreamReset( This->has, 0 );
-		acmStreamClose( This->has, 0 );
-		This->has = (HACMSTREAM)NULL;
-	}
-}
-
-static HRESULT ACMWrapper_Init( CTransformBaseImpl* pImpl )
-{
-	CACMWrapperImpl*	This = pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This != NULL )
-		return NOERROR;
-
-	This = (CACMWrapperImpl*)QUARTZ_AllocMem( sizeof(CACMWrapperImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This, sizeof(CACMWrapperImpl) );
-	pImpl->m_pUserData = This;
-
-	/* construct */
-	This->has = (HACMSTREAM)NULL;
-	This->pwfxIn = NULL;
-	This->pmtOuts = NULL;
-	This->cOuts = 0;
-	This->pConvBuf = NULL;
-
-	return S_OK;
-}
-
-static HRESULT ACMWrapper_Cleanup( CTransformBaseImpl* pImpl )
-{
-	CACMWrapperImpl*	This = pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	/* destruct */
-	ACMWrapper_Close( This );
-	QUARTZ_FreeMem( This->pwfxIn );
-	ACMWrapper_CleanupMTypes( This );
-	ACMWrapper_CleanupConvBuf( This );
-
-	QUARTZ_FreeMem( This );
-	pImpl->m_pUserData = NULL;
-
-	return S_OK;
-}
-
-static HRESULT ACMWrapper_CheckMediaType( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut )
-{
-	CACMWrapperImpl*	This = pImpl->m_pUserData;
-	const WAVEFORMATEX*	pwfxIn;
-	const WAVEFORMATEX*	pwfxOut;
-	WAVEFORMATEX	wfx;
-
-	TRACE("(%p)\n",This);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	pwfxIn = ACMWrapper_GetAudioFmt(pmtIn);
-	if ( pwfxIn == NULL ||
-	     pwfxIn->wFormatTag == 0 ||
-	     pwfxIn->wFormatTag == 1 )
-	{
-		TRACE("pwfxIn is not a compressed audio\n");
-		return E_FAIL;
-	}
-	if ( pmtOut != NULL )
-	{
-		pwfxOut = ACMWrapper_GetAudioFmt(pmtOut);
-		if ( pwfxOut == NULL || pwfxOut->wFormatTag != 1 )
-		{
-			TRACE("pwfxOut is not a linear PCM\n");
-			return E_FAIL;
-		}
-		if ( pwfxIn->nChannels != pwfxOut->nChannels ||
-		     pwfxIn->nSamplesPerSec != pwfxOut->nSamplesPerSec )
-		{
-			TRACE("nChannels or nSamplesPerSec is not matched\n");
-			return E_FAIL;
-		}
-		if ( !ACMWrapper_IsSupported((WAVEFORMATEX*)pwfxOut,(WAVEFORMATEX*)pwfxIn) )
-		{
-			TRACE("specified formats are not supported by ACM\n");
-			return E_FAIL;
-		}
-	}
-	else
-	{
-		ACMWrapper_FillFmtPCM(&wfx,pwfxIn,8);
-		if ( ACMWrapper_IsSupported(&wfx,(WAVEFORMATEX*)pwfxIn) )
-		{
-			TRACE("compressed audio - can be decoded to 8bit\n");
-			return S_OK;
-		}
-		ACMWrapper_FillFmtPCM(&wfx,pwfxIn,16);
-		if ( ACMWrapper_IsSupported(&wfx,(WAVEFORMATEX*)pwfxIn) )
-		{
-			TRACE("compressed audio - can be decoded to 16bit\n");
-			return S_OK;
-		}
-
-		TRACE("unhandled audio %04x\n",(unsigned)pwfxIn->wFormatTag);
-		return E_FAIL;
-	}
-
-	return S_OK;
-}
-
-static HRESULT ACMWrapper_GetOutputTypes( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE** ppmtAcceptTypes, ULONG* pcAcceptTypes )
-{
-	CACMWrapperImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-	const WAVEFORMATEX*	pwfxIn;
-	AM_MEDIA_TYPE*		pmtTry;
-	WAVEFORMATEX*		pwfxTry;
-
-	FIXME("(%p)\n",This);
-	hr = ACMWrapper_CheckMediaType( pImpl, pmtIn, NULL );
-	if ( FAILED(hr) )
-		return hr;
-	pwfxIn = (const WAVEFORMATEX*)pmtIn->pbFormat;
-
-	ACMWrapper_CleanupMTypes( This );
-	This->pmtOuts = QUARTZ_AllocMem( sizeof(AM_MEDIA_TYPE) * 2 );
-	if ( This->pmtOuts == NULL )
-		return E_OUTOFMEMORY;
-	This->cOuts = 0;
-
-	pmtTry = &This->pmtOuts[This->cOuts];
-	hr = ACMWrapper_SetupAudioFmt(
-		pmtTry,
-		sizeof(WAVEFORMATEX), 1,
-		(pwfxIn->nChannels * 8) >> 3 );
-	if ( FAILED(hr) ) goto err;
-	pwfxTry = (WAVEFORMATEX*)pmtTry->pbFormat;
-	ACMWrapper_FillFmtPCM( pwfxTry, pwfxIn, 8 );
-	if ( ACMWrapper_IsSupported( pwfxTry, (WAVEFORMATEX*)pwfxIn ) )
-		This->cOuts ++;
-
-        pmtTry = &This->pmtOuts[This->cOuts];
-        hr = ACMWrapper_SetupAudioFmt(
-                pmtTry,
-                sizeof(WAVEFORMATEX), 1,
-                (pwfxIn->nChannels * 16) >> 3 );
-        if ( FAILED(hr) ) goto err;
-        pwfxTry = (WAVEFORMATEX*)pmtTry->pbFormat;
-        ACMWrapper_FillFmtPCM( pwfxTry, pwfxIn, 16 );
-        if ( ACMWrapper_IsSupported( pwfxTry, (WAVEFORMATEX*)pwfxIn ) )
-                This->cOuts ++;
-
-	*ppmtAcceptTypes = This->pmtOuts;
-	*pcAcceptTypes = This->cOuts;
-
-	return S_OK;
-err:
-	ACMWrapper_CleanupMTypes( This );
-	return hr;
-}
-
-static HRESULT
-ACMWrapper_GetConvBufSize(
-	CTransformBaseImpl* pImpl,
-	CACMWrapperImpl* This,
-	DWORD* pcbInput, DWORD* pcbOutput,
-	const AM_MEDIA_TYPE* pmtOut, const AM_MEDIA_TYPE* pmtIn )
-{
-        HRESULT hr;
-        const WAVEFORMATEX* pwfxIn;
-        const WAVEFORMATEX* pwfxOut;
-        HACMSTREAM      has;
-        MMRESULT        mr;
-        DWORD   cbInput;
-        DWORD   cbOutput;
-
-        if ( This == NULL )
-                return E_UNEXPECTED;
-
-        hr = ACMWrapper_CheckMediaType( pImpl, pmtIn, pmtOut );
-        if ( FAILED(hr) )
-                return hr;
-        pwfxIn = (const WAVEFORMATEX*)pmtIn->pbFormat;
-        pwfxOut = (const WAVEFORMATEX*)pmtOut->pbFormat;
-
-        hr = ACMWrapper_StreamOpen(
-                &has, (WAVEFORMATEX*)pwfxOut, (WAVEFORMATEX*)pwfxIn );
-        if ( FAILED(hr) )
-                return hr;
-
-        cbInput = (pwfxIn->nAvgBytesPerSec + pwfxIn->nBlockAlign - 1) / pwfxIn->nBlockAlign * pwfxIn->nBlockAlign;
-        cbOutput = 0;
-
-        mr = acmStreamSize( has, cbInput, &cbOutput, ACM_STREAMSIZEF_SOURCE );
-        acmStreamClose( has, 0 );
-
-        if ( mr != MMSYSERR_NOERROR || cbOutput == 0 )
-                return E_FAIL;
-        TRACE("size %lu -> %lu\n", cbInput, cbOutput);
-
-	if ( pcbInput != NULL ) *pcbInput = cbInput;
-	if ( pcbOutput != NULL ) *pcbOutput = cbOutput;
-
-	return S_OK;
-}
-
-
-static HRESULT ACMWrapper_GetAllocProp( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, ALLOCATOR_PROPERTIES* pProp, BOOL* pbTransInPlace, BOOL* pbTryToReuseSample )
-{
-	CACMWrapperImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-	DWORD	cbOutput;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = ACMWrapper_GetConvBufSize(
-		pImpl, This, NULL, &cbOutput, pmtOut, pmtIn );
-	if ( FAILED(hr) )
-		return hr;
-
-	pProp->cBuffers = 1;
-	pProp->cbBuffer = cbOutput;
-
-	*pbTransInPlace = FALSE;
-	*pbTryToReuseSample = FALSE;
-
-	return S_OK;
-}
-
-static HRESULT ACMWrapper_BeginTransform( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, BOOL bReuseSample )
-{
-	CACMWrapperImpl*	This = pImpl->m_pUserData;
-	HRESULT	hr;
-	const WAVEFORMATEX*	pwfxIn;
-	const WAVEFORMATEX*	pwfxOut;
-	DWORD	cbInput;
-
-	FIXME("(%p,%p,%p,%d)\n",This,pmtIn,pmtOut,bReuseSample);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	ACMWrapper_Close( This );
-	ACMWrapper_CleanupMTypes( This );
-	ACMWrapper_CleanupConvBuf( This );
-
-	hr = ACMWrapper_GetConvBufSize(
-		pImpl, This, &cbInput, NULL, pmtOut, pmtIn );
-        if ( FAILED(hr) )
-                return hr;
-        pwfxIn = (const WAVEFORMATEX*)pmtIn->pbFormat;
-        pwfxOut = (const WAVEFORMATEX*)pmtOut->pbFormat;
-
-	This->pConvBuf = (BYTE*)QUARTZ_AllocMem( cbInput );
-	if ( This->pConvBuf == NULL )
-		return E_OUTOFMEMORY;
-	This->cbConvBlockSize = pwfxIn->nBlockAlign;
-	This->cbConvCached = 0;
-	This->cbConvAllocated = cbInput;
-
-	hr = ACMWrapper_StreamOpen(
-		&This->has,
-		(WAVEFORMATEX*)pmtOut, (WAVEFORMATEX*)pmtIn );
-	if ( FAILED(hr) )
-		return E_FAIL;
-
-	return S_OK;
-}
-
-static HRESULT ACMWrapper_Convert(
-	CTransformBaseImpl* pImpl,
-	CACMWrapperImpl* This,
-	BYTE* pbSrc, DWORD cbSrcLen,
-	DWORD dwConvertFlags )
-{
-        ACMSTREAMHEADER ash;
-	MMRESULT mr;
-	HRESULT hr = E_FAIL;
-	DWORD	dwConvCallFlags;
-	DWORD	cb;
-	IMediaSample*	pSampOut = NULL;
-	BYTE*	pOutBuf;
-	LONG	lOutBufLen;
-
-	TRACE("()\n");
-
-	if ( This->pConvBuf == NULL )
-		return E_UNEXPECTED;
-
-	dwConvCallFlags = ACM_STREAMCONVERTF_BLOCKALIGN;
-	if ( dwConvertFlags & ACM_STREAMCONVERTF_START )
-	{
-		dwConvCallFlags |= ACM_STREAMCONVERTF_START;
-		This->cbConvCached = 0;
-	}
-
-	while ( 1 )
-	{
-		cb = cbSrcLen + This->cbConvCached;
-		if ( cb > This->cbConvAllocated )
-			cb = This->cbConvAllocated;
-		cb -= This->cbConvCached;
-		if ( cb > 0 )
-		{
-			memcpy( This->pConvBuf+This->cbConvCached,
-				pbSrc, cb );
-			pbSrc += cb;
-			cbSrcLen -= cb;
-			This->cbConvCached += cb;
-		}
-
-		cb = This->cbConvCached / This->cbConvBlockSize * This->cbConvBlockSize;
-		if ( cb == 0 )
-		{
-			if ( dwConvertFlags & ACM_STREAMCONVERTF_END )
-			{
-				dwConvCallFlags &= ~ACM_STREAMCONVERTF_BLOCKALIGN;
-				dwConvCallFlags |= ACM_STREAMCONVERTF_END;
-				cb = This->cbConvCached;
-			}
-			if ( cb == 0 )
-			{
-				hr = S_OK;
-				break;
-			}
-		}
-
-		ZeroMemory( &ash, sizeof(ash) );
-		ash.cbStruct = sizeof(ash);
-		ash.pbSrc = This->pConvBuf;
-		ash.cbSrcLength = cb;
-
-		hr = IMemAllocator_GetBuffer(
-			pImpl->m_pOutPinAllocator,
-			&pSampOut, NULL, NULL, 0 );
-		if ( FAILED(hr) )
-			break;
-		hr = IMediaSample_SetSyncPoint( pSampOut, TRUE );
-		if ( FAILED(hr) )
-			break;
-		if ( dwConvCallFlags & ACM_STREAMCONVERTF_START )
-		{
-			hr = IMediaSample_SetDiscontinuity( pSampOut, TRUE );
-			if ( FAILED(hr) )
-				break;
-		}
-		hr = IMediaSample_GetPointer( pSampOut, &pOutBuf );
-		if ( FAILED(hr) )
-			break;
-		lOutBufLen = IMediaSample_GetSize( pSampOut );
-		if ( lOutBufLen <= 0 )
-		{
-			hr = E_FAIL;
-			break;
-		}
-		ash.pbDst = pOutBuf;
-		ash.cbDstLength = lOutBufLen;
-
-		mr = acmStreamPrepareHeader(
-			This->has, &ash, 0 );
-		if ( mr == MMSYSERR_NOERROR )
-			mr = acmStreamConvert(
-				This->has, &ash, dwConvCallFlags );
-		if ( mr == MMSYSERR_NOERROR )
-			mr = acmStreamUnprepareHeader(
-				This->has, &ash, 0 );
-		if ( mr != MMSYSERR_NOERROR || ash.cbSrcLengthUsed == 0 )
-		{
-			hr = E_FAIL;
-			break;
-		}
-
-		if ( ash.cbDstLengthUsed > 0 )
-		{
-			hr = IMediaSample_SetActualDataLength( pSampOut, ash.cbDstLengthUsed );
-			if ( FAILED(hr) )
-				break;
-
-			hr = CPinBaseImpl_SendSample(
-				&pImpl->pOutPin->pin,
-				pSampOut );
-			if ( FAILED(hr) )
-				break;
-		}
-
-		if ( This->cbConvCached == ash.cbSrcLengthUsed )
-		{
-			This->cbConvCached = 0;
-		}
-		else
-		{
-			This->cbConvCached -= ash.cbSrcLengthUsed;
-			memmove( This->pConvBuf,
-				 This->pConvBuf + ash.cbSrcLengthUsed,
-				 This->cbConvCached );
-		}
-
-		IMediaSample_Release( pSampOut ); pSampOut = NULL;
-		dwConvCallFlags &= ~ACM_STREAMCONVERTF_START;
-	}
-
-	if ( pSampOut != NULL )
-		IMediaSample_Release( pSampOut );
-
-	return hr;
-}
-
-static HRESULT ACMWrapper_ProcessReceive( CTransformBaseImpl* pImpl, IMediaSample* pSampIn )
-{
-	CACMWrapperImpl*	This = pImpl->m_pUserData;
-	BYTE*	pDataIn = NULL;
-	LONG	lDataInLen;
-	HRESULT hr;
-	DWORD	dwConvFlags = 0;
-
-	FIXME("(%p)\n",This);
-
-	if ( This == NULL || This->has == (HACMSTREAM)NULL )
-		return E_UNEXPECTED;
-
-	hr = IMediaSample_GetPointer( pSampIn, &pDataIn );
-	if ( FAILED(hr) )
-		return hr;
-	lDataInLen = IMediaSample_GetActualDataLength( pSampIn );
-	if ( lDataInLen < 0 )
-		return E_FAIL;
-	if ( IMediaSample_IsDiscontinuity( pSampIn ) != S_OK )
-		dwConvFlags |= ACM_STREAMCONVERTF_START;
-
-	return ACMWrapper_Convert(
-		pImpl, This, pDataIn, (DWORD)lDataInLen,
-		dwConvFlags );
-}
-
-static HRESULT ACMWrapper_EndTransform( CTransformBaseImpl* pImpl )
-{
-	CACMWrapperImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-	DWORD	dwConvFlags = ACM_STREAMCONVERTF_END;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = ACMWrapper_Convert(
-		pImpl, This, NULL, 0,
-		dwConvFlags );
-
-	ACMWrapper_Close( This );
-	ACMWrapper_CleanupMTypes( This );
-	ACMWrapper_CleanupConvBuf( This );
-
-	return hr;
-}
-
-static const TransformBaseHandlers transhandlers =
-{
-	ACMWrapper_Init,
-	ACMWrapper_Cleanup,
-	ACMWrapper_CheckMediaType,
-	ACMWrapper_GetOutputTypes,
-	ACMWrapper_GetAllocProp,
-	ACMWrapper_BeginTransform,
-	ACMWrapper_ProcessReceive,
-	NULL,
-	ACMWrapper_EndTransform,
-};
-
-HRESULT QUARTZ_CreateACMWrapper(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateTransformBase(
-		punkOuter,ppobj,
-		&CLSID_ACMWrapper,
-		ACMWrapper_FilterName,
-		NULL, NULL,
-		&transhandlers );
-}
-
-
diff --git a/dlls/quartz/amundoc.c b/dlls/quartz/amundoc.c
deleted file mode 100644
index 860f70e..0000000
--- a/dlls/quartz/amundoc.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include <math.h>
-#include "windef.h"
-#include "wine/obj_base.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-
-/***********************************************************************
- *		AmpFactorToDB (QUARTZ.@)
- *
- *	undocumented.
- *  converting from Amp to dB?
- *
- */
-LONG WINAPI QUARTZ_AmpFactorToDB( LONG amp )
-{
-	LONG	dB;
-
-	TRACE( "(%ld)\n", amp );
-
-	if ( amp <= 0 || amp > 65536 )
-		return 0;
-
-	dB = (LONG)(2000.0 * log10((double)amp / 65536.0) + 0.5);
-	if ( dB >= 0 ) dB = 0;
-	if ( dB < -10000 ) dB = -10000;
-
-	return dB;
-}
-
-/***********************************************************************
- *		DBToAmpFactor (QUARTZ.@)
- *
- *	undocumented.
- *  converting from dB to Amp?
- */
-LONG WINAPI QUARTZ_DBToAmpFactor( LONG dB )
-{
-	LONG	amp;
-
-	TRACE( "(%ld)\n", dB );
-
-	if ( dB >= 0 )
-		return 65535;
-	if ( dB < -10000 )
-		return 0;
-
-	amp = (LONG)(pow(10.0,dB / 2000.0) * 65536.0 + 0.5);
-	if ( amp <= 0 ) amp = 1;
-	if ( amp >= 65536 ) amp = 65535;
-
-	return amp;
-}
-
diff --git a/dlls/quartz/asyncsrc.c b/dlls/quartz/asyncsrc.c
deleted file mode 100644
index a132fae..0000000
--- a/dlls/quartz/asyncsrc.c
+++ /dev/null
@@ -1,1153 +0,0 @@
-/*
- * Implements Asynchronous File/URL Source.
- *
- * FIXME - URL source is not implemented yet.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "asyncsrc.h"
-#include "memalloc.h"
-
-
-
-const WCHAR QUARTZ_wszAsyncFileSourceName[] =
-{'F','i','l','e',' ','S','o','u','r','c','e',' ','(','A','s','y','n','c','.',')',0};
-const WCHAR QUARTZ_wszAsyncFileSourcePinName[] =
-{'O','u','t',0};
-const WCHAR QUARTZ_wszAsyncURLSourceName[] =
-{'F','i','l','e',' ','S','o','u','r','c','e',' ','(','U','R','L',')',0};
-const WCHAR QUARTZ_wszAsyncURLSourcePinName[] =
-{'O','u','t',0};
-
-
-
-/***************************************************************************
- *
- *	CAsyncReaderImpl internal methods
- *
- */
-
-static
-AsyncSourceRequest* CAsyncReaderImpl_AllocRequest( CAsyncReaderImpl* This )
-{
-	AsyncSourceRequest* pReq;
-
-	EnterCriticalSection( &This->m_csFree );
-	pReq = This->m_pFreeFirst;
-	if ( pReq != NULL )
-		This->m_pFreeFirst = pReq->pNext;
-	LeaveCriticalSection( &This->m_csFree );
-
-	if ( pReq == NULL )
-	{
-		pReq = (AsyncSourceRequest*)QUARTZ_AllocMem(
-			sizeof(AsyncSourceRequest) );
-		if ( pReq == NULL )
-			return NULL;
-	}
-
-	pReq->pNext = NULL;
-	pReq->pSample = NULL;
-	pReq->dwContext = 0;
-	pReq->hr = E_FAIL;
-
-	return pReq;
-}
-
-static
-void CAsyncReaderImpl_FreeRequest( CAsyncReaderImpl* This, AsyncSourceRequest* pReq, BOOL bReleaseMem )
-{
-	if ( !bReleaseMem )
-	{
-		EnterCriticalSection( &This->m_csFree );
-		pReq->pNext = This->m_pFreeFirst;
-		This->m_pFreeFirst = pReq;
-		LeaveCriticalSection( &This->m_csFree );
-	}
-	else
-	{
-		QUARTZ_FreeMem( pReq );
-	}
-}
-
-static
-AsyncSourceRequest* CAsyncReaderImpl_GetReply( CAsyncReaderImpl* This )
-{
-	AsyncSourceRequest*	pReq;
-
-	EnterCriticalSection( &This->m_csReply );
-	pReq = This->m_pReplyFirst;
-	if ( pReq != NULL )
-		This->m_pReplyFirst = pReq->pNext;
-	LeaveCriticalSection( &This->m_csReply );
-
-	return pReq;
-}
-
-static
-void CAsyncReaderImpl_PostReply( CAsyncReaderImpl* This, AsyncSourceRequest* pReq )
-{
-	/* FIXME - add to tail */
-	EnterCriticalSection( &This->m_csReply );
-	pReq->pNext = This->m_pReplyFirst;
-	This->m_pReplyFirst = pReq;
-	LeaveCriticalSection( &This->m_csReply );
-}
-
-static
-void CAsyncReaderImpl_ReleaseReqList( CAsyncReaderImpl* This, AsyncSourceRequest** ppReq, BOOL bReleaseMem )
-{
-	AsyncSourceRequest* pReq;
-	AsyncSourceRequest* pReqNext;
-
-	TRACE("(%p,%p,%d)\n",This,*ppReq,bReleaseMem);
-	pReq = *ppReq; *ppReq = NULL;
-	while ( pReq != NULL )
-	{
-		pReqNext = pReq->pNext;
-		CAsyncReaderImpl_FreeRequest(This,pReq,bReleaseMem);
-		pReq = pReqNext;
-	}
-}
-
-/***************************************************************************
- *
- *	CAsyncReaderImpl methods
- *
- */
-
-static HRESULT WINAPI
-CAsyncReaderImpl_fnQueryInterface(IAsyncReader* iface,REFIID riid,void** ppobj)
-{
-	ICOM_THIS(CAsyncReaderImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-CAsyncReaderImpl_fnAddRef(IAsyncReader* iface)
-{
-	ICOM_THIS(CAsyncReaderImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->punkControl);
-}
-
-static ULONG WINAPI
-CAsyncReaderImpl_fnRelease(IAsyncReader* iface)
-{
-	ICOM_THIS(CAsyncReaderImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->punkControl);
-}
-
-static HRESULT WINAPI
-CAsyncReaderImpl_fnRequestAllocator(IAsyncReader* iface,IMemAllocator* pAlloc,ALLOCATOR_PROPERTIES* pProp,IMemAllocator** ppAllocActual)
-{
-	ICOM_THIS(CAsyncReaderImpl,iface);
-	HRESULT hr;
-	ALLOCATOR_PROPERTIES	propActual;
-	IUnknown* punk = NULL;
-
-	TRACE("(%p)->(%p,%p,%p)\n",This,pAlloc,pProp,ppAllocActual);
-
-	if ( pAlloc == NULL || pProp == NULL || ppAllocActual == NULL )
-		return E_POINTER;
-
-	IMemAllocator_AddRef(pAlloc);
-	hr = IMemAllocator_SetProperties( pAlloc, pProp, &propActual );
-	if ( SUCCEEDED(hr) )
-	{
-		*ppAllocActual = pAlloc;
-		return S_OK;
-	}
-	IMemAllocator_Release(pAlloc);
-
-	hr = QUARTZ_CreateMemoryAllocator(NULL,(void**)&punk);
-	if ( FAILED(hr) )
-		return hr;
-	hr = IUnknown_QueryInterface( punk, &IID_IMemAllocator, (void**)&pAlloc );
-	IUnknown_Release(punk);
-	if ( FAILED(hr) )
-		return hr;
-
-	hr = IMemAllocator_SetProperties( pAlloc, pProp, &propActual );
-	if ( SUCCEEDED(hr) )
-	{
-		*ppAllocActual = pAlloc;
-		return S_OK;
-	}
-	IMemAllocator_Release(pAlloc);
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CAsyncReaderImpl_fnRequest(IAsyncReader* iface,IMediaSample* pSample,DWORD_PTR dwContext)
-{
-	ICOM_THIS(CAsyncReaderImpl,iface);
-	AsyncSourceRequest* pReq;
-	HRESULT hr = NOERROR;
-
-	/*
-	 * before implementing asynchronous I/O,
-	 * please check patents by yourself
-	 */
-	WARN("(%p,%p,%u) no async I/O\n",This,pSample,dwContext);
-
-	hr = IAsyncReader_SyncReadAligned(iface,pSample);
-	if ( FAILED(hr) )
-		return hr;
-	pReq = CAsyncReaderImpl_AllocRequest(This);
-	if ( pReq == NULL )
-		return E_OUTOFMEMORY;
-	pReq->pSample = pSample;
-	pReq->dwContext = dwContext;
-	pReq->hr = hr;
-	CAsyncReaderImpl_PostReply( This, pReq );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-CAsyncReaderImpl_fnWaitForNext(IAsyncReader* iface,DWORD dwTimeout,IMediaSample** ppSample,DWORD_PTR* pdwContext)
-{
-	ICOM_THIS(CAsyncReaderImpl,iface);
-	HRESULT hr = NOERROR;
-	AsyncSourceRequest*	pReq;
-
-	/*
-	 * before implementing asynchronous I/O,
-	 * please check patents by yourself
-	 */
-	WARN("(%p)->(%lu,%p,%p) no async I/O\n",This,dwTimeout,ppSample,pdwContext);
-	EnterCriticalSection( &This->m_csRequest );
-	if ( This->m_bInFlushing )
-		hr = VFW_E_TIMEOUT;
-	LeaveCriticalSection( &This->m_csRequest );
-
-	if ( hr == NOERROR )
-	{
-		pReq = CAsyncReaderImpl_GetReply(This);
-		if ( pReq != NULL )
-		{
-			*ppSample = pReq->pSample;
-			*pdwContext = pReq->dwContext;
-			hr = pReq->hr;
-		}
-		else
-		{
-			hr = VFW_E_TIMEOUT;
-		}
-	}
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CAsyncReaderImpl_fnSyncReadAligned(IAsyncReader* iface,IMediaSample* pSample)
-{
-	ICOM_THIS(CAsyncReaderImpl,iface);
-	HRESULT hr;
-	REFERENCE_TIME	rtStart;
-	REFERENCE_TIME	rtEnd;
-	BYTE*	pData = NULL;
-	LONGLONG	llStart;
-	LONG	lLength;
-	LONG	lActual;
-
-	TRACE("(%p)->(%p)\n",This,pSample);
-
-	hr = IMediaSample_GetPointer(pSample,&pData);
-	if ( SUCCEEDED(hr) )
-		hr = IMediaSample_GetTime(pSample,&rtStart,&rtEnd);
-	if ( FAILED(hr) )
-		return hr;
-
-	llStart = rtStart / QUARTZ_TIMEUNITS;
-	lLength = (LONG)(rtEnd / QUARTZ_TIMEUNITS - rtStart / QUARTZ_TIMEUNITS);
-	lActual = 0;
-	if ( lLength > IMediaSample_GetSize(pSample) )
-	{
-		FIXME("invalid length\n");
-		return E_FAIL;
-	}
-
-	EnterCriticalSection( &This->m_csReader );
-	hr = This->pSource->m_pHandler->pRead( This->pSource, llStart, lLength, pData, &lActual, (HANDLE)NULL );
-	LeaveCriticalSection( &This->m_csReader );
-
-	if ( hr == NOERROR )
-	{
-		hr = IMediaSample_SetActualDataLength(pSample,lActual);
-		if ( hr == S_OK )
-		{
-			rtStart = llStart * QUARTZ_TIMEUNITS;
-			rtEnd = (llStart + lActual) * QUARTZ_TIMEUNITS;
-			hr = IMediaSample_SetTime(pSample,&rtStart,&rtEnd);
-		}
-		if ( hr == S_OK && lActual != lLength )
-			hr = S_FALSE;
-	}
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CAsyncReaderImpl_fnSyncRead(IAsyncReader* iface,LONGLONG llPosStart,LONG lLength,BYTE* pbBuf)
-{
-	ICOM_THIS(CAsyncReaderImpl,iface);
-	HRESULT hr;
-	LONG lActual;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csReader );
-	hr = This->pSource->m_pHandler->pRead( This->pSource, llPosStart, lLength, pbBuf, &lActual, (HANDLE)NULL );
-	LeaveCriticalSection( &This->m_csReader );
-
-	if ( hr == S_OK && lLength != lActual )
-		hr = S_FALSE;
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CAsyncReaderImpl_fnLength(IAsyncReader* iface,LONGLONG* pllTotal,LONGLONG* pllAvailable)
-{
-	ICOM_THIS(CAsyncReaderImpl,iface);
-	HRESULT hr;
-
-	TRACE("(%p)->()\n",This);
-
-	hr = This->pSource->m_pHandler->pGetLength( This->pSource, pllTotal, pllAvailable );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CAsyncReaderImpl_fnBeginFlush(IAsyncReader* iface)
-{
-	ICOM_THIS(CAsyncReaderImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csRequest );
-	This->m_bInFlushing = TRUE;
-	CAsyncReaderImpl_ReleaseReqList(This,&This->m_pReplyFirst,FALSE);
-	LeaveCriticalSection( &This->m_csRequest );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-CAsyncReaderImpl_fnEndFlush(IAsyncReader* iface)
-{
-	ICOM_THIS(CAsyncReaderImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csRequest );
-	This->m_bInFlushing = FALSE;
-	LeaveCriticalSection( &This->m_csRequest );
-
-	return NOERROR;
-}
-
-
-static ICOM_VTABLE(IAsyncReader) iasyncreader =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	CAsyncReaderImpl_fnQueryInterface,
-	CAsyncReaderImpl_fnAddRef,
-	CAsyncReaderImpl_fnRelease,
-
-	/* IAsyncReader fields */
-	CAsyncReaderImpl_fnRequestAllocator,
-	CAsyncReaderImpl_fnRequest,
-	CAsyncReaderImpl_fnWaitForNext,
-	CAsyncReaderImpl_fnSyncReadAligned,
-	CAsyncReaderImpl_fnSyncRead,
-	CAsyncReaderImpl_fnLength,
-	CAsyncReaderImpl_fnBeginFlush,
-	CAsyncReaderImpl_fnEndFlush,
-};
-
-HRESULT CAsyncReaderImpl_InitIAsyncReader(
-	CAsyncReaderImpl* This, IUnknown* punkControl,
-	CAsyncSourceImpl* pSource )
-{
-	TRACE("(%p,%p)\n",This,punkControl);
-
-	if ( punkControl == NULL )
-	{
-		ERR( "punkControl must not be NULL\n" );
-		return E_INVALIDARG;
-	}
-
-	ICOM_VTBL(This) = &iasyncreader;
-	This->punkControl = punkControl;
-	This->pSource = pSource;
-	This->m_bInFlushing = FALSE;
-	This->m_pReplyFirst = NULL;
-	This->m_pFreeFirst = NULL;
-
-	InitializeCriticalSection( &This->m_csReader );
-	InitializeCriticalSection( &This->m_csRequest );
-	InitializeCriticalSection( &This->m_csReply );
-	InitializeCriticalSection( &This->m_csFree );
-
-	return NOERROR;
-}
-
-void CAsyncReaderImpl_UninitIAsyncReader(
-	CAsyncReaderImpl* This )
-{
-	TRACE("(%p) enter\n",This);
-
-	CAsyncReaderImpl_ReleaseReqList(This,&This->m_pReplyFirst,TRUE);
-	CAsyncReaderImpl_ReleaseReqList(This,&This->m_pFreeFirst,TRUE);
-
-	DeleteCriticalSection( &This->m_csReader );
-	DeleteCriticalSection( &This->m_csRequest );
-	DeleteCriticalSection( &This->m_csReply );
-	DeleteCriticalSection( &This->m_csFree );
-
-	TRACE("(%p) leave\n",This);
-}
-
-/***************************************************************************
- *
- *	CFileSourceFilterImpl
- *
- */
-
-static HRESULT WINAPI
-CFileSourceFilterImpl_fnQueryInterface(IFileSourceFilter* iface,REFIID riid,void** ppobj)
-{
-	ICOM_THIS(CFileSourceFilterImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-CFileSourceFilterImpl_fnAddRef(IFileSourceFilter* iface)
-{
-	ICOM_THIS(CFileSourceFilterImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->punkControl);
-}
-
-static ULONG WINAPI
-CFileSourceFilterImpl_fnRelease(IFileSourceFilter* iface)
-{
-	ICOM_THIS(CFileSourceFilterImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->punkControl);
-}
-
-static HRESULT WINAPI
-CFileSourceFilterImpl_fnLoad(IFileSourceFilter* iface,LPCOLESTR pFileName,const AM_MEDIA_TYPE* pmt)
-{
-	ICOM_THIS(CFileSourceFilterImpl,iface);
-	HRESULT hr;
-
-	TRACE("(%p)->(%s,%p)\n",This,debugstr_w(pFileName),pmt);
-
-	if ( pFileName == NULL )
-		return E_POINTER;
-
-	if ( This->m_pwszFileName != NULL )
-		return E_UNEXPECTED;
-
-	This->m_cbFileName = sizeof(WCHAR)*(lstrlenW(pFileName)+1);
-	This->m_pwszFileName = (WCHAR*)QUARTZ_AllocMem( This->m_cbFileName );
-	if ( This->m_pwszFileName == NULL )
-		return E_OUTOFMEMORY;
-	memcpy( This->m_pwszFileName, pFileName, This->m_cbFileName );
-
-	if ( pmt != NULL )
-	{
-		hr = QUARTZ_MediaType_Copy( &This->m_mt, pmt );
-		if ( FAILED(hr) )
-			goto err;
-	}
-	else
-	{
-		ZeroMemory( &This->m_mt, sizeof(AM_MEDIA_TYPE) );
-		memcpy( &This->m_mt.majortype, &MEDIATYPE_Stream, sizeof(GUID) );
-		memcpy( &This->m_mt.subtype, &MEDIASUBTYPE_NULL, sizeof(GUID) );
-		This->m_mt.lSampleSize = 1;
-		memcpy( &This->m_mt.formattype, &FORMAT_None, sizeof(GUID) );
-	}
-
-	hr = This->pSource->m_pHandler->pLoad( This->pSource, pFileName );
-	if ( FAILED(hr) )
-		goto err;
-
-	This->pSource->pPin->pin.pmtAcceptTypes = &This->m_mt;
-	This->pSource->pPin->pin.cAcceptTypes = 1;
-
-	return NOERROR;
-err:;
-	return hr;
-}
-
-static HRESULT WINAPI
-CFileSourceFilterImpl_fnGetCurFile(IFileSourceFilter* iface,LPOLESTR* ppFileName,AM_MEDIA_TYPE* pmt)
-{
-	ICOM_THIS(CFileSourceFilterImpl,iface);
-	HRESULT hr = E_NOTIMPL;
-
-	TRACE("(%p)->(%p,%p)\n",This,ppFileName,pmt);
-
-	if ( ppFileName == NULL || pmt == NULL )
-		return E_POINTER;
-
-	if ( This->m_pwszFileName == NULL )
-		return E_FAIL;
-
-	hr = QUARTZ_MediaType_Copy( pmt, &This->m_mt );
-	if ( FAILED(hr) )
-		return hr;
-
-	*ppFileName = (WCHAR*)CoTaskMemAlloc( This->m_cbFileName );
-	if ( *ppFileName == NULL )
-	{
-		QUARTZ_MediaType_Free(pmt);
-		ZeroMemory( pmt, sizeof(AM_MEDIA_TYPE) );
-		return E_OUTOFMEMORY;
-	}
-
-	memcpy( *ppFileName, This->m_pwszFileName, This->m_cbFileName );
-
-	return NOERROR;
-}
-
-static ICOM_VTABLE(IFileSourceFilter) ifilesource =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	CFileSourceFilterImpl_fnQueryInterface,
-	CFileSourceFilterImpl_fnAddRef,
-	CFileSourceFilterImpl_fnRelease,
-	/* IFileSourceFilter fields */
-	CFileSourceFilterImpl_fnLoad,
-	CFileSourceFilterImpl_fnGetCurFile,
-};
-
-HRESULT CFileSourceFilterImpl_InitIFileSourceFilter(
-	CFileSourceFilterImpl* This, IUnknown* punkControl,
-	CAsyncSourceImpl* pSource,
-	CRITICAL_SECTION* pcsFileSource )
-{
-	TRACE("(%p,%p)\n",This,punkControl);
-
-	if ( punkControl == NULL )
-	{
-		ERR( "punkControl must not be NULL\n" );
-		return E_INVALIDARG;
-	}
-
-	ICOM_VTBL(This) = &ifilesource;
-	This->punkControl = punkControl;
-	This->pSource = pSource;
-	This->pcsFileSource = pcsFileSource;
-	This->m_pwszFileName = NULL;
-	This->m_cbFileName = 0;
-	ZeroMemory( &This->m_mt, sizeof(AM_MEDIA_TYPE) );
-
-	return NOERROR;
-}
-
-void CFileSourceFilterImpl_UninitIFileSourceFilter(
-	CFileSourceFilterImpl* This )
-{
-	TRACE("(%p)\n",This);
-
-	This->pSource->m_pHandler->pCleanup( This->pSource );
-	if ( This->m_pwszFileName != NULL )
-		QUARTZ_FreeMem( This->m_pwszFileName );
-	QUARTZ_MediaType_Free( &This->m_mt );
-}
-
-/***************************************************************************
- *
- *	CAsyncSourcePinImpl methods
- *
- */
-
-
-static HRESULT CAsyncSourcePinImpl_OnPreConnect( CPinBaseImpl* pImpl, IPin* pPin )
-{
-	CAsyncSourcePinImpl_THIS(pImpl,pin);
-
-	TRACE("(%p,%p)\n",This,pPin);
-
-	This->bAsyncReaderQueried = FALSE;
-
-	return NOERROR;
-}
-
-static HRESULT CAsyncSourcePinImpl_OnPostConnect( CPinBaseImpl* pImpl, IPin* pPin )
-{
-	CAsyncSourcePinImpl_THIS(pImpl,pin);
-
-	TRACE("(%p,%p)\n",This,pPin);
-
-	if ( !This->bAsyncReaderQueried )
-		return E_FAIL;
-
-	return NOERROR;
-}
-
-static HRESULT CAsyncSourcePinImpl_OnDisconnect( CPinBaseImpl* pImpl )
-{
-	CAsyncSourcePinImpl_THIS(pImpl,pin);
-
-	TRACE("(%p)\n",This);
-
-	This->bAsyncReaderQueried = FALSE;
-
-	return NOERROR;
-}
-
-static HRESULT CAsyncSourcePinImpl_CheckMediaType( CPinBaseImpl* pImpl, const AM_MEDIA_TYPE* pmt )
-{
-	CAsyncSourcePinImpl_THIS(pImpl,pin);
-
-	TRACE("(%p,%p)\n",This,pmt);
-	if ( pmt == NULL )
-		return E_POINTER;
-
-	if ( !IsEqualGUID( &pmt->majortype, &MEDIATYPE_Stream ) )
-		return E_FAIL;
-
-	return NOERROR;
-}
-
-static const CBasePinHandlers outputpinhandlers =
-{
-	CAsyncSourcePinImpl_OnPreConnect, /* pOnPreConnect */
-	CAsyncSourcePinImpl_OnPostConnect, /* pOnPostConnect */
-	CAsyncSourcePinImpl_OnDisconnect, /* pOnDisconnect */
-	CAsyncSourcePinImpl_CheckMediaType, /* pCheckMediaType */
-	NULL, /* pQualityNotify */
-	NULL, /* pReceive */
-	NULL, /* pReceiveCanBlock */
-	NULL, /* pEndOfStream */
-	NULL, /* pBeginFlush */
-	NULL, /* pEndFlush */
-	NULL, /* pNewSegment */
-};
-
-/***************************************************************************
- *
- *	CAsyncSourceImpl methods
- *
- */
-
-static HRESULT CAsyncSourceImpl_OnStop( CBaseFilterImpl* pImpl )
-{
-	CAsyncSourceImpl_THIS(pImpl,basefilter);
-	CAsyncReaderImpl*	pReader;
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->pPin != NULL )
-	{
-		pReader = &This->pPin->async;
-		CAsyncReaderImpl_ReleaseReqList(pReader,&pReader->m_pReplyFirst,FALSE);
-	}
-
-	return NOERROR;
-}
-
-static const CBaseFilterHandlers filterhandlers =
-{
-	NULL, /* pOnActive */
-	NULL, /* pOnInactive */
-	CAsyncSourceImpl_OnStop, /* pOnStop */
-};
-
-/***************************************************************************
- *
- *	new/delete CAsyncSourceImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry FilterIFEntries[] =
-{
-  { &IID_IPersist, offsetof(CAsyncSourceImpl,basefilter)-offsetof(CAsyncSourceImpl,unk) },
-  { &IID_IMediaFilter, offsetof(CAsyncSourceImpl,basefilter)-offsetof(CAsyncSourceImpl,unk) },
-  { &IID_IBaseFilter, offsetof(CAsyncSourceImpl,basefilter)-offsetof(CAsyncSourceImpl,unk) },
-  { &IID_IFileSourceFilter, offsetof(CAsyncSourceImpl,filesrc)-offsetof(CAsyncSourceImpl,unk) },
-};
-
-static void QUARTZ_DestroyAsyncSource(IUnknown* punk)
-{
-	CAsyncSourceImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->pPin != NULL )
-	{
-		IUnknown_Release(This->pPin->unk.punkControl);
-		This->pPin = NULL;
-	}
-
-	This->m_pHandler->pCleanup( This );
-
-	CFileSourceFilterImpl_UninitIFileSourceFilter(&This->filesrc);
-	CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
-
-	DeleteCriticalSection( &This->csFilter );
-}
-
-HRESULT QUARTZ_CreateAsyncSource(
-	IUnknown* punkOuter,void** ppobj,
-	const CLSID* pclsidAsyncSource,
-	LPCWSTR pwszAsyncSourceName,
-	LPCWSTR pwszOutPinName,
-	const AsyncSourceHandlers* pHandler )
-{
-	CAsyncSourceImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	This = (CAsyncSourceImpl*)
-		QUARTZ_AllocObj( sizeof(CAsyncSourceImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-
-	This->pPin = NULL;
-	This->m_pHandler = pHandler;
-	This->m_pUserData = NULL;
-
-	QUARTZ_IUnkInit( &This->unk, punkOuter );
-
-	hr = CBaseFilterImpl_InitIBaseFilter(
-		&This->basefilter,
-		This->unk.punkControl,
-		pclsidAsyncSource,
-		pwszAsyncSourceName,
-		&filterhandlers );
-	if ( SUCCEEDED(hr) )
-	{
-		/* construct this class. */
-		hr = CFileSourceFilterImpl_InitIFileSourceFilter(
-			&This->filesrc, This->unk.punkControl,
-			This, &This->csFilter );
-		if ( FAILED(hr) )
-		{
-			CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = FilterIFEntries;
-	This->unk.dwEntries = sizeof(FilterIFEntries)/sizeof(FilterIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyAsyncSource;
-	InitializeCriticalSection( &This->csFilter );
-
-	/* create the output pin. */
-	hr = QUARTZ_CreateAsyncSourcePin(
-		This, &This->csFilter,
-		&This->pPin, pwszOutPinName );
-	if ( SUCCEEDED(hr) )
-		hr = QUARTZ_CompList_AddComp(
-			This->basefilter.pOutPins,
-			(IUnknown*)&(This->pPin->pin),
-			NULL, 0 );
-
-	if ( FAILED(hr) )
-	{
-		IUnknown_Release( This->unk.punkControl );
-		return hr;
-	}
-
-	*ppobj = (void*)&(This->unk);
-
-	return S_OK;
-}
-
-/***************************************************************************
- *
- *	new/delete CAsyncSourcePinImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry OutPinIFEntries[] =
-{
-  { &IID_IPin, offsetof(CAsyncSourcePinImpl,pin)-offsetof(CAsyncSourcePinImpl,unk) },
-  /***{ &IID_IAsyncReader, offsetof(CAsyncSourcePinImpl,async)-offsetof(CAsyncSourcePinImpl,unk) },***/
-};
-
-static HRESULT CAsyncSourceImpl_OnQueryInterface(
-	IUnknown* punk, const IID* piid, void** ppobj )
-{
-	CAsyncSourcePinImpl_THIS(punk,unk);
-
-	if ( IsEqualGUID( &IID_IAsyncReader, piid ) )
-	{
-		TRACE("IAsyncReader has been queried.\n");
-		*ppobj = (void*)&This->async;
-		IUnknown_AddRef(punk);
-		This->bAsyncReaderQueried = TRUE;
-		return S_OK;
-	}
-
-	return E_NOINTERFACE;
-}
-
-static void QUARTZ_DestroyAsyncSourcePin(IUnknown* punk)
-{
-	CAsyncSourcePinImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	CAsyncReaderImpl_UninitIAsyncReader( &This->async );
-	CPinBaseImpl_UninitIPin( &This->pin );
-}
-
-HRESULT QUARTZ_CreateAsyncSourcePin(
-	CAsyncSourceImpl* pFilter,
-	CRITICAL_SECTION* pcsPin,
-	CAsyncSourcePinImpl** ppPin,
-	LPCWSTR pwszPinName )
-{
-	CAsyncSourcePinImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p,%p)\n",pFilter,pcsPin,ppPin);
-
-	This = (CAsyncSourcePinImpl*)
-		QUARTZ_AllocObj( sizeof(CAsyncSourcePinImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &This->unk, NULL );
-	This->qiext.pNext = NULL;
-	This->qiext.pOnQueryInterface = &CAsyncSourceImpl_OnQueryInterface;
-	QUARTZ_IUnkAddDelegation( &This->unk, &This->qiext );
-
-	This->bAsyncReaderQueried = FALSE;
-	This->pSource = pFilter;
-
-	hr = CPinBaseImpl_InitIPin(
-		&This->pin,
-		This->unk.punkControl,
-		pcsPin, NULL,
-		&pFilter->basefilter,
-		pwszPinName,
-		TRUE,
-		&outputpinhandlers );
-
-	if ( SUCCEEDED(hr) )
-	{
-		hr = CAsyncReaderImpl_InitIAsyncReader(
-			&This->async,
-			This->unk.punkControl,
-			pFilter );
-		if ( FAILED(hr) )
-		{
-			CPinBaseImpl_UninitIPin( &This->pin );
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = OutPinIFEntries;
-	This->unk.dwEntries = sizeof(OutPinIFEntries)/sizeof(OutPinIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyAsyncSourcePin;
-
-	*ppPin = This;
-
-	TRACE("returned successfully.\n");
-
-	return S_OK;
-}
-
-
-
-/***************************************************************************
- *
- *	Implements File Source.
- *
- */
-
-typedef struct AsyncSourceFileImpl
-{
-	HANDLE	hFile;
-	LONGLONG	llTotal;
-} AsyncSourceFileImpl;
-
-
-static HRESULT AsyncSourceFileImpl_Load( CAsyncSourceImpl* pImpl, LPCWSTR lpwszSourceName )
-{
-	AsyncSourceFileImpl*	This = (AsyncSourceFileImpl*)pImpl->m_pUserData;
-	DWORD	dwLow;
-	DWORD	dwHigh;
-
-	if ( This != NULL )
-		return E_UNEXPECTED;
-	This = (AsyncSourceFileImpl*)QUARTZ_AllocMem( sizeof(AsyncSourceFileImpl) );
-	pImpl->m_pUserData = (void*)This;
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	This->hFile = INVALID_HANDLE_VALUE;
-	This->llTotal = 0;
-
-	This->hFile = CreateFileW( lpwszSourceName,
-		GENERIC_READ, FILE_SHARE_READ,
-		NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)NULL );
-	if ( This->hFile == INVALID_HANDLE_VALUE )
-		return E_FAIL;
-
-	SetLastError(NO_ERROR);
-	dwLow = GetFileSize( This->hFile, &dwHigh );
-	if ( dwLow == 0xffffffff && GetLastError() != NO_ERROR )
-		return E_FAIL;
-
-	This->llTotal = (LONGLONG)dwLow | ((LONGLONG)dwHigh << 32);
-
-	return NOERROR;
-}
-
-static HRESULT AsyncSourceFileImpl_Cleanup( CAsyncSourceImpl* pImpl )
-{
-	AsyncSourceFileImpl*	This = (AsyncSourceFileImpl*)pImpl->m_pUserData;
-
-	if ( This == NULL )
-		return NOERROR;
-
-	if ( This->hFile != INVALID_HANDLE_VALUE )
-		CloseHandle(This->hFile);
-
-	QUARTZ_FreeMem(This);
-	pImpl->m_pUserData = NULL;
-
-	return NOERROR;
-}
-
-static HRESULT AsyncSourceFileImpl_GetLength( CAsyncSourceImpl* pImpl, LONGLONG* pllTotal, LONGLONG* pllAvailable )
-{
-	AsyncSourceFileImpl*	This = (AsyncSourceFileImpl*)pImpl->m_pUserData;
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	*pllTotal = This->llTotal;
-	*pllAvailable = This->llTotal;
-
-	return NOERROR;
-}
-
-static HRESULT AsyncSourceFileImpl_Read( CAsyncSourceImpl* pImpl, LONGLONG llOfsStart, LONG lLength, BYTE* pBuf, LONG* plReturned, HANDLE hEventCancel )
-{
-	AsyncSourceFileImpl*	This = (AsyncSourceFileImpl*)pImpl->m_pUserData;
-	LONG	lReturned;
-	LONG	lBlock;
-	LONG	lOfsLow;
-	LONG	lOfsHigh;
-	DWORD	dw;
-	HRESULT hr = S_OK;
-
-	if ( This == NULL || This->hFile == INVALID_HANDLE_VALUE )
-		return E_UNEXPECTED;
-
-	lReturned = 0;
-
-	lOfsLow = (LONG)(llOfsStart & 0xffffffff);
-	lOfsHigh = (LONG)(llOfsStart >> 32);
-	SetLastError(NO_ERROR);
-	lOfsLow = SetFilePointer( This->hFile, lOfsLow, &lOfsHigh, FILE_BEGIN );
-	if ( lOfsLow == (LONG)0xffffffff && GetLastError() != NO_ERROR )
-		return E_FAIL;
-
-	while ( lLength > 0 )
-	{
-		if ( hEventCancel != (HANDLE)NULL &&
-			 WaitForSingleObject( hEventCancel, 0 ) == WAIT_OBJECT_0 )
-		{
-			hr = S_FALSE;
-			break;
-		}
-
-		lBlock = ( lLength > ASYNCSRC_FILE_BLOCKSIZE ) ?
-			ASYNCSRC_FILE_BLOCKSIZE : lLength;
-
-		if ( !ReadFile(This->hFile,pBuf,(DWORD)lBlock,&dw,NULL) )
-		{
-			hr = E_FAIL;
-			break;
-		}
-		pBuf += dw;
-		lReturned += (LONG)dw;
-		lLength -= (LONG)dw;
-		if ( lBlock > (LONG)dw )
-			break;
-	}
-
-	*plReturned = lReturned;
-
-	return hr;
-}
-
-static const struct AsyncSourceHandlers asyncsrc_file =
-{
-	AsyncSourceFileImpl_Load,
-	AsyncSourceFileImpl_Cleanup,
-	AsyncSourceFileImpl_GetLength,
-	AsyncSourceFileImpl_Read,
-};
-
-HRESULT QUARTZ_CreateAsyncReader(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateAsyncSource(
-		punkOuter, ppobj,
-		&CLSID_AsyncReader,
-		QUARTZ_wszAsyncFileSourceName,
-		QUARTZ_wszAsyncFileSourcePinName,
-		&asyncsrc_file );
-}
-
-/***************************************************************************
- *
- *	Implements URL Source.
- *
- */
-
-typedef struct AsyncSourceURLImpl
-{
-	DWORD dwDummy;
-} AsyncSourceURLImpl;
-
-
-static HRESULT AsyncSourceURLImpl_Load( CAsyncSourceImpl* pImpl, LPCWSTR lpwszSourceName )
-{
-	AsyncSourceURLImpl*	This = (AsyncSourceURLImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p,%p) stub!\n", pImpl, lpwszSourceName);
-
-	if ( This != NULL )
-		return E_UNEXPECTED;
-	This = (AsyncSourceURLImpl*)QUARTZ_AllocMem( sizeof(AsyncSourceURLImpl) );
-	pImpl->m_pUserData = (void*)This;
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT AsyncSourceURLImpl_Cleanup( CAsyncSourceImpl* pImpl )
-{
-	AsyncSourceURLImpl*	This = (AsyncSourceURLImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p) stub!\n", This);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	QUARTZ_FreeMem(This);
-	pImpl->m_pUserData = NULL;
-
-	return NOERROR;
-}
-
-static HRESULT AsyncSourceURLImpl_GetLength( CAsyncSourceImpl* pImpl, LONGLONG* pllTotal, LONGLONG* pllAvailable )
-{
-	AsyncSourceURLImpl*	This = (AsyncSourceURLImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p,%p,%p) stub!\n", This, pllTotal, pllAvailable);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT AsyncSourceURLImpl_Read( CAsyncSourceImpl* pImpl, LONGLONG llOfsStart, LONG lLength, BYTE* pBuf, LONG* plReturned, HANDLE hEventCancel )
-{
-	AsyncSourceURLImpl*	This = (AsyncSourceURLImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p) stub!\n", This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return E_NOTIMPL;
-}
-
-static const struct AsyncSourceHandlers asyncsrc_url =
-{
-	AsyncSourceURLImpl_Load,
-	AsyncSourceURLImpl_Cleanup,
-	AsyncSourceURLImpl_GetLength,
-	AsyncSourceURLImpl_Read,
-};
-
-
-HRESULT QUARTZ_CreateURLReader(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateAsyncSource(
-		punkOuter, ppobj,
-		&CLSID_URLReader,
-		QUARTZ_wszAsyncURLSourceName,
-		QUARTZ_wszAsyncURLSourcePinName,
-		&asyncsrc_url );
-}
diff --git a/dlls/quartz/asyncsrc.h b/dlls/quartz/asyncsrc.h
deleted file mode 100644
index ae2d2bc..0000000
--- a/dlls/quartz/asyncsrc.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Implements Asynchronous File/URL Source.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_ASYNCSRC_H
-#define	WINE_DSHOW_ASYNCSRC_H
-
-#include "iunk.h"
-#include "basefilt.h"
-
-typedef struct CAsyncSourceImpl	CAsyncSourceImpl;
-typedef struct CAsyncSourcePinImpl	CAsyncSourcePinImpl;
-typedef struct AsyncSourceRequest	AsyncSourceRequest;
-typedef struct AsyncSourceHandlers	AsyncSourceHandlers;
-
-typedef struct CAsyncReaderImpl
-{
-	ICOM_VFIELD(IAsyncReader);
-
-	/* IUnknown fields */
-	IUnknown*	punkControl;
-	/* IAsyncReader fields */
-	CAsyncSourceImpl*	pSource;
-
-	CRITICAL_SECTION	m_csReader;
-	BOOL	m_bInFlushing;
-	CRITICAL_SECTION	m_csRequest;
-	CRITICAL_SECTION	m_csReply;
-	AsyncSourceRequest*	m_pReplyFirst;
-	CRITICAL_SECTION	m_csFree;
-	AsyncSourceRequest*	m_pFreeFirst;
-} CAsyncReaderImpl;
-
-typedef struct CFileSourceFilterImpl
-{
-	ICOM_VFIELD(IFileSourceFilter);
-
-	/* IUnknown fields */
-	IUnknown*	punkControl;
-	/* IFileSourceFilter fields */
-	CAsyncSourceImpl*	pSource;
-
-	CRITICAL_SECTION*	pcsFileSource;
-	WCHAR*	m_pwszFileName;
-	DWORD	m_cbFileName;
-	AM_MEDIA_TYPE	m_mt;
-} CFileSourceFilterImpl;
-
-struct CAsyncSourceImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CBaseFilterImpl	basefilter;
-	CFileSourceFilterImpl	filesrc;
-
-	CRITICAL_SECTION	csFilter;
-	CAsyncSourcePinImpl*	pPin;
-	const AsyncSourceHandlers*	m_pHandler;
-	void*	m_pUserData;
-};
-
-struct CAsyncSourcePinImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CPinBaseImpl	pin;
-	CAsyncReaderImpl	async;
-	QUARTZ_IFDelegation	qiext;
-
-	BOOL	bAsyncReaderQueried;
-	CAsyncSourceImpl*	pSource;
-};
-
-struct AsyncSourceRequest
-{
-	AsyncSourceRequest*	pNext;
-
-	IMediaSample*	pSample; /* for async req. */
-	DWORD_PTR	dwContext; /* for async req. */
-	HRESULT	hr;
-};
-
-struct AsyncSourceHandlers
-{
-	/* all handlers MUST be implemented. */
-	HRESULT (*pLoad)( CAsyncSourceImpl* pImpl, LPCWSTR lpwszSourceName );
-	HRESULT (*pCleanup)( CAsyncSourceImpl* pImpl );
-	HRESULT (*pGetLength)( CAsyncSourceImpl* pImpl, LONGLONG* pllTotal, LONGLONG* pllAvailable );
-	/* S_OK = OK / S_FALSE = Canceled / other = error */
-	/* hEventCancel may be NULL */
-	HRESULT (*pRead)( CAsyncSourceImpl* pImpl, LONGLONG llOfsStart, LONG lLength, BYTE* pBuf, LONG* plReturned, HANDLE hEventCancel );
-};
-
-#define	CAsyncSourceImpl_THIS(iface,member)		CAsyncSourceImpl*	This = ((CAsyncSourceImpl*)(((char*)iface)-offsetof(CAsyncSourceImpl,member)))
-#define	CAsyncSourcePinImpl_THIS(iface,member)		CAsyncSourcePinImpl*	This = ((CAsyncSourcePinImpl*)(((char*)iface)-offsetof(CAsyncSourcePinImpl,member)))
-
-
-HRESULT CAsyncReaderImpl_InitIAsyncReader(
-	CAsyncReaderImpl* This, IUnknown* punkControl,
-	CAsyncSourceImpl* pSource );
-void CAsyncReaderImpl_UninitIAsyncReader(
-	CAsyncReaderImpl* This );
-HRESULT CFileSourceFilterImpl_InitIFileSourceFilter(
-	CFileSourceFilterImpl* This, IUnknown* punkControl,
-	CAsyncSourceImpl* pSource,
-	CRITICAL_SECTION* pcsFileSource );
-void CFileSourceFilterImpl_UninitIFileSourceFilter(
-	CFileSourceFilterImpl* This );
-
-
-HRESULT QUARTZ_CreateAsyncSource(
-	IUnknown* punkOuter,void** ppobj,
-	const CLSID* pclsidAsyncSource,
-	LPCWSTR pwszAsyncSourceName,
-	LPCWSTR pwszOutPinName,
-	const AsyncSourceHandlers* pHandler );
-HRESULT QUARTZ_CreateAsyncSourcePin(
-	CAsyncSourceImpl* pFilter,
-	CRITICAL_SECTION* pcsPin,
-	CAsyncSourcePinImpl** ppPin,
-	LPCWSTR pwszPinName );
-
-
-HRESULT QUARTZ_CreateAsyncReader(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateURLReader(IUnknown* punkOuter,void** ppobj);
-
-#define ASYNCSRC_FILE_BLOCKSIZE	16384
-
-
-#endif	/* WINE_DSHOW_ASYNCSRC_H */
diff --git a/dlls/quartz/audioutl.c b/dlls/quartz/audioutl.c
deleted file mode 100644
index c68a378..0000000
--- a/dlls/quartz/audioutl.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "audioutl.h"
-
-
-void AUDIOUTL_ChangeSign8( BYTE* pbData, DWORD cbData )
-{
-	BYTE*	pbEnd = pbData + cbData;
-
-	while ( pbData < pbEnd )
-	{
-		*pbData ^= 0x80;
-		pbData ++;
-	}
-}
-
-void AUDIOUTL_ChangeSign16LE( BYTE* pbData, DWORD cbData )
-{
-	BYTE*	pbEnd = pbData + cbData;
-
-	pbData ++;
-	while ( pbData < pbEnd )
-	{
-		*pbData ^= 0x80;
-		pbData += 2;
-	}
-}
-
-void AUDIOUTL_ChangeSign16BE( BYTE* pbData, DWORD cbData )
-{
-	BYTE*	pbEnd = pbData + cbData;
-
-	while ( pbData < pbEnd )
-	{
-		*pbData ^= 0x80;
-		pbData += 2;
-	}
-}
-
-void AUDIOUTL_ByteSwap( BYTE* pbData, DWORD cbData )
-{
-	BYTE*	pbEnd = pbData + cbData - 1;
-	BYTE	bTemp;
-
-	while ( pbData < pbEnd )
-	{
-		bTemp = pbData[0];
-		pbData[0] = pbData[1];
-		pbData[1] = bTemp;
-		pbData += 2;
-	}
-}
-
-
diff --git a/dlls/quartz/audioutl.h b/dlls/quartz/audioutl.h
deleted file mode 100644
index 1a5fb61..0000000
--- a/dlls/quartz/audioutl.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef QUARTZ_AUDIOUTL_H
-#define QUARTZ_AUDIOUTL_H
-
-
-void AUDIOUTL_ChangeSign8( BYTE* pbData, DWORD cbData );
-void AUDIOUTL_ChangeSign16LE( BYTE* pbData, DWORD cbData );
-void AUDIOUTL_ChangeSign16BE( BYTE* pbData, DWORD cbData );
-void AUDIOUTL_ByteSwap( BYTE* pbData, DWORD cbData );
-
-
-#endif  /* QUARTZ_AUDIOUTL_H */
diff --git a/dlls/quartz/audren.c b/dlls/quartz/audren.c
deleted file mode 100644
index 9a80d63..0000000
--- a/dlls/quartz/audren.c
+++ /dev/null
@@ -1,1048 +0,0 @@
-/*
- * Audio Renderer (CLSID_AudioRender)
- *
- * FIXME
- *  - implement IReferenceClock.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "mmsystem.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-#include "evcode.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "audren.h"
-#include "seekpass.h"
-
-
-static const WCHAR QUARTZ_AudioRender_Name[] =
-{ 'A','u','d','i','o',' ','R','e','n','d','e','r',0 };
-static const WCHAR QUARTZ_AudioRenderPin_Name[] =
-{ 'I','n',0 };
-
-
-
-/***************************************************************************
- *
- *	CAudioRendererImpl waveOut methods (internal)
- *
- */
-
-static
-HRESULT QUARTZ_HRESULT_From_MMRESULT( MMRESULT mr )
-{
-	HRESULT hr = E_FAIL;
-
-	switch ( mr )
-	{
-	case MMSYSERR_NOERROR:
-		hr = S_OK;
-		break;
-	case MMSYSERR_NOMEM:
-		hr = E_OUTOFMEMORY;
-		break;
-	}
-
-	return hr;
-}
-
-void CAudioRendererImpl_waveOutEventCallback(
-	HWAVEOUT hwo, UINT uMsg,
-	DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 )
-{
-	CAudioRendererImpl* This = (CAudioRendererImpl*)dwInstance;
-
-	if ( uMsg == WOM_DONE )
-		SetEvent( This->m_hEventRender );
-}
-
-static
-void CAudioRendererImpl_waveOutReset(
-	CAudioRendererImpl* This )
-{
-	if ( !This->m_fWaveOutInit )
-		return;
-
-	waveOutReset( This->m_hWaveOut );
-	SetEvent( This->m_hEventRender );
-}
-
-static
-void CAudioRendererImpl_waveOutUninit(
-	CAudioRendererImpl* This )
-{
-	DWORD i;
-
-	TRACE("(%p)\n",This);
-
-	if ( !This->m_fWaveOutInit )
-		return;
-
-	waveOutReset( This->m_hWaveOut );
-	SetEvent( This->m_hEventRender );
-
-	for ( i = 0; i < WINE_QUARTZ_WAVEOUT_COUNT; i++ )
-	{
-		if ( This->m_hdr[i].dwFlags & WHDR_PREPARED )
-		{
-			waveOutUnprepareHeader(
-				This->m_hWaveOut,
-				&This->m_hdr[i], sizeof(WAVEHDR) );
-			This->m_hdr[i].dwFlags = 0;
-		}
-		if ( This->m_hdr[i].lpData != NULL )
-		{
-			QUARTZ_FreeMem( This->m_hdr[i].lpData );
-			This->m_hdr[i].lpData = NULL;
-		}
-	}
-
-	waveOutClose( This->m_hWaveOut );
-	This->m_hWaveOut = (HWAVEOUT)NULL;
-	if ( This->m_hEventRender != (HANDLE)NULL )
-	{
-		CloseHandle( This->m_hEventRender );
-		This->m_hEventRender = (HANDLE)NULL;
-	}
-
-	This->m_fWaveOutInit = FALSE;
-}
-
-static
-HRESULT CAudioRendererImpl_waveOutInit(
-	CAudioRendererImpl* This, WAVEFORMATEX* pwfx )
-{
-	MMRESULT mr;
-	HRESULT hr;
-	DWORD i;
-	DWORD dwBlockSize;
-
-	if ( This->m_fWaveOutInit )
-		return NOERROR;
-
-	if ( pwfx == NULL )
-		return E_POINTER;
-	if ( pwfx->nBlockAlign == 0 )
-		return E_INVALIDARG;
-
-	This->m_hEventRender = (HANDLE)NULL;
-	This->m_hWaveOut = (HWAVEOUT)NULL;
-	This->m_dwBlockSize = 0;
-	This->m_phdrCur = NULL;
-	ZeroMemory( &This->m_hdr, sizeof(This->m_hdr) );
-
-
-	mr = waveOutOpen(
-		&This->m_hWaveOut, WAVE_MAPPER, pwfx,
-		(DWORD)CAudioRendererImpl_waveOutEventCallback, (DWORD)This,
-		CALLBACK_FUNCTION );
-	hr = QUARTZ_HRESULT_From_MMRESULT( mr );
-	if ( FAILED(hr) )
-		return hr;
-	This->m_fWaveOutInit = TRUE;
-
-	This->m_hEventRender = CreateEventA(
-		NULL, TRUE, TRUE, NULL );
-	if ( This->m_hEventRender == (HANDLE)NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto err;
-	}
-
-	dwBlockSize = pwfx->nAvgBytesPerSec / pwfx->nBlockAlign;
-	if ( dwBlockSize == 0 )
-		dwBlockSize = 1;
-	dwBlockSize *= pwfx->nBlockAlign;
-	This->m_dwBlockSize = dwBlockSize;
-
-	for ( i = 0; i < WINE_QUARTZ_WAVEOUT_COUNT; i++ )
-	{
-		This->m_hdr[i].lpData = (CHAR*)QUARTZ_AllocMem( dwBlockSize );
-		if ( This->m_hdr[i].lpData == NULL )
-		{
-			hr = E_OUTOFMEMORY;
-			goto err;
-		}
-		mr = waveOutPrepareHeader(
-				This->m_hWaveOut,
-				&This->m_hdr[i], sizeof(WAVEHDR) );
-		hr = QUARTZ_HRESULT_From_MMRESULT( mr );
-		if ( FAILED(hr) )
-			goto err;
-		This->m_hdr[i].dwFlags |= WHDR_DONE;
-		This->m_hdr[i].dwBufferLength = dwBlockSize;
-		This->m_hdr[i].dwUser = i;
-	}
-
-	return S_OK;
-err:
-	CAudioRendererImpl_waveOutUninit(This);
-	return hr;
-}
-
-static HRESULT CAudioRendererImpl_waveOutPause( CAudioRendererImpl* This )
-{
-	if ( !This->m_fWaveOutInit )
-		return E_UNEXPECTED;
-
-	return QUARTZ_HRESULT_From_MMRESULT( waveOutPause(
-			This->m_hWaveOut ) );
-}
-
-static HRESULT CAudioRendererImpl_waveOutRun( CAudioRendererImpl* This )
-{
-	if ( !This->m_fWaveOutInit )
-		return E_UNEXPECTED;
-
-	return QUARTZ_HRESULT_From_MMRESULT( waveOutRestart(
-			This->m_hWaveOut ) );
-}
-
-static
-WAVEHDR* CAudioRendererImpl_waveOutGetBuffer(
-	CAudioRendererImpl* This )
-{
-	DWORD i;
-
-	if ( !This->m_fWaveOutInit )
-		return NULL;
-
-	if ( This->m_phdrCur != NULL )
-		return This->m_phdrCur;
-
-	for ( i = 0; i < WINE_QUARTZ_WAVEOUT_COUNT; i++ )
-	{
-		if ( This->m_hdr[i].dwFlags & WHDR_DONE )
-		{
-			This->m_phdrCur = &(This->m_hdr[i]);
-			This->m_phdrCur->dwFlags &= ~WHDR_DONE;
-			This->m_phdrCur->dwBufferLength = 0;
-			return This->m_phdrCur;
-		}
-	}
-
-	return NULL;
-}
-
-static
-HRESULT CAudioRendererImpl_waveOutWriteData(
-	CAudioRendererImpl* This,
-	const BYTE* pData, DWORD cbData, DWORD* pcbWritten )
-{
-	DWORD	cbAvail;
-
-	*pcbWritten = 0;
-
-	if ( !This->m_fWaveOutInit )
-		return E_UNEXPECTED;
-
-	if ( cbData == 0 )
-		return S_OK;
-
-	if ( CAudioRendererImpl_waveOutGetBuffer(This) == NULL )
-		return S_FALSE;
-
-	cbAvail = This->m_dwBlockSize - This->m_phdrCur->dwBufferLength;
-	if ( cbAvail > cbData )
-		cbAvail = cbData;
-	memcpy( This->m_phdrCur->lpData, pData, cbAvail );
-	pData += cbAvail;
-	cbData -= cbAvail;
-	This->m_phdrCur->dwBufferLength += cbAvail;
-
-	*pcbWritten = cbAvail;
-
-	return S_OK;
-}
-
-static
-HRESULT CAudioRendererImpl_waveOutFlush(
-	CAudioRendererImpl* This )
-{
-	MMRESULT mr;
-	HRESULT hr;
-
-	if ( !This->m_fWaveOutInit )
-		return E_UNEXPECTED;
-	if ( This->m_phdrCur == NULL )
-		return E_UNEXPECTED;
-
-	if ( This->m_phdrCur->dwBufferLength == 0 )
-		return S_OK;
-
-	mr = waveOutWrite(
-		This->m_hWaveOut,
-		This->m_phdrCur, sizeof(WAVEHDR) );
-	hr = QUARTZ_HRESULT_From_MMRESULT( mr );
-	if ( FAILED(hr) )
-		return hr;
-
-	This->m_phdrCur = NULL;
-	return S_OK;
-}
-
-#if 0
-/* FIXME: Not used for now */
-
-static
-HRESULT CAudioRendererImpl_waveOutGetVolume(
-	CAudioRendererImpl* This,
-	DWORD* pdwLeft, DWORD* pdwRight )
-{
-	MMRESULT mr;
-	HRESULT hr;
-	DWORD	dwVol;
-
-	if ( !This->m_fWaveOutInit )
-		return E_UNEXPECTED;
-
-	mr = waveOutGetVolume(
-		This->m_hWaveOut, &dwVol );
-	hr = QUARTZ_HRESULT_From_MMRESULT( mr );
-	if ( FAILED(hr) )
-		return hr;
-
-	*pdwLeft = LOWORD(dwVol);
-	*pdwRight = HIWORD(dwVol);
-
-	return NOERROR;
-}
-
-#endif
-
-static
-HRESULT CAudioRendererImpl_waveOutSetVolume(
-	CAudioRendererImpl* This,
-	DWORD dwLeft, DWORD dwRight )
-{
-	MMRESULT mr;
-	DWORD	dwVol;
-
-	if ( !This->m_fWaveOutInit )
-		return E_UNEXPECTED;
-
-	dwVol = dwLeft | (dwRight<<16);
-
-	mr = waveOutSetVolume(
-		This->m_hWaveOut, dwVol );
-	return QUARTZ_HRESULT_From_MMRESULT( mr );
-}
-
-static HRESULT CAudioRendererImpl_UpdateVolume( CAudioRendererImpl* This )
-{
-	HRESULT hr;
-	long	leftlevel;
-	long	rightlevel;
-
-	if ( This->m_lAudioBalance >= 0 )
-	{
-		leftlevel = This->m_lAudioVolume - This->m_lAudioBalance;
-		rightlevel = This->m_lAudioVolume;
-	}
-	else
-	{
-		leftlevel = This->m_lAudioVolume;
-		rightlevel = This->m_lAudioVolume + This->m_lAudioBalance;
-	}
-	leftlevel = QUARTZ_DBToAmpFactor( leftlevel );
-	rightlevel = QUARTZ_DBToAmpFactor( rightlevel );
-
-	hr = CAudioRendererImpl_waveOutSetVolume(
-		This, (DWORD)leftlevel, (DWORD)rightlevel );
-	if ( hr == E_UNEXPECTED )
-		hr = S_OK;
-
-	return hr;
-}
-
-
-/***************************************************************************
- *
- *	CAudioRendererImpl methods
- *
- */
-
-
-static HRESULT CAudioRendererImpl_OnActive( CBaseFilterImpl* pImpl )
-{
-	CAudioRendererImpl_THIS(pImpl,basefilter);
-	HRESULT hr;
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->pPin->pin.pmtConn == NULL )
-		return NOERROR;
-
-	This->m_fInFlush = FALSE;
-
-	hr = CAudioRendererImpl_waveOutRun(This);
-	if ( FAILED(hr) )
-		return hr;
-
-	return NOERROR;
-}
-
-static HRESULT CAudioRendererImpl_OnInactive( CBaseFilterImpl* pImpl )
-{
-	CAudioRendererImpl_THIS(pImpl,basefilter);
-	WAVEFORMATEX*	pwfx;
-	HRESULT hr;
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->pPin->pin.pmtConn == NULL )
-		return NOERROR;
-
-	pwfx = (WAVEFORMATEX*)This->pPin->pin.pmtConn->pbFormat;
-	if ( pwfx == NULL )
-		return E_FAIL;
-
-	This->m_fInFlush = FALSE;
-
-	hr = CAudioRendererImpl_waveOutInit(This,pwfx);
-	if ( FAILED(hr) )
-		return hr;
-
-	hr = CAudioRendererImpl_waveOutPause(This);
-	if ( FAILED(hr) )
-		return hr;
-
-	return NOERROR;
-}
-
-static HRESULT CAudioRendererImpl_OnStop( CBaseFilterImpl* pImpl )
-{
-	CAudioRendererImpl_THIS(pImpl,basefilter);
-
-	TRACE( "(%p)\n", This );
-
-	This->m_fInFlush = TRUE;
-
-	CAudioRendererImpl_waveOutUninit(This);
-
-	This->m_fInFlush = FALSE;
-
-	TRACE("returned\n" );
-
-	return NOERROR;
-}
-
-static const CBaseFilterHandlers filterhandlers =
-{
-	CAudioRendererImpl_OnActive, /* pOnActive */
-	CAudioRendererImpl_OnInactive, /* pOnInactive */
-	CAudioRendererImpl_OnStop, /* pOnStop */
-};
-
-/***************************************************************************
- *
- *	CAudioRendererPinImpl methods
- *
- */
-
-static HRESULT CAudioRendererPinImpl_OnDisconnect( CPinBaseImpl* pImpl )
-{
-	CAudioRendererPinImpl_THIS(pImpl,pin);
-
-	TRACE("(%p)\n",This);
-
-	if ( This->meminput.pAllocator != NULL )
-	{
-		IMemAllocator_Decommit(This->meminput.pAllocator);
-		IMemAllocator_Release(This->meminput.pAllocator);
-		This->meminput.pAllocator = NULL;
-	}
-
-	return NOERROR;
-}
-
-
-static HRESULT CAudioRendererPinImpl_CheckMediaType( CPinBaseImpl* pImpl, const AM_MEDIA_TYPE* pmt )
-{
-	CAudioRendererPinImpl_THIS(pImpl,pin);
-	const WAVEFORMATEX* pwfx;
-
-	TRACE("(%p,%p)\n",This,pmt);
-
-	if ( !IsEqualGUID( &pmt->majortype, &MEDIATYPE_Audio ) )
-	{
-		TRACE("not audio\n");
-		return E_FAIL;
-	}
-	if ( !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_NULL ) &&
-		 !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_PCM ) )
-	{
-		TRACE("not PCM\n");
-		return E_FAIL;
-	}
-	if ( !IsEqualGUID( &pmt->formattype, &FORMAT_WaveFormatEx ) )
-	{
-		TRACE("not WAVE\n");
-		return E_FAIL;
-	}
-
-	TRACE("testing WAVE header\n");
-
-	if ( pmt->cbFormat < (sizeof(WAVEFORMATEX)-sizeof(WORD)) )
-		return E_FAIL;
-
-	pwfx = (const WAVEFORMATEX*)pmt->pbFormat;
-	if ( pwfx == NULL )
-		return E_FAIL;
-	if ( pwfx->wFormatTag != 1 )
-		return E_FAIL;
-
-	TRACE("returned successfully.\n");
-
-	return NOERROR;
-}
-
-static HRESULT CAudioRendererPinImpl_Receive( CPinBaseImpl* pImpl, IMediaSample* pSample )
-{
-	CAudioRendererPinImpl_THIS(pImpl,pin);
-	HRESULT hr;
-	BYTE*	pData = NULL;
-	DWORD	dwDataLength;
-	DWORD	dwWritten;
-
-	TRACE( "(%p,%p)\n",This,pSample );
-
-	if ( !This->pRender->m_fWaveOutInit )
-		return E_UNEXPECTED;
-	if ( pSample == NULL )
-		return E_POINTER;
-
-	hr = IMediaSample_GetPointer( pSample, &pData );
-	if ( FAILED(hr) )
-		return hr;
-	dwDataLength = (DWORD)IMediaSample_GetActualDataLength( pSample );
-
-	while ( 1 )
-	{
-		TRACE("trying to write %lu bytes\n",dwDataLength);
-
-		if ( This->pRender->m_fInFlush )
-			return S_FALSE;
-
-		ResetEvent( This->pRender->m_hEventRender );
-		hr = CAudioRendererImpl_waveOutWriteData(
-			This->pRender,pData,dwDataLength,&dwWritten);
-		if ( FAILED(hr) )
-			break;
-		if ( hr == S_FALSE )
-		{
-			WaitForSingleObject( This->pRender->m_hEventRender, INFINITE );
-			continue;
-		}
-		pData += dwWritten;
-		dwDataLength -= dwWritten;
-		hr = CAudioRendererImpl_waveOutFlush(This->pRender);
-		if ( FAILED(hr) )
-			break;
-		if ( dwDataLength == 0 )
-			break;
-	}
-
-	return hr;
-}
-
-static HRESULT CAudioRendererPinImpl_ReceiveCanBlock( CPinBaseImpl* pImpl )
-{
-	CAudioRendererPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	/* might block. */
-	return S_OK;
-}
-
-static HRESULT CAudioRendererPinImpl_EndOfStream( CPinBaseImpl* pImpl )
-{
-	CAudioRendererPinImpl_THIS(pImpl,pin);
-
-	FIXME( "(%p)\n", This );
-
-	This->pRender->m_fInFlush = FALSE;
-
-	/* FIXME - don't notify twice until stopped or seeked. */
-	return CBaseFilterImpl_MediaEventNotify(
-		&This->pRender->basefilter, EC_COMPLETE,
-		(LONG_PTR)S_OK, (LONG_PTR)(IBaseFilter*)(This->pRender) );
-}
-
-static HRESULT CAudioRendererPinImpl_BeginFlush( CPinBaseImpl* pImpl )
-{
-	CAudioRendererPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	This->pRender->m_fInFlush = TRUE;
-	CAudioRendererImpl_waveOutReset(This->pRender);
-
-	return NOERROR;
-}
-
-static HRESULT CAudioRendererPinImpl_EndFlush( CPinBaseImpl* pImpl )
-{
-	CAudioRendererPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	This->pRender->m_fInFlush = FALSE;
-
-	return NOERROR;
-}
-
-static HRESULT CAudioRendererPinImpl_NewSegment( CPinBaseImpl* pImpl, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double rate )
-{
-	CAudioRendererPinImpl_THIS(pImpl,pin);
-
-	FIXME( "(%p)\n", This );
-
-	This->pRender->m_fInFlush = FALSE;
-
-	return NOERROR;
-}
-
-static const CBasePinHandlers pinhandlers =
-{
-	NULL, /* pOnPreConnect */
-	NULL, /* pOnPostConnect */
-	CAudioRendererPinImpl_OnDisconnect, /* pOnDisconnect */
-	CAudioRendererPinImpl_CheckMediaType, /* pCheckMediaType */
-	NULL, /* pQualityNotify */
-	CAudioRendererPinImpl_Receive, /* pReceive */
-	CAudioRendererPinImpl_ReceiveCanBlock, /* pReceiveCanBlock */
-	CAudioRendererPinImpl_EndOfStream, /* pEndOfStream */
-	CAudioRendererPinImpl_BeginFlush, /* pBeginFlush */
-	CAudioRendererPinImpl_EndFlush, /* pEndFlush */
-	CAudioRendererPinImpl_NewSegment, /* pNewSegment */
-};
-
-
-/***************************************************************************
- *
- *	new/delete CAudioRendererImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry FilterIFEntries[] =
-{
-  { &IID_IPersist, offsetof(CAudioRendererImpl,basefilter)-offsetof(CAudioRendererImpl,unk) },
-  { &IID_IMediaFilter, offsetof(CAudioRendererImpl,basefilter)-offsetof(CAudioRendererImpl,unk) },
-  { &IID_IBaseFilter, offsetof(CAudioRendererImpl,basefilter)-offsetof(CAudioRendererImpl,unk) },
-  { &IID_IBasicAudio, offsetof(CAudioRendererImpl,basaud)-offsetof(CAudioRendererImpl,unk) },
-};
-
-static HRESULT CAudioRendererImpl_OnQueryInterface(
-	IUnknown* punk, const IID* piid, void** ppobj )
-{
-	CAudioRendererImpl_THIS(punk,unk);
-
-	if ( This->pSeekPass == NULL )
-		return E_NOINTERFACE;
-
-	if ( IsEqualGUID( &IID_IMediaPosition, piid ) ||
-		 IsEqualGUID( &IID_IMediaSeeking, piid ) )
-	{
-		TRACE( "IMediaSeeking(or IMediaPosition) is queried\n" );
-		return IUnknown_QueryInterface( (IUnknown*)(&This->pSeekPass->unk), piid, ppobj );
-	}
-
-	return E_NOINTERFACE;
-}
-
-static void QUARTZ_DestroyAudioRenderer(IUnknown* punk)
-{
-	CAudioRendererImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->pPin != NULL )
-	{
-		IUnknown_Release(This->pPin->unk.punkControl);
-		This->pPin = NULL;
-	}
-	if ( This->pSeekPass != NULL )
-	{
-		IUnknown_Release((IUnknown*)&This->pSeekPass->unk);
-		This->pSeekPass = NULL;
-	}
-
-	CAudioRendererImpl_UninitIBasicAudio(This);
-	CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
-
-	DeleteCriticalSection( &This->m_csReceive );
-}
-
-HRESULT QUARTZ_CreateAudioRenderer(IUnknown* punkOuter,void** ppobj)
-{
-	CAudioRendererImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	This = (CAudioRendererImpl*)
-		QUARTZ_AllocObj( sizeof(CAudioRendererImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	This->pSeekPass = NULL;
-	This->pPin = NULL;
-	This->m_fInFlush = FALSE;
-	This->m_lAudioVolume = 0;
-	This->m_lAudioBalance = 0;
-	This->m_fWaveOutInit = FALSE;
-	This->m_hEventRender = (HANDLE)NULL;
-
-	QUARTZ_IUnkInit( &This->unk, punkOuter );
-	This->qiext.pNext = NULL;
-	This->qiext.pOnQueryInterface = &CAudioRendererImpl_OnQueryInterface;
-	QUARTZ_IUnkAddDelegation( &This->unk, &This->qiext );
-
-	hr = CBaseFilterImpl_InitIBaseFilter(
-		&This->basefilter,
-		This->unk.punkControl,
-		&CLSID_AudioRender,
-		QUARTZ_AudioRender_Name,
-		&filterhandlers );
-	if ( SUCCEEDED(hr) )
-	{
-		hr = CAudioRendererImpl_InitIBasicAudio(This);
-		if ( FAILED(hr) )
-		{
-			CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = FilterIFEntries;
-	This->unk.dwEntries = sizeof(FilterIFEntries)/sizeof(FilterIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyAudioRenderer;
-
-	InitializeCriticalSection( &This->m_csReceive );
-
-	hr = QUARTZ_CreateAudioRendererPin(
-		This,
-		&This->basefilter.csFilter,
-		&This->m_csReceive,
-		&This->pPin );
-	if ( SUCCEEDED(hr) )
-		hr = QUARTZ_CompList_AddComp(
-			This->basefilter.pInPins,
-			(IUnknown*)&This->pPin->pin,
-			NULL, 0 );
-	if ( SUCCEEDED(hr) )
-		hr = QUARTZ_CreateSeekingPassThruInternal(
-			(IUnknown*)&(This->unk), &This->pSeekPass,
-			TRUE, (IPin*)&(This->pPin->pin) );
-
-	if ( FAILED(hr) )
-	{
-		IUnknown_Release( This->unk.punkControl );
-		return hr;
-	}
-
-	*ppobj = (void*)&(This->unk);
-
-	return S_OK;
-}
-
-
-/***************************************************************************
- *
- *	new/delete CAudioRendererPinImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry PinIFEntries[] =
-{
-  { &IID_IPin, offsetof(CAudioRendererPinImpl,pin)-offsetof(CAudioRendererPinImpl,unk) },
-  { &IID_IMemInputPin, offsetof(CAudioRendererPinImpl,meminput)-offsetof(CAudioRendererPinImpl,unk) },
-};
-
-static void QUARTZ_DestroyAudioRendererPin(IUnknown* punk)
-{
-	CAudioRendererPinImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	CPinBaseImpl_UninitIPin( &This->pin );
-	CMemInputPinBaseImpl_UninitIMemInputPin( &This->meminput );
-}
-
-HRESULT QUARTZ_CreateAudioRendererPin(
-	CAudioRendererImpl* pFilter,
-	CRITICAL_SECTION* pcsPin,
-	CRITICAL_SECTION* pcsPinReceive,
-	CAudioRendererPinImpl** ppPin)
-{
-	CAudioRendererPinImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p,%p,%p)\n",pFilter,pcsPin,pcsPinReceive,ppPin);
-
-	This = (CAudioRendererPinImpl*)
-		QUARTZ_AllocObj( sizeof(CAudioRendererPinImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &This->unk, NULL );
-	This->pRender = pFilter;
-
-	hr = CPinBaseImpl_InitIPin(
-		&This->pin,
-		This->unk.punkControl,
-		pcsPin, pcsPinReceive,
-		&pFilter->basefilter,
-		QUARTZ_AudioRenderPin_Name,
-		FALSE,
-		&pinhandlers );
-
-	if ( SUCCEEDED(hr) )
-	{
-		hr = CMemInputPinBaseImpl_InitIMemInputPin(
-			&This->meminput,
-			This->unk.punkControl,
-			&This->pin );
-		if ( FAILED(hr) )
-		{
-			CPinBaseImpl_UninitIPin( &This->pin );
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = PinIFEntries;
-	This->unk.dwEntries = sizeof(PinIFEntries)/sizeof(PinIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyAudioRendererPin;
-
-	*ppPin = This;
-
-	TRACE("returned successfully.\n");
-
-	return S_OK;
-}
-
-
-/***************************************************************************
- *
- *	CAudioRendererImpl::IBasicAudio
- *
- */
-
-static HRESULT WINAPI
-IBasicAudio_fnQueryInterface(IBasicAudio* iface,REFIID riid,void** ppobj)
-{
-	CAudioRendererImpl_THIS(iface,basaud);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IBasicAudio_fnAddRef(IBasicAudio* iface)
-{
-	CAudioRendererImpl_THIS(iface,basaud);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IBasicAudio_fnRelease(IBasicAudio* iface)
-{
-	CAudioRendererImpl_THIS(iface,basaud);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnGetTypeInfoCount(IBasicAudio* iface,UINT* pcTypeInfo)
-{
-	CAudioRendererImpl_THIS(iface,basaud);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnGetTypeInfo(IBasicAudio* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
-{
-	CAudioRendererImpl_THIS(iface,basaud);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnGetIDsOfNames(IBasicAudio* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
-{
-	CAudioRendererImpl_THIS(iface,basaud);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnInvoke(IBasicAudio* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
-{
-	CAudioRendererImpl_THIS(iface,basaud);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-static HRESULT WINAPI
-IBasicAudio_fnput_Volume(IBasicAudio* iface,long lVol)
-{
-	CAudioRendererImpl_THIS(iface,basaud);
-	HRESULT hr;
-
-	TRACE("(%p)->(%ld)\n",This,lVol);
-
-	if ( lVol > 0 || lVol < -10000 )
-		return E_INVALIDARG;
-
-	EnterCriticalSection( &This->basefilter.csFilter );
-	This->m_lAudioVolume = lVol;
-	hr = CAudioRendererImpl_UpdateVolume( This );
-	LeaveCriticalSection( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnget_Volume(IBasicAudio* iface,long* plVol)
-{
-	CAudioRendererImpl_THIS(iface,basaud);
-
-	TRACE("(%p)->(%p)\n",This,plVol);
-
-	if ( plVol == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->basefilter.csFilter );
-	*plVol = This->m_lAudioVolume;
-	LeaveCriticalSection( &This->basefilter.csFilter );
-
-	return S_OK;
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnput_Balance(IBasicAudio* iface,long lBalance)
-{
-	CAudioRendererImpl_THIS(iface,basaud);
-	HRESULT hr;
-
-	TRACE("(%p)->(%ld)\n",This,lBalance);
-
-	if ( lBalance > 0 || lBalance < -10000 )
-		return E_INVALIDARG;
-
-	EnterCriticalSection( &This->basefilter.csFilter );
-	This->m_lAudioBalance = lBalance;
-	hr = CAudioRendererImpl_UpdateVolume( This );
-	LeaveCriticalSection( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnget_Balance(IBasicAudio* iface,long* plBalance)
-{
-	CAudioRendererImpl_THIS(iface,basaud);
-
-	TRACE("(%p)->(%p)\n",This,plBalance);
-
-	if ( plBalance == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->basefilter.csFilter );
-	*plBalance = This->m_lAudioBalance;
-	LeaveCriticalSection( &This->basefilter.csFilter );
-
-	return S_OK;
-}
-
-
-static ICOM_VTABLE(IBasicAudio) ibasicaudio =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IBasicAudio_fnQueryInterface,
-	IBasicAudio_fnAddRef,
-	IBasicAudio_fnRelease,
-	/* IDispatch fields */
-	IBasicAudio_fnGetTypeInfoCount,
-	IBasicAudio_fnGetTypeInfo,
-	IBasicAudio_fnGetIDsOfNames,
-	IBasicAudio_fnInvoke,
-	/* IBasicAudio fields */
-	IBasicAudio_fnput_Volume,
-	IBasicAudio_fnget_Volume,
-	IBasicAudio_fnput_Balance,
-	IBasicAudio_fnget_Balance,
-};
-
-
-HRESULT CAudioRendererImpl_InitIBasicAudio( CAudioRendererImpl* This )
-{
-	TRACE("(%p)\n",This);
-	ICOM_VTBL(&This->basaud) = &ibasicaudio;
-
-	return NOERROR;
-}
-
-void CAudioRendererImpl_UninitIBasicAudio( CAudioRendererImpl* This )
-{
-	TRACE("(%p)\n",This);
-}
-
diff --git a/dlls/quartz/audren.h b/dlls/quartz/audren.h
deleted file mode 100644
index a28d952..0000000
--- a/dlls/quartz/audren.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Audio Renderer (CLSID_AudioRender)
- *
- * FIXME
- *  - implements IRefereneceClock.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_AUDREN_H
-#define	WINE_DSHOW_AUDREN_H
-
-#include "iunk.h"
-#include "basefilt.h"
-#include "seekpass.h"
-
-#define WINE_QUARTZ_WAVEOUT_COUNT	4
-
-typedef struct CAudioRendererImpl	CAudioRendererImpl;
-typedef struct CAudioRendererPinImpl	CAudioRendererPinImpl;
-
-
-typedef struct AudRen_IBasicAudioImpl
-{
-	ICOM_VFIELD(IBasicAudio);
-} AudRen_IBasicAudioImpl;
-
-struct CAudioRendererImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CBaseFilterImpl	basefilter;
-	AudRen_IBasicAudioImpl	basaud;
-	QUARTZ_IFDelegation	qiext;
-
-	CSeekingPassThru*	pSeekPass;
-	CAudioRendererPinImpl* pPin;
-
-	CRITICAL_SECTION	m_csReceive;
-	BOOL	m_fInFlush;
-
-	/* for waveOut */
-	long		m_lAudioVolume;
-	long		m_lAudioBalance;
-	BOOL		m_fWaveOutInit;
-	HANDLE		m_hEventRender;
-	HWAVEOUT	m_hWaveOut;
-	DWORD		m_dwBlockSize;
-	WAVEHDR*	m_phdrCur;
-	WAVEHDR		m_hdr[WINE_QUARTZ_WAVEOUT_COUNT];
-};
-
-struct CAudioRendererPinImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CPinBaseImpl	pin;
-	CMemInputPinBaseImpl	meminput;
-
-	CAudioRendererImpl* pRender;
-};
-
-#define	CAudioRendererImpl_THIS(iface,member)	CAudioRendererImpl*	This = ((CAudioRendererImpl*)(((char*)iface)-offsetof(CAudioRendererImpl,member)))
-#define	CAudioRendererPinImpl_THIS(iface,member)	CAudioRendererPinImpl*	This = ((CAudioRendererPinImpl*)(((char*)iface)-offsetof(CAudioRendererPinImpl,member)))
-
-
-HRESULT CAudioRendererImpl_InitIBasicAudio( CAudioRendererImpl* This );
-void CAudioRendererImpl_UninitIBasicAudio( CAudioRendererImpl* This );
-
-HRESULT QUARTZ_CreateAudioRenderer(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateAudioRendererPin(
-        CAudioRendererImpl* pFilter,
-        CRITICAL_SECTION* pcsPin,
-	CRITICAL_SECTION* pcsPinReceive,
-        CAudioRendererPinImpl** ppPin);
-
-
-
-#endif	/* WINE_DSHOW_AUDREN_H */
diff --git a/dlls/quartz/avidec.c b/dlls/quartz/avidec.c
deleted file mode 100644
index 241f7c0..0000000
--- a/dlls/quartz/avidec.c
+++ /dev/null
@@ -1,458 +0,0 @@
-/*
- * Implements AVI Decompressor(CLSID_AVIDec).
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "vfw.h"
-#include "strmif.h"
-#include "control.h"
-#include "amvideo.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "xform.h"
-
-
-static const WCHAR AVIDec_FilterName[] =
-{'A','V','I',' ','D','e','c','o','m','p','r','e','s','s','o','r',0};
-
-typedef struct CAVIDecImpl
-{
-	HIC hicCached;
-	HIC hicTrans;
-	AM_MEDIA_TYPE m_mtOut;
-	BITMAPINFO* m_pbiIn;
-	BITMAPINFO* m_pbiOut;
-	BYTE* m_pOutBuf;
-} CAVIDecImpl;
-
-/***************************************************************************
- *
- *	CAVIDecImpl methods
- *
- */
-
-static void AVIDec_ReleaseDIBBuffers(CAVIDecImpl* This)
-{
-	TRACE("(%p)\n",This);
-
-	if ( This->m_pbiIn != NULL )
-	{
-		QUARTZ_FreeMem(This->m_pbiIn); This->m_pbiIn = NULL;
-	}
-	if ( This->m_pbiOut != NULL )
-	{
-		QUARTZ_FreeMem(This->m_pbiOut); This->m_pbiOut = NULL;
-	}
-	if ( This->m_pOutBuf != NULL )
-	{
-		QUARTZ_FreeMem(This->m_pOutBuf); This->m_pOutBuf = NULL;
-	}
-}
-
-static BITMAPINFO* AVIDec_DuplicateBitmapInfo(const BITMAPINFO* pbi)
-{
-	DWORD dwSize;
-	BITMAPINFO*	pbiRet;
-
-	dwSize = pbi->bmiHeader.biSize;
-	if ( dwSize < sizeof(BITMAPINFOHEADER) )
-		return NULL;
-	if ( pbi->bmiHeader.biBitCount <= 8 )
-	{
-		if ( pbi->bmiHeader.biClrUsed == 0 )
-			dwSize += sizeof(RGBQUAD)*(1<<pbi->bmiHeader.biBitCount);
-		else
-			dwSize += sizeof(RGBQUAD)*pbi->bmiHeader.biClrUsed;
-	}
-	if ( pbi->bmiHeader.biCompression == 3 &&
-		 dwSize == sizeof(BITMAPINFOHEADER) )
-		dwSize += sizeof(DWORD)*3;
-
-	pbiRet = (BITMAPINFO*)QUARTZ_AllocMem(dwSize);
-	if ( pbiRet != NULL )
-		memcpy( pbiRet, pbi, dwSize );
-
-	return pbiRet;
-}
-
-static HRESULT AVIDec_Init( CTransformBaseImpl* pImpl )
-{
-	CAVIDecImpl*	This = pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This != NULL )
-		return NOERROR;
-
-	This = (CAVIDecImpl*)QUARTZ_AllocMem( sizeof(CAVIDecImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This, sizeof(CAVIDecImpl) );
-	pImpl->m_pUserData = This;
-	/* construct */
-	This->hicCached = (HIC)NULL;
-	This->hicTrans = (HIC)NULL;
-	ZeroMemory( &This->m_mtOut, sizeof(AM_MEDIA_TYPE) );
-	This->m_pbiIn = NULL;
-	This->m_pbiOut = NULL;
-	This->m_pOutBuf = NULL;
-
-	return NOERROR;
-}
-
-static HRESULT AVIDec_Cleanup( CTransformBaseImpl* pImpl )
-{
-	CAVIDecImpl*	This = pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	/* destruct */
-	QUARTZ_MediaType_Free( &This->m_mtOut );
-
-	AVIDec_ReleaseDIBBuffers(This);
-
-	if ( This->hicCached != (HIC)NULL )
-		ICClose(This->hicCached);
-	if ( This->hicTrans != (HIC)NULL )
-		ICClose(This->hicTrans);
-
-	QUARTZ_FreeMem( This );
-	pImpl->m_pUserData = NULL;
-
-	return NOERROR;
-}
-
-static HRESULT AVIDec_CheckMediaType( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut )
-{
-	CAVIDecImpl*	This = pImpl->m_pUserData;
-	BITMAPINFO*	pbiIn = NULL;
-	BITMAPINFO*	pbiOut = NULL;
-	HIC	hic;
-
-	TRACE("(%p)\n",This);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	if ( !IsEqualGUID( &pmtIn->majortype, &MEDIATYPE_Video ) )
-		return E_FAIL;
-	if ( !IsEqualGUID( &pmtIn->formattype, &FORMAT_VideoInfo ) )
-		return E_FAIL;
-	pbiIn = (BITMAPINFO*)(&((VIDEOINFOHEADER*)pmtIn->pbFormat)->bmiHeader);
-	if ( pmtOut != NULL )
-	{
-		if ( !IsEqualGUID( &pmtOut->majortype, &MEDIATYPE_Video ) )
-			return E_FAIL;
-		if ( !IsEqualGUID( &pmtOut->formattype, &FORMAT_VideoInfo ) )
-			return E_FAIL;
-		pbiOut = (BITMAPINFO*)(&((VIDEOINFOHEADER*)pmtOut->pbFormat)->bmiHeader);
-	}
-
-	if ( This->hicCached != (HIC)NULL &&
-		 ICDecompressQuery( This->hicCached, pbiIn, pbiOut ) == ICERR_OK )
-	{
-		TRACE("supported format\n");
-		return NOERROR;
-	}
-
-	TRACE("try to find a decoder...\n");
-	hic = ICLocate(
-		mmioFOURCC('V','I','D','C'), 0,
-		&pbiIn->bmiHeader, &pbiOut->bmiHeader, ICMODE_DECOMPRESS );
-	if ( hic == (HIC)NULL )
-	{
-		WARN("no decoder for %c%c%c%c\n",
-			(int)(( pbiIn->bmiHeader.biCompression >>  0 ) & 0xff),
-			(int)(( pbiIn->bmiHeader.biCompression >>  8 ) & 0xff),
-			(int)(( pbiIn->bmiHeader.biCompression >> 16 ) & 0xff),
-			(int)(( pbiIn->bmiHeader.biCompression >> 24 ) & 0xff) );
-		return E_FAIL;
-	}
-	TRACE("found\n");
-
-	if ( This->hicCached != (HIC)NULL )
-		ICClose(This->hicCached);
-	This->hicCached = hic;
-
-	return NOERROR;
-}
-
-static HRESULT AVIDec_GetOutputTypes( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE** ppmtAcceptTypes, ULONG* pcAcceptTypes )
-{
-	CAVIDecImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-	LONG cbFmt;
-	BITMAPINFO*	pbiIn = NULL;
-	BITMAPINFO*	pbiOut = NULL;
-
-	TRACE("(%p)\n",This);
-	hr = AVIDec_CheckMediaType( pImpl, pmtIn, NULL );
-	if ( FAILED(hr) )
-		return hr;
-
-	TRACE("(%p) - get size of format\n",This);
-	pbiIn = (BITMAPINFO*)(&((VIDEOINFOHEADER*)pmtIn->pbFormat)->bmiHeader);
-	cbFmt = (LONG)ICDecompressGetFormatSize( This->hicCached, pbiIn );
-	if ( cbFmt < sizeof(BITMAPINFOHEADER) )
-		return E_FAIL;
-
-	QUARTZ_MediaType_Free( &This->m_mtOut );
-	ZeroMemory( &This->m_mtOut, sizeof(AM_MEDIA_TYPE) );
-
-	memcpy( &This->m_mtOut.majortype, &MEDIATYPE_Video, sizeof(GUID) );
-	memcpy( &This->m_mtOut.formattype, &FORMAT_VideoInfo, sizeof(GUID) );
-	This->m_mtOut.cbFormat = sizeof(VIDEOINFOHEADER) + cbFmt + sizeof(RGBQUAD)*256;
-	This->m_mtOut.pbFormat = (BYTE*)CoTaskMemAlloc(This->m_mtOut.cbFormat);
-	if ( This->m_mtOut.pbFormat == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This->m_mtOut.pbFormat, This->m_mtOut.cbFormat );
-
-	pbiOut = (BITMAPINFO*)(&((VIDEOINFOHEADER*)This->m_mtOut.pbFormat)->bmiHeader);
-
-	TRACE("(%p) - get format\n",This);
-	if ( ICDecompressGetFormat( This->hicCached, pbiIn, pbiOut ) != ICERR_OK )
-		return E_FAIL;
-
-	hr = QUARTZ_MediaSubType_FromBitmap( &This->m_mtOut.subtype, &pbiOut->bmiHeader );
-	if ( FAILED(hr) )
-		return hr;
-	if ( hr != S_OK )
-		QUARTZ_MediaSubType_FromFourCC( &This->m_mtOut.subtype, pbiOut->bmiHeader.biCompression );
-
-	This->m_mtOut.bFixedSizeSamples = (pbiOut->bmiHeader.biCompression == 0) ? 1 : 0;
-	This->m_mtOut.lSampleSize = (pbiOut->bmiHeader.biCompression == 0) ? DIBSIZE(pbiOut->bmiHeader) : pbiOut->bmiHeader.biSizeImage;
-
-	/* get palette */
-	if ( pbiOut->bmiHeader.biBitCount <= 8 )
-	{
-		TRACE("(%p) - get palette\n",This);
-		if ( ICDecompressGetPalette( This->hicCached, pbiIn, pbiOut ) != ICERR_OK )
-		{
-			TRACE("(%p) - use the input palette\n",This);
-			if ( pbiIn->bmiHeader.biBitCount != pbiOut->bmiHeader.biBitCount )
-			{
-				FIXME( "no palette...FIXME?\n" );
-				return E_FAIL;
-			}
-			if ( pbiOut->bmiHeader.biClrUsed == 0 )
-				pbiOut->bmiHeader.biClrUsed = 1<<pbiOut->bmiHeader.biBitCount;
-			if ( pbiOut->bmiHeader.biClrUsed > (1<<pbiOut->bmiHeader.biBitCount) )
-			{
-				ERR( "biClrUsed=%ld\n", pbiOut->bmiHeader.biClrUsed );
-				return E_FAIL;
-			}
-
-			memcpy( pbiOut->bmiColors, pbiIn->bmiColors,
-				sizeof(RGBQUAD) * pbiOut->bmiHeader.biClrUsed );
-		}
-	}
-
-	TRACE("(%p) - return format\n",This);
-	*ppmtAcceptTypes = &This->m_mtOut;
-	*pcAcceptTypes = 1;
-
-	return NOERROR;
-}
-
-static HRESULT AVIDec_GetAllocProp( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, ALLOCATOR_PROPERTIES* pProp, BOOL* pbTransInPlace, BOOL* pbTryToReuseSample )
-{
-	CAVIDecImpl*	This = pImpl->m_pUserData;
-	BITMAPINFO*	pbiOut = NULL;
-	HRESULT hr;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = AVIDec_CheckMediaType( pImpl, pmtIn, pmtOut );
-	if ( FAILED(hr) )
-		return hr;
-
-	pbiOut = (BITMAPINFO*)(&((VIDEOINFOHEADER*)pmtOut->pbFormat)->bmiHeader);
-
-	pProp->cBuffers = 1;
-	if ( pbiOut->bmiHeader.biCompression == 0 )
-		pProp->cbBuffer = DIBSIZE(pbiOut->bmiHeader);
-	else
-		pProp->cbBuffer = pbiOut->bmiHeader.biSizeImage;
-
-	*pbTransInPlace = FALSE;
-	*pbTryToReuseSample = TRUE;
-
-	return NOERROR;
-}
-
-static HRESULT AVIDec_BeginTransform( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, BOOL bReuseSample )
-{
-	CAVIDecImpl*	This = pImpl->m_pUserData;
-	BITMAPINFO*	pbiIn = NULL;
-	BITMAPINFO*	pbiOut = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p,%p,%d)\n",This,pmtIn,pmtOut,bReuseSample);
-
-	if ( This == NULL ||
-		 This->hicTrans != (HIC)NULL )
-		return E_UNEXPECTED;
-
-	hr = AVIDec_CheckMediaType( pImpl, pmtIn, pmtOut );
-	if ( FAILED(hr) )
-		return hr;
-
-	AVIDec_ReleaseDIBBuffers(This);
-
-	pbiIn = (BITMAPINFO*)(&((VIDEOINFOHEADER*)pmtIn->pbFormat)->bmiHeader);
-	pbiOut = (BITMAPINFO*)(&((VIDEOINFOHEADER*)pmtOut->pbFormat)->bmiHeader);
-	This->m_pbiIn = AVIDec_DuplicateBitmapInfo(pbiIn);
-	This->m_pbiOut = AVIDec_DuplicateBitmapInfo(pbiOut);
-	if ( This->m_pbiIn == NULL || This->m_pbiOut == NULL )
-		return E_OUTOFMEMORY;
-	if ( This->m_pbiOut->bmiHeader.biCompression == 0 || This->m_pbiOut->bmiHeader.biCompression == 3 )
-		This->m_pbiOut->bmiHeader.biSizeImage = DIBSIZE(This->m_pbiOut->bmiHeader);
-
-	if ( !bReuseSample )
-	{
-		This->m_pOutBuf = QUARTZ_AllocMem(This->m_pbiOut->bmiHeader.biSizeImage);
-		if ( This->m_pOutBuf == NULL )
-			return E_OUTOFMEMORY;
-		ZeroMemory( This->m_pOutBuf, This->m_pbiOut->bmiHeader.biSizeImage );
-	}
-
-	if ( ICERR_OK != ICDecompressBegin(
-		This->hicCached, This->m_pbiIn, This->m_pbiOut ) )
-		return E_FAIL;
-
-	This->hicTrans = This->hicCached;
-	This->hicCached = (HIC)NULL;
-
-	return NOERROR;
-}
-
-static HRESULT AVIDec_Transform( CTransformBaseImpl* pImpl, IMediaSample* pSampIn, IMediaSample* pSampOut )
-{
-	CAVIDecImpl*	This = pImpl->m_pUserData;
-	DWORD	dwFlags;
-	BYTE*	pDataIn = NULL;
-	BYTE*	pDataOut = NULL;
-	HRESULT hr;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL || pSampOut == NULL ||
-		 This->hicTrans == (HIC)NULL ||
-		 This->m_pbiIn == NULL ||
-		 This->m_pbiOut == NULL )
-		return E_UNEXPECTED;
-
-	hr = IMediaSample_GetPointer( pSampIn, &pDataIn );
-	if ( FAILED(hr) )
-		return hr;
-	hr = IMediaSample_GetPointer( pSampOut, &pDataOut );
-	if ( FAILED(hr) )
-		return hr;
-
-	dwFlags = 0;
-	/*** FIXME!!!
-	 *
-	 * if ( IMediaSample_IsSyncPoint(pSampIn) != S_OK )
-	 *	dwFlags |= ICDECOMPRESS_NOTKEYFRAME;
-	 ****/
-
-	if ( IMediaSample_IsPreroll(pSampIn) == S_OK )
-		dwFlags |= ICDECOMPRESS_PREROLL;
-
-	if ( ICERR_OK != ICDecompress(
-		This->hicTrans,
-		dwFlags,
-		&This->m_pbiIn->bmiHeader,
-		pDataIn,
-		&This->m_pbiOut->bmiHeader,
-		( This->m_pOutBuf != NULL ) ? This->m_pOutBuf : pDataOut ) )
-		return E_FAIL;
-
-	if ( This->m_pOutBuf != NULL )
-		memcpy( pDataOut, This->m_pOutBuf,
-				This->m_pbiOut->bmiHeader.biSizeImage );
-
-	return NOERROR;
-}
-
-static HRESULT AVIDec_EndTransform( CTransformBaseImpl* pImpl )
-{
-	CAVIDecImpl*	This = pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-	if ( This->hicTrans == (HIC)NULL )
-		return NOERROR;
-
-	ICDecompressEnd(This->hicTrans);
-
-	if ( This->hicCached != (HIC)NULL )
-		ICClose(This->hicCached);
-	This->hicCached = This->hicTrans;
-	This->hicTrans = (HIC)NULL;
-
-	AVIDec_ReleaseDIBBuffers(This);
-
-	return NOERROR;
-}
-
-
-static const TransformBaseHandlers transhandlers =
-{
-	AVIDec_Init,
-	AVIDec_Cleanup,
-	AVIDec_CheckMediaType,
-	AVIDec_GetOutputTypes,
-	AVIDec_GetAllocProp,
-	AVIDec_BeginTransform,
-	NULL,
-	AVIDec_Transform,
-	AVIDec_EndTransform,
-};
-
-
-HRESULT QUARTZ_CreateAVIDec(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateTransformBase(
-		punkOuter,ppobj,
-		&CLSID_AVIDec,
-		AVIDec_FilterName,
-		NULL, NULL,
-		&transhandlers );
-}
-
diff --git a/dlls/quartz/aviparse.c b/dlls/quartz/aviparse.c
deleted file mode 100644
index f4434bb..0000000
--- a/dlls/quartz/aviparse.c
+++ /dev/null
@@ -1,720 +0,0 @@
-/*
- * Implements AVI Parser(Splitter).
- *
- *	FIXME - no seeking
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "mmsystem.h"
-#include "vfw.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "vfwmsgs.h"
-#include "amvideo.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "parser.h"
-#include "mtype.h"
-
-
-
-static const WCHAR QUARTZ_AVIParser_Name[] =
-{ 'A','V','I',' ','S','p','l','i','t','t','e','r',0 };
-static const WCHAR QUARTZ_AVIParserInPin_Name[] =
-{ 'I','n',0 };
-static const WCHAR QUARTZ_AVIParserOutPin_Basename[] =
-{ 'S','t','r','e','a','m',0 };
-
-#define WINE_QUARTZ_AVIPINNAME_MAX	64
-
-/****************************************************************************
- *
- *	CAVIParseImpl
- */
-
-
-typedef struct CAVIParseImpl CAVIParseImpl;
-typedef struct CAVIParseStream CAVIParseStream;
-
-struct CAVIParseImpl
-{
-	MainAVIHeader	avih;
-	CAVIParseStream*	pStreamsBuf;
-	DWORD	cIndexEntries;
-	AVIINDEXENTRY*	pIndexEntriesBuf;
-	WCHAR	wchWork[ WINE_QUARTZ_AVIPINNAME_MAX ];
-};
-
-struct CAVIParseStream
-{
-	AVIStreamHeader	strh;
-	DWORD	cbFmt;
-	BYTE*	pFmtBuf;
-	DWORD	cIndexEntries;
-	AVIINDEXENTRY*	pIndexEntries;
-	DWORD	cIndexCur;
-	REFERENCE_TIME	rtCur;
-	REFERENCE_TIME	rtInternal;
-	BOOL	bDataDiscontinuity;
-};
-
-
-static HRESULT CAVIParseImpl_ParseStreamList(
-	CParserImpl* pImpl, CAVIParseImpl* This, ULONG nStreamIndex,
-	LONGLONG llOfsTop, DWORD dwListLen, CAVIParseStream* pStream )
-{
-	HRESULT hr;
-	LONGLONG	llOfs;
-	DWORD	dwChunkLength;
-
-	TRACE("search strh\n");
-	hr = RIFF_SearchChunk(
-		pImpl, dwListLen,
-		llOfsTop, PARSER_strh,
-		&llOfs, &dwChunkLength );
-	if ( hr == S_OK )
-	{
-		TRACE("strh has been detected\n");
-		if ( dwChunkLength < sizeof(AVIStreamHeader) )
-			hr = E_FAIL;
-		else
-			hr = IAsyncReader_SyncRead( pImpl->m_pReader,
-				llOfs, sizeof(AVIStreamHeader), (BYTE*)&pStream->strh );
-	}
-	if ( FAILED(hr) )
-		return hr;
-	if ( hr != S_OK )
-		return E_FAIL;
-
-	TRACE("search strf\n");
-	hr = RIFF_SearchChunk(
-		pImpl, dwListLen,
-		llOfsTop, PARSER_strf,
-		&llOfs, &dwChunkLength );
-	if ( hr == S_OK && dwChunkLength > 0 )
-	{
-		TRACE("strf has been detected\n");
-		pStream->cbFmt = dwChunkLength;
-		pStream->pFmtBuf = (BYTE*)QUARTZ_AllocMem( dwChunkLength );
-		if ( pStream->pFmtBuf == NULL )
-			hr = E_OUTOFMEMORY;
-		else
-			hr = IAsyncReader_SyncRead( pImpl->m_pReader,
-				llOfs, dwChunkLength, pStream->pFmtBuf );
-	}
-	if ( FAILED(hr) )
-		return hr;
-
-	TRACE("search indx\n");
-	hr = RIFF_SearchChunk(
-		pImpl, dwListLen,
-		llOfsTop, PARSER_indx,
-		&llOfs, &dwChunkLength );
-	if ( FAILED(hr) )
-		return hr;
-	if ( hr == S_OK )
-	{
-		FIXME( "'indx' has been detected - not implemented now!\n" );
-		/*return E_FAIL;*/
-	}
-
-	return NOERROR;
-}
-
-
-static HRESULT CAVIParseImpl_InitParser( CParserImpl* pImpl, ULONG* pcStreams )
-{
-	CAVIParseImpl*	This = NULL;
-	BYTE	riffhdr[12];
-	ULONG	i;
-	ULONG	nIndex;
-	HRESULT hr;
-	LONGLONG	llOfs_hdrl;
-	DWORD	dwLen_hdrl;
-	LONGLONG	llOfs;
-	DWORD	dwChunkId;
-	DWORD	dwChunkLength;
-	AVIINDEXENTRY*	pEntriesBuf = NULL;
-	ULONG	cEntries;
-	ULONG	cEntriesCur;
-
-	TRACE("(%p,%p)\n",pImpl,pcStreams);
-
-	hr = IAsyncReader_SyncRead( pImpl->m_pReader, 0, 12, riffhdr );
-	if ( FAILED(hr) )
-		return hr;
-	if ( hr != S_OK )
-		return E_FAIL;
-	if ( memcmp( &riffhdr[0], "RIFF", 4 ) != 0 ||
-		 memcmp( &riffhdr[8], "AVI ", 4 ) != 0 )
-		return E_FAIL;
-
-	TRACE("it's AVI\n");
-
-	This = (CAVIParseImpl*)QUARTZ_AllocMem( sizeof(CAVIParseImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	pImpl->m_pUserData = This;
-	ZeroMemory( This, sizeof(CAVIParseImpl) );
-	This->pStreamsBuf = NULL;
-	This->cIndexEntries = 0;
-	This->pIndexEntriesBuf = 0;
-
-	hr = RIFF_SearchList(
-		pImpl, (DWORD)0xffffffff,
-		PARSER_RIFF_OfsFirst, PARSER_hdrl,
-		&llOfs_hdrl, &dwLen_hdrl );
-	if ( FAILED(hr) )
-		return hr;
-	if ( hr != S_OK )
-		return E_FAIL;
-
-	/* read 'avih' */
-	TRACE("read avih\n");
-	hr = RIFF_SearchChunk(
-		pImpl, dwLen_hdrl,
-		llOfs_hdrl, PARSER_avih,
-		&llOfs, &dwChunkLength );
-	if ( FAILED(hr) )
-		return hr;
-	if ( hr != S_OK )
-		return E_FAIL;
-
-	if ( dwChunkLength > sizeof(MainAVIHeader) )
-		dwChunkLength = sizeof(MainAVIHeader);
-	hr = IAsyncReader_SyncRead( pImpl->m_pReader, llOfs, dwChunkLength, (BYTE*)&(This->avih) );
-	if ( FAILED(hr) )
-		return hr;
-	if ( hr != S_OK )
-		return E_FAIL;
-	if ( This->avih.dwStreams == 0 )
-		return E_FAIL;
-
-	/* initialize streams. */
-	This->pStreamsBuf = (CAVIParseStream*)QUARTZ_AllocMem(
-		sizeof(CAVIParseStream) * This->avih.dwStreams );
-	if ( This->pStreamsBuf == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This->pStreamsBuf,
-		sizeof(CAVIParseStream) * This->avih.dwStreams );
-
-	llOfs = llOfs_hdrl;
-	for ( nIndex = 0; nIndex < This->avih.dwStreams; nIndex++ )
-	{
-		TRACE("search strl for stream %lu\n",nIndex);
-		hr = RIFF_SearchList(
-			pImpl,
-			dwLen_hdrl, llOfs, PARSER_strl,
-			&llOfs, &dwChunkLength );
-		if ( FAILED(hr) )
-			return hr;
-		if ( hr != S_OK )
-			return E_FAIL;
-
-		/* read 'strl'. */
-		hr = CAVIParseImpl_ParseStreamList(
-			pImpl, This, nIndex,
-			llOfs, dwChunkLength, &This->pStreamsBuf[nIndex] );
-
-		if ( FAILED(hr) )
-			return hr;
-		if ( hr != S_OK )
-			return E_FAIL;
-		llOfs += dwChunkLength;
-	}
-
-	/* initialize idx1. */
-	TRACE("search idx1\n");
-	hr = RIFF_SearchChunk(
-		pImpl, (DWORD)0xffffffff,
-		PARSER_RIFF_OfsFirst, PARSER_idx1,
-		&llOfs, &dwChunkLength );
-	if ( FAILED(hr) )
-		return hr;
-	if ( hr == S_OK )
-	{
-		/* read idx1. */
-		This->cIndexEntries = dwChunkLength / sizeof(AVIINDEXENTRY);
-		This->pIndexEntriesBuf = (AVIINDEXENTRY*)QUARTZ_AllocMem(
-			sizeof(AVIINDEXENTRY) * This->cIndexEntries );
-		if ( This->pIndexEntriesBuf == NULL )
-			return E_OUTOFMEMORY;
-		hr = IAsyncReader_SyncRead( pImpl->m_pReader, llOfs, sizeof(AVIINDEXENTRY) * This->cIndexEntries, (BYTE*)This->pIndexEntriesBuf );
-		if ( FAILED(hr) )
-			return hr;
-		if ( hr != S_OK )
-			return E_FAIL;
-
-		pEntriesBuf = (AVIINDEXENTRY*)QUARTZ_AllocMem(
-			sizeof(AVIINDEXENTRY) * This->cIndexEntries );
-		if ( pEntriesBuf == NULL )
-			return E_OUTOFMEMORY;
-		cEntries = 0;
-		for ( nIndex = 0; nIndex < This->avih.dwStreams; nIndex++ )
-		{
-			cEntriesCur = cEntries;
-			dwChunkId = (((nIndex%10)+'0')<<8) | ((nIndex/10)+'0');
-			for ( i = 0; i < This->cIndexEntries; i++ )
-			{
-				if ( (This->pIndexEntriesBuf[i].ckid & 0xffff) == dwChunkId )
-					memcpy( &pEntriesBuf[cEntries++], &This->pIndexEntriesBuf[i], sizeof(AVIINDEXENTRY) );
-			}
-			This->pStreamsBuf[nIndex].pIndexEntries = &pEntriesBuf[cEntriesCur];
-			This->pStreamsBuf[nIndex].cIndexEntries = cEntries - cEntriesCur;
-			This->pStreamsBuf[nIndex].cIndexCur = 0;
-			This->pStreamsBuf[nIndex].rtCur = 0;
-			This->pStreamsBuf[nIndex].rtInternal = 0;
-			TRACE("stream %lu - %lu entries\n",nIndex,This->pStreamsBuf[nIndex].cIndexEntries);
-			This->pStreamsBuf[nIndex].bDataDiscontinuity = TRUE;
-		}
-		QUARTZ_FreeMem(This->pIndexEntriesBuf);
-		This->pIndexEntriesBuf = pEntriesBuf;
-
-		This->avih.dwSuggestedBufferSize = 0;
-		for ( i = 0; i < This->cIndexEntries; i++ )
-		{
-			if ( This->avih.dwSuggestedBufferSize < This->pIndexEntriesBuf[i].dwChunkLength )
-				This->avih.dwSuggestedBufferSize = This->pIndexEntriesBuf[i].dwChunkLength;
-		}
-	}
-	else
-	{
-		return E_FAIL;
-	}
-
-	if ( This->avih.dwStreams > 100 )
-		return E_FAIL;
-
-	*pcStreams = This->avih.dwStreams;
-
-	return NOERROR;
-}
-
-static HRESULT CAVIParseImpl_UninitParser( CParserImpl* pImpl )
-{
-	CAVIParseImpl*	This = (CAVIParseImpl*)pImpl->m_pUserData;
-	ULONG	nIndex;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	/* destruct */
-	if ( This->pStreamsBuf != NULL )
-	{
-		for ( nIndex = 0; nIndex < This->avih.dwStreams; nIndex++ )
-		{
-			/* release this stream */
-			if ( This->pStreamsBuf[nIndex].pFmtBuf != NULL )
-				QUARTZ_FreeMem(This->pStreamsBuf[nIndex].pFmtBuf);
-		}
-		QUARTZ_FreeMem( This->pStreamsBuf );
-		This->pStreamsBuf = NULL;
-	}
-
-	if ( This->pIndexEntriesBuf != NULL )
-	{
-		QUARTZ_FreeMem( This->pIndexEntriesBuf );
-		This->pIndexEntriesBuf = NULL;
-	}
-
-	QUARTZ_FreeMem( This );
-	pImpl->m_pUserData = NULL;
-
-	return NOERROR;
-}
-
-static LPCWSTR CAVIParseImpl_GetOutPinName( CParserImpl* pImpl, ULONG nStreamIndex )
-{
-	CAVIParseImpl*	This = (CAVIParseImpl*)pImpl->m_pUserData;
-	int wlen;
-
-	TRACE("(%p,%lu)\n",This,nStreamIndex);
-
-	if ( This == NULL || nStreamIndex >= This->avih.dwStreams )
-		return NULL;
-
-	wlen = lstrlenW(QUARTZ_AVIParserOutPin_Basename);
-	memcpy( This->wchWork, QUARTZ_AVIParserOutPin_Basename, sizeof(WCHAR)*wlen );
-	This->wchWork[ wlen ] = (nStreamIndex/10) + '0';
-	This->wchWork[ wlen+1 ] = (nStreamIndex%10) + '0';
-	This->wchWork[ wlen+2 ] = 0;
-
-	return This->wchWork;
-}
-
-static HRESULT CAVIParseImpl_GetStreamType( CParserImpl* pImpl, ULONG nStreamIndex, AM_MEDIA_TYPE* pmt )
-{
-	CAVIParseImpl*	This = (CAVIParseImpl*)pImpl->m_pUserData;
-	VIDEOINFOHEADER*	pvi;
-	BITMAPINFOHEADER*	pbi;
-	WAVEFORMATEX*	pwfx;
-	DWORD	cbFmt;
-	DWORD	cb;
-	HRESULT hr;
-
-	TRACE("(%p,%lu,%p)\n",This,nStreamIndex,pmt);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-	if ( nStreamIndex >= This->avih.dwStreams )
-		return E_INVALIDARG;
-
-	cbFmt = This->pStreamsBuf[nStreamIndex].cbFmt;
-
-	ZeroMemory( pmt, sizeof(AM_MEDIA_TYPE) );
-	switch ( This->pStreamsBuf[nStreamIndex].strh.fccType )
-	{
-	case PARSER_vids:
-		pbi = (BITMAPINFOHEADER*)This->pStreamsBuf[nStreamIndex].pFmtBuf;
-		if ( pbi == NULL || cbFmt < sizeof(BITMAPINFOHEADER) )
-			goto unknown_format;
-
-		memcpy( &pmt->majortype, &MEDIATYPE_Video, sizeof(GUID) );
-		hr = QUARTZ_MediaSubType_FromBitmap( &pmt->subtype, pbi );
-		if ( FAILED(hr) )
-			goto unknown_format;
-		if ( hr != S_OK )
-			QUARTZ_MediaSubType_FromFourCC( &pmt->subtype, (DWORD)pbi->biCompression );
-
-		pmt->bFixedSizeSamples = QUARTZ_BitmapHasFixedSample( pbi ) ? 1 : 0;
-		pmt->bTemporalCompression = 0; /* FIXME - 1 if inter-frame compression is used */
-		pmt->lSampleSize = ( pbi->biCompression == 0 ) ? DIBSIZE(*pbi) : pbi->biSizeImage;
-		memcpy( &pmt->formattype, &FORMAT_VideoInfo, sizeof(GUID) );
-
-		cb = sizeof(VIDEOINFOHEADER) + cbFmt;
-		pmt->pbFormat = (BYTE*)CoTaskMemAlloc( cb );
-		if ( pmt->pbFormat == NULL )
-			return E_OUTOFMEMORY;
-		ZeroMemory( pmt->pbFormat, cb );
-		pvi = (VIDEOINFOHEADER*)pmt->pbFormat;
-		pmt->cbFormat = cb;
-		memcpy( &pvi->bmiHeader, pbi, cbFmt );
-		break;
-	case PARSER_auds:
-		pwfx = (WAVEFORMATEX*)This->pStreamsBuf[nStreamIndex].pFmtBuf;
-		if ( pwfx == NULL || cbFmt < (sizeof(WAVEFORMATEX)-2) )
-			goto unknown_format;
-
-		memcpy( &pmt->majortype, &MEDIATYPE_Audio, sizeof(GUID) );
-		QUARTZ_MediaSubType_FromFourCC( &pmt->subtype, (DWORD)pwfx->wFormatTag );
-		pmt->bFixedSizeSamples = 1;
-		pmt->bTemporalCompression = 0;
-		pmt->lSampleSize = pwfx->nBlockAlign;
-		memcpy( &pmt->formattype, &FORMAT_WaveFormatEx, sizeof(GUID) );
-		pmt->pUnk = NULL;
-
-		cb = ( cbFmt < sizeof(WAVEFORMATEX) ) ? sizeof(WAVEFORMATEX) : cbFmt;
-		pmt->pbFormat = (BYTE*)CoTaskMemAlloc( cb );
-		if ( pmt->pbFormat == NULL )
-			return E_OUTOFMEMORY;
-		ZeroMemory( pmt->pbFormat, cb );
-		pmt->cbFormat = cbFmt;
-		memcpy( pmt->pbFormat, pwfx, cbFmt );
-		break;
-	case PARSER_mids:
-		/* FIXME? */
-		memcpy( &pmt->majortype, &MEDIATYPE_Midi, sizeof(GUID) );
-		memcpy( &pmt->subtype, &MEDIASUBTYPE_NULL, sizeof(GUID) );
-		pmt->bFixedSizeSamples = 0;
-		pmt->bTemporalCompression = 0;
-		pmt->lSampleSize = 1;
-		memcpy( &pmt->formattype, &FORMAT_None, sizeof(GUID) );
-		pmt->pUnk = NULL;
-		pmt->cbFormat = 0;
-		pmt->pbFormat = NULL;
-		break;
-	case PARSER_txts:
-		/* FIXME? */
-		memcpy( &pmt->majortype, &MEDIATYPE_Text, sizeof(GUID) );
-		memcpy( &pmt->subtype, &MEDIASUBTYPE_NULL, sizeof(GUID) );
-		pmt->bFixedSizeSamples = 0;
-		pmt->bTemporalCompression = 0;
-		pmt->lSampleSize = 1;
-		memcpy( &pmt->formattype, &FORMAT_None, sizeof(GUID) );
-		pmt->pUnk = NULL;
-		pmt->cbFormat = 0;
-		pmt->pbFormat = NULL;
-		break;
-	default:
-		goto unknown_format;
-	}
-
-	return NOERROR;
-
-unknown_format:;
-	FIXME( "(%p) unsupported stream type %c%c%c%c\n",This,
-			(int)((This->pStreamsBuf[nStreamIndex].strh.fccType>> 0)&0xff),
-			(int)((This->pStreamsBuf[nStreamIndex].strh.fccType>> 8)&0xff),
-			(int)((This->pStreamsBuf[nStreamIndex].strh.fccType>>16)&0xff),
-			(int)((This->pStreamsBuf[nStreamIndex].strh.fccType>>24)&0xff) );
-
-	memcpy( &pmt->majortype, &MEDIATYPE_NULL, sizeof(GUID) );
-	memcpy( &pmt->subtype, &MEDIASUBTYPE_NULL, sizeof(GUID) );
-	pmt->bFixedSizeSamples = 0;
-	pmt->bTemporalCompression = 0;
-	pmt->lSampleSize = 1;
-	memcpy( &pmt->formattype, &FORMAT_None, sizeof(GUID) );
-	pmt->pUnk = NULL;
-	pmt->cbFormat = 0;
-	pmt->pbFormat = NULL;
-
-	return NOERROR;
-}
-
-static HRESULT CAVIParseImpl_CheckStreamType( CParserImpl* pImpl, ULONG nStreamIndex, const AM_MEDIA_TYPE* pmt )
-{
-	CAVIParseImpl*	This = (CAVIParseImpl*)pImpl->m_pUserData;
-	HRESULT hr;
-	AM_MEDIA_TYPE	mt;
-	VIDEOINFOHEADER*	pvi;
-	VIDEOINFOHEADER*	pviCheck;
-	WAVEFORMATEX*	pwfx;
-	WAVEFORMATEX*	pwfxCheck;
-
-	TRACE("(%p,%lu,%p)\n",This,nStreamIndex,pmt);
-
-	hr = CAVIParseImpl_GetStreamType( pImpl, nStreamIndex, &mt );
-	if ( FAILED(hr) )
-		return hr;
-
-	TRACE("check GUIDs - %s,%s\n",debugstr_guid(&pmt->majortype),debugstr_guid(&pmt->subtype));
-	if ( !IsEqualGUID( &pmt->majortype, &mt.majortype ) ||
-		 !IsEqualGUID( &pmt->subtype, &mt.subtype ) ||
-		 !IsEqualGUID( &pmt->formattype, &mt.formattype ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-
-	TRACE("check format\n");
-	hr = S_OK;
-	switch ( This->pStreamsBuf[nStreamIndex].strh.fccType )
-	{
-	case PARSER_vids:
-		TRACE("check vids\n");
-		pvi = (VIDEOINFOHEADER*)mt.pbFormat;
-		pviCheck = (VIDEOINFOHEADER*)pmt->pbFormat;
-		if ( pvi == NULL || pviCheck == NULL || pmt->cbFormat < sizeof(VIDEOINFOHEADER) )
-			hr = E_FAIL;
-		if ( pvi->bmiHeader.biWidth != pviCheck->bmiHeader.biWidth ||
-			 pvi->bmiHeader.biHeight != pviCheck->bmiHeader.biHeight ||
-			 pvi->bmiHeader.biPlanes != pviCheck->bmiHeader.biPlanes ||
-			 pvi->bmiHeader.biBitCount != pviCheck->bmiHeader.biBitCount ||
-			 pvi->bmiHeader.biCompression != pviCheck->bmiHeader.biCompression ||
-			 pvi->bmiHeader.biClrUsed != pviCheck->bmiHeader.biClrUsed )
-			hr = E_FAIL;
-		break;
-	case PARSER_auds:
-		TRACE("check auds\n");
-		pwfx = (WAVEFORMATEX*)mt.pbFormat;
-		pwfxCheck = (WAVEFORMATEX*)pmt->pbFormat;
-		if ( pwfx == NULL || pwfxCheck == NULL || pmt->cbFormat < (sizeof(WAVEFORMATEX)-2) )
-			hr = E_FAIL;
-		if ( pwfx->wFormatTag != pwfxCheck->wFormatTag ||
-			 pwfx->nBlockAlign != pwfxCheck->nBlockAlign ||
-			 pwfx->wBitsPerSample != pwfxCheck->wBitsPerSample ||
-			 pwfx->nChannels != pwfxCheck->nChannels ||
-			 pwfx->nSamplesPerSec != pwfxCheck->nSamplesPerSec )
-			hr = E_FAIL;
-		break;
-	case PARSER_mids:
-	case PARSER_txts:
-		break;
-	default:
-		break;
-	}
-end:
-	QUARTZ_MediaType_Free( &mt );
-
-	TRACE("%08lx\n",hr);
-
-	return hr;
-}
-
-static HRESULT CAVIParseImpl_GetAllocProp( CParserImpl* pImpl, ALLOCATOR_PROPERTIES* pReqProp )
-{
-	CAVIParseImpl*	This = (CAVIParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p,%p)\n",This,pReqProp);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	ZeroMemory( pReqProp, sizeof(ALLOCATOR_PROPERTIES) );
-	pReqProp->cBuffers = This->avih.dwStreams;
-	pReqProp->cbBuffer = This->avih.dwSuggestedBufferSize;
-
-	return NOERROR;
-}
-
-static HRESULT CAVIParseImpl_GetNextRequest( CParserImpl* pImpl, ULONG* pnStreamIndex, LONGLONG* pllStart, LONG* plLength, REFERENCE_TIME* prtStart, REFERENCE_TIME* prtStop, DWORD* pdwSampleFlags )
-{
-	CAVIParseImpl*	This = (CAVIParseImpl*)pImpl->m_pUserData;
-	REFERENCE_TIME	rtNext;
-	DWORD	nIndexNext;
-	DWORD	nIndex;
-	CAVIParseStream*	pStream;
-	const WAVEFORMATEX*	pwfx;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-	*pdwSampleFlags = AM_SAMPLE_SPLICEPOINT;
-
-	nIndexNext = This->avih.dwStreams;
-	rtNext = ((REFERENCE_TIME)0x7fffffff<<32)|((REFERENCE_TIME)0xffffffff);
-	for ( nIndex = 0; nIndex < This->avih.dwStreams; nIndex++ )
-	{
-		TRACE("stream %lu - %lu,%lu\n",nIndex,(unsigned long)(This->pStreamsBuf[nIndex].rtCur*1000/QUARTZ_TIMEUNITS),This->pStreamsBuf[nIndex].cIndexCur);
-		if ( rtNext > This->pStreamsBuf[nIndex].rtCur &&
-			 This->pStreamsBuf[nIndex].cIndexCur < This->pStreamsBuf[nIndex].cIndexEntries )
-		{
-			nIndexNext = nIndex;
-			rtNext = This->pStreamsBuf[nIndex].rtCur;
-		}
-	}
-	if ( nIndexNext >= This->avih.dwStreams )
-		return S_FALSE;
-
-	if ( This->pIndexEntriesBuf != NULL )
-	{
-		pStream = &This->pStreamsBuf[nIndexNext];
-		*pnStreamIndex = nIndexNext;
-		*pllStart = (LONGLONG)pStream->pIndexEntries[pStream->cIndexCur].dwChunkOffset + 8;
-		*plLength = (LONG)pStream->pIndexEntries[pStream->cIndexCur].dwChunkLength;
-		*prtStart = rtNext;
-		*prtStop = rtNext;
-		/* FIXME - is this frame keyframe?? */
-		*pdwSampleFlags = AM_SAMPLE_SPLICEPOINT;
-		if ( pStream->bDataDiscontinuity )
-		{
-			*pdwSampleFlags |= AM_SAMPLE_DATADISCONTINUITY;
-			pStream->bDataDiscontinuity = FALSE;
-		}
-
-		switch ( pStream->strh.fccType )
-		{
-		case PARSER_vids:
-			TRACE("vids\n");
-			pStream->rtInternal ++;
-			rtNext = pStream->rtInternal * (REFERENCE_TIME)QUARTZ_TIMEUNITS * (REFERENCE_TIME)pStream->strh.dwScale / (REFERENCE_TIME)pStream->strh.dwRate;
-			/* FIXME - handle AVIPALCHANGE */
-			break;
-		case PARSER_auds:
-			TRACE("auds\n");
-			pwfx = (const WAVEFORMATEX*)pStream->pFmtBuf;
-			if ( pwfx != NULL && pStream->cbFmt >= (sizeof(WAVEFORMATEX)-2) )
-			{
-				pStream->rtInternal += (REFERENCE_TIME)*plLength;
-				rtNext = pStream->rtInternal * (REFERENCE_TIME)QUARTZ_TIMEUNITS / (REFERENCE_TIME)pwfx->nAvgBytesPerSec;
-			}
-			else
-			{
-				pStream->rtInternal += (REFERENCE_TIME)(*plLength);
-				rtNext = pStream->rtInternal * (REFERENCE_TIME)QUARTZ_TIMEUNITS * (REFERENCE_TIME)pStream->strh.dwScale / ((REFERENCE_TIME)pStream->strh.dwSampleSize * (REFERENCE_TIME)pStream->strh.dwRate);
-			}
-			break;
-		case PARSER_mids:
-		case PARSER_txts:
-		default:
-			pStream->rtInternal += (REFERENCE_TIME)(*plLength);
-			rtNext = pStream->rtInternal * (REFERENCE_TIME)QUARTZ_TIMEUNITS * (REFERENCE_TIME)pStream->strh.dwScale / ((REFERENCE_TIME)pStream->strh.dwSampleSize * (REFERENCE_TIME)pStream->strh.dwRate);
-			break;
-		}
-		pStream->cIndexCur ++;
-		pStream->rtCur = rtNext;
-		*prtStop = rtNext;
-	}
-	else
-	{
-		ERR( "no idx1\n" );
-		return E_NOTIMPL;
-	}
-
-	TRACE("return %lu / %ld-%ld / %lu-%lu\n",
-		*pnStreamIndex,(long)*pllStart,*plLength,
-		(unsigned long)((*prtStart)*1000/QUARTZ_TIMEUNITS),
-		(unsigned long)((*prtStop)*1000/QUARTZ_TIMEUNITS));
-
-	return NOERROR;
-}
-
-static HRESULT CAVIParseImpl_ProcessSample( CParserImpl* pImpl, ULONG nStreamIndex, LONGLONG llStart, LONG lLength, IMediaSample* pSample )
-{
-	CAVIParseImpl*	This = (CAVIParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p,%lu,%ld,%ld,%p)\n",This,nStreamIndex,(long)llStart,lLength,pSample);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return NOERROR;
-}
-
-
-
-
-static const struct ParserHandlers CAVIParseImpl_Handlers =
-{
-	CAVIParseImpl_InitParser,
-	CAVIParseImpl_UninitParser,
-	CAVIParseImpl_GetOutPinName,
-	CAVIParseImpl_GetStreamType,
-	CAVIParseImpl_CheckStreamType,
-	CAVIParseImpl_GetAllocProp,
-	CAVIParseImpl_GetNextRequest,
-	CAVIParseImpl_ProcessSample,
-
-	/* for IQualityControl */
-	NULL, /* pQualityNotify */
-
-	/* for seeking */
-	NULL, /* pGetSeekingCaps */
-	NULL, /* pIsTimeFormatSupported */
-	NULL, /* pGetCurPos */
-	NULL, /* pSetCurPos */
-	NULL, /* pGetDuration */
-	NULL, /* pGetStopPos */
-	NULL, /* pSetStopPos */
-	NULL, /* pGetPreroll */
-};
-
-HRESULT QUARTZ_CreateAVISplitter(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateParser(
-		punkOuter,ppobj,
-		&CLSID_AviSplitter,
-		QUARTZ_AVIParser_Name,
-		QUARTZ_AVIParserInPin_Name,
-		&CAVIParseImpl_Handlers );
-}
-
-
diff --git a/dlls/quartz/basefilt.c b/dlls/quartz/basefilt.c
deleted file mode 100644
index 143dbd3..0000000
--- a/dlls/quartz/basefilt.c
+++ /dev/null
@@ -1,586 +0,0 @@
-/*
- * Implements IBaseFilter. (internal)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "vfwmsgs.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "basefilt.h"
-#include "enumunk.h"
-
-
-/***************************************************************************
- *
- *	CBaseFilterImpl::IBaseFilter
- *
- */
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnQueryInterface(IBaseFilter* iface,REFIID riid,void** ppobj)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-CBaseFilterImpl_fnAddRef(IBaseFilter* iface)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->punkControl);
-}
-
-static ULONG WINAPI
-CBaseFilterImpl_fnRelease(IBaseFilter* iface)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->punkControl);
-}
-
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnGetClassID(IBaseFilter* iface,CLSID* pclsid)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	if ( pclsid == NULL )
-		return E_POINTER;
-
-	memcpy( pclsid, This->pclsidFilter, sizeof(CLSID) );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnStop(IBaseFilter* iface)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-	HRESULT hr;
-
-	TRACE("(%p)->()\n",This);
-
-	hr = NOERROR;
-
-	EnterCriticalSection( &This->csFilter );
-	if ( This->bIntermediateState )
-	{
-		LeaveCriticalSection( &This->csFilter );
-		return VFW_S_STATE_INTERMEDIATE; /* FIXME? */
-	}
-	TRACE("(%p) state = %d\n",This,This->fstate);
-
-	if ( This->fstate == State_Running )
-	{
-		if ( This->pHandlers->pOnInactive != NULL )
-			hr = This->pHandlers->pOnInactive( This );
-		if ( SUCCEEDED(hr) )
-			This->fstate = State_Paused;
-	}
-	if ( This->fstate == State_Paused )
-	{
-		if ( This->pHandlers->pOnStop != NULL )
-			hr = This->pHandlers->pOnStop( This );
-		if ( SUCCEEDED(hr) )
-			This->fstate = State_Stopped;
-	}
-
-	LeaveCriticalSection( &This->csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnPause(IBaseFilter* iface)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-	HRESULT hr;
-
-	TRACE("(%p)->()\n",This);
-
-	hr = NOERROR;
-
-	EnterCriticalSection( &This->csFilter );
-	if ( This->bIntermediateState )
-	{
-		LeaveCriticalSection( &This->csFilter );
-		return VFW_E_WRONG_STATE; /* FIXME? */
-	}
-	TRACE("(%p) state = %d\n",This,This->fstate);
-
-	if ( This->fstate != State_Paused )
-	{
-		if ( This->pHandlers->pOnInactive != NULL )
-			hr = This->pHandlers->pOnInactive( This );
-		if ( SUCCEEDED(hr) )
-			This->fstate = State_Paused;
-	}
-	LeaveCriticalSection( &This->csFilter );
-
-	TRACE("hr = %08lx\n",hr);
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnRun(IBaseFilter* iface,REFERENCE_TIME rtStart)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-	HRESULT hr;
-
-	TRACE("(%p)->()\n",This);
-
-	hr = NOERROR;
-
-	EnterCriticalSection( &This->csFilter );
-	if ( This->bIntermediateState )
-	{
-		LeaveCriticalSection( &This->csFilter );
-		return VFW_E_WRONG_STATE; /* FIXME? */
-	}
-	TRACE("(%p) state = %d\n",This,This->fstate);
-
-	This->rtStart = rtStart;
-
-	if ( This->fstate == State_Stopped )
-	{
-		if ( This->pHandlers->pOnInactive != NULL )
-			hr = This->pHandlers->pOnInactive( This );
-		if ( SUCCEEDED(hr) )
-			This->fstate = State_Paused;
-	}
-	if ( This->fstate == State_Paused )
-	{
-		if ( This->pHandlers->pOnActive != NULL )
-			hr = This->pHandlers->pOnActive( This );
-		if ( SUCCEEDED(hr) )
-			This->fstate = State_Running;
-	}
-
-	LeaveCriticalSection( &This->csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnGetState(IBaseFilter* iface,DWORD dw,FILTER_STATE* pState)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-	HRESULT hr = S_OK;
-
-	TRACE("(%p)->(%p)\n",This,pState);
-
-	if ( pState == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->csFilter );
-	TRACE("(%p) state = %d\n",This,This->fstate);
-	*pState = This->fstate;
-	if ( This->bIntermediateState )
-		hr = VFW_S_STATE_INTERMEDIATE;
-	LeaveCriticalSection( &This->csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnSetSyncSource(IBaseFilter* iface,IReferenceClock* pobjClock)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-
-	TRACE("(%p)->(%p)\n",This,pobjClock);
-
-	EnterCriticalSection( &This->csFilter );
-
-	if ( This->pClock != NULL )
-	{
-		IReferenceClock_Release( This->pClock );
-		This->pClock = NULL;
-	}
-
-	This->pClock = pobjClock;
-	if ( pobjClock != NULL )
-		IReferenceClock_AddRef( pobjClock );
-
-	LeaveCriticalSection( &This->csFilter );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnGetSyncSource(IBaseFilter* iface,IReferenceClock** ppobjClock)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-	HRESULT hr = VFW_E_NO_CLOCK;
-
-	TRACE("(%p)->(%p)\n",This,ppobjClock);
-
-	if ( ppobjClock == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->csFilter );
-
-	*ppobjClock = This->pClock;
-	if ( This->pClock != NULL )
-	{
-		hr = NOERROR;
-		IReferenceClock_AddRef( This->pClock );
-	}
-
-	LeaveCriticalSection( &This->csFilter );
-
-	return hr;
-}
-
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnEnumPins(IBaseFilter* iface,IEnumPins** ppenum)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-	HRESULT	hr = E_FAIL;
-	QUARTZ_CompList*	pListPins;
-	QUARTZ_CompListItem*	pItem;
-	IUnknown*	punkPin;
-
-	TRACE("(%p)->(%p)\n",This,ppenum);
-
-	if ( ppenum == NULL )
-		return E_POINTER;
-	*ppenum = NULL;
-
-	pListPins = QUARTZ_CompList_Alloc();
-	if ( pListPins == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_CompList_Lock( This->pInPins );
-	QUARTZ_CompList_Lock( This->pOutPins );
-
-	pItem = QUARTZ_CompList_GetFirst( This->pInPins );
-	while ( pItem != NULL )
-	{
-		punkPin = QUARTZ_CompList_GetItemPtr( pItem );
-		hr = QUARTZ_CompList_AddComp( pListPins, punkPin, NULL, 0 );
-		if ( FAILED(hr) )
-			goto err;
-		pItem = QUARTZ_CompList_GetNext( This->pInPins, pItem );
-	}
-
-	pItem = QUARTZ_CompList_GetFirst( This->pOutPins );
-	while ( pItem != NULL )
-	{
-		punkPin = QUARTZ_CompList_GetItemPtr( pItem );
-		hr = QUARTZ_CompList_AddComp( pListPins, punkPin, NULL, 0 );
-		if ( FAILED(hr) )
-			goto err;
-		pItem = QUARTZ_CompList_GetNext( This->pOutPins, pItem );
-	}
-
-	hr = QUARTZ_CreateEnumUnknown(
-		&IID_IEnumPins, (void**)ppenum, pListPins );
-err:
-	QUARTZ_CompList_Unlock( This->pInPins );
-	QUARTZ_CompList_Unlock( This->pOutPins );
-
-	QUARTZ_CompList_Free( pListPins );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnFindPin(IBaseFilter* iface,LPCWSTR lpwszId,IPin** ppobj)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-
-	FIXME("(%p)->(%s,%p) stub!\n",This,debugstr_w(lpwszId),ppobj);
-
-	if ( ppobj == NULL )
-		return E_POINTER;
-
-
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnQueryFilterInfo(IBaseFilter* iface,FILTER_INFO* pfi)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-
-	TRACE("(%p)->(%p)\n",This,pfi);
-
-	if ( pfi == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->csFilter );
-
-	if ( This->cbNameGraph <= sizeof(WCHAR)*MAX_FILTER_NAME )
-	{
-		memcpy( pfi->achName, This->pwszNameGraph, This->cbNameGraph );
-	}
-	else
-	{
-		memcpy( pfi->achName, This->pwszNameGraph,
-				sizeof(WCHAR)*MAX_FILTER_NAME );
-		pfi->achName[MAX_FILTER_NAME-1] = (WCHAR)0;
-	}
-
-	pfi->pGraph = This->pfg;
-	if ( pfi->pGraph != NULL )
-		IFilterGraph_AddRef(pfi->pGraph);
-
-	LeaveCriticalSection( &This->csFilter );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnJoinFilterGraph(IBaseFilter* iface,IFilterGraph* pfg,LPCWSTR lpwszName)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-	HRESULT	hr;
-
-	TRACE("(%p)->(%p,%s)\n",This,pfg,debugstr_w(lpwszName));
-
-	EnterCriticalSection( &This->csFilter );
-
-	if ( This->pwszNameGraph != NULL )
-	{
-		QUARTZ_FreeMem( This->pwszNameGraph );
-		This->pwszNameGraph = NULL;
-		This->cbNameGraph = 0;
-	}
-
-	This->pfg = pfg;
-	This->cbNameGraph = sizeof(WCHAR) * (lstrlenW(lpwszName)+1);
-	This->pwszNameGraph = (WCHAR*)QUARTZ_AllocMem( This->cbNameGraph );
-	if ( This->pwszNameGraph == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto err;
-	}
-	memcpy( This->pwszNameGraph, lpwszName, This->cbNameGraph );
-
-	hr = NOERROR;
-err:
-	LeaveCriticalSection( &This->csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CBaseFilterImpl_fnQueryVendorInfo(IBaseFilter* iface,LPWSTR* lpwszVendor)
-{
-	ICOM_THIS(CBaseFilterImpl,iface);
-
-	TRACE("(%p)->(%p)\n",This,lpwszVendor);
-
-	/* E_NOTIMPL means 'no vender information'. */
-	return E_NOTIMPL;
-}
-
-
-/***************************************************************************
- *
- *	construct/destruct CBaseFilterImpl
- *
- */
-
-static ICOM_VTABLE(IBaseFilter) ibasefilter =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	CBaseFilterImpl_fnQueryInterface,
-	CBaseFilterImpl_fnAddRef,
-	CBaseFilterImpl_fnRelease,
-	/* IPersist fields */
-	CBaseFilterImpl_fnGetClassID,
-	/* IMediaFilter fields */
-	CBaseFilterImpl_fnStop,
-	CBaseFilterImpl_fnPause,
-	CBaseFilterImpl_fnRun,
-	CBaseFilterImpl_fnGetState,
-	CBaseFilterImpl_fnSetSyncSource,
-	CBaseFilterImpl_fnGetSyncSource,
-	/* IBaseFilter fields */
-	CBaseFilterImpl_fnEnumPins,
-	CBaseFilterImpl_fnFindPin,
-	CBaseFilterImpl_fnQueryFilterInfo,
-	CBaseFilterImpl_fnJoinFilterGraph,
-	CBaseFilterImpl_fnQueryVendorInfo,
-};
-
-
-HRESULT CBaseFilterImpl_InitIBaseFilter(
-	CBaseFilterImpl* This, IUnknown* punkControl,
-	const CLSID* pclsidFilter, LPCWSTR lpwszNameGraph,
-	const CBaseFilterHandlers* pHandlers )
-{
-	TRACE("(%p,%p)\n",This,punkControl);
-
-	if ( punkControl == NULL )
-	{
-		ERR( "punkControl must not be NULL\n" );
-		return E_INVALIDARG;
-	}
-
-	ICOM_VTBL(This) = &ibasefilter;
-	This->punkControl = punkControl;
-	This->pHandlers = pHandlers;
-	This->pclsidFilter = pclsidFilter;
-	This->pInPins = NULL;
-	This->pOutPins = NULL;
-	This->pfg = NULL;
-	This->cbNameGraph = 0;
-	This->pwszNameGraph = NULL;
-	This->pClock = NULL;
-	This->rtStart = 0;
-	This->fstate = State_Stopped;
-	This->bIntermediateState = FALSE;
-
-	This->cbNameGraph = sizeof(WCHAR) * (lstrlenW(lpwszNameGraph)+1);
-	This->pwszNameGraph = (WCHAR*)QUARTZ_AllocMem( This->cbNameGraph );
-	if ( This->pwszNameGraph == NULL )
-		return E_OUTOFMEMORY;
-	memcpy( This->pwszNameGraph, lpwszNameGraph, This->cbNameGraph );
-
-	This->pInPins = QUARTZ_CompList_Alloc();
-	This->pOutPins = QUARTZ_CompList_Alloc();
-	if ( This->pInPins == NULL || This->pOutPins == NULL )
-	{
-		if ( This->pInPins != NULL )
-			QUARTZ_CompList_Free(This->pInPins);
-		if ( This->pOutPins != NULL )
-			QUARTZ_CompList_Free(This->pOutPins);
-		QUARTZ_FreeMem(This->pwszNameGraph);
-		return E_OUTOFMEMORY;
-	}
-
-	InitializeCriticalSection( &This->csFilter );
-
-	return NOERROR;
-}
-
-void CBaseFilterImpl_UninitIBaseFilter( CBaseFilterImpl* This )
-{
-	QUARTZ_CompListItem*	pListItem;
-	IPin*	pPin;
-
-	TRACE("(%p)\n",This);
-
-	if ( This->pInPins != NULL )
-	{
-		while ( 1 )
-		{
-			pListItem = QUARTZ_CompList_GetFirst( This->pInPins );
-			if ( pListItem == NULL )
-				break;
-			pPin = (IPin*)QUARTZ_CompList_GetItemPtr( pListItem );
-			QUARTZ_CompList_RemoveComp( This->pInPins, (IUnknown*)pPin );
-		}
-
-		QUARTZ_CompList_Free( This->pInPins );
-		This->pInPins = NULL;
-	}
-	if ( This->pOutPins != NULL )
-	{
-		while ( 1 )
-		{
-			pListItem = QUARTZ_CompList_GetFirst( This->pOutPins );
-			if ( pListItem == NULL )
-				break;
-			pPin = (IPin*)QUARTZ_CompList_GetItemPtr( pListItem );
-			QUARTZ_CompList_RemoveComp( This->pOutPins, (IUnknown*)pPin );
-		}
-
-		QUARTZ_CompList_Free( This->pOutPins );
-		This->pOutPins = NULL;
-	}
-
-	if ( This->pwszNameGraph != NULL )
-	{
-		QUARTZ_FreeMem( This->pwszNameGraph );
-		This->pwszNameGraph = NULL;
-	}
-
-	if ( This->pClock != NULL )
-	{
-		IReferenceClock_Release( This->pClock );
-		This->pClock = NULL;
-	}
-
-	DeleteCriticalSection( &This->csFilter );
-}
-
-/***************************************************************************
- *
- *	CBaseFilterImpl methods
- *
- */
-
-HRESULT CBaseFilterImpl_MediaEventNotify(
-	CBaseFilterImpl* This, long lEvent,LONG_PTR lParam1,LONG_PTR lParam2)
-{
-	IMediaEventSink*	pSink = NULL;
-	HRESULT	hr = E_NOTIMPL;
-
-	EnterCriticalSection( &This->csFilter );
-
-	if ( This->pfg == NULL )
-	{
-		hr = E_UNEXPECTED;
-		goto err;
-	}
-
-	hr = IFilterGraph_QueryInterface( This->pfg, &IID_IMediaEventSink, (void**)&pSink );
-	if ( FAILED(hr) )
-		goto err;
-	if ( pSink == NULL )
-	{
-		hr = E_FAIL;
-		goto err;
-	}
-
-	hr = IMediaEventSink_Notify(pSink,lEvent,lParam1,lParam2);
-	IMediaEventSink_Release(pSink);
-err:
-	LeaveCriticalSection( &This->csFilter );
-
-	return hr;
-}
-
diff --git a/dlls/quartz/basefilt.h b/dlls/quartz/basefilt.h
deleted file mode 100644
index 3b7daab..0000000
--- a/dlls/quartz/basefilt.h
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_BASEFILT_H
-#define	WINE_DSHOW_BASEFILT_H
-
-/*
- * The following interfaces must be used as a part of aggregation.
- * The punkControl must not be NULL since all IUnknown methods are
- * implemented only for aggregation.
- */
-
-/*
- * implements IBaseFilter (internal)
- *
- * a base class for implementing IBaseFilter.
- */
-
-#include "complist.h"
-#include "mtype.h"
-
-typedef struct CBaseFilterHandlers	CBaseFilterHandlers;
-typedef struct CBasePinHandlers	CBasePinHandlers;
-
-typedef struct CBaseFilterImpl
-{
-	/* IPersist - IMediaFilter - IBaseFilter */
-	ICOM_VFIELD(IBaseFilter);
-
-	/* IUnknown fields */
-	IUnknown*	punkControl;
-	/* IBaseFilter fields */
-	const CBaseFilterHandlers*	pHandlers;
-	CRITICAL_SECTION	csFilter;
-	const CLSID*	pclsidFilter;
-	QUARTZ_CompList*	pInPins;	/* a list of IPin-s. */
-	QUARTZ_CompList*	pOutPins;	/* a list of IPin-s. */
-	IFilterGraph*	pfg;
-	DWORD	cbNameGraph;
-	WCHAR*	pwszNameGraph;
-	IReferenceClock*	pClock;
-	REFERENCE_TIME	rtStart;
-	FILTER_STATE	fstate;
-	BOOL	bIntermediateState; /* if set, fstate is ignored. */
-} CBaseFilterImpl;
-
-struct CBaseFilterHandlers
-{
-	HRESULT (*pOnActive)( CBaseFilterImpl* pImpl );
-	HRESULT (*pOnInactive)( CBaseFilterImpl* pImpl );
-	HRESULT (*pOnStop)( CBaseFilterImpl* pImpl );
-};
-
-
-HRESULT CBaseFilterImpl_InitIBaseFilter(
-	CBaseFilterImpl* This, IUnknown* punkControl,
-	const CLSID* pclsidFilter, LPCWSTR lpwszNameGraph,
-	const CBaseFilterHandlers* pHandlers );
-void CBaseFilterImpl_UninitIBaseFilter( CBaseFilterImpl* This );
-
-
-HRESULT CBaseFilterImpl_MediaEventNotify(
-	CBaseFilterImpl* This, long lEvent,LONG_PTR lParam1,LONG_PTR lParam2);
-
-
-/*
- * Implements IPin, IMemInputPin, and IQualityControl. (internal)
- *
- * a base class for implementing IPin.
- */
-
-typedef struct OutputPinAsyncImpl OutputPinAsyncImpl;
-
-typedef struct CPinBaseImpl
-{
-	/* IPin */
-	ICOM_VFIELD(IPin);
-
-	/* IUnknown fields */
-	IUnknown*	punkControl;
-	/* IPin fields */
-	const CBasePinHandlers*	pHandlers;
-	DWORD	cbIdLen;
-	WCHAR*	pwszId;
-	BOOL	bOutput;
-
-	/* you can change AcceptTypes while pcsPin has been hold */
-	const AM_MEDIA_TYPE*	pmtAcceptTypes;
-	ULONG	cAcceptTypes;
-
-	CRITICAL_SECTION*	pcsPin;
-	CRITICAL_SECTION*	pcsPinReceive;
-	CBaseFilterImpl*	pFilter;
-	IPin*	pPinConnectedTo;
-	IMemInputPin*	pMemInputPinConnectedTo;
-	AM_MEDIA_TYPE*	pmtConn;
-	OutputPinAsyncImpl* pAsyncOut; /* for asynchronous output */
-} CPinBaseImpl;
-
-typedef struct CMemInputPinBaseImpl
-{
-	/* IMemInputPin */
-	ICOM_VFIELD(IMemInputPin);
-
-	/* IUnknown fields */
-	IUnknown*	punkControl;
-	/* IMemInputPin fields */
-	CPinBaseImpl*	pPin;
-	IMemAllocator*	pAllocator;
-	BOOL	bReadonly;
-} CMemInputPinBaseImpl;
-
-typedef struct CQualityControlPassThruImpl
-{
-	/* IQualityControl */
-	ICOM_VFIELD(IQualityControl);
-
-	/* IUnknown fields */
-	IUnknown*	punkControl;
-	/* IQualityControl fields */
-	CPinBaseImpl*	pPin;
-	IQualityControl*	pControl;
-} CQualityControlPassThruImpl;
-
-
-struct CBasePinHandlers
-{
-	HRESULT (*pOnPreConnect)( CPinBaseImpl* pImpl, IPin* pPin );
-	HRESULT (*pOnPostConnect)( CPinBaseImpl* pImpl, IPin* pPin );
-	HRESULT (*pOnDisconnect)( CPinBaseImpl* pImpl );
-	HRESULT (*pCheckMediaType)( CPinBaseImpl* pImpl, const AM_MEDIA_TYPE* pmt );
-	HRESULT (*pQualityNotify)( CPinBaseImpl* pImpl, IBaseFilter* pFilter, Quality q );
-	HRESULT (*pReceive)( CPinBaseImpl* pImpl, IMediaSample* pSample );
-	HRESULT (*pReceiveCanBlock)( CPinBaseImpl* pImpl );
-	HRESULT (*pEndOfStream)( CPinBaseImpl* pImpl );
-	HRESULT (*pBeginFlush)( CPinBaseImpl* pImpl );
-	HRESULT (*pEndFlush)( CPinBaseImpl* pImpl );
-	HRESULT (*pNewSegment)( CPinBaseImpl* pImpl, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double rate );
-};
-
-
-
-HRESULT CPinBaseImpl_InitIPin(
-	CPinBaseImpl* This, IUnknown* punkControl,
-	CRITICAL_SECTION* pcsPin,
-	CRITICAL_SECTION* pcsPinReceive,
-	CBaseFilterImpl* pFilter, LPCWSTR pwszId,
-	BOOL bOutput,
-	const CBasePinHandlers*	pHandlers );
-void CPinBaseImpl_UninitIPin( CPinBaseImpl* This );
-
-
-HRESULT CMemInputPinBaseImpl_InitIMemInputPin(
-	CMemInputPinBaseImpl* This, IUnknown* punkControl,
-	CPinBaseImpl* pPin );
-void CMemInputPinBaseImpl_UninitIMemInputPin(
-	CMemInputPinBaseImpl* This );
-
-
-HRESULT CQualityControlPassThruImpl_InitIQualityControl(
-	CQualityControlPassThruImpl* This, IUnknown* punkControl,
-	CPinBaseImpl* pPin );
-void CQualityControlPassThruImpl_UninitIQualityControl(
-	CQualityControlPassThruImpl* This );
-
-
-HRESULT CPinBaseImpl_SendSample( CPinBaseImpl* This, IMediaSample* pSample );
-HRESULT CPinBaseImpl_SendReceiveCanBlock( CPinBaseImpl* This );
-HRESULT CPinBaseImpl_SendEndOfStream( CPinBaseImpl* This );
-HRESULT CPinBaseImpl_SendBeginFlush( CPinBaseImpl* This );
-HRESULT CPinBaseImpl_SendEndFlush( CPinBaseImpl* This );
-HRESULT CPinBaseImpl_SendNewSegment( CPinBaseImpl* This, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double rate );
-
-
-/***************************************************************************
- *
- *	handlers for output pins.
- *
- */
-
-HRESULT OutputPinSync_Receive( CPinBaseImpl* pImpl, IMediaSample* pSample );
-HRESULT OutputPinSync_ReceiveCanBlock( CPinBaseImpl* pImpl );
-HRESULT OutputPinSync_EndOfStream( CPinBaseImpl* pImpl );
-HRESULT OutputPinSync_BeginFlush( CPinBaseImpl* pImpl );
-HRESULT OutputPinSync_EndFlush( CPinBaseImpl* pImpl );
-HRESULT OutputPinSync_NewSegment( CPinBaseImpl* pImpl, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double rate );
-
-/***************************************************************************
- *
- *	handlers for output pins (async).
- *
- */
-
-HRESULT OutputPinAsync_OnActive( CPinBaseImpl* pImpl );
-HRESULT OutputPinAsync_OnInactive( CPinBaseImpl* pImpl );
-HRESULT OutputPinAsync_Receive( CPinBaseImpl* pImpl, IMediaSample* pSample );
-HRESULT OutputPinAsync_ReceiveCanBlock( CPinBaseImpl* pImpl );
-HRESULT OutputPinAsync_EndOfStream( CPinBaseImpl* pImpl );
-HRESULT OutputPinAsync_BeginFlush( CPinBaseImpl* pImpl );
-HRESULT OutputPinAsync_EndFlush( CPinBaseImpl* pImpl );
-HRESULT OutputPinAsync_NewSegment( CPinBaseImpl* pImpl, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double rate );
-
-
-
-#endif	/* WINE_DSHOW_BASEFILT_H */
diff --git a/dlls/quartz/basepin.c b/dlls/quartz/basepin.c
deleted file mode 100644
index cb1fb02..0000000
--- a/dlls/quartz/basepin.c
+++ /dev/null
@@ -1,1462 +0,0 @@
-/*
- * Implements IPin and IMemInputPin. (internal)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "vfwmsgs.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "basefilt.h"
-#include "memalloc.h"
-
-
-/***************************************************************************
- *
- *	CPinBaseImpl
- *
- */
-
-static HRESULT WINAPI
-CPinBaseImpl_fnQueryInterface(IPin* iface,REFIID riid,void** ppobj)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-CPinBaseImpl_fnAddRef(IPin* iface)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->punkControl);
-}
-
-static ULONG WINAPI
-CPinBaseImpl_fnRelease(IPin* iface)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->punkControl);
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnConnect(IPin* iface,IPin* pPin,const AM_MEDIA_TYPE* pmt)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-	HRESULT	hr = E_NOTIMPL;
-	ULONG	i;
-	FILTER_STATE	fs;
-
-	TRACE("(%p)->(%p,%p)\n",This,pPin,pmt);
-
-	if ( !This->bOutput )
-	{
-		TRACE("Connect() should not be sent to input pins\n");
-		return E_UNEXPECTED;
-	}
-	if ( pPin == NULL )
-		return E_POINTER;
-
-	TRACE("try to connect to %p\n",pPin);
-
-	EnterCriticalSection( This->pcsPin );
-
-	if ( This->pPinConnectedTo != NULL )
-	{
-		hr = VFW_E_ALREADY_CONNECTED;
-		goto err;
-	}
-
-	/* return fail if running */
-	hr = IBaseFilter_GetState((IBaseFilter*)(This->pFilter),0,&fs);
-	if ( hr != S_OK || fs != State_Stopped )
-	{
-		TRACE("not stopped\n");
-		hr = VFW_E_NOT_STOPPED;
-		goto err;
-	}
-
-	if ( This->pHandlers->pOnPreConnect != NULL )
-	{
-		hr = This->pHandlers->pOnPreConnect(This,pPin);
-		if ( FAILED(hr) )
-		{
-			TRACE("OnPreconnect() failed hr = %08lx\n",hr);
-			goto err;
-		}
-	}
-
-	if ( pmt != NULL )
-	{
-		hr = IPin_QueryAccept(iface,pmt);
-		if ( FAILED(hr) )
-			goto err;
-		This->pPinConnectedTo = pPin;
-		hr = IPin_ReceiveConnection(pPin,iface,pmt);
-		This->pPinConnectedTo = NULL;
-		if ( FAILED(hr) )
-			goto err;
-	}
-	else
-	{
-		for ( i = 0; i < This->cAcceptTypes; i++ )
-		{
-			pmt = &This->pmtAcceptTypes[i];
-			hr = IPin_QueryAccept(iface,pmt);
-			if ( SUCCEEDED(hr) )
-			{
-				This->pPinConnectedTo = pPin;
-				hr = IPin_ReceiveConnection(pPin,iface,pmt);
-				This->pPinConnectedTo = NULL;
-
-				TRACE("ReceiveConnection - %08lx\n",hr);
-				if ( SUCCEEDED(hr) )
-				{
-					goto connected;
-				}
-			}
-		}
-
-		hr = VFW_E_TYPE_NOT_ACCEPTED;
-		goto err;
-	}
-
-connected:;
-	This->pmtConn = QUARTZ_MediaType_Duplicate( pmt );
-	if ( This->pmtConn == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		IPin_Disconnect(pPin);
-		goto err;
-	}
-
-	This->pPinConnectedTo = pPin; IPin_AddRef(pPin);
-	hr = IPin_QueryInterface(pPin,&IID_IMemInputPin,(void**)&This->pMemInputPinConnectedTo);
-	if ( FAILED(hr) )
-	{
-		TRACE("no IMemInputPin\n");
-		IPin_Disconnect(pPin);
-		goto err;
-	}
-
-	if ( This->pHandlers->pOnPostConnect != NULL )
-	{
-		hr = This->pHandlers->pOnPostConnect(This,pPin);
-		if ( FAILED(hr) )
-		{
-			TRACE("OnPostConnect() failed hr = %08lx\n",hr);
-			IPin_Disconnect(pPin);
-			goto err;
-		}
-	}
-
-	hr = S_OK;
-
-err:
-	if ( FAILED(hr) )
-	{
-		IPin_Disconnect(iface);
-	}
-	LeaveCriticalSection( This->pcsPin );
-
-	TRACE("return %08lx\n",hr);
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnReceiveConnection(IPin* iface,IPin* pPin,const AM_MEDIA_TYPE* pmt)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-	HRESULT	hr = E_NOTIMPL;
-	FILTER_STATE fs;
-
-	TRACE("(%p)->(%p,%p)\n",This,pPin,pmt);
-
-	if ( This->bOutput )
-	{
-		TRACE("ReceiveConnection() should not be sent to output pins\n");
-		return E_UNEXPECTED;
-	}
-	if ( pPin == NULL || pmt == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( This->pcsPin );
-
-	if ( This->pPinConnectedTo != NULL )
-	{
-		hr = VFW_E_ALREADY_CONNECTED;
-		goto err;
-	}
-
-	/* return fail if running */
-	hr = IBaseFilter_GetState((IBaseFilter*)(This->pFilter),0,&fs);
-	if ( hr != S_OK || fs != State_Stopped )
-	{
-		TRACE("not stopped\n");
-		hr = VFW_E_NOT_STOPPED;
-		goto err;
-	}
-
-	if ( This->pHandlers->pOnPreConnect != NULL )
-	{
-		hr = This->pHandlers->pOnPreConnect(This,pPin);
-		if ( FAILED(hr) )
-		{
-			TRACE("OnPreConnect() failed hr = %08lx\n",hr);
-			goto err;
-		}
-	}
-
-	hr = IPin_QueryAccept(iface,pmt);
-	if ( FAILED(hr) )
-		goto err;
-
-	This->pmtConn = QUARTZ_MediaType_Duplicate( pmt );
-	if ( This->pmtConn == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto err;
-	}
-
-	if ( This->pHandlers->pOnPostConnect != NULL )
-	{
-		hr = This->pHandlers->pOnPostConnect(This,pPin);
-		if ( FAILED(hr) )
-		{
-			TRACE("OnPostConnect() failed hr = %08lx\n",hr);
-			goto err;
-		}
-	}
-
-	hr = S_OK;
-	This->pPinConnectedTo = pPin; IPin_AddRef(pPin);
-
-err:
-	if ( FAILED(hr) )
-		IPin_Disconnect(iface);
-	LeaveCriticalSection( This->pcsPin );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnDisconnect(IPin* iface)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-	HRESULT hr = NOERROR;
-	FILTER_STATE fs;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( This->pcsPin );
-
-	/* return fail if running */
-	hr = IBaseFilter_GetState((IBaseFilter*)(This->pFilter),0,&fs);
-	if ( hr != S_OK || fs != State_Stopped )
-	{
-		TRACE("not stopped\n");
-		hr = VFW_E_NOT_STOPPED;
-		goto err;
-	}
-
-	if ( This->pHandlers->pOnDisconnect != NULL )
-		hr = This->pHandlers->pOnDisconnect(This);
-
-	if ( This->pmtConn != NULL )
-	{
-		QUARTZ_MediaType_Destroy( This->pmtConn );
-		This->pmtConn = NULL;
-	}
-	if ( This->pMemInputPinConnectedTo != NULL )
-	{
-		IMemInputPin_Release(This->pMemInputPinConnectedTo);
-		This->pMemInputPinConnectedTo = NULL;
-	}
-	if ( This->pPinConnectedTo != NULL )
-	{
-		/* FIXME - cleanup */
-
-		IPin_Release(This->pPinConnectedTo);
-		This->pPinConnectedTo = NULL;
-		hr = NOERROR;
-	}
-	else
-	{
-		hr = S_FALSE; /* FIXME - is this correct??? */
-	}
-
-err:
-	LeaveCriticalSection( This->pcsPin );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnConnectedTo(IPin* iface,IPin** ppPin)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-	HRESULT	hr = VFW_E_NOT_CONNECTED;
-
-	TRACE("(%p)->(%p)\n",This,ppPin);
-
-	if ( ppPin == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( This->pcsPin );
-
-	*ppPin = This->pPinConnectedTo;
-	if ( This->pPinConnectedTo != NULL )
-	{
-		IPin_AddRef(This->pPinConnectedTo);
-		hr = NOERROR;
-	}
-
-	LeaveCriticalSection( This->pcsPin );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnConnectionMediaType(IPin* iface,AM_MEDIA_TYPE* pmt)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-	HRESULT hr = E_FAIL;
-
-	TRACE("(%p)->(%p)\n",This,pmt);
-
-	if ( pmt == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( This->pcsPin );
-
-	if ( This->pmtConn != NULL )
-	{
-		hr = QUARTZ_MediaType_Copy( pmt, This->pmtConn );
-	}
-	else
-	{
-		ZeroMemory( pmt, sizeof(AM_MEDIA_TYPE) );
-		pmt->bFixedSizeSamples = TRUE;
-		pmt->lSampleSize = 1;
-		hr = VFW_E_NOT_CONNECTED;
-	}
-
-	LeaveCriticalSection( This->pcsPin );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnQueryPinInfo(IPin* iface,PIN_INFO* pinfo)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-
-	TRACE("(%p)->(%p)\n",This,pinfo);
-
-	if ( pinfo == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( This->pcsPin );
-
-	ZeroMemory( pinfo, sizeof(PIN_INFO) );
-	pinfo->pFilter = (IBaseFilter*)(This->pFilter);
-	if ( pinfo->pFilter != NULL )
-		IBaseFilter_AddRef( pinfo->pFilter );
-	pinfo->dir = This->bOutput ? PINDIR_OUTPUT : PINDIR_INPUT;
-	if ( This->cbIdLen <= sizeof(pinfo->achName) )
-		memcpy( pinfo->achName, This->pwszId, This->cbIdLen );
-	else
-	{
-		memcpy( pinfo->achName, This->pwszId, sizeof(pinfo->achName) );
-		pinfo->achName[sizeof(pinfo->achName)/sizeof(pinfo->achName[0])-1] = 0;
-	}
-
-	LeaveCriticalSection( This->pcsPin );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnQueryDirection(IPin* iface,PIN_DIRECTION* pdir)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-
-	TRACE("(%p)->(%p)\n",This,pdir);
-
-	if ( pdir == NULL )
-		return E_POINTER;
-
-	*pdir = This->bOutput ? PINDIR_OUTPUT : PINDIR_INPUT;
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnQueryId(IPin* iface,LPWSTR* lpwszId)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-
-	TRACE("(%p)->(%p)\n",This,lpwszId);
-
-	if ( lpwszId == NULL )
-		return E_POINTER;
-
-	*lpwszId = (WCHAR*)CoTaskMemAlloc( This->cbIdLen );
-	if ( *lpwszId == NULL )
-		return E_OUTOFMEMORY;
-	memcpy( *lpwszId, This->pwszId, This->cbIdLen );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnQueryAccept(IPin* iface,const AM_MEDIA_TYPE* pmt)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-	HRESULT hr;
-
-	TRACE("(%p)->(%p)\n",This,pmt);
-
-	if ( pmt == NULL )
-		return E_POINTER;
-
-	hr = NOERROR;
-	EnterCriticalSection( This->pcsPin );
-	if ( This->pHandlers->pCheckMediaType != NULL )
-		hr = This->pHandlers->pCheckMediaType(This,pmt);
-	LeaveCriticalSection( This->pcsPin );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnEnumMediaTypes(IPin* iface,IEnumMediaTypes** ppenum)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-	HRESULT hr;
-
-	TRACE("(%p)->(%p)\n",This,ppenum);
-
-	if ( ppenum == NULL )
-		return E_POINTER;
-
-	hr = E_NOTIMPL;
-
-	EnterCriticalSection( This->pcsPin );
-	if ( This->cAcceptTypes > 0 )
-		hr = QUARTZ_CreateEnumMediaTypes(
-			ppenum, This->pmtAcceptTypes, This->cAcceptTypes );
-	LeaveCriticalSection( This->pcsPin );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnQueryInternalConnections(IPin* iface,IPin** ppPin,ULONG* pul)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-
-	TRACE("(%p)->(%p,%p)\n",This,ppPin,pul);
-
-	/* E_NOTIMPL means 'no internal connections'. */
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnEndOfStream(IPin* iface)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-	HRESULT hr = E_NOTIMPL;
-
-	TRACE("(%p)->()\n",This);
-
-	if ( This->bOutput )
-		return E_UNEXPECTED;
-
-	EnterCriticalSection( This->pcsPinReceive );
-	if ( This->pHandlers->pEndOfStream != NULL )
-		hr = This->pHandlers->pEndOfStream(This);
-	LeaveCriticalSection( This->pcsPinReceive );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnBeginFlush(IPin* iface)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-	HRESULT hr = E_NOTIMPL;
-
-	TRACE("(%p)->()\n",This);
-
-	if ( This->bOutput )
-		return E_UNEXPECTED;
-
-	EnterCriticalSection( This->pcsPin );
-	if ( This->pHandlers->pBeginFlush != NULL )
-		hr = This->pHandlers->pBeginFlush(This);
-	LeaveCriticalSection( This->pcsPin );
-
-	EnterCriticalSection( This->pcsPinReceive );
-	LeaveCriticalSection( This->pcsPinReceive );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnEndFlush(IPin* iface)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-	HRESULT hr = E_NOTIMPL;
-
-	TRACE("(%p)->()\n",This);
-
-	if ( This->bOutput )
-		return E_UNEXPECTED;
-
-	EnterCriticalSection( This->pcsPin );
-	if ( This->pHandlers->pEndFlush != NULL )
-		hr = This->pHandlers->pEndFlush(This);
-	LeaveCriticalSection( This->pcsPin );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CPinBaseImpl_fnNewSegment(IPin* iface,REFERENCE_TIME rtStart,REFERENCE_TIME rtStop,double rate)
-{
-	ICOM_THIS(CPinBaseImpl,iface);
-	HRESULT hr = E_NOTIMPL;
-
-	TRACE("(%p)->()\n",This);
-
-	if ( This->bOutput )
-		return E_UNEXPECTED;
-
-	EnterCriticalSection( This->pcsPin );
-	if ( This->pHandlers->pNewSegment != NULL )
-		hr = This->pHandlers->pNewSegment(This,rtStart,rtStop,rate);
-	LeaveCriticalSection( This->pcsPin );
-
-	return hr;
-}
-
-
-
-
-static ICOM_VTABLE(IPin) ipin =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	CPinBaseImpl_fnQueryInterface,
-	CPinBaseImpl_fnAddRef,
-	CPinBaseImpl_fnRelease,
-	/* IPin fields */
-	CPinBaseImpl_fnConnect,
-	CPinBaseImpl_fnReceiveConnection,
-	CPinBaseImpl_fnDisconnect,
-	CPinBaseImpl_fnConnectedTo,
-	CPinBaseImpl_fnConnectionMediaType,
-	CPinBaseImpl_fnQueryPinInfo,
-	CPinBaseImpl_fnQueryDirection,
-	CPinBaseImpl_fnQueryId,
-	CPinBaseImpl_fnQueryAccept,
-	CPinBaseImpl_fnEnumMediaTypes,
-	CPinBaseImpl_fnQueryInternalConnections,
-	CPinBaseImpl_fnEndOfStream,
-	CPinBaseImpl_fnBeginFlush,
-	CPinBaseImpl_fnEndFlush,
-	CPinBaseImpl_fnNewSegment,
-};
-
-
-HRESULT CPinBaseImpl_InitIPin(
-	CPinBaseImpl* This, IUnknown* punkControl,
-	CRITICAL_SECTION* pcsPin,
-	CRITICAL_SECTION* pcsPinReceive,
-	CBaseFilterImpl* pFilter, LPCWSTR pwszId,
-	BOOL bOutput,
-	const CBasePinHandlers*	pHandlers )
-{
-	HRESULT	hr = NOERROR;
-
-	TRACE("(%p,%p,%p)\n",This,punkControl,pFilter);
-
-	if ( punkControl == NULL )
-	{
-		ERR( "punkControl must not be NULL\n" );
-		return E_INVALIDARG;
-	}
-
-	ICOM_VTBL(This) = &ipin;
-	This->punkControl = punkControl;
-	This->pHandlers = pHandlers;
-	This->cbIdLen = sizeof(WCHAR)*(lstrlenW(pwszId)+1);
-	This->pwszId = NULL;
-	This->bOutput = bOutput;
-	This->pmtAcceptTypes = NULL;
-	This->cAcceptTypes = 0;
-	This->pcsPin = pcsPin;
-	This->pcsPinReceive = pcsPinReceive;
-	This->pFilter = pFilter;
-	This->pPinConnectedTo = NULL;
-	This->pMemInputPinConnectedTo = NULL;
-	This->pmtConn = NULL;
-	This->pAsyncOut = NULL;
-
-	This->pwszId = (WCHAR*)QUARTZ_AllocMem( This->cbIdLen );
-	if ( This->pwszId == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto err;
-	}
-	memcpy( This->pwszId, pwszId, This->cbIdLen );
-
-	return NOERROR;
-
-err:;
-	CPinBaseImpl_UninitIPin( This );
-	return hr;
-}
-
-void CPinBaseImpl_UninitIPin( CPinBaseImpl* This )
-{
-	TRACE("(%p)\n",This);
-
-	IPin_Disconnect( (IPin*)(This) );
-
-	if ( This->pwszId != NULL )
-	{
-		QUARTZ_FreeMem( This->pwszId );
-		This->pwszId = NULL;
-	}
-}
-
-
-/***************************************************************************
- *
- *	CMemInputPinBaseImpl
- *
- */
-
-
-static HRESULT WINAPI
-CMemInputPinBaseImpl_fnQueryInterface(IMemInputPin* iface,REFIID riid,void** ppobj)
-{
-	ICOM_THIS(CMemInputPinBaseImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-CMemInputPinBaseImpl_fnAddRef(IMemInputPin* iface)
-{
-	ICOM_THIS(CMemInputPinBaseImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->punkControl);
-}
-
-static ULONG WINAPI
-CMemInputPinBaseImpl_fnRelease(IMemInputPin* iface)
-{
-	ICOM_THIS(CMemInputPinBaseImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->punkControl);
-}
-
-
-static HRESULT WINAPI
-CMemInputPinBaseImpl_fnGetAllocator(IMemInputPin* iface,IMemAllocator** ppAllocator)
-{
-	ICOM_THIS(CMemInputPinBaseImpl,iface);
-	HRESULT hr = NOERROR;
-	IUnknown* punk;
-
-	TRACE("(%p)->()\n",This);
-
-	if ( ppAllocator == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( This->pPin->pcsPin );
-
-	if ( This->pAllocator == NULL )
-	{
-		hr = QUARTZ_CreateMemoryAllocator(NULL,(void**)&punk);
-		if ( hr == NOERROR )
-		{
-			hr = IUnknown_QueryInterface(punk,
-				&IID_IMemAllocator,(void**)&This->pAllocator);
-			IUnknown_Release(punk);
-		}
-	}
-
-	if ( hr == NOERROR )
-	{
-		*ppAllocator = This->pAllocator;
-		IMemAllocator_AddRef(This->pAllocator);
-	}
-
-	LeaveCriticalSection( This->pPin->pcsPin );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CMemInputPinBaseImpl_fnNotifyAllocator(IMemInputPin* iface,IMemAllocator* pAllocator,BOOL bReadonly)
-{
-	ICOM_THIS(CMemInputPinBaseImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	if ( pAllocator == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( This->pPin->pcsPin );
-
-	if ( This->pAllocator != NULL )
-	{
-		IMemAllocator_Release(This->pAllocator);
-		This->pAllocator = NULL;
-	}
-	This->pAllocator = pAllocator;
-	IMemAllocator_AddRef(This->pAllocator);
-
-	This->bReadonly = bReadonly;
-
-	LeaveCriticalSection( This->pPin->pcsPin );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-CMemInputPinBaseImpl_fnGetAllocatorRequirements(IMemInputPin* iface,ALLOCATOR_PROPERTIES* pProp)
-{
-	ICOM_THIS(CMemInputPinBaseImpl,iface);
-
-	TRACE("(%p)->(%p)\n",This,pProp);
-
-	if ( pProp == NULL )
-		return E_POINTER;
-
-	/* E_MOTIMPL means 'no requirements' */
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-CMemInputPinBaseImpl_fnReceive(IMemInputPin* iface,IMediaSample* pSample)
-{
-	ICOM_THIS(CMemInputPinBaseImpl,iface);
-	HRESULT hr = E_NOTIMPL;
-
-	TRACE("(%p)->(%p)\n",This,pSample);
-
-	EnterCriticalSection( This->pPin->pcsPinReceive );
-	if ( This->pPin->pHandlers->pReceive != NULL )
-		hr = This->pPin->pHandlers->pReceive(This->pPin,pSample);
-	LeaveCriticalSection( This->pPin->pcsPinReceive );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CMemInputPinBaseImpl_fnReceiveMultiple(IMemInputPin* iface,IMediaSample** ppSample,long nSample,long* pnSampleProcessed)
-{
-	ICOM_THIS(CMemInputPinBaseImpl,iface);
-	long	n;
-	HRESULT hr;
-
-	TRACE("(%p)->()\n",This);
-
-	if ( ppSample == NULL || pnSampleProcessed == NULL )
-		return E_POINTER;
-
-	hr = NOERROR;
-	for ( n = 0; n < nSample; n++ )
-	{
-		hr = IMemInputPin_Receive(iface,ppSample[n]);
-		if ( FAILED(hr) )
-			break;
-	}
-
-	*pnSampleProcessed = n;
-	return hr;
-}
-
-static HRESULT WINAPI
-CMemInputPinBaseImpl_fnReceiveCanBlock(IMemInputPin* iface)
-{
-	ICOM_THIS(CMemInputPinBaseImpl,iface);
-	HRESULT hr = E_NOTIMPL;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( This->pPin->pcsPin );
-	if ( This->pPin->pHandlers->pReceiveCanBlock != NULL )
-		hr = This->pPin->pHandlers->pReceiveCanBlock(This->pPin);
-	LeaveCriticalSection( This->pPin->pcsPin );
-
-	return hr;
-}
-
-
-static ICOM_VTABLE(IMemInputPin) imeminputpin =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	CMemInputPinBaseImpl_fnQueryInterface,
-	CMemInputPinBaseImpl_fnAddRef,
-	CMemInputPinBaseImpl_fnRelease,
-	/* IMemInputPin fields */
-	CMemInputPinBaseImpl_fnGetAllocator,
-	CMemInputPinBaseImpl_fnNotifyAllocator,
-	CMemInputPinBaseImpl_fnGetAllocatorRequirements,
-	CMemInputPinBaseImpl_fnReceive,
-	CMemInputPinBaseImpl_fnReceiveMultiple,
-	CMemInputPinBaseImpl_fnReceiveCanBlock,
-};
-
-HRESULT CMemInputPinBaseImpl_InitIMemInputPin(
-	CMemInputPinBaseImpl* This, IUnknown* punkControl,
-	CPinBaseImpl* pPin )
-{
-	TRACE("(%p,%p)\n",This,punkControl);
-
-	if ( punkControl == NULL )
-	{
-		ERR( "punkControl must not be NULL\n" );
-		return E_INVALIDARG;
-	}
-
-	ICOM_VTBL(This) = &imeminputpin;
-	This->punkControl = punkControl;
-	This->pPin = pPin;
-	This->pAllocator = NULL;
-	This->bReadonly = FALSE;
-
-	return NOERROR;
-}
-
-void CMemInputPinBaseImpl_UninitIMemInputPin(
-	CMemInputPinBaseImpl* This )
-{
-	TRACE("(%p)\n",This);
-
-	if ( This->pAllocator != NULL )
-	{
-		IMemAllocator_Release(This->pAllocator);
-		This->pAllocator = NULL;
-	}
-}
-
-/***************************************************************************
- *
- *	CQualityControlPassThruImpl
- *
- */
-
-static HRESULT WINAPI
-CQualityControlPassThruImpl_fnQueryInterface(IQualityControl* iface,REFIID riid,void** ppobj)
-{
-	ICOM_THIS(CQualityControlPassThruImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-CQualityControlPassThruImpl_fnAddRef(IQualityControl* iface)
-{
-	ICOM_THIS(CQualityControlPassThruImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->punkControl);
-}
-
-static ULONG WINAPI
-CQualityControlPassThruImpl_fnRelease(IQualityControl* iface)
-{
-	ICOM_THIS(CQualityControlPassThruImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->punkControl);
-}
-
-
-static HRESULT WINAPI
-CQualityControlPassThruImpl_fnNotify(IQualityControl* iface,IBaseFilter* pFilter,Quality q)
-{
-	ICOM_THIS(CQualityControlPassThruImpl,iface);
-	HRESULT hr = S_FALSE;
-
-	TRACE("(%p)->()\n",This);
-
-	if ( This->pControl != NULL )
-		return IQualityControl_Notify( This->pControl, pFilter, q );
-
-	EnterCriticalSection( This->pPin->pcsPin );
-	if ( This->pPin->pHandlers->pQualityNotify != NULL )
-		hr = This->pPin->pHandlers->pQualityNotify(This->pPin,pFilter,q);
-	LeaveCriticalSection( This->pPin->pcsPin );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-CQualityControlPassThruImpl_fnSetSink(IQualityControl* iface,IQualityControl* pControl)
-{
-	ICOM_THIS(CQualityControlPassThruImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	This->pControl = pControl; /* AddRef() must not be called */
-
-	return NOERROR;
-}
-
-static ICOM_VTABLE(IQualityControl) iqualitycontrol =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	CQualityControlPassThruImpl_fnQueryInterface,
-	CQualityControlPassThruImpl_fnAddRef,
-	CQualityControlPassThruImpl_fnRelease,
-	/* IQualityControl fields */
-	CQualityControlPassThruImpl_fnNotify,
-	CQualityControlPassThruImpl_fnSetSink,
-};
-
-HRESULT CQualityControlPassThruImpl_InitIQualityControl(
-	CQualityControlPassThruImpl* This, IUnknown* punkControl,
-	CPinBaseImpl* pPin )
-{
-	TRACE("(%p,%p)\n",This,punkControl);
-
-	if ( punkControl == NULL )
-	{
-		ERR( "punkControl must not be NULL\n" );
-		return E_INVALIDARG;
-	}
-
-	ICOM_VTBL(This) = &iqualitycontrol;
-	This->punkControl = punkControl;
-	This->pPin = pPin;
-
-	return NOERROR;
-}
-
-void CQualityControlPassThruImpl_UninitIQualityControl(
-	CQualityControlPassThruImpl* This )
-{
-}
-
-/***************************************************************************
- *
- *	helper methods for output pins.
- *
- */
-
-HRESULT CPinBaseImpl_SendSample( CPinBaseImpl* This, IMediaSample* pSample )
-{
-	if ( This->pHandlers->pReceive == NULL )
-		return E_NOTIMPL;
-
-	return This->pHandlers->pReceive( This, pSample );
-}
-
-HRESULT CPinBaseImpl_SendReceiveCanBlock( CPinBaseImpl* This )
-{
-	if ( This->pHandlers->pReceiveCanBlock == NULL )
-		return E_NOTIMPL;
-
-	return This->pHandlers->pReceiveCanBlock( This );
-}
-
-HRESULT CPinBaseImpl_SendEndOfStream( CPinBaseImpl* This )
-{
-	if ( This->pHandlers->pEndOfStream == NULL )
-		return E_NOTIMPL;
-
-	return This->pHandlers->pEndOfStream( This );
-}
-
-HRESULT CPinBaseImpl_SendBeginFlush( CPinBaseImpl* This )
-{
-	if ( This->pHandlers->pBeginFlush == NULL )
-		return E_NOTIMPL;
-
-	return This->pHandlers->pBeginFlush( This );
-}
-
-HRESULT CPinBaseImpl_SendEndFlush( CPinBaseImpl* This )
-{
-	if ( This->pHandlers->pEndFlush == NULL )
-		return E_NOTIMPL;
-
-	return This->pHandlers->pEndFlush( This );
-}
-
-HRESULT CPinBaseImpl_SendNewSegment( CPinBaseImpl* This, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double rate )
-{
-	if ( This->pHandlers->pNewSegment == NULL )
-		return E_NOTIMPL;
-
-	return This->pHandlers->pNewSegment( This, rtStart, rtStop, rate );
-}
-
-
-
-/***************************************************************************
- *
- *	handlers for output pins.
- *
- */
-
-HRESULT OutputPinSync_Receive( CPinBaseImpl* pImpl, IMediaSample* pSample )
-{
-	if ( pImpl->pMemInputPinConnectedTo == NULL )
-		return NOERROR;
-
-	return IMemInputPin_Receive(pImpl->pMemInputPinConnectedTo,pSample);
-}
-
-HRESULT OutputPinSync_ReceiveCanBlock( CPinBaseImpl* pImpl )
-{
-	if ( pImpl->pMemInputPinConnectedTo == NULL )
-		return S_FALSE;
-
-	return IMemInputPin_ReceiveCanBlock(pImpl->pMemInputPinConnectedTo);
-}
-
-HRESULT OutputPinSync_EndOfStream( CPinBaseImpl* pImpl )
-{
-	if ( pImpl->pPinConnectedTo == NULL )
-		return NOERROR;
-
-	return IPin_EndOfStream(pImpl->pPinConnectedTo);
-}
-
-HRESULT OutputPinSync_BeginFlush( CPinBaseImpl* pImpl )
-{
-	if ( pImpl->pPinConnectedTo == NULL )
-		return NOERROR;
-
-	return IPin_BeginFlush(pImpl->pPinConnectedTo);
-}
-
-HRESULT OutputPinSync_EndFlush( CPinBaseImpl* pImpl )
-{
-	if ( pImpl->pPinConnectedTo == NULL )
-		return NOERROR;
-
-	return IPin_EndFlush(pImpl->pPinConnectedTo);
-}
-
-HRESULT OutputPinSync_NewSegment( CPinBaseImpl* pImpl, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double rate )
-{
-	if ( pImpl->pPinConnectedTo == NULL )
-		return NOERROR;
-
-	return IPin_NewSegment(pImpl->pPinConnectedTo,rtStart,rtStop,rate);
-}
-
-/***************************************************************************
- *
- *	handlers for output pins (async).
- *
- */
-
-typedef struct OutputPinTask OutputPinTask;
-
-enum OutputPinTaskType
-{
-	OutTask_ExitThread,
-	OutTask_Receive,
-	OutTask_EndOfStream,
-	OutTask_BeginFlush,
-	OutTask_EndFlush,
-	OutTask_NewSegment,
-};
-
-struct OutputPinTask
-{
-	OutputPinTask* pNext;
-	enum OutputPinTaskType tasktype;
-	IMediaSample* pSample;
-	REFERENCE_TIME rtStart;
-	REFERENCE_TIME rtStop;
-	double rate;
-};
-
-struct OutputPinAsyncImpl
-{
-	HANDLE m_hTaskThread;
-	HANDLE m_hTaskEvent;
-	IPin* m_pPin; /* connected pin */
-	IMemInputPin* m_pMemInputPin; /* connected pin */
-	CRITICAL_SECTION m_csTasks;
-	OutputPinTask* m_pFirst;
-	OutputPinTask* m_pLast;
-	OutputPinTask* m_pTaskExitThread;
-};
-
-static OutputPinTask* OutputPinAsync_AllocTask( enum OutputPinTaskType tasktype )
-{
-	OutputPinTask* pTask;
-
-	pTask = (OutputPinTask*)QUARTZ_AllocMem( sizeof(OutputPinTask) );
-	pTask->pNext = NULL;
-	pTask->tasktype = tasktype;
-	pTask->pSample = NULL;
-
-	return pTask;
-}
-
-static void OutputPinAsync_FreeTask( OutputPinTask* pTask )
-{
-	if ( pTask->pSample != NULL )
-		IMediaSample_Release( pTask->pSample );
-	QUARTZ_FreeMem( pTask );
-}
-
-static void OutputPinAsync_AddTask( OutputPinAsyncImpl* This, OutputPinTask* pTask, BOOL bFirst )
-{
-	EnterCriticalSection( &This->m_csTasks );
-
-	if ( bFirst )
-	{
-		pTask->pNext = This->m_pFirst;
-		This->m_pFirst = pTask;
-		if ( This->m_pLast == NULL )
-			This->m_pLast = pTask;
-	}
-	else
-	{
-		if ( This->m_pLast != NULL )
-			This->m_pLast->pNext = pTask;
-		else
-			This->m_pFirst = pTask;
-		This->m_pLast = pTask;
-	}
-
-	LeaveCriticalSection( &This->m_csTasks );
-
-	SetEvent( This->m_hTaskEvent );
-}
-
-static OutputPinTask* OutputPinAsync_GetNextTask( OutputPinAsyncImpl* This )
-{
-	OutputPinTask* pTask;
-
-	EnterCriticalSection( &This->m_csTasks );
-	pTask = This->m_pFirst;
-	if ( pTask != NULL )
-	{
-		This->m_pFirst = pTask->pNext;
-		if ( This->m_pFirst == NULL )
-			This->m_pLast = NULL;
-		else
-			SetEvent( This->m_hTaskEvent );
-	}
-
-	LeaveCriticalSection( &This->m_csTasks );
-
-	return pTask;
-}
-
-static DWORD WINAPI OutputPinAsync_ThreadEntry( LPVOID pv )
-{
-	OutputPinAsyncImpl* This = ((CPinBaseImpl*)pv)->pAsyncOut;
-	OutputPinTask* pTask;
-	BOOL bLoop = TRUE;
-	BOOL bInFlush = FALSE;
-	HRESULT hr;
-
-	while ( bLoop )
-	{
-		WaitForSingleObject( This->m_hTaskEvent, INFINITE );
-		ResetEvent( This->m_hTaskEvent );
-
-		pTask = OutputPinAsync_GetNextTask( This );
-		if ( pTask == NULL )
-			continue;
-
-		hr = S_OK;
-		switch ( pTask->tasktype )
-		{
-		case OutTask_ExitThread:
-			bLoop = FALSE;
-			break;
-		case OutTask_Receive:
-			if ( !bInFlush )
-				hr = IMemInputPin_Receive( This->m_pMemInputPin, pTask->pSample );
-			break;
-		case OutTask_EndOfStream:
-			hr = IPin_EndOfStream( This->m_pPin );
-			break;
-		case OutTask_BeginFlush:
-			bInFlush = TRUE;
-			hr = IPin_BeginFlush( This->m_pPin );
-			break;
-		case OutTask_EndFlush:
-			bInFlush = FALSE;
-			hr = IPin_EndFlush( This->m_pPin );
-			break;
-		case OutTask_NewSegment:
-			hr = IPin_NewSegment( This->m_pPin, pTask->rtStart, pTask->rtStop, pTask->rate );
-			break;
-		default:
-			ERR( "unexpected task type %d.\n", pTask->tasktype );
-			bLoop = FALSE;
-			break;
-		}
-
-		OutputPinAsync_FreeTask( pTask );
-
-		if ( FAILED(hr) )
-		{
-			ERR( "hresult %08lx\n", hr );
-			bLoop = FALSE;
-		}
-	}
-
-	return 0;
-}
-
-HRESULT OutputPinAsync_OnActive( CPinBaseImpl* pImpl )
-{
-	HRESULT hr;
-	DWORD dwThreadId;
-
-	FIXME("(%p)\n",pImpl);
-
-	if ( pImpl->pMemInputPinConnectedTo == NULL )
-		return NOERROR;
-
-	pImpl->pAsyncOut = (OutputPinAsyncImpl*)
-		QUARTZ_AllocMem( sizeof( OutputPinAsyncImpl ) );
-	if ( pImpl->pAsyncOut == NULL )
-		return E_OUTOFMEMORY;
-
-	InitializeCriticalSection( &pImpl->pAsyncOut->m_csTasks );
-	pImpl->pAsyncOut->m_hTaskThread = (HANDLE)NULL;
-	pImpl->pAsyncOut->m_hTaskEvent = (HANDLE)NULL;
-	pImpl->pAsyncOut->m_pFirst = NULL;
-	pImpl->pAsyncOut->m_pLast = NULL;
-	pImpl->pAsyncOut->m_pTaskExitThread = NULL;
-	pImpl->pAsyncOut->m_pPin = pImpl->pPinConnectedTo;
-	pImpl->pAsyncOut->m_pMemInputPin = pImpl->pMemInputPinConnectedTo;
-
-	pImpl->pAsyncOut->m_hTaskEvent =
-		CreateEventA( NULL, TRUE, FALSE, NULL );
-	if ( pImpl->pAsyncOut->m_hTaskEvent == (HANDLE)NULL )
-	{
-		hr = E_FAIL;
-		goto err;
-	}
-
-	pImpl->pAsyncOut->m_pTaskExitThread =
-		OutputPinAsync_AllocTask( OutTask_ExitThread );
-	if ( pImpl->pAsyncOut->m_pTaskExitThread == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto err;
-	}
-
-	pImpl->pAsyncOut->m_hTaskThread = CreateThread(
-		NULL, 0, OutputPinAsync_ThreadEntry, pImpl,
-		0, &dwThreadId );
-	if ( pImpl->pAsyncOut->m_hTaskThread == (HANDLE)NULL )
-	{
-		hr = E_FAIL;
-		goto err;
-	}
-
-	return NOERROR;
-err:
-	OutputPinAsync_OnInactive( pImpl );
-	return hr;
-}
-
-HRESULT OutputPinAsync_OnInactive( CPinBaseImpl* pImpl )
-{
-	OutputPinTask* pTask;
-
-	FIXME("(%p)\n",pImpl);
-
-	if ( pImpl->pAsyncOut == NULL )
-		return NOERROR;
-
-	if ( pImpl->pAsyncOut->m_pTaskExitThread != NULL )
-	{
-		OutputPinAsync_AddTask( pImpl->pAsyncOut, pImpl->pAsyncOut->m_pTaskExitThread, TRUE );
-		pImpl->pAsyncOut->m_pTaskExitThread = NULL;
-	}
-
-	if ( pImpl->pAsyncOut->m_hTaskThread != (HANDLE)NULL )
-	{
-		WaitForSingleObject( pImpl->pAsyncOut->m_hTaskThread, INFINITE );
-		CloseHandle( pImpl->pAsyncOut->m_hTaskThread );
-	}
-	if ( pImpl->pAsyncOut->m_hTaskEvent != (HANDLE)NULL )
-		CloseHandle( pImpl->pAsyncOut->m_hTaskEvent );
-
-	/* release all tasks. */
-	while ( 1 )
-	{
-		pTask = OutputPinAsync_GetNextTask( pImpl->pAsyncOut );
-		if ( pTask == NULL )
-			break;
-		OutputPinAsync_FreeTask( pTask );
-	}
-
-	DeleteCriticalSection( &pImpl->pAsyncOut->m_csTasks );
-
-	QUARTZ_FreeMem( pImpl->pAsyncOut );
-	pImpl->pAsyncOut = NULL;
-
-	return NOERROR;
-}
-
-HRESULT OutputPinAsync_Receive( CPinBaseImpl* pImpl, IMediaSample* pSample )
-{
-	OutputPinAsyncImpl* This = pImpl->pAsyncOut;
-	OutputPinTask* pTask;
-
-	TRACE("(%p,%p)\n",pImpl,pSample);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	pTask = OutputPinAsync_AllocTask( OutTask_Receive );
-	if ( pTask == NULL )
-		return E_OUTOFMEMORY;
-	pTask->pSample = pSample; IMediaSample_AddRef( pSample );
-	OutputPinAsync_AddTask( pImpl->pAsyncOut, pTask, FALSE );
-
-	return NOERROR;
-}
-
-HRESULT OutputPinAsync_ReceiveCanBlock( CPinBaseImpl* pImpl )
-{
-	return S_FALSE;
-}
-
-HRESULT OutputPinAsync_EndOfStream( CPinBaseImpl* pImpl )
-{
-	OutputPinAsyncImpl* This = pImpl->pAsyncOut;
-	OutputPinTask* pTask;
-
-	TRACE("(%p)\n",pImpl);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	pTask = OutputPinAsync_AllocTask( OutTask_EndOfStream );
-	if ( pTask == NULL )
-		return E_OUTOFMEMORY;
-	OutputPinAsync_AddTask( pImpl->pAsyncOut, pTask, FALSE );
-
-	return NOERROR;
-}
-
-HRESULT OutputPinAsync_BeginFlush( CPinBaseImpl* pImpl )
-{
-	OutputPinAsyncImpl* This = pImpl->pAsyncOut;
-	OutputPinTask* pTask;
-
-	TRACE("(%p)\n",pImpl);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	pTask = OutputPinAsync_AllocTask( OutTask_BeginFlush );
-	if ( pTask == NULL )
-		return E_OUTOFMEMORY;
-	OutputPinAsync_AddTask( pImpl->pAsyncOut, pTask, TRUE );
-
-	return NOERROR;
-}
-
-HRESULT OutputPinAsync_EndFlush( CPinBaseImpl* pImpl )
-{
-	OutputPinAsyncImpl* This = pImpl->pAsyncOut;
-	OutputPinTask* pTask;
-
-	TRACE("(%p)\n",pImpl);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	pTask = OutputPinAsync_AllocTask( OutTask_EndFlush );
-	if ( pTask == NULL )
-		return E_OUTOFMEMORY;
-	OutputPinAsync_AddTask( pImpl->pAsyncOut, pTask, FALSE );
-
-	return NOERROR;
-}
-
-HRESULT OutputPinAsync_NewSegment( CPinBaseImpl* pImpl, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double rate )
-{
-	OutputPinAsyncImpl* This = pImpl->pAsyncOut;
-	OutputPinTask* pTask;
-
-	TRACE("(%p)\n",pImpl);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	pTask = OutputPinAsync_AllocTask( OutTask_NewSegment );
-	if ( pTask == NULL )
-		return E_OUTOFMEMORY;
-	pTask->rtStart = rtStart;
-	pTask->rtStop = rtStop;
-	pTask->rate = rate;
-	OutputPinAsync_AddTask( pImpl->pAsyncOut, pTask, FALSE );
-
-	return NOERROR;
-}
-
-
diff --git a/dlls/quartz/capgraph.c b/dlls/quartz/capgraph.c
deleted file mode 100644
index c86765b..0000000
--- a/dlls/quartz/capgraph.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Implementation of CLSID_CaptureGraphBuilder[2].
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- *	FIXME - stub
- *	FIXME - not tested
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "capgraph.h"
-
-
-/***************************************************************************
- *
- *	CCaptureGraph::ICaptureGraphBuilder
- *
- */
-
-static HRESULT WINAPI
-ICaptureGraphBuilder_fnQueryInterface(ICaptureGraphBuilder* iface,REFIID riid,void** ppobj)
-{
-	CCaptureGraph_THIS(iface,capgraph1);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-ICaptureGraphBuilder_fnAddRef(ICaptureGraphBuilder* iface)
-{
-	CCaptureGraph_THIS(iface,capgraph1);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-ICaptureGraphBuilder_fnRelease(ICaptureGraphBuilder* iface)
-{
-	CCaptureGraph_THIS(iface,capgraph1);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-
-static HRESULT WINAPI
-ICaptureGraphBuilder_fnSetFiltergraph(ICaptureGraphBuilder* iface,IGraphBuilder* pgb)
-{
-	CCaptureGraph_THIS(iface,capgraph1);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-ICaptureGraphBuilder_fnGetFiltergraph(ICaptureGraphBuilder* iface,IGraphBuilder** ppgb)
-{
-	CCaptureGraph_THIS(iface,capgraph1);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-ICaptureGraphBuilder_fnSetOutputFileName(ICaptureGraphBuilder* iface,const GUID* pguidType,LPCOLESTR pName,IBaseFilter** ppFilter,IFileSinkFilter** ppSink)
-{
-	CCaptureGraph_THIS(iface,capgraph1);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-ICaptureGraphBuilder_fnFindInterface(ICaptureGraphBuilder* iface,const GUID* pguidCat,IBaseFilter* pFilter,REFIID riid,void** ppvobj)
-{
-	CCaptureGraph_THIS(iface,capgraph1);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-ICaptureGraphBuilder_fnRenderStream(ICaptureGraphBuilder* iface,const GUID* pguidCat,IUnknown* pSource,IBaseFilter* pCompressor,IBaseFilter* pRenderer)
-{
-	CCaptureGraph_THIS(iface,capgraph1);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-ICaptureGraphBuilder_fnControlStream(ICaptureGraphBuilder* iface,const GUID* pguidCat,IBaseFilter* pFilter,REFERENCE_TIME* prtStart,REFERENCE_TIME* prtStop,WORD wStartCookie,WORD wStopCookie)
-{
-	CCaptureGraph_THIS(iface,capgraph1);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-ICaptureGraphBuilder_fnAllocCapFile(ICaptureGraphBuilder* iface,LPCOLESTR pName,DWORDLONG llSize)
-{
-	CCaptureGraph_THIS(iface,capgraph1);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-ICaptureGraphBuilder_fnCopyCaptureFile(ICaptureGraphBuilder* iface,LPOLESTR pOrgName,LPOLESTR pNewName,int fAllowEscAbort,IAMCopyCaptureFileProgress* pCallback)
-{
-	CCaptureGraph_THIS(iface,capgraph1);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static ICOM_VTABLE(ICaptureGraphBuilder) icapgraph1 =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	ICaptureGraphBuilder_fnQueryInterface,
-	ICaptureGraphBuilder_fnAddRef,
-	ICaptureGraphBuilder_fnRelease,
-	/* ICaptureGraphBuilder fields */
-	ICaptureGraphBuilder_fnSetFiltergraph,
-	ICaptureGraphBuilder_fnGetFiltergraph,
-	ICaptureGraphBuilder_fnSetOutputFileName,
-	ICaptureGraphBuilder_fnFindInterface,
-	ICaptureGraphBuilder_fnRenderStream,
-	ICaptureGraphBuilder_fnControlStream,
-	ICaptureGraphBuilder_fnAllocCapFile,
-	ICaptureGraphBuilder_fnCopyCaptureFile,
-};
-
-
-static HRESULT CCaptureGraph_InitICaptureGraphBuilder( CCaptureGraph* This )
-{
-	TRACE("(%p)\n",This);
-	ICOM_VTBL(&This->capgraph1) = &icapgraph1;
-
-	return NOERROR;
-}
-
-static void CCaptureGraph_UninitICaptureGraphBuilder( CCaptureGraph* This )
-{
-	TRACE("(%p)\n",This);
-}
-
-
-/***************************************************************************
- *
- *	new/delete for CCaptureGraph
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry IFEntries[] =
-{
-  { &IID_ICaptureGraphBuilder, offsetof(CCaptureGraph,capgraph1)-offsetof(CCaptureGraph,unk) },
-};
-
-static void QUARTZ_DestroyCaptureGraph(IUnknown* punk)
-{
-	CCaptureGraph_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	CCaptureGraph_UninitICaptureGraphBuilder(This);
-}
-
-HRESULT QUARTZ_CreateCaptureGraph(IUnknown* punkOuter,void** ppobj)
-{
-	CCaptureGraph*	pcg;
-	HRESULT	hr;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	pcg = (CCaptureGraph*)QUARTZ_AllocObj( sizeof(CCaptureGraph) );
-	if ( pcg == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &pcg->unk, punkOuter );
-	pcg->m_pfg = NULL;
-
-	hr = CCaptureGraph_InitICaptureGraphBuilder(pcg);
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(pcg);
-		return hr;
-	}
-
-	pcg->unk.pEntries = IFEntries;
-	pcg->unk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]);
-	pcg->unk.pOnFinalRelease = QUARTZ_DestroyCaptureGraph;
-
-	*ppobj = (void*)(&pcg->unk);
-
-	return S_OK;
-}
diff --git a/dlls/quartz/capgraph.h b/dlls/quartz/capgraph.h
deleted file mode 100644
index ebead2d..0000000
--- a/dlls/quartz/capgraph.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Implementation of CLSID_CaptureGraphBuilder[2].
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_CAPGRAPH_H
-#define	WINE_DSHOW_CAPGRAPH_H
-
-#include "iunk.h"
-
-typedef struct CapGraph_ICaptureGraphBuilderImpl
-{
-	ICOM_VFIELD(ICaptureGraphBuilder);
-} CapGraph_ICaptureGraphBuilderImpl;
-
-typedef struct CCaptureGraph
-{
-	QUARTZ_IUnkImpl	unk;
-	CapGraph_ICaptureGraphBuilderImpl	capgraph1;
-
-	/* ICaptureGraphBuilder fields. */
-	IGraphBuilder*	m_pfg;
-} CCaptureGraph;
-
-#define	CCaptureGraph_THIS(iface,member)	CCaptureGraph*	This = ((CCaptureGraph*)(((char*)iface)-offsetof(CCaptureGraph,member)))
-
-#define CCaptureGraph_ICaptureGraphBuilder(th)	((ICaptureGraphBuilder*)&((th)->capgraph1))
-
-HRESULT QUARTZ_CreateCaptureGraph(IUnknown* punkOuter,void** ppobj);
-
-
-#endif	/* WINE_DSHOW_CAPGRAPH_H */
diff --git a/dlls/quartz/complist.c b/dlls/quartz/complist.c
deleted file mode 100644
index dad0970..0000000
--- a/dlls/quartz/complist.c
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * List of components. (for internal use)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "winerror.h"
-#include "wine/obj_base.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "complist.h"
-
-
-
-struct QUARTZ_CompList
-{
-	QUARTZ_CompListItem*	pFirst;
-	QUARTZ_CompListItem*	pLast;
-	CRITICAL_SECTION		csList;
-};
-
-struct QUARTZ_CompListItem
-{
-	IUnknown*	punk;
-	QUARTZ_CompListItem*	pNext;
-	QUARTZ_CompListItem*	pPrev;
-	void*	pvData;
-	DWORD	dwDataLen;
-};
-
-
-QUARTZ_CompList* QUARTZ_CompList_Alloc( void )
-{
-	QUARTZ_CompList*	pList;
-
-	pList = (QUARTZ_CompList*)QUARTZ_AllocMem( sizeof(QUARTZ_CompList) );
-	if ( pList != NULL )
-	{
-		/* construct. */
-		pList->pFirst = NULL;
-		pList->pLast = NULL;
-
-		InitializeCriticalSection( &pList->csList );
-	}
-
-	return pList;
-}
-
-void QUARTZ_CompList_Free( QUARTZ_CompList* pList )
-{
-	QUARTZ_CompListItem*	pCur;
-	QUARTZ_CompListItem*	pNext;
-
-	if ( pList != NULL )
-	{
-		pCur = pList->pFirst;
-		while ( pCur != NULL )
-		{
-			pNext = pCur->pNext;
-			if ( pCur->punk != NULL )
-				IUnknown_Release( pCur->punk );
-			if ( pCur->pvData != NULL )
-				QUARTZ_FreeMem( pCur->pvData );
-			QUARTZ_FreeMem( pCur );
-			pCur = pNext;
-		}
-
-		DeleteCriticalSection( &pList->csList );
-
-		QUARTZ_FreeMem( pList );
-	}
-}
-
-void QUARTZ_CompList_Lock( QUARTZ_CompList* pList )
-{
-	EnterCriticalSection( &pList->csList );
-}
-
-void QUARTZ_CompList_Unlock( QUARTZ_CompList* pList )
-{
-	LeaveCriticalSection( &pList->csList );
-}
-
-QUARTZ_CompList* QUARTZ_CompList_Dup(
-	const QUARTZ_CompList* pList, BOOL fDupData )
-{
-	QUARTZ_CompList*	pNewList;
-	const QUARTZ_CompListItem*	pCur;
-	HRESULT	hr;
-
-	pNewList = QUARTZ_CompList_Alloc();
-	if ( pNewList == NULL )
-		return NULL;
-
-	pCur = pList->pFirst;
-	while ( pCur != NULL )
-	{
-		if ( pCur->punk != NULL )
-		{
-			if ( fDupData )
-				hr = QUARTZ_CompList_AddComp(
-					pNewList, pCur->punk,
-					pCur->pvData, pCur->dwDataLen );
-			else
-				hr = QUARTZ_CompList_AddComp(
-					pNewList, pCur->punk, NULL, 0 );
-			if ( FAILED(hr) )
-			{
-				QUARTZ_CompList_Free( pNewList );
-				return NULL;
-			}
-		}
-		pCur = pCur->pNext;
-	}
-
-	return pNewList;
-}
-
-static QUARTZ_CompListItem* QUARTZ_CompList_AllocComp(
-	QUARTZ_CompList* pList, IUnknown* punk,
-	const void* pvData, DWORD dwDataLen )
-{
-	QUARTZ_CompListItem*	pItem;
-
-	pItem = (QUARTZ_CompListItem*)QUARTZ_AllocMem( sizeof(QUARTZ_CompListItem) );
-	if ( pItem == NULL )
-		return NULL;
-
-	pItem->pvData = NULL;
-	pItem->dwDataLen = 0;
-	if ( pvData != NULL )
-	{
-		pItem->pvData = (void*)QUARTZ_AllocMem( dwDataLen );
-		if ( pItem->pvData == NULL )
-		{
-			QUARTZ_FreeMem( pItem );
-			return NULL;
-		}
-		memcpy( pItem->pvData, pvData, dwDataLen );
-		pItem->dwDataLen = dwDataLen;
-	}
-
-	pItem->punk = punk; IUnknown_AddRef(punk);
-
-	return pItem;
-}
-
-HRESULT QUARTZ_CompList_AddComp(
-	QUARTZ_CompList* pList, IUnknown* punk,
-	const void* pvData, DWORD dwDataLen )
-{
-	QUARTZ_CompListItem*	pItem;
-
-	pItem = QUARTZ_CompList_AllocComp( pList, punk, pvData, dwDataLen );
-	if ( pItem == NULL )
-		return E_OUTOFMEMORY;
-
-	if ( pList->pFirst != NULL )
-		pList->pFirst->pPrev = pItem;
-	else
-		pList->pLast = pItem;
-	pItem->pNext = pList->pFirst;
-	pList->pFirst = pItem;
-	pItem->pPrev = NULL;
-
-	return S_OK;
-}
-
-HRESULT QUARTZ_CompList_AddTailComp(
-	QUARTZ_CompList* pList, IUnknown* punk,
-	const void* pvData, DWORD dwDataLen )
-{
-	QUARTZ_CompListItem*	pItem;
-
-	pItem = QUARTZ_CompList_AllocComp( pList, punk, pvData, dwDataLen );
-	if ( pItem == NULL )
-		return E_OUTOFMEMORY;
-
-	if ( pList->pLast != NULL )
-		pList->pLast->pNext = pItem;
-	else
-		pList->pFirst = pItem;
-	pItem->pPrev = pList->pLast;
-	pList->pLast = pItem;
-	pItem->pNext = NULL;
-
-	return S_OK;
-}
-
-HRESULT QUARTZ_CompList_RemoveComp( QUARTZ_CompList* pList, IUnknown* punk )
-{
-	QUARTZ_CompListItem*	pCur;
-
-	pCur = QUARTZ_CompList_SearchComp( pList, punk );
-	if ( pCur == NULL )
-		return S_FALSE; /* already removed. */
-
-	/* remove from list. */
-	if ( pCur->pNext != NULL )
-		pCur->pNext->pPrev = pCur->pPrev;
-	else
-		pList->pLast = pCur->pPrev;
-	if ( pCur->pPrev != NULL )
-		pCur->pPrev->pNext = pCur->pNext;
-	else
-		pList->pFirst = pCur->pNext;
-
-	/* release this item. */
-	if ( pCur->punk != NULL )
-		IUnknown_Release( pCur->punk );
-	if ( pCur->pvData != NULL )
-		QUARTZ_FreeMem( pCur->pvData );
-	QUARTZ_FreeMem( pCur );
-
-	return S_OK;
-}
-
-QUARTZ_CompListItem* QUARTZ_CompList_SearchComp(
-	QUARTZ_CompList* pList, IUnknown* punk )
-{
-	QUARTZ_CompListItem*	pCur;
-
-	pCur = pList->pFirst;
-	while ( pCur != NULL )
-	{
-		if ( pCur->punk == punk )
-			return pCur;
-		pCur = pCur->pNext;
-	}
-
-	return NULL;
-}
-
-QUARTZ_CompListItem* QUARTZ_CompList_SearchData(
-	QUARTZ_CompList* pList, const void* pvData, DWORD dwDataLen )
-{
-	QUARTZ_CompListItem*	pCur;
-
-	pCur = pList->pFirst;
-	while ( pCur != NULL )
-	{
-		if ( pCur->dwDataLen == dwDataLen &&
-		     !memcmp( pCur->pvData, pvData, dwDataLen ) )
-			return pCur;
-		pCur = pCur->pNext;
-	}
-
-	return NULL;
-}
-
-QUARTZ_CompListItem* QUARTZ_CompList_GetFirst(
-	QUARTZ_CompList* pList )
-{
-	return pList->pFirst;
-}
-
-QUARTZ_CompListItem* QUARTZ_CompList_GetLast(
-	QUARTZ_CompList* pList )
-{
-	return pList->pLast;
-}
-
-QUARTZ_CompListItem* QUARTZ_CompList_GetNext(
-	QUARTZ_CompList* pList, QUARTZ_CompListItem* pPrev )
-{
-	return pPrev->pNext;
-}
-
-QUARTZ_CompListItem* QUARTZ_CompList_GetPrev(
-	QUARTZ_CompList* pList, QUARTZ_CompListItem* pNext )
-{
-	return pNext->pPrev;
-}
-
-IUnknown* QUARTZ_CompList_GetItemPtr( QUARTZ_CompListItem* pItem )
-{
-	return pItem->punk;
-}
-
-const void* QUARTZ_CompList_GetDataPtr( QUARTZ_CompListItem* pItem )
-{
-	return pItem->pvData;
-}
-
-DWORD QUARTZ_CompList_GetDataLength( QUARTZ_CompListItem* pItem )
-{
-	return pItem->dwDataLen;
-}
diff --git a/dlls/quartz/complist.h b/dlls/quartz/complist.h
deleted file mode 100644
index ee53e38..0000000
--- a/dlls/quartz/complist.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * List of components. (for internal use)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	QUARTZ_COMPLIST_H
-#define	QUARTZ_COMPLIST_H
-
-typedef struct QUARTZ_CompList	QUARTZ_CompList;
-typedef struct QUARTZ_CompListItem	QUARTZ_CompListItem;
-
-QUARTZ_CompList* QUARTZ_CompList_Alloc( void );
-void QUARTZ_CompList_Free( QUARTZ_CompList* pList );
-void QUARTZ_CompList_Lock( QUARTZ_CompList* pList );
-void QUARTZ_CompList_Unlock( QUARTZ_CompList* pList );
-
-QUARTZ_CompList* QUARTZ_CompList_Dup(
-	const QUARTZ_CompList* pList, BOOL fDupData );
-HRESULT QUARTZ_CompList_AddComp(
-	QUARTZ_CompList* pList, IUnknown* punk,
-	const void* pvData, DWORD dwDataLen );
-HRESULT QUARTZ_CompList_AddTailComp(
-	QUARTZ_CompList* pList, IUnknown* punk,
-	const void* pvData, DWORD dwDataLen );
-HRESULT QUARTZ_CompList_RemoveComp( QUARTZ_CompList* pList, IUnknown* punk );
-QUARTZ_CompListItem* QUARTZ_CompList_SearchComp(
-	QUARTZ_CompList* pList, IUnknown* punk );
-QUARTZ_CompListItem* QUARTZ_CompList_SearchData(
-	QUARTZ_CompList* pList, const void* pvData, DWORD dwDataLen );
-QUARTZ_CompListItem* QUARTZ_CompList_GetFirst(
-	QUARTZ_CompList* pList );
-QUARTZ_CompListItem* QUARTZ_CompList_GetLast(
-	QUARTZ_CompList* pList );
-QUARTZ_CompListItem* QUARTZ_CompList_GetNext(
-	QUARTZ_CompList* pList, QUARTZ_CompListItem* pPrev );
-QUARTZ_CompListItem* QUARTZ_CompList_GetPrev(
-	QUARTZ_CompList* pList, QUARTZ_CompListItem* pNext );
-IUnknown* QUARTZ_CompList_GetItemPtr( QUARTZ_CompListItem* pItem );
-const void* QUARTZ_CompList_GetDataPtr( QUARTZ_CompListItem* pItem );
-DWORD QUARTZ_CompList_GetDataLength( QUARTZ_CompListItem* pItem );
-
-
-#endif	/* QUARTZ_COMPLIST_H */
diff --git a/dlls/quartz/csconv.c b/dlls/quartz/csconv.c
deleted file mode 100644
index 1360e22..0000000
--- a/dlls/quartz/csconv.c
+++ /dev/null
@@ -1,452 +0,0 @@
-/*
- * Implements Color Space Converter(CLSID_Colour).
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "vfw.h"
-#include "strmif.h"
-#include "control.h"
-#include "amvideo.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "xform.h"
-#include "videoblt.h"
-
-static const WCHAR ColorConv_FilterName[] =
-{'C','o','l','o','r',' ','S','p','a','c','e',' ','C','o','n','v','e','r','t','e','r',0};
-
-struct BltHandler
-{
-	const GUID*	psubtypeIn;
-	const GUID*	psubtypeOut;
-	pVIDEOBLT_Blt	pBlt;
-};
-
-static const struct BltHandler conv_handlers[] =
-{
-	{ &MEDIASUBTYPE_RGB24, &MEDIASUBTYPE_RGB32, VIDEOBLT_Blt_888_to_8888 },
-	{ &MEDIASUBTYPE_RGB24, &MEDIASUBTYPE_RGB565, VIDEOBLT_Blt_888_to_565 },
-	{ &MEDIASUBTYPE_RGB24, &MEDIASUBTYPE_RGB555, VIDEOBLT_Blt_888_to_555 },
-	{ &MEDIASUBTYPE_RGB24, &MEDIASUBTYPE_RGB8, VIDEOBLT_Blt_888_to_332 },
-	{ NULL, NULL, NULL },
-};
-
-typedef struct CColorConvImpl
-{
-	pVIDEOBLT_Blt	m_pBlt;
-	AM_MEDIA_TYPE*	m_pmtConv;
-	DWORD	m_cConv;
-	LONG	pitchIn;
-	LONG	pitchOut;
-} CColorConvImpl;
-
-/***************************************************************************
- *
- *	CColorConvImpl methods
- *
- */
-
-static void ColorConv_FreeOutTypes(CColorConvImpl* This)
-{
-	DWORD	i;
-
-	if ( This->m_pmtConv == NULL )
-		return;
-
-	TRACE("cConv = %lu\n",This->m_cConv);
-	for ( i = 0; i < This->m_cConv; i++ )
-	{
-		QUARTZ_MediaType_Free(&This->m_pmtConv[i]);
-	}
-	QUARTZ_FreeMem(This->m_pmtConv);
-	This->m_pmtConv = NULL;
-	This->m_cConv = 0;
-}
-
-static HRESULT ColorConv_FillBitmapInfo( BITMAPINFO* pbiOut, LONG biWidth, LONG biHeight, const GUID* psubtype )
-{
-	int i;
-	DWORD* pdwBitf;
-	HRESULT hr = E_FAIL;
-
-	pbiOut->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
-	pbiOut->bmiHeader.biWidth = biWidth;
-	pbiOut->bmiHeader.biHeight = biHeight;
-	pbiOut->bmiHeader.biPlanes = 1;
-
-	if ( IsEqualGUID( psubtype, &MEDIASUBTYPE_RGB8 ) )
-	{
-		pbiOut->bmiHeader.biBitCount = 8;
-		for ( i = 0; i < 256; i++ )
-		{
-			pbiOut->bmiColors[i].rgbRed = ((i>>5)&7)*255/7;
-			pbiOut->bmiColors[i].rgbGreen = ((i>>2)&7)*255/7;
-			pbiOut->bmiColors[i].rgbBlue = (i&3)*255/3;
-		}
-		hr = S_OK;
-	}
-	if ( IsEqualGUID( psubtype, &MEDIASUBTYPE_RGB555 ) )
-	{
-		pbiOut->bmiHeader.biBitCount = 16;
-		hr = S_OK;
-	}
-	if ( IsEqualGUID( psubtype, &MEDIASUBTYPE_RGB565 ) )
-	{
-		pbiOut->bmiHeader.biBitCount = 16;
-		pbiOut->bmiHeader.biCompression = 3;
-		pdwBitf = (DWORD*)(&pbiOut->bmiColors[0]);
-		pdwBitf[0] = 0xf800;
-		pdwBitf[1] = 0x07e0;
-		pdwBitf[2] = 0x001f;
-		hr = S_OK;
-	}
-	if ( IsEqualGUID( psubtype, &MEDIASUBTYPE_RGB24 ) )
-	{
-		pbiOut->bmiHeader.biBitCount = 24;
-		hr = S_OK;
-	}
-	if ( IsEqualGUID( psubtype, &MEDIASUBTYPE_RGB32 ) )
-	{
-		pbiOut->bmiHeader.biBitCount = 32;
-		hr = S_OK;
-	}
-
-	pbiOut->bmiHeader.biSizeImage = DIBSIZE(pbiOut->bmiHeader);
-
-	return hr;
-}
-
-
-static HRESULT ColorConv_Init( CTransformBaseImpl* pImpl )
-{
-	CColorConvImpl*	This = pImpl->m_pUserData;
-
-	if ( This != NULL )
-		return NOERROR;
-
-	This = (CColorConvImpl*)QUARTZ_AllocMem( sizeof(CColorConvImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This, sizeof(CColorConvImpl) );
-	pImpl->m_pUserData = This;
-	/* construct */
-	This->m_pBlt = NULL;
-	This->m_pmtConv = NULL;
-	This->m_cConv = 0;
-
-	return NOERROR;
-}
-
-static HRESULT ColorConv_Cleanup( CTransformBaseImpl* pImpl )
-{
-	CColorConvImpl*	This = pImpl->m_pUserData;
-
-	if ( This == NULL )
-		return NOERROR;
-	/* destruct */
-	ColorConv_FreeOutTypes(This);
-
-	QUARTZ_FreeMem( This );
-	pImpl->m_pUserData = NULL;
-
-	return NOERROR;
-}
-
-static HRESULT ColorConv_CheckMediaType( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut )
-{
-	CColorConvImpl*	This = pImpl->m_pUserData;
-	BITMAPINFOHEADER*	pbiIn = NULL;
-	BITMAPINFOHEADER*	pbiOut = NULL;
-	HRESULT hr;
-	GUID stIn, stOut;
-	const struct BltHandler*	phandler;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	if ( !IsEqualGUID( &pmtIn->majortype, &MEDIATYPE_Video ) )
-		return E_FAIL;
-	if ( !IsEqualGUID( &pmtIn->formattype, &FORMAT_VideoInfo ) )
-		return E_FAIL;
-	pbiIn = (&((VIDEOINFOHEADER*)pmtIn->pbFormat)->bmiHeader);
-	if ( pbiIn->biCompression != 0 &&
-		 pbiIn->biCompression != 3 )
-		return E_FAIL;
-
-	hr = QUARTZ_MediaSubType_FromBitmap( &stIn, pbiIn );
-	if ( hr != S_OK || !IsEqualGUID( &pmtIn->subtype, &stIn ) )
-		return E_FAIL;
-
-	if ( pmtOut != NULL )
-	{
-		if ( !IsEqualGUID( &pmtOut->majortype, &MEDIATYPE_Video ) )
-			return E_FAIL;
-		if ( !IsEqualGUID( &pmtOut->formattype, &FORMAT_VideoInfo ) )
-			return E_FAIL;
-		pbiOut = (&((VIDEOINFOHEADER*)pmtOut->pbFormat)->bmiHeader);
-		if ( pbiOut->biCompression != 0 &&
-			 pbiOut->biCompression != 3 )
-			return E_FAIL;
-		hr = QUARTZ_MediaSubType_FromBitmap( &stOut, pbiOut );
-		if ( hr != S_OK || !IsEqualGUID( &pmtOut->subtype, &stOut ) )
-			return E_FAIL;
-		if ( pbiIn->biWidth != pbiOut->biWidth ||
-			 pbiIn->biHeight != pbiOut->biHeight ||
-			 pbiIn->biPlanes != 1 || pbiOut->biPlanes != 1 )
-			return E_FAIL;
-	}
-
-	phandler = conv_handlers;
-	while ( phandler->psubtypeIn != NULL )
-	{
-		if ( IsEqualGUID( &pmtIn->subtype, phandler->psubtypeIn ) )
-		{
-			if ( pmtOut == NULL )
-				return S_OK;
-			if ( IsEqualGUID( &pmtOut->subtype, phandler->psubtypeOut ) )
-				return S_OK;
-		}
-		phandler ++;
-	}
-
-	return E_FAIL;
-}
-
-static HRESULT ColorConv_GetOutputTypes( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE** ppmtAcceptTypes, ULONG* pcAcceptTypes )
-{
-	CColorConvImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-	const struct BltHandler*	phandler;
-	DWORD	cConv;
-	BITMAPINFOHEADER*	pbiIn = NULL;
-	BITMAPINFOHEADER*	pbiOut = NULL;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = ColorConv_CheckMediaType( pImpl, pmtIn, NULL );
-	if ( FAILED(hr) )
-		return hr;
-	pbiIn = (&((VIDEOINFOHEADER*)pmtIn->pbFormat)->bmiHeader);
-
-	ColorConv_FreeOutTypes(This);
-
-	cConv = 0;
-	phandler = conv_handlers;
-	while ( phandler->psubtypeIn != NULL )
-	{
-		if ( IsEqualGUID( &pmtIn->subtype, phandler->psubtypeIn ) )
-			cConv ++;
-		phandler ++;
-	}
-
-	This->m_cConv = cConv;
-	This->m_pmtConv = (AM_MEDIA_TYPE*)QUARTZ_AllocMem(
-		sizeof(AM_MEDIA_TYPE) * cConv );
-	if ( This->m_pmtConv == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This->m_pmtConv, sizeof(AM_MEDIA_TYPE) * cConv );
-
-	cConv = 0;
-	phandler = conv_handlers;
-	while ( phandler->psubtypeIn != NULL )
-	{
-		if ( IsEqualGUID( &pmtIn->subtype, phandler->psubtypeIn ) )
-		{
-			memcpy( &This->m_pmtConv[cConv].majortype, &MEDIATYPE_Video, sizeof(GUID) );
-			memcpy( &This->m_pmtConv[cConv].subtype, phandler->psubtypeOut, sizeof(GUID) );
-			This->m_pmtConv[cConv].bFixedSizeSamples = 1;
-			This->m_pmtConv[cConv].bTemporalCompression = 0;
-			This->m_pmtConv[cConv].lSampleSize = DIBSIZE(*pbiIn);
-			memcpy( &This->m_pmtConv[cConv].formattype, &FORMAT_VideoInfo, sizeof(GUID) );
-			This->m_pmtConv[cConv].cbFormat = sizeof(VIDEOINFO);
-			This->m_pmtConv[cConv].pbFormat = (BYTE*)CoTaskMemAlloc( This->m_pmtConv[cConv].cbFormat );
-			if ( This->m_pmtConv[cConv].pbFormat == NULL )
-				return E_OUTOFMEMORY;
-			ZeroMemory( This->m_pmtConv[cConv].pbFormat, This->m_pmtConv[cConv].cbFormat );
-			pbiOut = &(((VIDEOINFOHEADER*)(This->m_pmtConv[cConv].pbFormat))->bmiHeader);
-			hr = ColorConv_FillBitmapInfo( (BITMAPINFO*)pbiOut, pbiIn->biWidth, pbiIn->biHeight, phandler->psubtypeOut );
-			if ( FAILED(hr) )
-				return hr;
-
-			cConv ++;
-		}
-		phandler ++;
-	}
-
-	*ppmtAcceptTypes = This->m_pmtConv;
-	*pcAcceptTypes = This->m_cConv;
-
-	return NOERROR;
-}
-
-static HRESULT ColorConv_GetAllocProp( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, ALLOCATOR_PROPERTIES* pProp, BOOL* pbTransInPlace, BOOL* pbTryToReuseSample )
-{
-	CColorConvImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-	BITMAPINFOHEADER*	pbiOut = NULL;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = ColorConv_CheckMediaType( pImpl, pmtIn, pmtOut );
-	if ( FAILED(hr) )
-		return hr;
-
-	pbiOut = (&((VIDEOINFOHEADER*)pmtOut->pbFormat)->bmiHeader);
-
-	pProp->cBuffers = 1;
-	pProp->cbBuffer = DIBSIZE(*pbiOut);
-	TRACE("%ldx%ldx%u cbBuffer = %ld\n",pbiOut->biWidth,pbiOut->biHeight,(unsigned)pbiOut->biBitCount,pProp->cbBuffer);
-
-	return NOERROR;
-}
-
-static HRESULT ColorConv_BeginTransform( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, BOOL bReuseSample )
-{
-	CColorConvImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-	BITMAPINFOHEADER*	pbiIn = NULL;
-	BITMAPINFOHEADER*	pbiOut = NULL;
-	const struct BltHandler*	phandler;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = ColorConv_CheckMediaType( pImpl, pmtIn, pmtOut );
-	if ( FAILED(hr) )
-		return hr;
-
-	pbiIn = (&((VIDEOINFOHEADER*)pmtIn->pbFormat)->bmiHeader);
-	pbiOut = (&((VIDEOINFOHEADER*)pmtOut->pbFormat)->bmiHeader);
-
-	This->pitchIn = DIBWIDTHBYTES(*pbiIn);
-	This->pitchOut = DIBWIDTHBYTES(*pbiOut);
-
-	This->m_pBlt = NULL;
-	phandler = conv_handlers;
-	while ( phandler->psubtypeIn != NULL )
-	{
-		if ( IsEqualGUID( &pmtIn->subtype, phandler->psubtypeIn ) )
-		{
-			if ( IsEqualGUID( &pmtOut->subtype, phandler->psubtypeOut ) )
-			{
-				This->m_pBlt = phandler->pBlt;
-				return S_OK;
-			}
-		}
-		phandler ++;
-	}
-
-	return E_FAIL;
-}
-
-static HRESULT ColorConv_Transform( CTransformBaseImpl* pImpl, IMediaSample* pSampIn, IMediaSample* pSampOut )
-{
-	CColorConvImpl*	This = pImpl->m_pUserData;
-	BYTE*	pDataIn = NULL;
-	BYTE*	pDataOut = NULL;
-	BITMAPINFO*	pbiIn;
-	BITMAPINFO*	pbiOut;
-	HRESULT hr;
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = IMediaSample_GetPointer( pSampIn, &pDataIn );
-	if ( FAILED(hr) )
-		return hr;
-	hr = IMediaSample_GetPointer( pSampOut, &pDataOut );
-	if ( FAILED(hr) )
-		return hr;
-
-	if ( This->m_pBlt != NULL )
-	{
-		pbiIn = (BITMAPINFO*)&(((VIDEOINFOHEADER*)pImpl->pInPin->pin.pmtConn->pbFormat)->bmiHeader);
-		pbiOut = (BITMAPINFO*)&(((VIDEOINFOHEADER*)pImpl->pOutPin->pin.pmtConn->pbFormat)->bmiHeader);
-		This->m_pBlt(
-			pDataOut, This->pitchOut,
-			pDataIn, This->pitchIn,
-			pbiIn->bmiHeader.biWidth,
-			abs(pbiIn->bmiHeader.biHeight),
-			&pbiIn->bmiColors[0], pbiIn->bmiHeader.biClrUsed );
-		hr = IMediaSample_SetActualDataLength(pSampOut,DIBSIZE(pbiOut->bmiHeader));
-		if ( FAILED(hr) )
-			return hr;
-	}
-
-	return NOERROR;
-}
-
-static HRESULT ColorConv_EndTransform( CTransformBaseImpl* pImpl )
-{
-	CColorConvImpl*	This = pImpl->m_pUserData;
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	This->m_pBlt = NULL;
-
-	return NOERROR;
-}
-
-
-static const TransformBaseHandlers transhandlers =
-{
-	ColorConv_Init,
-	ColorConv_Cleanup,
-	ColorConv_CheckMediaType,
-	ColorConv_GetOutputTypes,
-	ColorConv_GetAllocProp,
-	ColorConv_BeginTransform,
-	NULL,
-	ColorConv_Transform,
-	ColorConv_EndTransform,
-};
-
-HRESULT QUARTZ_CreateColour(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateTransformBase(
-		punkOuter,ppobj,
-		&CLSID_Colour,
-		ColorConv_FilterName,
-		NULL, NULL,
-		&transhandlers );
-}
-
diff --git a/dlls/quartz/devenum.c b/dlls/quartz/devenum.c
deleted file mode 100644
index e71622c..0000000
--- a/dlls/quartz/devenum.c
+++ /dev/null
@@ -1,1301 +0,0 @@
-/*
- * Implementation of CLSID_SystemDeviceEnum.
- * Implements IMoniker for CLSID_CDeviceMoniker.
- * Implements IPropertyBag. (internal)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winreg.h"
-#include "winerror.h"
-#include "objidl.h"
-#include "oleidl.h"
-#include "ocidl.h"
-#include "oleauto.h"
-#include "strmif.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "devenum.h"
-#include "enumunk.h"
-#include "complist.h"
-#include "regsvr.h"
-
-#ifndef NUMELEMS
-#define NUMELEMS(elem)	(sizeof(elem)/sizeof(elem[0]))
-#endif	/* NUMELEMS */
-
-/***************************************************************************
- *
- *	new/delete for CLSID_SystemDeviceEnum
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry CSysDevEnum_IFEntries[] =
-{
-  { &IID_ICreateDevEnum, offsetof(CSysDevEnum,createdevenum)-offsetof(CSysDevEnum,unk) },
-};
-
-
-static void QUARTZ_DestroySystemDeviceEnum(IUnknown* punk)
-{
-	CSysDevEnum_THIS(punk,unk);
-
-	CSysDevEnum_UninitICreateDevEnum( This );
-}
-
-HRESULT QUARTZ_CreateSystemDeviceEnum(IUnknown* punkOuter,void** ppobj)
-{
-	CSysDevEnum*	psde;
-	HRESULT	hr;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	psde = (CSysDevEnum*)QUARTZ_AllocObj( sizeof(CSysDevEnum) );
-	if ( psde == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &psde->unk, punkOuter );
-
-	hr = CSysDevEnum_InitICreateDevEnum( psde );
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj( psde );
-		return hr;
-	}
-
-	psde->unk.pEntries = CSysDevEnum_IFEntries;
-	psde->unk.dwEntries = sizeof(CSysDevEnum_IFEntries)/sizeof(CSysDevEnum_IFEntries[0]);
-	psde->unk.pOnFinalRelease = QUARTZ_DestroySystemDeviceEnum;
-
-	*ppobj = (void*)(&psde->unk);
-
-	return S_OK;
-}
-
-
-/***************************************************************************
- *
- *	CSysDevEnum::ICreateDevEnum
- *
- */
-
-
-static HRESULT WINAPI
-ICreateDevEnum_fnQueryInterface(ICreateDevEnum* iface,REFIID riid,void** ppobj)
-{
-	CSysDevEnum_THIS(iface,createdevenum);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-ICreateDevEnum_fnAddRef(ICreateDevEnum* iface)
-{
-	CSysDevEnum_THIS(iface,createdevenum);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-ICreateDevEnum_fnRelease(ICreateDevEnum* iface)
-{
-	CSysDevEnum_THIS(iface,createdevenum);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-ICreateDevEnum_fnCreateClassEnumerator(ICreateDevEnum* iface,REFCLSID rclsidDeviceClass,IEnumMoniker** ppobj, DWORD dwFlags)
-{
-	CSysDevEnum_THIS(iface,createdevenum);
-	HRESULT	hr;
-	HKEY	hKey;
-	QUARTZ_CompList*	pMonList;
-	IMoniker*	pMon;
-	DWORD	dwIndex;
-	LONG	lr;
-	WCHAR	wszPath[ 1024 ];
-	DWORD	dwLen;
-	DWORD	dwNameMax;
-	DWORD	cbName;
-	FILETIME	ftLastWrite;
-
-	TRACE("(%p)->(%s,%p,%08lx)\n",This,
-		debugstr_guid(rclsidDeviceClass),ppobj,dwFlags);
-	if ( dwFlags != 0 )
-	{
-		FIXME("unknown flags %08lx\n",dwFlags);
-		return E_NOTIMPL;
-	}
-
-	if ( ppobj == NULL )
-		return E_POINTER;
-	*ppobj = NULL;
-
-	hr = QUARTZ_CreateCLSIDPath(
-		wszPath, sizeof(wszPath)/sizeof(wszPath[0]) - 16,
-		rclsidDeviceClass, QUARTZ_wszInstance );
-	if ( FAILED(hr) )
-		return hr;
-
-	lr = RegOpenKeyExW( HKEY_CLASSES_ROOT, wszPath,
-		0, KEY_READ, &hKey );
-	if ( lr != ERROR_SUCCESS )
-	{
-		TRACE("cannot open %s\n",debugstr_w(wszPath));
-		if ( lr == ERROR_FILE_NOT_FOUND ||
-			 lr == ERROR_PATH_NOT_FOUND )
-			return S_FALSE;
-		return E_FAIL;
-	}
-
-	dwLen = lstrlenW(wszPath);
-	wszPath[dwLen++] = '\\'; wszPath[dwLen] = 0;
-	dwNameMax = sizeof(wszPath)/sizeof(wszPath[0]) - dwLen - 8;
-
-	pMonList = QUARTZ_CompList_Alloc();
-	if ( pMonList == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto err;
-	}
-
-	/* enumerate all subkeys. */
-	dwIndex = 0;
-	while ( 1 )
-	{
-		cbName = dwNameMax;
-		lr = RegEnumKeyExW(
-			hKey, dwIndex, &wszPath[dwLen], &cbName,
-			NULL, NULL, NULL, &ftLastWrite );
-		if ( lr == ERROR_NO_MORE_ITEMS )
-			break;
-		if ( lr != ERROR_SUCCESS )
-		{
-			TRACE("RegEnumKeyEx returns %08lx\n",lr);
-			hr = E_FAIL;
-			goto err;
-		}
-
-		hr = QUARTZ_CreateDeviceMoniker(
-			HKEY_CLASSES_ROOT, wszPath, &pMon );
-		if ( FAILED(hr) )
-			goto err;
-
-		hr = QUARTZ_CompList_AddComp(
-			pMonList, (IUnknown*)pMon, NULL, 0 );
-		IMoniker_Release( pMon );
-
-		if ( FAILED(hr) )
-			goto err;
-
-		dwIndex ++;
-	}
-
-	/* create an enumerator. */
-	hr = QUARTZ_CreateEnumUnknown(
-		&IID_IEnumMoniker, (void**)ppobj, pMonList );
-	if ( FAILED(hr) )
-		goto err;
-
-	hr = S_OK;
-err:
-	if ( pMonList != NULL )
-		QUARTZ_CompList_Free( pMonList );
-	RegCloseKey( hKey );
-
-	return hr;
-}
-
-static ICOM_VTABLE(ICreateDevEnum) icreatedevenum =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	ICreateDevEnum_fnQueryInterface,
-	ICreateDevEnum_fnAddRef,
-	ICreateDevEnum_fnRelease,
-	/* ICreateDevEnum fields */
-	ICreateDevEnum_fnCreateClassEnumerator,
-};
-
-HRESULT CSysDevEnum_InitICreateDevEnum( CSysDevEnum* psde )
-{
-	TRACE("(%p)\n",psde);
-	ICOM_VTBL(&psde->createdevenum) = &icreatedevenum;
-
-	return NOERROR;
-}
-
-void CSysDevEnum_UninitICreateDevEnum( CSysDevEnum* psde )
-{
-	TRACE("(%p)\n",psde);
-}
-
-
-/***************************************************************************
- *
- *	CDeviceMoniker::IMoniker
- *
- */
-
-static HRESULT WINAPI
-IMoniker_fnQueryInterface(IMoniker* iface,REFIID riid,void** ppobj)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IMoniker_fnAddRef(IMoniker* iface)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IMoniker_fnRelease(IMoniker* iface)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI IMoniker_fnGetClassID(IMoniker* iface, CLSID *pClassID)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	TRACE("(%p)->()\n",This);
-
-	if ( pClassID == NULL )
-		return E_POINTER;
-	memcpy( pClassID, &CLSID_CDeviceMoniker, sizeof(CLSID) );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI IMoniker_fnIsDirty(IMoniker* iface)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnLoad(IMoniker* iface, IStream* pStm)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnSave(IMoniker* iface, IStream* pStm, BOOL fClearDirty)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnGetSizeMax(IMoniker* iface, ULARGE_INTEGER* pcbSize)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnBindToObject(IMoniker* iface,IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riid, VOID** ppvResult)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-	HRESULT	hr;
-	IPropertyBag*	pPropBag;
-	IPersistPropertyBag*	pPersistPropBag;
-	VARIANT	vClsid;
-	CLSID	clsid;
-
-	TRACE("(%p)->(%p,%p,%s,%p)\n",This,
-		pbc,pmkToLeft,debugstr_guid(riid),ppvResult);
-	if ( pbc != NULL )
-	{
-		FIXME("IBindCtx* pbc != NULL not implemented.\n");
-		return E_FAIL;
-	}
-	if ( pmkToLeft != NULL )
-	{
-		FIXME("IMoniker* pmkToLeft != NULL not implemented.\n");
-		return E_FAIL;
-	}
-	if ( ppvResult == NULL )
-		return E_POINTER;
-
-	hr = QUARTZ_CreateRegPropertyBag(
-			This->m_hkRoot, This->m_pwszPath, &pPropBag );
-	if ( FAILED(hr) )
-		return hr;
-
-	vClsid.n1.n2.vt = VT_BSTR;
-	hr = IPropertyBag_Read(
-			pPropBag, QUARTZ_wszCLSID, &vClsid, NULL );
-	IPropertyBag_Release( pPropBag );
-	if ( FAILED(hr) )
-		return hr;
-
-	hr = CLSIDFromString( vClsid.n1.n2.n3.bstrVal, &clsid );
-	SysFreeString(vClsid.n1.n2.n3.bstrVal);
-	if ( FAILED(hr) )
-		return hr;
-
-	hr = CoCreateInstance(
-		&clsid, NULL, CLSCTX_INPROC_SERVER, riid, ppvResult );
-	if ( FAILED(hr) )
-		return hr;
-
-	hr = IUnknown_QueryInterface((IUnknown*)*ppvResult,&IID_IPersistPropertyBag,(void**)&pPersistPropBag);
-	if ( hr == E_NOINTERFACE )
-	{
-		hr = S_OK;
-	}
-	else
-	if ( SUCCEEDED(hr) )
-	{
-		hr = QUARTZ_CreateRegPropertyBag(
-				This->m_hkRoot, This->m_pwszPath, &pPropBag );
-		if ( SUCCEEDED(hr) )
-		{
-			hr = IPersistPropertyBag_Load(pPersistPropBag,pPropBag,NULL);
-			IPropertyBag_Release( pPropBag );
-		}
-		IPersistPropertyBag_Release(pPersistPropBag);
-	}
-
-	if ( FAILED(hr) )
-	{
-		IUnknown_Release((IUnknown*)*ppvResult);
-		*ppvResult = NULL;
-	}
-
-	TRACE( "hr = %08lx\n", hr );
-
-	return hr;
-}
-
-static HRESULT WINAPI IMoniker_fnBindToStorage(IMoniker* iface,IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riid, VOID** ppvResult)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-	HRESULT	hr;
-
-	TRACE("(%p)->(%p,%p,%s,%p)\n",This,
-		pbc,pmkToLeft,debugstr_guid(riid),ppvResult);
-	if ( pbc != NULL )
-	{
-		FIXME("IBindCtx* pbc != NULL not implemented.\n");
-		return E_FAIL;
-	}
-	if ( pmkToLeft != NULL )
-	{
-		FIXME("IMoniker* pmkToLeft != NULL not implemented.\n");
-		return E_FAIL;
-	}
-	if ( ppvResult == NULL )
-		return E_POINTER;
-
-	hr = E_NOINTERFACE;
-	if ( IsEqualGUID(riid,&IID_IUnknown) ||
-		 IsEqualGUID(riid,&IID_IPropertyBag) )
-	{
-		hr = QUARTZ_CreateRegPropertyBag(
-			This->m_hkRoot, This->m_pwszPath,
-			(IPropertyBag**)ppvResult );
-	}
-
-	return hr;
-}
-
-static HRESULT WINAPI IMoniker_fnReduce(IMoniker* iface,IBindCtx* pbc, DWORD dwReduceHowFar,IMoniker** ppmkToLeft, IMoniker** ppmkReduced)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	TRACE("(%p)->()\n",This);
-
-	if ( ppmkReduced == NULL )
-		return E_POINTER;
-
-	*ppmkReduced = iface; IMoniker_AddRef(iface);
-
-	return MK_S_REDUCED_TO_SELF;
-}
-
-static HRESULT WINAPI IMoniker_fnComposeWith(IMoniker* iface,IMoniker* pmkRight,BOOL fOnlyIfNotGeneric, IMoniker** ppmkComposite)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnEnum(IMoniker* iface,BOOL fForward, IEnumMoniker** ppenumMoniker)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	TRACE("(%p)->()\n",This);
-
-	if ( ppenumMoniker == NULL )
-		return E_POINTER;
-
-	*ppenumMoniker = NULL;
-	return NOERROR;
-}
-
-static HRESULT WINAPI IMoniker_fnIsEqual(IMoniker* iface,IMoniker* pmkOtherMoniker)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnHash(IMoniker* iface,DWORD* pdwHash)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnIsRunning(IMoniker* iface,IBindCtx* pbc, IMoniker* pmkToLeft, IMoniker* pmkNewlyRunning)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnGetTimeOfLastChange(IMoniker* iface, IBindCtx* pbc, IMoniker* pmkToLeft, FILETIME* pCompositeTime)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnInverse(IMoniker* iface,IMoniker** ppmk)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnCommonPrefixWith(IMoniker* iface,IMoniker* pmkOther, IMoniker** ppmkPrefix)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnRelativePathTo(IMoniker* iface,IMoniker* pmOther, IMoniker** ppmkRelPath)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnGetDisplayName(IMoniker* iface,IBindCtx* pbc, IMoniker* pmkToLeft, LPOLESTR *ppszDisplayName)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnParseDisplayName(IMoniker* iface,IBindCtx* pbc, IMoniker* pmkToLeft, LPOLESTR pszDisplayName, ULONG* pchEaten, IMoniker** ppmkOut)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IMoniker_fnIsSystemMoniker(IMoniker* iface,DWORD* pdwMksys)
-{
-	CDeviceMoniker_THIS(iface,moniker);
-
-	TRACE("(%p)->()\n",This);
-	if ( pdwMksys == NULL )
-		return E_POINTER;
-
-	*pdwMksys = MKSYS_NONE;
-	return S_FALSE;
-}
-
-
-static ICOM_VTABLE(IMoniker) imoniker =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMoniker_fnQueryInterface,
-	IMoniker_fnAddRef,
-	IMoniker_fnRelease,
-	/* IPersist fields */
-	IMoniker_fnGetClassID,
-	/* IPersistStream fields */
-	IMoniker_fnIsDirty,
-	IMoniker_fnLoad,
-	IMoniker_fnSave,
-	IMoniker_fnGetSizeMax,
-	/* IMoniker fields */
-	IMoniker_fnBindToObject,
-	IMoniker_fnBindToStorage,
-	IMoniker_fnReduce,
-	IMoniker_fnComposeWith,
-	IMoniker_fnEnum,
-	IMoniker_fnIsEqual,
-	IMoniker_fnHash,
-	IMoniker_fnIsRunning,
-	IMoniker_fnGetTimeOfLastChange,
-	IMoniker_fnInverse,
-	IMoniker_fnCommonPrefixWith,
-	IMoniker_fnRelativePathTo,
-	IMoniker_fnGetDisplayName,
-	IMoniker_fnParseDisplayName,
-	IMoniker_fnIsSystemMoniker,
-};
-
-
-static HRESULT CDeviceMoniker_InitIMoniker(
-	CDeviceMoniker* pdm, HKEY hkRoot, LPCWSTR lpKeyPath )
-{
-	DWORD	dwLen;
-
-	ICOM_VTBL(&pdm->moniker) = &imoniker;
-	pdm->m_hkRoot = hkRoot;
-	pdm->m_pwszPath = NULL;
-
-	dwLen = sizeof(WCHAR)*(lstrlenW(lpKeyPath)+1);
-	pdm->m_pwszPath = (WCHAR*)QUARTZ_AllocMem( dwLen );
-	if ( pdm->m_pwszPath == NULL )
-		return E_OUTOFMEMORY;
-	memcpy( pdm->m_pwszPath, lpKeyPath, dwLen );
-
-	return NOERROR;
-}
-
-static void CDeviceMoniker_UninitIMoniker(
-	CDeviceMoniker* pdm )
-{
-	if ( pdm->m_pwszPath != NULL )
-		QUARTZ_FreeMem( pdm->m_pwszPath );
-}
-
-/***************************************************************************
- *
- *	new/delete for CDeviceMoniker
- *
- */
-
-static void QUARTZ_DestroyDeviceMoniker(IUnknown* punk)
-{
-	CDeviceMoniker_THIS(punk,unk);
-
-	CDeviceMoniker_UninitIMoniker( This );
-}
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry CDeviceMoniker_IFEntries[] =
-{
-  { &IID_IPersist, offsetof(CDeviceMoniker,moniker)-offsetof(CDeviceMoniker,unk) },
-  { &IID_IPersistStream, offsetof(CDeviceMoniker,moniker)-offsetof(CDeviceMoniker,unk) },
-  { &IID_IMoniker, offsetof(CDeviceMoniker,moniker)-offsetof(CDeviceMoniker,unk) },
-};
-
-HRESULT QUARTZ_CreateDeviceMoniker(
-	HKEY hkRoot, LPCWSTR lpKeyPath,
-	IMoniker** ppMoniker )
-{
-	CDeviceMoniker*	pdm;
-	HRESULT	hr;
-
-	TRACE("(%08x,%s,%p)\n",hkRoot,debugstr_w(lpKeyPath),ppMoniker );
-
-	pdm = (CDeviceMoniker*)QUARTZ_AllocObj( sizeof(CDeviceMoniker) );
-	if ( pdm == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &pdm->unk, NULL );
-	hr = CDeviceMoniker_InitIMoniker( pdm, hkRoot, lpKeyPath );
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj( pdm );
-		return hr;
-	}
-
-	pdm->unk.pEntries = CDeviceMoniker_IFEntries;
-	pdm->unk.dwEntries = sizeof(CDeviceMoniker_IFEntries)/sizeof(CDeviceMoniker_IFEntries[0]);
-	pdm->unk.pOnFinalRelease = &QUARTZ_DestroyDeviceMoniker;
-
-	*ppMoniker = (IMoniker*)(&pdm->moniker);
-
-	return S_OK;
-}
-
-
-/***************************************************************************
- *
- *	CRegPropertyBag::IPropertyBag
- *
- */
-
-static HRESULT WINAPI
-IPropertyBag_fnQueryInterface(IPropertyBag* iface,REFIID riid,void** ppobj)
-{
-	CRegPropertyBag_THIS(iface,propbag);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IPropertyBag_fnAddRef(IPropertyBag* iface)
-{
-	CRegPropertyBag_THIS(iface,propbag);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IPropertyBag_fnRelease(IPropertyBag* iface)
-{
-	CRegPropertyBag_THIS(iface,propbag);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IPropertyBag_fnRead(IPropertyBag* iface,LPCOLESTR lpszPropName,VARIANT* pVar,IErrorLog* pLog)
-{
-	CRegPropertyBag_THIS(iface,propbag);
-	HRESULT hr;
-	LONG	lr;
-	DWORD	dwSize;
-	DWORD	dwValueType;
-	DWORD	dwDWordValue;
-	SAFEARRAYBOUND	sab;
-	SAFEARRAY*	pArray;
-
-	TRACE("(%p)->(%s,%p,%p)\n",This,
-		debugstr_w(lpszPropName),pVar,pLog);
-
-	if ( lpszPropName == NULL || pVar == NULL )
-		return E_POINTER;
-
-	dwSize = 0;
-	lr = RegQueryValueExW(
-		This->m_hKey, lpszPropName, NULL,
-		&dwValueType, NULL, &dwSize );
-	if ( lr != ERROR_SUCCESS )
-	{
-		WARN( "RegQueryValueExW failed.\n" );
-		return E_INVALIDARG;
-	}
-
-	switch ( dwValueType )
-	{
-	case REG_SZ:
-		TRACE( "REG_SZ / length = %lu\n", dwSize );
-		if ( pVar->n1.n2.vt == VT_EMPTY )
-			pVar->n1.n2.vt = VT_BSTR;
-		if ( pVar->n1.n2.vt != VT_BSTR )
-		{
-			FIXME( "type of VARIANT is not BSTR.\n" );
-			return E_FAIL;
-		}
-
-		pVar->n1.n2.n3.bstrVal = SysAllocStringByteLen(
-			NULL, dwSize );
-		if ( pVar->n1.n2.n3.bstrVal == NULL )
-		{
-			WARN( "out of memory.\n" );
-			return E_OUTOFMEMORY;
-		}
-		lr = RegQueryValueExW(
-			This->m_hKey, lpszPropName, NULL,
-			&dwValueType,
-			(BYTE*)pVar->n1.n2.n3.bstrVal, &dwSize );
-		if ( lr != ERROR_SUCCESS )
-		{
-			WARN( "failed to query value\n" );
-			SysFreeString(pVar->n1.n2.n3.bstrVal);
-			return E_FAIL;
-		}
-		TRACE( "value is BSTR; %s\n", debugstr_w(pVar->n1.n2.n3.bstrVal) );
-		break;
-	case REG_BINARY:
-		TRACE( "REG_BINARY / length = %lu\n", dwSize );
-		if ( pVar->n1.n2.vt == VT_EMPTY )
-			pVar->n1.n2.vt = VT_ARRAY|VT_UI1;
-		if ( pVar->n1.n2.vt != (VT_ARRAY|VT_UI1) )
-		{
-			FIXME( "type of VARIANT is not VT_ARRAY|VT_UI1.\n" );
-			return E_FAIL;
-		}
-		sab.lLbound = 0;
-		sab.cElements = dwSize;
-		pArray = SafeArrayCreate( VT_UI1, 1, &sab );
-		if ( pArray == NULL )
-			return E_OUTOFMEMORY;
-		hr = SafeArrayLock( pArray );
-		if ( FAILED(hr) )
-		{
-			WARN( "safe array can't be locked\n" );
-			SafeArrayDestroy( pArray );
-			return hr;
-		}
-		lr = RegQueryValueExW(
-			This->m_hKey, lpszPropName, NULL,
-			&dwValueType,
-			(BYTE*)pArray->pvData, &dwSize );
-		SafeArrayUnlock( pArray );
-		if ( lr != ERROR_SUCCESS )
-		{
-			WARN( "failed to query value\n" );
-			SafeArrayDestroy( pArray );
-			return E_FAIL;
-		}
-		pVar->n1.n2.n3.parray = pArray;
-		TRACE( "value is SAFEARRAY - array of BYTE; \n" );
-		break;
-	case REG_DWORD:
-		TRACE( "REG_DWORD / length = %lu\n", dwSize );
-		if ( dwSize != sizeof(DWORD) )
-		{
-			WARN( "The length of REG_DWORD value is not sizeof(DWORD).\n" );
-			return E_FAIL;
-		}
-		if ( pVar->n1.n2.vt == VT_EMPTY )
-			pVar->n1.n2.vt = VT_I4;
-		if ( pVar->n1.n2.vt != VT_I4 )
-		{
-			FIXME( "type of VARIANT is not VT_I4.\n" );
-			return E_FAIL;
-		}
-		lr = RegQueryValueExW(
-			This->m_hKey, lpszPropName, NULL,
-			&dwValueType,
-			(BYTE*)(&dwDWordValue), &dwSize );
-		if ( lr != ERROR_SUCCESS )
-		{
-			WARN( "failed to query value\n" );
-			return E_FAIL;
-		}
-		pVar->n1.n2.n3.lVal = dwDWordValue;
-		TRACE( "value is DWORD; %08lx\n", dwDWordValue );
-		break;
-	default:
-		FIXME("(%p)->(%s,%p,%p) - unsupported value type.\n",This,
-			debugstr_w(lpszPropName),pVar,pLog);
-		return E_FAIL;
-	}
-
-	TRACE( "returned successfully.\n" );
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IPropertyBag_fnWrite(IPropertyBag* iface,LPCOLESTR lpszPropName,VARIANT* pVar)
-{
-	CRegPropertyBag_THIS(iface,propbag);
-	HRESULT hr;
-	LONG	lr;
-	DWORD	dwDWordValue;
-	SAFEARRAY*	pArray;
-
-	TRACE("(%p)->(%s,%p)\n",This,
-		debugstr_w(lpszPropName),pVar);
-
-	if ( lpszPropName == NULL || pVar == NULL )
-		return E_POINTER;
-
-	switch ( pVar->n1.n2.vt )
-	{
-	case VT_I4: /* REG_DWORD */
-		dwDWordValue = pVar->n1.n2.n3.lVal;
-		lr = RegSetValueExW(
-			This->m_hKey, lpszPropName, 0,
-			REG_DWORD,
-			(const BYTE*)(&dwDWordValue), sizeof(DWORD) );
-		if ( lr != ERROR_SUCCESS )
-		{
-			WARN( "failed to set value\n" );
-			return E_FAIL;
-		}
-		break;
-	case VT_BSTR: /* REG_SZ */
-		lr = RegSetValueExW(
-			This->m_hKey, lpszPropName, 0,
-			REG_SZ,
-			(const BYTE*)(pVar->n1.n2.n3.bstrVal),
-			SysStringByteLen( pVar->n1.n2.n3.bstrVal ) );
-		if ( lr != ERROR_SUCCESS )
-		{
-			WARN( "failed to set value\n" );
-			return E_FAIL;
-		}
-		break;
-	case (VT_ARRAY|VT_UI1): /* REG_BINARY */
-		pArray = pVar->n1.n2.n3.parray;
-		if ( pArray->cDims != 1 || pArray->cbElements != 1 ||
-			 pArray->rgsabound[0].lLbound != 0 )
-		{
-			WARN( "invalid array\n" );
-			return E_INVALIDARG;
-		}
-		hr = SafeArrayLock( pArray );
-		if ( FAILED(hr) )
-		{
-			WARN( "safe array can't be locked\n" );
-			return hr;
-		}
-		lr = RegSetValueExW(
-			This->m_hKey, lpszPropName, 0,
-			REG_BINARY,
-			(const BYTE*)pArray->pvData,
-			pArray->rgsabound[0].cElements );
-		SafeArrayUnlock( pArray );
-		if ( lr != ERROR_SUCCESS )
-		{
-			WARN( "failed to set value\n" );
-			return E_FAIL;
-		}
-		break;
-	default:
-		FIXME("(%p)->(%s,%p) invalid/unsupported VARIANT type %04x\n",This,
-			debugstr_w(lpszPropName),pVar,pVar->n1.n2.vt);
-		return E_INVALIDARG;
-	}
-
-	TRACE( "returned successfully.\n" );
-	return NOERROR;
-}
-
-
-
-
-static ICOM_VTABLE(IPropertyBag) ipropbag =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IPropertyBag_fnQueryInterface,
-	IPropertyBag_fnAddRef,
-	IPropertyBag_fnRelease,
-	/* IPropertyBag fields */
-	IPropertyBag_fnRead,
-	IPropertyBag_fnWrite,
-};
-
-static HRESULT CRegPropertyBag_InitIPropertyBag(
-	CRegPropertyBag* prpb, HKEY hkRoot, LPCWSTR lpKeyPath )
-{
-	WCHAR	wszREG_SZ[ NUMELEMS(QUARTZ_wszREG_SZ) ];
-	DWORD	dwDisp;
-
-	ICOM_VTBL(&prpb->propbag) = &ipropbag;
-
-	memcpy(wszREG_SZ,QUARTZ_wszREG_SZ,sizeof(QUARTZ_wszREG_SZ) );
-
-	if ( RegCreateKeyExW(
-			hkRoot, lpKeyPath, 0, wszREG_SZ,
-			REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL,
-			&prpb->m_hKey, &dwDisp ) != ERROR_SUCCESS )
-		return E_FAIL;
-
-	return NOERROR;
-}
-
-static void CRegPropertyBag_UninitIPropertyBag(
-	CRegPropertyBag* prpb )
-{
-	RegCloseKey( prpb->m_hKey );
-}
-
-
-/***************************************************************************
- *
- *	new/delete for CRegPropertyBag
- *
- */
-
-static void QUARTZ_DestroyRegPropertyBag(IUnknown* punk)
-{
-	CRegPropertyBag_THIS(punk,unk);
-
-	CRegPropertyBag_UninitIPropertyBag(This);
-}
-
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry CRegPropertyBag_IFEntries[] =
-{
-  { &IID_IPropertyBag, offsetof(CRegPropertyBag,propbag)-offsetof(CRegPropertyBag,unk) },
-};
-
-HRESULT QUARTZ_CreateRegPropertyBag(
-	HKEY hkRoot, LPCWSTR lpKeyPath,
-	IPropertyBag** ppPropBag )
-{
-	CRegPropertyBag*	prpb;
-	HRESULT	hr;
-
-	TRACE("(%08x,%s,%p)\n",hkRoot,debugstr_w(lpKeyPath),ppPropBag );
-
-	prpb = (CRegPropertyBag*)QUARTZ_AllocObj( sizeof(CRegPropertyBag) );
-	if ( prpb == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &prpb->unk, NULL );
-	hr = CRegPropertyBag_InitIPropertyBag( prpb, hkRoot, lpKeyPath );
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj( prpb );
-		return hr;
-	}
-
-	prpb->unk.pEntries = CRegPropertyBag_IFEntries;
-	prpb->unk.dwEntries = sizeof(CRegPropertyBag_IFEntries)/sizeof(CRegPropertyBag_IFEntries[0]);
-	prpb->unk.pOnFinalRelease = &QUARTZ_DestroyRegPropertyBag;
-
-	*ppPropBag = (IPropertyBag*)(&prpb->propbag);
-
-	return S_OK;
-}
-
-/***************************************************************************
- *
- *	Helper for registering filters.
- *
- */
-
-HRESULT QUARTZ_GetFilterRegPath(
-	WCHAR** ppwszPath,	/* [OUT] path from HKEY_CLASSES_ROOT */
-	const CLSID* pguidFilterCategory,	/* [IN] Category */
-	const CLSID* pclsid,	/* [IN] CLSID of this filter */
-	LPCWSTR lpInstance )	/* [IN] instance */
-{
-	HRESULT	hr;
-	WCHAR	szKey[ 1024 ];
-	WCHAR	szFilterPath[ 512 ];
-	WCHAR	szCLSID[ 256 ];
-	int	buflen;
-
-	TRACE("(%p,%s,%s,%s)\n",ppwszPath,debugstr_guid(pguidFilterCategory),debugstr_guid(pclsid),debugstr_w(lpInstance) );
-
-	*ppwszPath = NULL;
-
-	QUARTZ_GUIDtoString( szCLSID, pclsid );
-	lstrcpyW( szFilterPath, QUARTZ_wszInstance );
-	QUARTZ_CatPathSepW( szFilterPath );
-	if ( lpInstance != NULL )
-	{
-		if ( lstrlenW(lpInstance) >= 256 )
-			return E_INVALIDARG;
-		lstrcatW( szFilterPath, lpInstance );
-	}
-	else
-	{
-		lstrcatW( szFilterPath, szCLSID );
-	}
-
-	hr = QUARTZ_CreateCLSIDPath(
-		szKey, NUMELEMS(szKey),
-		pguidFilterCategory, szFilterPath );
-	if ( FAILED(hr) )
-		return hr;
-
-	buflen = sizeof(WCHAR)*(lstrlenW(szKey)+1);
-	*ppwszPath = QUARTZ_AllocMem( buflen );
-	if ( *ppwszPath == NULL )
-		return E_OUTOFMEMORY;
-	memcpy( *ppwszPath, szKey, buflen );
-	return S_OK;
-}
-
-HRESULT QUARTZ_RegisterFilterToMoniker(
-	IMoniker* pMoniker,	/* [IN] Moniker */
-	const CLSID* pclsid,	/* [IN] CLSID of this filter */
-	LPCWSTR lpFriendlyName,	/* [IN] friendly name */
-	const BYTE* pbFilterData,	/* [IN] filter data */
-	DWORD cbFilterData )	/* [IN] size of the filter data */
-{
-	IPropertyBag*	pPropBag = NULL;
-	WCHAR	wszClsid[128];
-	VARIANT var;
-	HRESULT hr;
-	SAFEARRAYBOUND	sab;
-	SAFEARRAY*	pArray = NULL;
-
-	TRACE("(%p,%s,%s,%p,%08lu)\n",pMoniker,debugstr_guid(pclsid),debugstr_w(lpFriendlyName),pbFilterData,cbFilterData);
-
-	hr = IMoniker_BindToStorage(pMoniker,NULL,NULL,&IID_IPropertyBag,(void**)&pPropBag);
-	if ( FAILED(hr) )
-		goto err;
-	QUARTZ_GUIDtoString( wszClsid, pclsid );
-	var.n1.n2.vt = VT_BSTR;
-	var.n1.n2.n3.bstrVal = SysAllocString(wszClsid);
-	if ( var.n1.n2.n3.bstrVal == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto err;
-	}
-	hr = IPropertyBag_Write(pPropBag,QUARTZ_wszCLSID,&var);
-	SysFreeString(var.n1.n2.n3.bstrVal);
-	if ( FAILED(hr) )
-		goto err;
-
-	var.n1.n2.vt = VT_BSTR;
-	var.n1.n2.n3.bstrVal = SysAllocString(lpFriendlyName);
-	if ( var.n1.n2.n3.bstrVal == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto err;
-	}
-	hr = IPropertyBag_Write(pPropBag,QUARTZ_wszFriendlyName,&var);
-	SysFreeString(var.n1.n2.n3.bstrVal);
-	if ( FAILED(hr) )
-		goto err;
-
-	if ( pbFilterData != NULL )
-	{
-		var.n1.n2.vt = VT_ARRAY|VT_UI1;
-		sab.lLbound = 0;
-		sab.cElements = cbFilterData;
-		pArray = SafeArrayCreate( VT_UI1, 1, &sab );
-		if ( pArray == NULL )
-		{
-			hr = E_OUTOFMEMORY;
-			goto err;
-		}
-		hr = SafeArrayLock( pArray );
-		if ( FAILED(hr) )
-			goto err;
-		var.n1.n2.n3.parray = pArray;
-		memcpy( pArray->pvData, pbFilterData, cbFilterData );
-		hr = IPropertyBag_Write(pPropBag,QUARTZ_wszFilterData,&var);
-		SafeArrayUnlock( pArray );
-		if ( FAILED(hr) )
-			goto err;
-	}
-
-	hr = NOERROR;
-err:
-	if ( pArray != NULL )
-		SafeArrayDestroy( pArray );
-	if ( pPropBag != NULL )
-		IPropertyBag_Release(pPropBag);
-
-	return hr;
-}
-
-HRESULT QUARTZ_RegDeleteKey( HKEY hkRoot, LPCWSTR lpKeyPath )
-{
-	LONG	lr;
-	HRESULT hr;
-	HKEY	hKey;
-	DWORD	dwIndex;
-	DWORD	cbName;
-	FILETIME	ftLastWrite;
-	DWORD	dwType;
-	WCHAR	wszPath[ 512 ];
-
-	TRACE("(%08x,%s)\n",hkRoot,debugstr_w(lpKeyPath));
-
-	lr = RegOpenKeyExW( hkRoot, lpKeyPath, 0, KEY_ALL_ACCESS, &hKey );
-	if ( lr == ERROR_SUCCESS )
-	{
-		dwIndex = 0;
-		while ( 1 )
-		{
-			cbName = NUMELEMS(wszPath);
-			lr = RegEnumKeyExW(
-				hKey, dwIndex, wszPath, &cbName,
-				NULL, NULL, NULL, &ftLastWrite );
-			if ( lr != ERROR_SUCCESS )
-				break;
-			hr = QUARTZ_RegDeleteKey( hKey, wszPath );
-			if ( FAILED(hr) )
-				return hr;
-			if ( hr != S_OK )
-				dwIndex ++;
-		}
-		while ( 1 )
-		{
-			cbName = NUMELEMS(wszPath);
-			lr = RegEnumValueW(
-				hKey, 0, wszPath, &cbName, 0,
-				&dwType, NULL, 0 );
-			if ( lr != ERROR_SUCCESS )
-				break;
-			lr = RegDeleteValueW( hKey, wszPath );
-			if ( lr != ERROR_SUCCESS )
-			{
-				WARN("RegDeleteValueW - %08lx\n",lr);
-				return E_FAIL;
-			}
-		}
-	}
-	RegCloseKey( hKey );
-
-	lr = RegDeleteKeyW( hkRoot, lpKeyPath );
-	WARN("RegDeleteKeyW - %08lx\n",lr);
-	if ( lr != ERROR_SUCCESS && lr != ERROR_FILE_NOT_FOUND )
-		return S_FALSE;
-	return S_OK;
-}
-
-static
-HRESULT QUARTZ_GetPropertyFromMoniker(
-	IMoniker* pMoniker,	/* [IN] Moniker */
-	LPCOLESTR lpszPropName,	/* [IN] Property */
-	VARIANT* pVar )	/* [OUT] */
-{
-	IPropertyBag*	pPropBag = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%s,%p)\n",pMoniker,debugstr_w(lpszPropName),pVar);
-
-	hr = IMoniker_BindToStorage(pMoniker,NULL,NULL,&IID_IPropertyBag,(void**)&pPropBag);
-	if ( FAILED(hr) )
-		return hr;
-	hr = IPropertyBag_Read(pPropBag,lpszPropName,pVar,NULL);
-	IPropertyBag_Release(pPropBag);
-
-	return hr;
-}
-
-HRESULT QUARTZ_GetCLSIDFromMoniker(
-	IMoniker* pMoniker,	/* [IN] Moniker */
-	CLSID* pclsid )	/* [OUT] */
-{
-	VARIANT	var;
-	HRESULT hr;
-
-	var.n1.n2.vt = VT_BSTR;
-	hr = QUARTZ_GetPropertyFromMoniker(
-		pMoniker, QUARTZ_wszCLSID, &var );
-	if ( hr == S_OK )
-	{
-		hr = CLSIDFromString(var.n1.n2.n3.bstrVal,pclsid);
-		SysFreeString(var.n1.n2.n3.bstrVal);
-	}
-
-	return hr;
-}
-
-HRESULT QUARTZ_GetMeritFromMoniker(
-	IMoniker* pMoniker,	/* [IN] Moniker */
-	DWORD* pdwMerit )	/* [OUT] */
-{
-	VARIANT	var;
-	HRESULT hr;
-
-	var.n1.n2.vt = VT_I4;
-	hr = QUARTZ_GetPropertyFromMoniker(
-		pMoniker, QUARTZ_wszMerit, &var );
-	if ( hr == S_OK )
-		*pdwMerit = var.n1.n2.n3.lVal;
-
-	return hr;
-}
-
-HRESULT QUARTZ_GetFilterDataFromMoniker(
-	IMoniker* pMoniker,	/* [IN] Moniker */
-	BYTE** ppbFilterData,	/* [OUT] */
-	DWORD* pcbFilterData )	/* [OUT] */
-{
-	VARIANT	var;
-	HRESULT hr;
-	SAFEARRAY*	pArray;
-
-	var.n1.n2.vt = VT_ARRAY|VT_UI1;
-	hr = QUARTZ_GetPropertyFromMoniker(
-		pMoniker, QUARTZ_wszFilterData, &var );
-	if ( hr == S_OK )
-	{
-		pArray = var.n1.n2.n3.parray;
-		hr = SafeArrayLock( pArray );
-		if ( SUCCEEDED(hr) )
-		{
-			*pcbFilterData = pArray->rgsabound[0].cElements - pArray->rgsabound[0].lLbound;
-			*ppbFilterData = (BYTE*)QUARTZ_AllocMem( *pcbFilterData );
-			if ( *ppbFilterData == NULL )
-				hr = E_OUTOFMEMORY;
-			else
-				memcpy( *ppbFilterData, pArray->pvData, *pcbFilterData );
-
-			SafeArrayUnlock( pArray );
-		}
-		SafeArrayDestroy( pArray );
-	}
-
-	return hr;
-}
-
diff --git a/dlls/quartz/devenum.h b/dlls/quartz/devenum.h
deleted file mode 100644
index e18a854..0000000
--- a/dlls/quartz/devenum.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_DEVENUM_H
-#define	WINE_DSHOW_DEVENUM_H
-
-/*
- *		implements CLSID_SystemDeviceEnum.
- *
- *	- At least, the following interfaces should be implemented:
- *
- *	IUnknown
- *		+ ICreateDevEnum
- */
-
-#include "iunk.h"
-
-typedef struct SDE_ICreateDevEnumImpl
-{
-	ICOM_VFIELD(ICreateDevEnum);
-} SDE_ICreateDevEnumImpl;
-
-typedef struct CSysDevEnum
-{
-	QUARTZ_IUnkImpl	unk;
-	SDE_ICreateDevEnumImpl	createdevenum;
-} CSysDevEnum;
-
-#define	CSysDevEnum_THIS(iface,member)		CSysDevEnum*	This = ((CSysDevEnum*)(((char*)iface)-offsetof(CSysDevEnum,member)))
-
-HRESULT QUARTZ_CreateSystemDeviceEnum(IUnknown* punkOuter,void** ppobj);
-
-HRESULT CSysDevEnum_InitICreateDevEnum( CSysDevEnum* psde );
-void CSysDevEnum_UninitICreateDevEnum( CSysDevEnum* psde );
-
-
-
-/*
- *		implements CLSID_CDeviceMoniker.
- *
- *	- At least, the following interfaces should be implemented:
- *
- *	IUnknown
- *		+ IPersist - IPersistStream - IMoniker
- */
-
-typedef struct DMON_IMonikerImpl
-{
-	ICOM_VFIELD(IMoniker);
-} DMON_IMonikerImpl;
-
-typedef struct CDeviceMoniker
-{
-	QUARTZ_IUnkImpl	unk;
-	DMON_IMonikerImpl	moniker;
-	/* IMoniker fields */
-	HKEY	m_hkRoot;
-	WCHAR*	m_pwszPath;
-} CDeviceMoniker;
-
-#define	CDeviceMoniker_THIS(iface,member)	CDeviceMoniker*	This = (CDeviceMoniker*)(((char*)iface)-offsetof(CDeviceMoniker,member))
-
-HRESULT QUARTZ_CreateDeviceMoniker(
-	HKEY hkRoot, LPCWSTR lpKeyPath,
-	IMoniker** ppMoniker );
-
-
-/*
- *		implements IPropertyBag for accessing registry.
- *
- *	- At least, the following interfaces should be implemented:
- *
- *	IUnknown
- *		+ IPropertyBag
- */
-
-typedef struct DMON_IPropertyBagImpl
-{
-	ICOM_VFIELD(IPropertyBag);
-} DMON_IPropertyBagImpl;
-
-typedef struct CRegPropertyBag
-{
-	QUARTZ_IUnkImpl	unk;
-	DMON_IPropertyBagImpl	propbag;
-	/* IPropertyBag fields */
-	HKEY	m_hKey;
-} CRegPropertyBag;
-
-#define	CRegPropertyBag_THIS(iface,member)	CRegPropertyBag*	This = (CRegPropertyBag*)(((char*)iface)-offsetof(CRegPropertyBag,member))
-
-HRESULT QUARTZ_CreateRegPropertyBag(
-	HKEY hkRoot, LPCWSTR lpKeyPath,
-	IPropertyBag** ppPropBag );
-
-/***************************************************************************
- *
- *	related functions (internal).
- *
- */
-
-HRESULT QUARTZ_GetFilterRegPath(
-	WCHAR** ppwszPath,	/* [OUT] path from HKEY_CLASSES_ROOT */
-	const CLSID* pguidFilterCategory,	/* [IN] Category */
-	const CLSID* pclsid,	/* [IN] CLSID of this filter */
-	LPCWSTR lpInstance );	/* [IN] instance */
-
-HRESULT QUARTZ_RegisterFilterToMoniker(
-	IMoniker* pMoniker,	/* [IN] Moniker */
-	const CLSID* pclsid,	/* [IN] CLSID of this filter */
-	LPCWSTR lpFriendlyName,	/* [IN] friendly name */
-	const BYTE* pbFilterData,	/* [IN] filter data */
-	DWORD cbFilterData );	/* [IN] size of the filter data */
-
-HRESULT QUARTZ_RegDeleteKey( HKEY hkRoot, LPCWSTR lpKeyPath );
-
-HRESULT QUARTZ_GetCLSIDFromMoniker(
-	IMoniker* pMoniker,	/* [IN] Moniker */
-	CLSID* pclsid );	/* [OUT] */
-HRESULT QUARTZ_GetMeritFromMoniker(
-	IMoniker* pMoniker,	/* [IN] Moniker */
-	DWORD* pdwMerit );	/* [OUT] */
-HRESULT QUARTZ_GetFilterDataFromMoniker(
-	IMoniker* pMoniker,	/* [IN] Moniker */
-	BYTE** ppbFilterData,	/* [OUT] */
-	DWORD* pcbFilterData );	/* [OUT] */
-
-
-#endif	/* WINE_DSHOW_DEVENUM_H */
diff --git a/dlls/quartz/enumunk.c b/dlls/quartz/enumunk.c
deleted file mode 100644
index 3853c45..0000000
--- a/dlls/quartz/enumunk.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Implementation of IEnumUnknown (for internal use).
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "winerror.h"
-#include "wine/obj_base.h"
-#include "wine/obj_misc.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "enumunk.h"
-#include "iunk.h"
-
-
-
-typedef struct IEnumUnknownImpl
-{
-	ICOM_VFIELD(IEnumUnknown);
-} IEnumUnknownImpl;
-
-typedef struct
-{
-	QUARTZ_IUnkImpl	unk;
-	IEnumUnknownImpl	enumunk;
-	struct QUARTZ_IFEntry	IFEntries[1];
-	QUARTZ_CompList*	pCompList;
-	QUARTZ_CompListItem*	pItemCur;
-} CEnumUnknown;
-
-#define	CEnumUnknown_THIS(iface,member)		CEnumUnknown*	This = ((CEnumUnknown*)(((char*)iface)-offsetof(CEnumUnknown,member)))
-
-
-
-
-static HRESULT WINAPI
-IEnumUnknown_fnQueryInterface(IEnumUnknown* iface,REFIID riid,void** ppobj)
-{
-	CEnumUnknown_THIS(iface,enumunk);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IEnumUnknown_fnAddRef(IEnumUnknown* iface)
-{
-	CEnumUnknown_THIS(iface,enumunk);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IEnumUnknown_fnRelease(IEnumUnknown* iface)
-{
-	CEnumUnknown_THIS(iface,enumunk);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IEnumUnknown_fnNext(IEnumUnknown* iface,ULONG cReq,IUnknown** ppunk,ULONG* pcFetched)
-{
-	CEnumUnknown_THIS(iface,enumunk);
-	HRESULT	hr;
-	ULONG	cFetched;
-
-	TRACE("(%p)->(%lu,%p,%p)\n",This,cReq,ppunk,pcFetched);
-
-	if ( pcFetched == NULL && cReq > 1 )
-		return E_INVALIDARG;
-	if ( ppunk == NULL )
-		return E_POINTER;
-
-	QUARTZ_CompList_Lock( This->pCompList );
-
-	hr = NOERROR;
-	cFetched = 0;
-	while ( cReq > 0 )
-	{
-		if ( This->pItemCur == NULL )
-		{
-			hr = S_FALSE;
-			break;
-		}
-		ppunk[ cFetched ++ ] = QUARTZ_CompList_GetItemPtr( This->pItemCur );
-		IUnknown_AddRef( *ppunk );
-
-		This->pItemCur =
-			QUARTZ_CompList_GetNext( This->pCompList, This->pItemCur );
-		cReq --;
-	}
-
-	QUARTZ_CompList_Unlock( This->pCompList );
-
-	if ( pcFetched != NULL )
-		*pcFetched = cFetched;
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IEnumUnknown_fnSkip(IEnumUnknown* iface,ULONG cSkip)
-{
-	CEnumUnknown_THIS(iface,enumunk);
-	HRESULT	hr;
-
-	TRACE("(%p)->()\n",This);
-
-	QUARTZ_CompList_Lock( This->pCompList );
-
-	hr = NOERROR;
-	while ( cSkip > 0 )
-	{
-		if ( This->pItemCur == NULL )
-		{
-			hr = S_FALSE;
-			break;
-		}
-		This->pItemCur =
-			QUARTZ_CompList_GetNext( This->pCompList, This->pItemCur );
-		cSkip --;
-	}
-
-	QUARTZ_CompList_Unlock( This->pCompList );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IEnumUnknown_fnReset(IEnumUnknown* iface)
-{
-	CEnumUnknown_THIS(iface,enumunk);
-
-	TRACE("(%p)->()\n",This);
-
-	QUARTZ_CompList_Lock( This->pCompList );
-
-	This->pItemCur = QUARTZ_CompList_GetFirst( This->pCompList );
-
-	QUARTZ_CompList_Unlock( This->pCompList );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IEnumUnknown_fnClone(IEnumUnknown* iface,IEnumUnknown** ppunk)
-{
-	CEnumUnknown_THIS(iface,enumunk);
-	HRESULT	hr;
-
-	TRACE("(%p)->()\n",This);
-
-	if ( ppunk == NULL )
-		return E_POINTER;
-
-	QUARTZ_CompList_Lock( This->pCompList );
-
-	hr = QUARTZ_CreateEnumUnknown(
-		This->IFEntries[0].piid,
-		(void**)ppunk,
-		This->pCompList );
-	FIXME( "current pointer must be seeked correctly\n" );
-
-	QUARTZ_CompList_Unlock( This->pCompList );
-
-	return hr;
-}
-
-
-static ICOM_VTABLE(IEnumUnknown) ienumunk =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IEnumUnknown_fnQueryInterface,
-	IEnumUnknown_fnAddRef,
-	IEnumUnknown_fnRelease,
-	/* IEnumUnknown fields */
-	IEnumUnknown_fnNext,
-	IEnumUnknown_fnSkip,
-	IEnumUnknown_fnReset,
-	IEnumUnknown_fnClone,
-};
-
-void QUARTZ_DestroyEnumUnknown(IUnknown* punk)
-{
-	CEnumUnknown_THIS(punk,unk);
-
-	if ( This->pCompList != NULL )
-		QUARTZ_CompList_Free( This->pCompList );
-}
-
-HRESULT QUARTZ_CreateEnumUnknown(
-	REFIID riidEnum, void** ppobj, const QUARTZ_CompList* pCompList )
-{
-	CEnumUnknown*	penum;
-	QUARTZ_CompList*	pCompListDup;
-
-	TRACE("(%s,%p,%p)\n",debugstr_guid(riidEnum),ppobj,pCompList);
-
-	pCompListDup = QUARTZ_CompList_Dup( pCompList, FALSE );
-	if ( pCompListDup == NULL )
-		return E_OUTOFMEMORY;
-
-	penum = (CEnumUnknown*)QUARTZ_AllocObj( sizeof(CEnumUnknown) );
-	if ( penum == NULL )
-	{
-		QUARTZ_CompList_Free( pCompListDup );
-		return E_OUTOFMEMORY;
-	}
-
-	QUARTZ_IUnkInit( &penum->unk, NULL );
-	ICOM_VTBL(&penum->enumunk) = &ienumunk;
-
-	penum->IFEntries[0].piid = riidEnum;
-	penum->IFEntries[0].ofsVTPtr =
-		offsetof(CEnumUnknown,enumunk)-offsetof(CEnumUnknown,unk);
-	penum->pCompList = pCompListDup;
-	penum->pItemCur = QUARTZ_CompList_GetFirst( pCompListDup );
-
-	penum->unk.pEntries = penum->IFEntries;
-	penum->unk.dwEntries = 1;
-	penum->unk.pOnFinalRelease = QUARTZ_DestroyEnumUnknown;
-
-	*ppobj = (void*)(&penum->enumunk);
-
-	return S_OK;
-}
-
diff --git a/dlls/quartz/enumunk.h b/dlls/quartz/enumunk.h
deleted file mode 100644
index eb59f7d..0000000
--- a/dlls/quartz/enumunk.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Implementation of IEnumUnknown (for internal use).
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	QUARTZ_ENUMUNK_H
-#define	QUARTZ_ENUMUNK_H
-
-#include "complist.h"
-
-HRESULT QUARTZ_CreateEnumUnknown(
-	REFIID riidEnum, void** ppobj, const QUARTZ_CompList* pCompList );
-
-
-#endif	/* QUARTZ_ENUMUNK_H */
diff --git a/dlls/quartz/fgevent.c b/dlls/quartz/fgevent.c
deleted file mode 100644
index 1e8523d..0000000
--- a/dlls/quartz/fgevent.c
+++ /dev/null
@@ -1,645 +0,0 @@
-/*
- * CLSID_FilterGraph event handling.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "evcode.h"
-#include "uuids.h"
-#include "vfwmsgs.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "fgraph.h"
-
-#define EVENTQUEUE_BLOCKSIZE	2
-#define EVENTQUEUE_MAX			1024
-
-struct FilterGraph_MEDIAEVENT
-{
-	long		lEventCode;
-	LONG_PTR	lParam1;
-	LONG_PTR	lParam2;
-};
-
-
-static HRESULT FGEVENT_KeepEvent(
-	BOOL bKeep,
-	long lEventCode, LONG_PTR lParam1, LONG_PTR lParam2 )
-{
-	switch ( lEventCode )
-	{
-	/*case EC_COMPLETE:*/
-	case EC_USERABORT:
-		break;
-	case EC_ERRORABORT:
-		break;
-	case EC_TIME:
-		break;
-	/*case EC_REPAINT:*/
-	case EC_STREAM_ERROR_STOPPED:
-		break;
-	case EC_STREAM_ERROR_STILLPLAYING:
-		break;
-	case EC_ERROR_STILLPLAYING:
-		break;
-	case EC_PALETTE_CHANGED:
-		break;
-	case EC_VIDEO_SIZE_CHANGED:
-		break;
-	case EC_QUALITY_CHANGE:
-		break;
-	/*case EC_SHUTTING_DOWN:*/
-	case EC_CLOCK_CHANGED:
-		break;
-
-	case EC_OPENING_FILE:
-		break;
-	case EC_BUFFERING_DATA:
-		break;
-	case EC_FULLSCREEN_LOST:
-		if ( bKeep )
-		{
-			if ( ((IBaseFilter*)lParam2) != NULL )
-				IBaseFilter_AddRef( (IBaseFilter*)lParam2 );
-		}
-		else
-		{
-			if ( ((IBaseFilter*)lParam2) != NULL )
-				IBaseFilter_Release( (IBaseFilter*)lParam2 );
-		}
-		break;
-	/*case EC_ACTIVATE:*/
-	/*case EC_NEED_RESTART:*/
-	/*case EC_WINDOW_DESTROYED:*/
-	/*case EC_DISPLAY_CHANGED:*/
-	/*case EC_STARVATION:*/
-	/*case EC_OLE_EVENT:*/
-	/*case EC_NOTIFY_WINDOW:*/
-	/*case EC_STREAM_CONTROL_STOPPED:*/
-	/*case EC_STREAM_CONTROL_STARTED:*/
-	/*case EC_END_OF_SEGMENT:*/
-	/*case EC_SEGMENT_STARTED:*/
-	case EC_LENGTH_CHANGED:
-		break;
-
-	default:
-		if ( lEventCode < EC_USER )
-		{
-			FIXME( "unknown system event %08lx\n", lEventCode );
-			return E_INVALIDARG;
-		}
-		TRACE( "user event %08lx\n", lEventCode );
-		break;
-	}
-
-	return NOERROR;
-}
-
-/***************************************************************************
- *
- *	CLSID_FilterGraph::IMediaEvent[Ex]
- *
- */
-
-static HRESULT WINAPI
-IMediaEventEx_fnQueryInterface(IMediaEventEx* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IMediaEventEx_fnAddRef(IMediaEventEx* iface)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IMediaEventEx_fnRelease(IMediaEventEx* iface)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IMediaEventEx_fnGetTypeInfoCount(IMediaEventEx* iface,UINT* pcTypeInfo)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaEventEx_fnGetTypeInfo(IMediaEventEx* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaEventEx_fnGetIDsOfNames(IMediaEventEx* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaEventEx_fnInvoke(IMediaEventEx* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-static HRESULT WINAPI
-IMediaEventEx_fnGetEventHandle(IMediaEventEx* iface,OAEVENT* hEvent)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	TRACE("(%p)->()\n",This);
-
-	*hEvent = (OAEVENT)This->m_hMediaEvent;
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IMediaEventEx_fnGetEvent(IMediaEventEx* iface,long* plEventCode,LONG_PTR* plParam1,LONG_PTR* plParam2,long lTimeOut)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-	ULONG cQueued;
-	DWORD dw;
-	DWORD dwStart;
-	HRESULT	hr;
-	FilterGraph_MEDIAEVENT*	pEvent;
-
-	TRACE("(%p)->(%p,%p,%p,%ld)\n",This,plEventCode,
-		plParam1,plParam2,lTimeOut);
-
-	if ( plEventCode == NULL || plParam1 == NULL || plParam2 == NULL )
-		return E_POINTER;
-
-	while ( 1 )
-	{
-		dwStart = GetTickCount();
-		dw = WaitForSingleObject( This->m_hMediaEvent, lTimeOut );
-		if ( dw == WAIT_TIMEOUT )
-			return VFW_E_TIMEOUT;
-		if ( dw != WAIT_OBJECT_0 )
-			return E_FAIL;
-
-		EnterCriticalSection( &This->m_csMediaEvents );
-		hr = S_FALSE;
-		if ( This->m_cbMediaEventsMax > 0 )
-		{
-			cQueued =
-				(This->m_cbMediaEventsMax +
-				 This->m_cbMediaEventsPut - This->m_cbMediaEventsGet) %
-					This->m_cbMediaEventsMax;
-			if ( cQueued > 0 )
-			{
-				pEvent = &This->m_pMediaEvents[This->m_cbMediaEventsGet];
-				*plEventCode = pEvent->lEventCode;
-				*plParam1 = pEvent->lParam1;
-				*plParam2 = pEvent->lParam2;
-				This->m_cbMediaEventsGet = (This->m_cbMediaEventsGet + 1) %
-						This->m_cbMediaEventsMax;
-
-				hr = NOERROR;
-				if ( This->m_cbMediaEventsPut == This->m_cbMediaEventsGet )
-					ResetEvent( This->m_hMediaEvent );
-			}
-		}
-		LeaveCriticalSection( &This->m_csMediaEvents );
-
-		if ( hr != S_FALSE )
-			return hr;
-		if ( lTimeOut != INFINITE )
-		{
-			lTimeOut -= GetTickCount() - dwStart;
-			if ( lTimeOut < 0 )
-				return VFW_E_TIMEOUT;
-		}
-	}
-}
-
-static HRESULT WINAPI
-IMediaEventEx_fnWaitForCompletion(IMediaEventEx* iface,long lTimeOut,long* plEventCode)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-	HRESULT hr;
-	long lEventCode;
-	LONG_PTR lParam1;
-	LONG_PTR lParam2;
-	DWORD dwTimePrev;
-	DWORD dwTimeCur;
-
-	TRACE("(%p)->(%ld,%p)\n",This,lTimeOut,plEventCode);
-
-	if ( plEventCode == NULL )
-		return E_POINTER;
-	*plEventCode = 0;
-
-	dwTimePrev = GetTickCount();
-
-	while ( 1 )
-	{
-		hr = IMediaEventEx_GetEvent(
-				CFilterGraph_IMediaEventEx(This),
-				&lEventCode,&lParam1,&lParam2,lTimeOut);
-		if ( hr == VFW_E_TIMEOUT )
-			hr = E_ABORT;
-		if ( hr != NOERROR )
-			return hr;
-		IMediaEventEx_FreeEventParams(
-				CFilterGraph_IMediaEventEx(This),
-				lEventCode,lParam1,lParam2);
-
-		if ( lEventCode == EC_COMPLETE ||
-			 lEventCode == EC_ERRORABORT ||
-			 lEventCode == EC_USERABORT )
-		{
-			*plEventCode = lEventCode;
-			return NOERROR;
-		}
-
-		if ( lTimeOut != INFINITE )
-		{
-			dwTimeCur = GetTickCount();
-			lTimeOut -= dwTimeCur - dwTimePrev;
-			dwTimePrev = dwTimeCur;
-			if ( lTimeOut < 0 )
-				return E_ABORT;
-		}
-	}
-}
-
-static HRESULT WINAPI
-IMediaEventEx_fnCancelDefaultHandling(IMediaEventEx* iface,long lEventCode)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaEventEx_fnRestoreDefaultHandling(IMediaEventEx* iface,long lEventCode)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaEventEx_fnFreeEventParams(IMediaEventEx* iface,long lEventCode,LONG_PTR lParam1,LONG_PTR lParam2)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	TRACE("(%p)->(%08lx,%08x,%08x)\n",This,lEventCode,lParam1,lParam2);
-
-	return FGEVENT_KeepEvent( FALSE, lEventCode, lParam1, lParam2 );
-}
-
-static HRESULT WINAPI
-IMediaEventEx_fnSetNotifyWindow(IMediaEventEx* iface,OAHWND hwnd,long message,LONG_PTR lParam)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	TRACE("(%p)->(%08x,%08lx,%08x)\n",This,hwnd,message,lParam);
-
-	EnterCriticalSection( &This->m_csMediaEvents );
-	This->m_hwndEventNotify = (HWND)hwnd;
-	This->m_lEventNotifyMsg = message;
-	This->m_lEventNotifyParam = lParam;
-	LeaveCriticalSection( &This->m_csMediaEvents );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IMediaEventEx_fnSetNotifyFlags(IMediaEventEx* iface,long lNotifyFlags)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	TRACE("(%p)->(%ld)\n",This,lNotifyFlags);
-
-	if ( lNotifyFlags != 0 && lNotifyFlags != 1 )
-		return E_INVALIDARG;
-
-	EnterCriticalSection( &This->m_csMediaEvents );
-	This->m_lEventNotifyFlags = lNotifyFlags;
-	LeaveCriticalSection( &This->m_csMediaEvents );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IMediaEventEx_fnGetNotifyFlags(IMediaEventEx* iface,long* plNotifyFlags)
-{
-	CFilterGraph_THIS(iface,mediaevent);
-
-	TRACE("(%p)->(%p)\n",This,plNotifyFlags);
-
-	if ( plNotifyFlags == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->m_csMediaEvents );
-	*plNotifyFlags = This->m_lEventNotifyFlags;
-	LeaveCriticalSection( &This->m_csMediaEvents );
-
-	return NOERROR;
-}
-
-
-
-static ICOM_VTABLE(IMediaEventEx) imediaevent =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMediaEventEx_fnQueryInterface,
-	IMediaEventEx_fnAddRef,
-	IMediaEventEx_fnRelease,
-	/* IDispatch fields */
-	IMediaEventEx_fnGetTypeInfoCount,
-	IMediaEventEx_fnGetTypeInfo,
-	IMediaEventEx_fnGetIDsOfNames,
-	IMediaEventEx_fnInvoke,
-	/* IMediaEvent fields */
-	IMediaEventEx_fnGetEventHandle,
-	IMediaEventEx_fnGetEvent,
-	IMediaEventEx_fnWaitForCompletion,
-	IMediaEventEx_fnCancelDefaultHandling,
-	IMediaEventEx_fnRestoreDefaultHandling,
-	IMediaEventEx_fnFreeEventParams,
-	/* IMediaEventEx fields */
-	IMediaEventEx_fnSetNotifyWindow,
-	IMediaEventEx_fnSetNotifyFlags,
-	IMediaEventEx_fnGetNotifyFlags,
-};
-
-
-HRESULT CFilterGraph_InitIMediaEventEx( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-	ICOM_VTBL(&pfg->mediaevent) = &imediaevent;
-
-	pfg->m_hMediaEvent = CreateEventA( NULL, TRUE, FALSE, NULL );
-	if ( pfg->m_hMediaEvent == (HANDLE)NULL )
-		return E_OUTOFMEMORY;
-
-	InitializeCriticalSection( &pfg->m_csMediaEvents );
-	pfg->m_pMediaEvents = NULL;
-	pfg->m_cbMediaEventsPut = 0;
-	pfg->m_cbMediaEventsGet = 0;
-	pfg->m_cbMediaEventsMax = 0;
-	pfg->m_hwndEventNotify = (HWND)NULL;
-	pfg->m_lEventNotifyMsg = 0;
-	pfg->m_lEventNotifyParam = 0;
-	pfg->m_lEventNotifyFlags = 0;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIMediaEventEx( CFilterGraph* pfg )
-{
-	HRESULT hr;
-	long lEventCode;
-	LONG_PTR lParam1;
-	LONG_PTR lParam2;
-
-	TRACE("(%p)\n",pfg);
-
-	while ( 1 )
-	{
-		hr = IMediaEventEx_GetEvent(
-				CFilterGraph_IMediaEventEx(pfg),
-				&lEventCode,&lParam1,&lParam2,0);
-		if ( hr != NOERROR )
-			break;
-		IMediaEventEx_FreeEventParams(
-				CFilterGraph_IMediaEventEx(pfg),
-				lEventCode,lParam1,lParam2);
-	}
-
-	if ( pfg->m_pMediaEvents != NULL )
-	{
-		QUARTZ_FreeMem( pfg->m_pMediaEvents );
-		pfg->m_pMediaEvents = NULL;
-	}
-
-	DeleteCriticalSection( &pfg->m_csMediaEvents );
-	CloseHandle( pfg->m_hMediaEvent );
-}
-
-/***************************************************************************
- *
- *	CLSID_FilterGraph::IMediaEventSink
- *
- */
-
-static HRESULT WINAPI
-IMediaEventSink_fnQueryInterface(IMediaEventSink* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,mediaeventsink);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IMediaEventSink_fnAddRef(IMediaEventSink* iface)
-{
-	CFilterGraph_THIS(iface,mediaeventsink);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IMediaEventSink_fnRelease(IMediaEventSink* iface)
-{
-	CFilterGraph_THIS(iface,mediaeventsink);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IMediaEventSink_fnNotify(IMediaEventSink* iface,long lEventCode,LONG_PTR lParam1,LONG_PTR lParam2)
-{
-	CFilterGraph_THIS(iface,mediaeventsink);
-	HRESULT hr = NOERROR;
-	ULONG cQueued;
-	ULONG cTemp;
-	FilterGraph_MEDIAEVENT*	pEvent;
-
-	TRACE("(%p)->(%08lx,%08x,%08x) stub!\n",This,lEventCode,lParam1,lParam2);
-
-	EnterCriticalSection( &This->m_csMediaEvents );
-
-	/* allocate a new entry. */
-	if ( This->m_cbMediaEventsMax == 0 )
-		cQueued = 0;
-	else
-		cQueued =
-			(This->m_cbMediaEventsMax +
-			 This->m_cbMediaEventsPut - This->m_cbMediaEventsGet) %
-				This->m_cbMediaEventsMax;
-
-	if ( (cQueued + 1) >= This->m_cbMediaEventsMax )
-	{
-		if ( This->m_cbMediaEventsMax >= EVENTQUEUE_MAX )
-		{
-			hr = E_FAIL;
-			goto end;
-		}
-		pEvent = (FilterGraph_MEDIAEVENT*)
-			QUARTZ_AllocMem( sizeof(FilterGraph_MEDIAEVENT) *
-				(This->m_cbMediaEventsMax+EVENTQUEUE_BLOCKSIZE) );
-		if ( pEvent == NULL )
-		{
-			hr = E_OUTOFMEMORY;
-			goto end;
-		}
-		if ( cQueued > 0 )
-		{
-			if ( (This->m_cbMediaEventsGet + cQueued) >=
-				This->m_cbMediaEventsMax )
-			{
-				cTemp = This->m_cbMediaEventsMax - This->m_cbMediaEventsGet;
-				memcpy(
-					pEvent,
-					&This->m_pMediaEvents[This->m_cbMediaEventsGet],
-					sizeof(FilterGraph_MEDIAEVENT) * cTemp );
-				memcpy(
-					pEvent + cTemp,
-					&This->m_pMediaEvents[0],
-					sizeof(FilterGraph_MEDIAEVENT) * (cQueued - cTemp) );
-			}
-			else
-			{
-				memcpy(
-					pEvent,
-					&This->m_pMediaEvents[This->m_cbMediaEventsGet],
-					sizeof(FilterGraph_MEDIAEVENT) * cQueued );
-			}
-			QUARTZ_FreeMem( This->m_pMediaEvents );
-		}
-		This->m_pMediaEvents = pEvent;
-		This->m_cbMediaEventsMax += EVENTQUEUE_BLOCKSIZE;
-		This->m_cbMediaEventsPut = cQueued;
-		This->m_cbMediaEventsGet = 0;
-	}
-
-	/* duplicate params if necessary. */
-	hr = FGEVENT_KeepEvent( TRUE, lEventCode, lParam1, lParam2 );
-	if ( FAILED(hr) )
-		goto end;
-
-	/* add to the queue. */
-	pEvent = &This->m_pMediaEvents[This->m_cbMediaEventsPut];
-	pEvent->lEventCode = lEventCode;
-	pEvent->lParam1 = lParam1;
-	pEvent->lParam2 = lParam2;
-	This->m_cbMediaEventsPut =
-		(This->m_cbMediaEventsPut + 1) % This->m_cbMediaEventsMax;
-
-	SetEvent( This->m_hMediaEvent );
-	if ( This->m_hwndEventNotify != (HWND)NULL &&
-		 This->m_lEventNotifyFlags == 0 )
-	{
-		PostMessageA(
-			This->m_hwndEventNotify,
-			This->m_lEventNotifyMsg,
-			(WPARAM)0,
-			(LPARAM)This->m_lEventNotifyParam );
-	}
-
-	hr = NOERROR;
-end:
-	LeaveCriticalSection( &This->m_csMediaEvents );
-
-	return hr;
-}
-
-
-static ICOM_VTABLE(IMediaEventSink) imediaeventsink =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMediaEventSink_fnQueryInterface,
-	IMediaEventSink_fnAddRef,
-	IMediaEventSink_fnRelease,
-	/* IMediaEventSink fields */
-	IMediaEventSink_fnNotify,
-};
-
-
-
-HRESULT CFilterGraph_InitIMediaEventSink( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-	ICOM_VTBL(&pfg->mediaeventsink) = &imediaeventsink;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIMediaEventSink( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-}
-
diff --git a/dlls/quartz/fgpass.c b/dlls/quartz/fgpass.c
deleted file mode 100644
index ce53c31..0000000
--- a/dlls/quartz/fgpass.c
+++ /dev/null
@@ -1,1487 +0,0 @@
-/*
- * Implementation of IBasicAudio, IBasicVideo, IVideoWindow for FilterGraph.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "fgraph.h"
-
-
-static HRESULT CFilterGraph_QIFilters(
-	CFilterGraph* This, REFIID riid, void** ppvobj )
-{
-	HRESULT hr = E_NOINTERFACE;
-	DWORD	n;
-
-	TRACE( "(%p,%p,%p)\n",This,riid,ppvobj);
-
-	EnterCriticalSection ( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( IUnknown_QueryInterface(This->m_pActiveFilters[n].pFilter,riid,ppvobj) == S_OK )
-		{
-			hr = S_OK;
-			break;
-		}
-	}
-
-	LeaveCriticalSection ( &This->m_csFilters );
-
-	return hr;
-}
-
-
-static HRESULT CFilterGraph_QueryBasicAudio(
-	CFilterGraph* This, IBasicAudio** ppAudio )
-{
-	return CFilterGraph_QIFilters(This,&IID_IBasicAudio,(void**)ppAudio);
-}
-
-static HRESULT CFilterGraph_QueryBasicVideo(
-	CFilterGraph* This, IBasicVideo** ppVideo )
-{
-	return CFilterGraph_QIFilters(This,&IID_IBasicVideo,(void**)ppVideo);
-}
-
-static HRESULT CFilterGraph_QueryVideoWindow(
-	CFilterGraph* This, IVideoWindow** ppVidWin )
-{
-	return CFilterGraph_QIFilters(This,&IID_IVideoWindow,(void**)ppVidWin);
-}
-
-
-
-/***************************************************************************
- *
- *	CFilterGraph::IBasicAudio
- *
- */
-
-#define QUERYBASICAUDIO	\
-	IBasicAudio* pAudio = NULL; \
-	HRESULT hr; \
-	hr = CFilterGraph_QueryBasicAudio( This, &pAudio ); \
-	if ( FAILED(hr) ) return hr;
-
-
-static HRESULT WINAPI
-IBasicAudio_fnQueryInterface(IBasicAudio* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,basaud);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IBasicAudio_fnAddRef(IBasicAudio* iface)
-{
-	CFilterGraph_THIS(iface,basaud);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IBasicAudio_fnRelease(IBasicAudio* iface)
-{
-	CFilterGraph_THIS(iface,basaud);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnGetTypeInfoCount(IBasicAudio* iface,UINT* pcTypeInfo)
-{
-	CFilterGraph_THIS(iface,basaud);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnGetTypeInfo(IBasicAudio* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
-{
-	CFilterGraph_THIS(iface,basaud);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnGetIDsOfNames(IBasicAudio* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
-{
-	CFilterGraph_THIS(iface,basaud);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnInvoke(IBasicAudio* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
-{
-	CFilterGraph_THIS(iface,basaud);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-static HRESULT WINAPI
-IBasicAudio_fnput_Volume(IBasicAudio* iface,long lVol)
-{
-	CFilterGraph_THIS(iface,basaud);
-	QUERYBASICAUDIO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicAudio_put_Volume(pAudio,lVol);
-	IBasicAudio_Release(pAudio);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnget_Volume(IBasicAudio* iface,long* plVol)
-{
-	CFilterGraph_THIS(iface,basaud);
-	QUERYBASICAUDIO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicAudio_get_Volume(pAudio,plVol);
-	IBasicAudio_Release(pAudio);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnput_Balance(IBasicAudio* iface,long lBalance)
-{
-	CFilterGraph_THIS(iface,basaud);
-	QUERYBASICAUDIO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicAudio_put_Balance(pAudio,lBalance);
-	IBasicAudio_Release(pAudio);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicAudio_fnget_Balance(IBasicAudio* iface,long* plBalance)
-{
-	CFilterGraph_THIS(iface,basaud);
-	QUERYBASICAUDIO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicAudio_get_Balance(pAudio,plBalance);
-	IBasicAudio_Release(pAudio);
-	return hr;
-}
-
-
-static ICOM_VTABLE(IBasicAudio) ibasicaudio =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IBasicAudio_fnQueryInterface,
-	IBasicAudio_fnAddRef,
-	IBasicAudio_fnRelease,
-	/* IDispatch fields */
-	IBasicAudio_fnGetTypeInfoCount,
-	IBasicAudio_fnGetTypeInfo,
-	IBasicAudio_fnGetIDsOfNames,
-	IBasicAudio_fnInvoke,
-	/* IBasicAudio fields */
-	IBasicAudio_fnput_Volume,
-	IBasicAudio_fnget_Volume,
-	IBasicAudio_fnput_Balance,
-	IBasicAudio_fnget_Balance,
-};
-
-
-HRESULT CFilterGraph_InitIBasicAudio( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-	ICOM_VTBL(&pfg->basaud) = &ibasicaudio;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIBasicAudio( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-}
-
-#undef QUERYBASICAUDIO
-
-
-/***************************************************************************
- *
- *	CFilterGraph::IBasicVideo
- *
- */
-
-
-#define QUERYBASICVIDEO	\
-	IBasicVideo* pVideo = NULL; \
-	HRESULT hr; \
-	hr = CFilterGraph_QueryBasicVideo( This, &pVideo ); \
-	if ( FAILED(hr) ) return hr;
-
-
-static HRESULT WINAPI
-IBasicVideo_fnQueryInterface(IBasicVideo* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,basvid);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IBasicVideo_fnAddRef(IBasicVideo* iface)
-{
-	CFilterGraph_THIS(iface,basvid);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IBasicVideo_fnRelease(IBasicVideo* iface)
-{
-	CFilterGraph_THIS(iface,basvid);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetTypeInfoCount(IBasicVideo* iface,UINT* pcTypeInfo)
-{
-	CFilterGraph_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetTypeInfo(IBasicVideo* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
-{
-	CFilterGraph_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetIDsOfNames(IBasicVideo* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
-{
-	CFilterGraph_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnInvoke(IBasicVideo* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
-{
-	CFilterGraph_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-static HRESULT WINAPI
-IBasicVideo_fnget_AvgTimePerFrame(IBasicVideo* iface,REFTIME* prefTime)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_AvgTimePerFrame(pVideo,prefTime);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_BitRate(IBasicVideo* iface,long* plRate)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_BitRate(pVideo,plRate);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_BitErrorRate(IBasicVideo* iface,long* plRate)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_BitErrorRate(pVideo,plRate);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_VideoWidth(IBasicVideo* iface,long* plWidth)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_VideoWidth(pVideo,plWidth);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_VideoHeight(IBasicVideo* iface,long* plHeight)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_VideoHeight(pVideo,plHeight);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_SourceLeft(IBasicVideo* iface,long lLeft)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_put_SourceLeft(pVideo,lLeft);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_SourceLeft(IBasicVideo* iface,long* plLeft)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_SourceLeft(pVideo,plLeft);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_SourceWidth(IBasicVideo* iface,long lWidth)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_put_SourceWidth(pVideo,lWidth);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_SourceWidth(IBasicVideo* iface,long* plWidth)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_SourceWidth(pVideo,plWidth);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_SourceTop(IBasicVideo* iface,long lTop)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_put_SourceTop(pVideo,lTop);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_SourceTop(IBasicVideo* iface,long* plTop)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_SourceTop(pVideo,plTop);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_SourceHeight(IBasicVideo* iface,long lHeight)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_put_SourceHeight(pVideo,lHeight);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_SourceHeight(IBasicVideo* iface,long* plHeight)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_SourceHeight(pVideo,plHeight);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_DestinationLeft(IBasicVideo* iface,long lLeft)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_put_DestinationLeft(pVideo,lLeft);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_DestinationLeft(IBasicVideo* iface,long* plLeft)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_DestinationLeft(pVideo,plLeft);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_DestinationWidth(IBasicVideo* iface,long lWidth)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_put_DestinationWidth(pVideo,lWidth);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_DestinationWidth(IBasicVideo* iface,long* plWidth)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_DestinationWidth(pVideo,plWidth);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_DestinationTop(IBasicVideo* iface,long lTop)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_put_DestinationTop(pVideo,lTop);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_DestinationTop(IBasicVideo* iface,long* plTop)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_DestinationTop(pVideo,plTop);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_DestinationHeight(IBasicVideo* iface,long lHeight)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_put_DestinationHeight(pVideo,lHeight);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_DestinationHeight(IBasicVideo* iface,long* plHeight)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_get_DestinationHeight(pVideo,plHeight);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnSetSourcePosition(IBasicVideo* iface,long lLeft,long lTop,long lWidth,long lHeight)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_SetSourcePosition(pVideo,lLeft,lTop,lWidth,lHeight);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetSourcePosition(IBasicVideo* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_GetSourcePosition(pVideo,plLeft,plTop,plWidth,plHeight);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnSetDefaultSourcePosition(IBasicVideo* iface)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_SetDefaultSourcePosition(pVideo);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnSetDestinationPosition(IBasicVideo* iface,long lLeft,long lTop,long lWidth,long lHeight)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_SetDestinationPosition(pVideo,lLeft,lTop,lWidth,lHeight);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetDestinationPosition(IBasicVideo* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_GetDestinationPosition(pVideo,plLeft,plTop,plWidth,plHeight);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnSetDefaultDestinationPosition(IBasicVideo* iface)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_SetDefaultDestinationPosition(pVideo);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetVideoSize(IBasicVideo* iface,long* plWidth,long* plHeight)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_GetVideoSize(pVideo,plWidth,plHeight);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetVideoPaletteEntries(IBasicVideo* iface,long lStart,long lCount,long* plRet,long* plPaletteEntry)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_GetVideoPaletteEntries(pVideo,lStart,lCount,plRet,plPaletteEntry);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetCurrentImage(IBasicVideo* iface,long* plBufferSize,long* plDIBBuffer)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_GetCurrentImage(pVideo,plBufferSize,plDIBBuffer);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnIsUsingDefaultSource(IBasicVideo* iface)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_IsUsingDefaultSource(pVideo);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnIsUsingDefaultDestination(IBasicVideo* iface)
-{
-	CFilterGraph_THIS(iface,basvid);
-	QUERYBASICVIDEO
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IBasicVideo_IsUsingDefaultDestination(pVideo);
-	IBasicVideo_Release(pVideo);
-	return hr;
-}
-
-
-
-static ICOM_VTABLE(IBasicVideo) ibasicvideo =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IBasicVideo_fnQueryInterface,
-	IBasicVideo_fnAddRef,
-	IBasicVideo_fnRelease,
-	/* IDispatch fields */
-	IBasicVideo_fnGetTypeInfoCount,
-	IBasicVideo_fnGetTypeInfo,
-	IBasicVideo_fnGetIDsOfNames,
-	IBasicVideo_fnInvoke,
-	/* IBasicVideo fields */
-	IBasicVideo_fnget_AvgTimePerFrame,
-	IBasicVideo_fnget_BitRate,
-	IBasicVideo_fnget_BitErrorRate,
-	IBasicVideo_fnget_VideoWidth,
-	IBasicVideo_fnget_VideoHeight,
-	IBasicVideo_fnput_SourceLeft,
-	IBasicVideo_fnget_SourceLeft,
-	IBasicVideo_fnput_SourceWidth,
-	IBasicVideo_fnget_SourceWidth,
-	IBasicVideo_fnput_SourceTop,
-	IBasicVideo_fnget_SourceTop,
-	IBasicVideo_fnput_SourceHeight,
-	IBasicVideo_fnget_SourceHeight,
-	IBasicVideo_fnput_DestinationLeft,
-	IBasicVideo_fnget_DestinationLeft,
-	IBasicVideo_fnput_DestinationWidth,
-	IBasicVideo_fnget_DestinationWidth,
-	IBasicVideo_fnput_DestinationTop,
-	IBasicVideo_fnget_DestinationTop,
-	IBasicVideo_fnput_DestinationHeight,
-	IBasicVideo_fnget_DestinationHeight,
-	IBasicVideo_fnSetSourcePosition,
-	IBasicVideo_fnGetSourcePosition,
-	IBasicVideo_fnSetDefaultSourcePosition,
-	IBasicVideo_fnSetDestinationPosition,
-	IBasicVideo_fnGetDestinationPosition,
-	IBasicVideo_fnSetDefaultDestinationPosition,
-	IBasicVideo_fnGetVideoSize,
-	IBasicVideo_fnGetVideoPaletteEntries,
-	IBasicVideo_fnGetCurrentImage,
-	IBasicVideo_fnIsUsingDefaultSource,
-	IBasicVideo_fnIsUsingDefaultDestination,
-};
-
-
-HRESULT CFilterGraph_InitIBasicVideo( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-	ICOM_VTBL(&pfg->basvid) = &ibasicvideo;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIBasicVideo( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-}
-
-#undef QUERYBASICVIDEO
-
-/***************************************************************************
- *
- *	CFilterGraph::IVideoWindow
- *
- */
-
-#define QUERYVIDEOWINDOW \
-	IVideoWindow* pVidWin = NULL; \
-	HRESULT hr; \
-	hr = CFilterGraph_QueryVideoWindow( This, &pVidWin ); \
-	if ( FAILED(hr) ) return hr;
-
-
-static HRESULT WINAPI
-IVideoWindow_fnQueryInterface(IVideoWindow* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,vidwin);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IVideoWindow_fnAddRef(IVideoWindow* iface)
-{
-	CFilterGraph_THIS(iface,vidwin);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IVideoWindow_fnRelease(IVideoWindow* iface)
-{
-	CFilterGraph_THIS(iface,vidwin);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetTypeInfoCount(IVideoWindow* iface,UINT* pcTypeInfo)
-{
-	CFilterGraph_THIS(iface,vidwin);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetTypeInfo(IVideoWindow* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
-{
-	CFilterGraph_THIS(iface,vidwin);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetIDsOfNames(IVideoWindow* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
-{
-	CFilterGraph_THIS(iface,vidwin);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnInvoke(IVideoWindow* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
-{
-	CFilterGraph_THIS(iface,vidwin);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Caption(IVideoWindow* iface,BSTR strCaption)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_Caption(pVidWin,strCaption);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Caption(IVideoWindow* iface,BSTR* pstrCaption)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_Caption(pVidWin,pstrCaption);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_WindowStyle(IVideoWindow* iface,long lStyle)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_WindowStyle(pVidWin,lStyle);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_WindowStyle(IVideoWindow* iface,long* plStyle)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_WindowStyle(pVidWin,plStyle);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_WindowStyleEx(IVideoWindow* iface,long lExStyle)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_WindowStyleEx(pVidWin,lExStyle);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_WindowStyleEx(IVideoWindow* iface,long* plExStyle)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_WindowStyleEx(pVidWin,plExStyle);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_AutoShow(IVideoWindow* iface,long lAutoShow)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_AutoShow(pVidWin,lAutoShow);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_AutoShow(IVideoWindow* iface,long* plAutoShow)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_AutoShow(pVidWin,plAutoShow);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_WindowState(IVideoWindow* iface,long lState)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_WindowState(pVidWin,lState);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_WindowState(IVideoWindow* iface,long* plState)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_WindowState(pVidWin,plState);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_BackgroundPalette(IVideoWindow* iface,long lBackPal)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_BackgroundPalette(pVidWin,lBackPal);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_BackgroundPalette(IVideoWindow* iface,long* plBackPal)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_BackgroundPalette(pVidWin,plBackPal);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Visible(IVideoWindow* iface,long lVisible)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_Visible(pVidWin,lVisible);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Visible(IVideoWindow* iface,long* plVisible)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_Visible(pVidWin,plVisible);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Left(IVideoWindow* iface,long lLeft)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_Left(pVidWin,lLeft);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Left(IVideoWindow* iface,long* plLeft)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_Left(pVidWin,plLeft);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Width(IVideoWindow* iface,long lWidth)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_Width(pVidWin,lWidth);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Width(IVideoWindow* iface,long* plWidth)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr =IVideoWindow_get_Width(pVidWin,plWidth);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Top(IVideoWindow* iface,long lTop)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_Top(pVidWin,lTop);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Top(IVideoWindow* iface,long* plTop)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_Top(pVidWin,plTop);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Height(IVideoWindow* iface,long lHeight)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_Height(pVidWin,lHeight);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Height(IVideoWindow* iface,long* plHeight)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_Height(pVidWin,plHeight);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Owner(IVideoWindow* iface,OAHWND hwnd)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_Owner(pVidWin,hwnd);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Owner(IVideoWindow* iface,OAHWND* phwnd)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_Owner(pVidWin,phwnd);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_MessageDrain(IVideoWindow* iface,OAHWND hwnd)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_MessageDrain(pVidWin,hwnd);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_MessageDrain(IVideoWindow* iface,OAHWND* phwnd)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_MessageDrain(pVidWin,phwnd);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_BorderColor(IVideoWindow* iface,long* plColor)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_BorderColor(pVidWin,plColor);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_BorderColor(IVideoWindow* iface,long lColor)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_BorderColor(pVidWin,lColor);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_FullScreenMode(IVideoWindow* iface,long* plMode)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_get_FullScreenMode(pVidWin,plMode);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_FullScreenMode(IVideoWindow* iface,long lMode)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_put_FullScreenMode(pVidWin,lMode);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnSetWindowForeground(IVideoWindow* iface,long lFocus)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_SetWindowForeground(pVidWin,lFocus);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnNotifyOwnerMessage(IVideoWindow* iface,OAHWND hwnd,long message,LONG_PTR wParam,LONG_PTR lParam)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_NotifyOwnerMessage(pVidWin,hwnd,message,wParam,lParam);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnSetWindowPosition(IVideoWindow* iface,long lLeft,long lTop,long lWidth,long lHeight)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_SetWindowPosition(pVidWin,lLeft,lTop,lWidth,lHeight);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetWindowPosition(IVideoWindow* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_GetWindowPosition(pVidWin,plLeft,plTop,plWidth,plHeight);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetMinIdealImageSize(IVideoWindow* iface,long* plWidth,long* plHeight)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_GetMinIdealImageSize(pVidWin,plWidth,plHeight);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetMaxIdealImageSize(IVideoWindow* iface,long* plWidth,long* plHeight)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_GetMaxIdealImageSize(pVidWin,plWidth,plHeight);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetRestorePosition(IVideoWindow* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_GetRestorePosition(pVidWin,plLeft,plTop,plWidth,plHeight);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnHideCursor(IVideoWindow* iface,long lHide)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_HideCursor(pVidWin,lHide);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnIsCursorHidden(IVideoWindow* iface,long* plHide)
-{
-	CFilterGraph_THIS(iface,vidwin);
-	QUERYVIDEOWINDOW
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IVideoWindow_IsCursorHidden(pVidWin,plHide);
-	IVideoWindow_Release(pVidWin);
-	return hr;
-}
-
-
-
-
-static ICOM_VTABLE(IVideoWindow) ivideowindow =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IVideoWindow_fnQueryInterface,
-	IVideoWindow_fnAddRef,
-	IVideoWindow_fnRelease,
-	/* IDispatch fields */
-	IVideoWindow_fnGetTypeInfoCount,
-	IVideoWindow_fnGetTypeInfo,
-	IVideoWindow_fnGetIDsOfNames,
-	IVideoWindow_fnInvoke,
-	/* IVideoWindow fields */
-	IVideoWindow_fnput_Caption,
-	IVideoWindow_fnget_Caption,
-	IVideoWindow_fnput_WindowStyle,
-	IVideoWindow_fnget_WindowStyle,
-	IVideoWindow_fnput_WindowStyleEx,
-	IVideoWindow_fnget_WindowStyleEx,
-	IVideoWindow_fnput_AutoShow,
-	IVideoWindow_fnget_AutoShow,
-	IVideoWindow_fnput_WindowState,
-	IVideoWindow_fnget_WindowState,
-	IVideoWindow_fnput_BackgroundPalette,
-	IVideoWindow_fnget_BackgroundPalette,
-	IVideoWindow_fnput_Visible,
-	IVideoWindow_fnget_Visible,
-	IVideoWindow_fnput_Left,
-	IVideoWindow_fnget_Left,
-	IVideoWindow_fnput_Width,
-	IVideoWindow_fnget_Width,
-	IVideoWindow_fnput_Top,
-	IVideoWindow_fnget_Top,
-	IVideoWindow_fnput_Height,
-	IVideoWindow_fnget_Height,
-	IVideoWindow_fnput_Owner,
-	IVideoWindow_fnget_Owner,
-	IVideoWindow_fnput_MessageDrain,
-	IVideoWindow_fnget_MessageDrain,
-	IVideoWindow_fnget_BorderColor,
-	IVideoWindow_fnput_BorderColor,
-	IVideoWindow_fnget_FullScreenMode,
-	IVideoWindow_fnput_FullScreenMode,
-	IVideoWindow_fnSetWindowForeground,
-	IVideoWindow_fnNotifyOwnerMessage,
-	IVideoWindow_fnSetWindowPosition,
-	IVideoWindow_fnGetWindowPosition,
-	IVideoWindow_fnGetMinIdealImageSize,
-	IVideoWindow_fnGetMaxIdealImageSize,
-	IVideoWindow_fnGetRestorePosition,
-	IVideoWindow_fnHideCursor,
-	IVideoWindow_fnIsCursorHidden,
-
-};
-
-
-HRESULT CFilterGraph_InitIVideoWindow( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-	ICOM_VTBL(&pfg->vidwin) = &ivideowindow;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIVideoWindow( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-}
-
-#undef QUERYVIDEOWINDOW
diff --git a/dlls/quartz/fgraph.c b/dlls/quartz/fgraph.c
deleted file mode 100644
index 2f13661..0000000
--- a/dlls/quartz/fgraph.c
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * Implementation of CLSID_FilterGraph.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "fgraph.h"
-
-/***************************************************************************
- *
- *	new/delete for CFilterGraph
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry IFEntries[] =
-{
-  { &IID_IPersist, offsetof(CFilterGraph,persist)-offsetof(CFilterGraph,unk) },
-  { &IID_IDispatch, offsetof(CFilterGraph,disp)-offsetof(CFilterGraph,unk) },
-  { &IID_IFilterGraph, offsetof(CFilterGraph,fgraph)-offsetof(CFilterGraph,unk) },
-  { &IID_IGraphBuilder, offsetof(CFilterGraph,fgraph)-offsetof(CFilterGraph,unk) },
-  { &IID_IFilterGraph2, offsetof(CFilterGraph,fgraph)-offsetof(CFilterGraph,unk) },
-  { &IID_IGraphVersion, offsetof(CFilterGraph,graphversion)-offsetof(CFilterGraph,unk) },
-  { &IID_IMediaControl, offsetof(CFilterGraph,mediacontrol)-offsetof(CFilterGraph,unk) },
-  { &IID_IMediaFilter, offsetof(CFilterGraph,mediafilter)-offsetof(CFilterGraph,unk) },
-  { &IID_IMediaEvent, offsetof(CFilterGraph,mediaevent)-offsetof(CFilterGraph,unk) },
-  { &IID_IMediaEventEx, offsetof(CFilterGraph,mediaevent)-offsetof(CFilterGraph,unk) },
-  { &IID_IMediaEventSink, offsetof(CFilterGraph,mediaeventsink)-offsetof(CFilterGraph,unk) },
-  { &IID_IMediaPosition, offsetof(CFilterGraph,mediaposition)-offsetof(CFilterGraph,unk) },
-  { &IID_IMediaSeeking, offsetof(CFilterGraph,mediaseeking)-offsetof(CFilterGraph,unk) },
-  { &IID_IBasicVideo, offsetof(CFilterGraph,basvid)-offsetof(CFilterGraph,unk) },
-  { &IID_IBasicAudio, offsetof(CFilterGraph,basaud)-offsetof(CFilterGraph,unk) },
-  { &IID_IVideoWindow, offsetof(CFilterGraph,vidwin)-offsetof(CFilterGraph,unk) },
-};
-
-
-struct FGInitEntry
-{
-	HRESULT (*pInit)(CFilterGraph*);
-	void (*pUninit)(CFilterGraph*);
-};
-
-static const struct FGInitEntry FGRAPH_Init[] =
-{
-	#define	FGENT(a)	{&CFilterGraph_Init##a,&CFilterGraph_Uninit##a},
-
-	FGENT(IPersist)
-	FGENT(IDispatch)
-	FGENT(IFilterGraph2)
-	FGENT(IGraphVersion)
-	FGENT(IMediaControl)
-	FGENT(IMediaFilter)
-	FGENT(IMediaEventEx)
-	FGENT(IMediaEventSink)
-	FGENT(IMediaPosition)
-	FGENT(IMediaSeeking)
-	FGENT(IBasicVideo)
-	FGENT(IBasicAudio)
-	FGENT(IVideoWindow)
-
-	#undef	FGENT
-	{ NULL, NULL },
-};
-
-
-static void QUARTZ_DestroyFilterGraph(IUnknown* punk)
-{
-	CFilterGraph_THIS(punk,unk);
-	int	i;
-
-	TRACE( "(%p)\n", punk );
-
-	/* At first, call Stop. */
-	IMediaControl_Stop( CFilterGraph_IMediaControl(This) );
-	IMediaFilter_Stop( CFilterGraph_IMediaFilter(This) );
-
-	i = 0;
-	while ( FGRAPH_Init[i].pInit != NULL )
-	{
-		FGRAPH_Init[i].pUninit( This );
-		i++;
-	}
-
-	TRACE( "succeeded.\n" );
-}
-
-HRESULT QUARTZ_CreateFilterGraph(IUnknown* punkOuter,void** ppobj)
-{
-	CFilterGraph*	pfg;
-	HRESULT	hr;
-	int	i;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	pfg = (CFilterGraph*)QUARTZ_AllocObj( sizeof(CFilterGraph) );
-	if ( pfg == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &pfg->unk, punkOuter );
-
-	i = 0;
-	hr = NOERROR;
-	while ( FGRAPH_Init[i].pInit != NULL )
-	{
-		hr = FGRAPH_Init[i].pInit( pfg );
-		if ( FAILED(hr) )
-			break;
-		i++;
-	}
-
-	if ( FAILED(hr) )
-	{
-		while ( --i >= 0 )
-			FGRAPH_Init[i].pUninit( pfg );
-		QUARTZ_FreeObj( pfg );
-		return hr;
-	}
-
-	pfg->unk.pEntries = IFEntries;
-	pfg->unk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]);
-	pfg->unk.pOnFinalRelease = QUARTZ_DestroyFilterGraph;
-
-	*ppobj = (void*)(&pfg->unk);
-
-	return S_OK;
-}
-
-
-/***************************************************************************
- *
- *	CFilterGraph::IPersist
- *
- */
-
-static HRESULT WINAPI
-IPersist_fnQueryInterface(IPersist* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,persist);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IPersist_fnAddRef(IPersist* iface)
-{
-	CFilterGraph_THIS(iface,persist);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IPersist_fnRelease(IPersist* iface)
-{
-	CFilterGraph_THIS(iface,persist);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-
-static HRESULT WINAPI
-IPersist_fnGetClassID(IPersist* iface,CLSID* pclsid)
-{
-	CFilterGraph_THIS(iface,persist);
-
-	TRACE("(%p)->()\n",This);
-
-	if ( pclsid == NULL )
-		return E_POINTER;
-	memcpy( pclsid, &CLSID_FilterGraph, sizeof(CLSID) );
-
-	return E_NOTIMPL;
-}
-
-
-static ICOM_VTABLE(IPersist) ipersist =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IPersist_fnQueryInterface,
-	IPersist_fnAddRef,
-	IPersist_fnRelease,
-	/* IPersist fields */
-	IPersist_fnGetClassID,
-};
-
-HRESULT CFilterGraph_InitIPersist( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-	ICOM_VTBL(&pfg->persist) = &ipersist;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIPersist( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-}
-
-/***************************************************************************
- *
- *	CFilterGraph::IDispatch
- *
- */
-
-static HRESULT WINAPI
-IDispatch_fnQueryInterface(IDispatch* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,disp);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IDispatch_fnAddRef(IDispatch* iface)
-{
-	CFilterGraph_THIS(iface,disp);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IDispatch_fnRelease(IDispatch* iface)
-{
-	CFilterGraph_THIS(iface,disp);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IDispatch_fnGetTypeInfoCount(IDispatch* iface,UINT* pcTypeInfo)
-{
-	CFilterGraph_THIS(iface,disp);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IDispatch_fnGetTypeInfo(IDispatch* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
-{
-	CFilterGraph_THIS(iface,disp);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IDispatch_fnGetIDsOfNames(IDispatch* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
-{
-	CFilterGraph_THIS(iface,disp);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IDispatch_fnInvoke(IDispatch* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
-{
-	CFilterGraph_THIS(iface,disp);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-
-static ICOM_VTABLE(IDispatch) idispatch =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IDispatch_fnQueryInterface,
-	IDispatch_fnAddRef,
-	IDispatch_fnRelease,
-	/* IDispatch fields */
-	IDispatch_fnGetTypeInfoCount,
-	IDispatch_fnGetTypeInfo,
-	IDispatch_fnGetIDsOfNames,
-	IDispatch_fnInvoke,
-};
-
-
-HRESULT CFilterGraph_InitIDispatch( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-	ICOM_VTBL(&pfg->disp) = &idispatch;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIDispatch( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-}
-
-
-
diff --git a/dlls/quartz/fgraph.h b/dlls/quartz/fgraph.h
deleted file mode 100644
index aaba520..0000000
--- a/dlls/quartz/fgraph.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_FGRAPH_H
-#define	WINE_DSHOW_FGRAPH_H
-
-/*
-		implements CLSID_FilterGraph.
-
-	- At least, the following interfaces should be implemented:
-
-	IUnknown
-		+ IPersist
-		+ IDispatch
-		+ IFilterGraph - IGraphBuilder - IFilterGraph2
-		+ IGraphVersion
-		+ IGraphConfig
-		+ IDispatch - IMediaControl
-		+ IPersist - IMediaFilter
-		+ IDispatch - IMediaEvent - IMediaEventEx
-		+ IMediaEventSink
-		+ IDispatch - IMediaPosition
-		+ IMediaSeeking
-		+ IDispatch - IBasicVideo (pass to a renderer)
-		+ IDispatch - IBasicAudio (pass to a renderer)
-		+ IDispatch - IVideoWindow  (pass to a renderer)
-	(following interfaces are not implemented)
-		+ IMarshal
-		+ IFilterMapper2
-		FIXME - Are there any missing interfaces???
- */
-
-#include "iunk.h"
-#include "complist.h"
-
-
-typedef struct FG_IPersistImpl
-{
-	ICOM_VFIELD(IPersist);
-} FG_IPersistImpl;
-
-typedef struct FG_IDispatchImpl
-{
-	ICOM_VFIELD(IDispatch);
-} FG_IDispatchImpl;
-
-typedef struct FG_IFilterGraph2Impl
-{
-	ICOM_VFIELD(IFilterGraph2);
-} FG_IFilterGraph2Impl;
-
-typedef struct FG_IGraphVersionImpl
-{
-	ICOM_VFIELD(IGraphVersion);
-} FG_IGraphVersionImpl;
-
-typedef struct FG_IMediaControlImpl
-{
-	ICOM_VFIELD(IMediaControl);
-} FG_IMediaControlImpl;
-
-typedef struct FG_IMediaFilterImpl
-{
-	ICOM_VFIELD(IMediaFilter);
-} FG_IMediaFilterImpl;
-
-typedef struct FG_IMediaEventImpl
-{
-	ICOM_VFIELD(IMediaEventEx);
-} FG_IMediaEventImpl;
-
-typedef struct FG_IMediaEventSinkImpl
-{
-	ICOM_VFIELD(IMediaEventSink);
-} FG_IMediaEventSinkImpl;
-
-typedef struct FG_IMediaPositionImpl
-{
-	ICOM_VFIELD(IMediaPosition);
-} FG_IMediaPositionImpl;
-
-typedef struct FG_IMediaSeekingImpl
-{
-	ICOM_VFIELD(IMediaSeeking);
-} FG_IMediaSeekingImpl;
-
-typedef struct FG_IBasicVideoImpl
-{
-	ICOM_VFIELD(IBasicVideo);
-} FG_IBasicVideoImpl;
-
-typedef struct FG_IBasicAudioImpl
-{
-	ICOM_VFIELD(IBasicAudio);
-} FG_IBasicAudioImpl;
-
-typedef struct FG_IVideoWindowImpl
-{
-	ICOM_VFIELD(IVideoWindow);
-} FG_IVideoWindowImpl;
-
-
-typedef struct FG_FilterData
-{
-	IBaseFilter*	pFilter;
-	IMediaPosition*	pPosition;
-	IMediaSeeking*	pSeeking;
-	WCHAR*	pwszName;
-	DWORD	cbName;
-} FG_FilterData;
-
-typedef struct FilterGraph_MEDIAEVENT	FilterGraph_MEDIAEVENT;
-
-typedef struct CFilterGraph
-{
-	QUARTZ_IUnkImpl	unk;
-	FG_IPersistImpl	persist;
-	FG_IDispatchImpl	disp;
-	FG_IFilterGraph2Impl	fgraph;
-	FG_IGraphVersionImpl	graphversion;
-	FG_IMediaControlImpl	mediacontrol;
-	FG_IMediaFilterImpl	mediafilter;
-	FG_IMediaEventImpl	mediaevent;
-	FG_IMediaEventSinkImpl	mediaeventsink;
-	FG_IMediaPositionImpl	mediaposition;
-	FG_IMediaSeekingImpl	mediaseeking;
-	FG_IBasicVideoImpl	basvid;
-	FG_IBasicAudioImpl	basaud;
-	FG_IVideoWindowImpl	vidwin;
-
-	/* IDispatch fields. */
-	/* IFilterGraph2 fields. */
-	CRITICAL_SECTION	m_csFilters;
-	DWORD	m_cActiveFilters;
-	FG_FilterData*		m_pActiveFilters;
-	/* IGraphVersion fields. */
-	LONG	m_lGraphVersion;
-	/* IMediaControl fields. */
-	/* IMediaFilter fields. */
-	CRITICAL_SECTION	m_csGraphState;
-	FILTER_STATE	m_stateGraph; /* must NOT accessed directly! */
-	CRITICAL_SECTION	m_csClock;
-	IReferenceClock*	m_pClock;
-	/* IMediaEvent fields. */
-	HANDLE	m_hMediaEvent;
-	CRITICAL_SECTION	m_csMediaEvents;
-	FilterGraph_MEDIAEVENT*	m_pMediaEvents;
-	ULONG	m_cbMediaEventsPut;
-	ULONG	m_cbMediaEventsGet;
-	ULONG	m_cbMediaEventsMax;
-	HWND	m_hwndEventNotify;
-	long	m_lEventNotifyMsg;
-	LONG_PTR	m_lEventNotifyParam;
-	long	m_lEventNotifyFlags;
-	/* IMediaEventSink fields. */
-	/* IMediaPosition fields. */
-	/* IMediaSeeking fields. */
-	/* IBasicVideo fields. */
-	/* IBasicAudio fields. */
-	/* IVideoWindow fields. */
-} CFilterGraph;
-
-#define	CFilterGraph_THIS(iface,member)		CFilterGraph*	This = ((CFilterGraph*)(((char*)iface)-offsetof(CFilterGraph,member)))
-#define	CFilterGraph_IPersist(th)		((IPersist*)&((th)->persist))
-#define	CFilterGraph_IDispatch(th)		((IDispatch*)&((th)->disp))
-#define	CFilterGraph_IFilterGraph2(th)		((IFilterGraph2*)&((th)->fgraph))
-#define	CFilterGraph_IMediaControl(th)		((IMediaControl*)&((th)->mediacontrol))
-#define	CFilterGraph_IMediaFilter(th)		((IMediaFilter*)&((th)->mediafilter))
-#define	CFilterGraph_IMediaEventEx(th)		((IMediaEventEx*)&((th)->mediaevent))
-#define	CFilterGraph_IMediaEventSink(th)		((IMediaEventSink*)&((th)->mediaeventsink))
-
-HRESULT QUARTZ_CreateFilterGraph(IUnknown* punkOuter,void** ppobj);
-
-HRESULT CFilterGraph_InitIPersist( CFilterGraph* pfg );
-void CFilterGraph_UninitIPersist( CFilterGraph* pfg );
-HRESULT CFilterGraph_InitIDispatch( CFilterGraph* pfg );
-void CFilterGraph_UninitIDispatch( CFilterGraph* pfg );
-HRESULT CFilterGraph_InitIFilterGraph2( CFilterGraph* pfg );
-void CFilterGraph_UninitIFilterGraph2( CFilterGraph* pfg );
-HRESULT CFilterGraph_InitIGraphVersion( CFilterGraph* pfg );
-void CFilterGraph_UninitIGraphVersion( CFilterGraph* pfg );
-HRESULT CFilterGraph_InitIMediaControl( CFilterGraph* pfg );
-void CFilterGraph_UninitIMediaControl( CFilterGraph* pfg );
-HRESULT CFilterGraph_InitIMediaFilter( CFilterGraph* pfg );
-void CFilterGraph_UninitIMediaFilter( CFilterGraph* pfg );
-HRESULT CFilterGraph_InitIMediaEventEx( CFilterGraph* pfg );
-void CFilterGraph_UninitIMediaEventEx( CFilterGraph* pfg );
-HRESULT CFilterGraph_InitIMediaEventSink( CFilterGraph* pfg );
-void CFilterGraph_UninitIMediaEventSink( CFilterGraph* pfg );
-HRESULT CFilterGraph_InitIMediaPosition( CFilterGraph* pfg );
-void CFilterGraph_UninitIMediaPosition( CFilterGraph* pfg );
-HRESULT CFilterGraph_InitIMediaSeeking( CFilterGraph* pfg );
-void CFilterGraph_UninitIMediaSeeking( CFilterGraph* pfg );
-HRESULT CFilterGraph_InitIBasicVideo( CFilterGraph* pfg );
-void CFilterGraph_UninitIBasicVideo( CFilterGraph* pfg );
-HRESULT CFilterGraph_InitIBasicAudio( CFilterGraph* pfg );
-void CFilterGraph_UninitIBasicAudio( CFilterGraph* pfg );
-HRESULT CFilterGraph_InitIVideoWindow( CFilterGraph* pfg );
-void CFilterGraph_UninitIVideoWindow( CFilterGraph* pfg );
-
-
-#endif	/* WINE_DSHOW_FGRAPH_H */
diff --git a/dlls/quartz/filesink.c b/dlls/quartz/filesink.c
deleted file mode 100644
index 5d97239..0000000
--- a/dlls/quartz/filesink.c
+++ /dev/null
@@ -1,914 +0,0 @@
-/*
- * Implements CLSID_FileWriter.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- *	FIXME - not tested
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "mmsystem.h"
-#include "strmif.h"
-#include "control.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-#include "evcode.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "filesink.h"
-#include "seekpass.h"
-
-static const WCHAR QUARTZ_FileWriter_Name[] =
-{ 'F','i','l','e',' ','W','r','i','t','e','r',0 };
-static const WCHAR QUARTZ_FileWriterPin_Name[] =
-{ 'I','n',0 };
-
-
-/* FIXME - add this flag to strmif.h */
-#define AM_FILE_OVERWRITE	0x1
-
-/***************************************************************************
- *
- *	CFileWriterImpl methods
- *
- */
-
-static HRESULT CFileWriterImpl_OnActive( CBaseFilterImpl* pImpl )
-{
-	CFileWriterImpl_THIS(pImpl,basefilter);
-
-	FIXME( "(%p)\n", This );
-
-	return NOERROR;
-}
-
-static HRESULT CFileWriterImpl_OnInactive( CBaseFilterImpl* pImpl )
-{
-	CFileWriterImpl_THIS(pImpl,basefilter);
-
-	FIXME( "(%p)\n", This );
-
-	return NOERROR;
-}
-
-static const CBaseFilterHandlers filterhandlers =
-{
-	CFileWriterImpl_OnActive, /* pOnActive */
-	CFileWriterImpl_OnInactive, /* pOnInactive */
-	NULL, /* pOnStop */
-};
-
-
-/***************************************************************************
- *
- *	CFileWriterPinImpl methods
- *
- */
-
-static HRESULT CFileWriterPinImpl_OnPreConnect( CPinBaseImpl* pImpl, IPin* pPin )
-{
-	CFileWriterPinImpl_THIS(pImpl,pin);
-
-	TRACE("(%p,%p)\n",This,pPin);
-
-	return NOERROR;
-}
-
-static HRESULT CFileWriterPinImpl_OnPostConnect( CPinBaseImpl* pImpl, IPin* pPin )
-{
-	CFileWriterPinImpl_THIS(pImpl,pin);
-
-	TRACE("(%p,%p)\n",This,pPin);
-
-	return NOERROR;
-}
-
-static HRESULT CFileWriterPinImpl_OnDisconnect( CPinBaseImpl* pImpl )
-{
-	CFileWriterPinImpl_THIS(pImpl,pin);
-
-	TRACE("(%p)\n",This);
-
-	if ( This->meminput.pAllocator != NULL )
-	{
-		IMemAllocator_Decommit(This->meminput.pAllocator);
-		IMemAllocator_Release(This->meminput.pAllocator);
-		This->meminput.pAllocator = NULL;
-	}
-
-	return NOERROR;
-}
-
-static HRESULT CFileWriterPinImpl_CheckMediaType( CPinBaseImpl* pImpl, const AM_MEDIA_TYPE* pmt )
-{
-	CFileWriterPinImpl_THIS(pImpl,pin);
-
-	TRACE("(%p,%p)\n",This,pmt);
-
-	if ( !IsEqualGUID( &pmt->majortype, &MEDIATYPE_Stream ) )
-		return E_FAIL;
-
-	return NOERROR;
-}
-
-static HRESULT CFileWriterPinImpl_Receive( CPinBaseImpl* pImpl, IMediaSample* pSample )
-{
-	CFileWriterPinImpl_THIS(pImpl,pin);
-	BYTE*	pData = NULL;
-	LONG	lLength;
-	ULONG	cbWritten;
-	HRESULT hr;
-	REFERENCE_TIME	rtStart;
-	REFERENCE_TIME	rtEnd;
-	LARGE_INTEGER	dlibMove;
-
-	TRACE( "(%p,%p)\n",This,pSample );
-
-	if ( This->pRender->m_fInFlush )
-		return S_FALSE;
-	if ( pSample == NULL )
-		return E_POINTER;
-
-	hr = IMediaSample_GetPointer(pSample,&pData);
-	if ( FAILED(hr) )
-		return hr;
-	lLength = (LONG)IMediaSample_GetActualDataLength(pSample);
-	if ( lLength == 0 )
-		return S_OK;
-
-	if ( lLength < 0 )
-	{
-		ERR( "invalid length: %ld\n", lLength );
-		return S_OK;
-	}
-
-	hr = IMediaSample_GetTime( pSample, &rtStart, &rtEnd );
-	if ( FAILED(hr) )
-		return hr;
-
-	dlibMove.QuadPart = rtStart;
-	hr = IStream_Seek(CFileWriterPinImpl_IStream(This),dlibMove,STREAM_SEEK_SET,NULL);
-	if ( FAILED(hr) )
-		return hr;
-
-	hr = IStream_Write(CFileWriterPinImpl_IStream(This),pData,lLength,&cbWritten);
-
-	return hr;
-}
-
-static HRESULT CFileWriterPinImpl_ReceiveCanBlock( CPinBaseImpl* pImpl )
-{
-	CFileWriterPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	return S_FALSE;
-}
-
-static HRESULT CFileWriterPinImpl_EndOfStream( CPinBaseImpl* pImpl )
-{
-	CFileWriterPinImpl_THIS(pImpl,pin);
-
-	FIXME( "(%p)\n", This );
-
-	This->pRender->m_fInFlush = FALSE;
-
-	/* FIXME - don't notify twice until stopped or seeked. */
-	return CBaseFilterImpl_MediaEventNotify(
-		&This->pRender->basefilter, EC_COMPLETE,
-		(LONG_PTR)S_OK, (LONG_PTR)(IBaseFilter*)(This->pRender) );
-}
-
-static HRESULT CFileWriterPinImpl_BeginFlush( CPinBaseImpl* pImpl )
-{
-	CFileWriterPinImpl_THIS(pImpl,pin);
-
-	FIXME( "(%p)\n", This );
-
-	This->pRender->m_fInFlush = TRUE;
-
-	return NOERROR;
-}
-
-static HRESULT CFileWriterPinImpl_EndFlush( CPinBaseImpl* pImpl )
-{
-	CFileWriterPinImpl_THIS(pImpl,pin);
-
-	FIXME( "(%p)\n", This );
-
-	This->pRender->m_fInFlush = FALSE;
-
-	return NOERROR;
-}
-
-static HRESULT CFileWriterPinImpl_NewSegment( CPinBaseImpl* pImpl, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double rate )
-{
-	CFileWriterPinImpl_THIS(pImpl,pin);
-
-	FIXME( "(%p)\n", This );
-
-	This->pRender->m_fInFlush = FALSE;
-
-	return NOERROR;
-}
-
-
-
-
-static const CBasePinHandlers pinhandlers =
-{
-	CFileWriterPinImpl_OnPreConnect, /* pOnPreConnect */
-	CFileWriterPinImpl_OnPostConnect, /* pOnPostConnect */
-	CFileWriterPinImpl_OnDisconnect, /* pOnDisconnect */
-	CFileWriterPinImpl_CheckMediaType, /* pCheckMediaType */
-	NULL, /* pQualityNotify */
-	CFileWriterPinImpl_Receive, /* pReceive */
-	CFileWriterPinImpl_ReceiveCanBlock, /* pReceiveCanBlock */
-	CFileWriterPinImpl_EndOfStream, /* pEndOfStream */
-	CFileWriterPinImpl_BeginFlush, /* pBeginFlush */
-	CFileWriterPinImpl_EndFlush, /* pEndFlush */
-	CFileWriterPinImpl_NewSegment, /* pNewSegment */
-};
-
-
-/***************************************************************************
- *
- *	new/delete CFileWriterImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry FilterIFEntries[] =
-{
-  { &IID_IPersist, offsetof(CFileWriterImpl,basefilter)-offsetof(CFileWriterImpl,unk) },
-  { &IID_IMediaFilter, offsetof(CFileWriterImpl,basefilter)-offsetof(CFileWriterImpl,unk) },
-  { &IID_IBaseFilter, offsetof(CFileWriterImpl,basefilter)-offsetof(CFileWriterImpl,unk) },
-  { &IID_IFileSinkFilter, offsetof(CFileWriterImpl,filesink)-offsetof(CFileWriterImpl,unk) },
-  { &IID_IFileSinkFilter2, offsetof(CFileWriterImpl,filesink)-offsetof(CFileWriterImpl,unk) },
-};
-
-static HRESULT CFileWriterImpl_OnQueryInterface(
-	IUnknown* punk, const IID* piid, void** ppobj )
-{
-	CFileWriterImpl_THIS(punk,unk);
-
-	if ( This->pSeekPass == NULL )
-		return E_NOINTERFACE;
-
-	if ( IsEqualGUID( &IID_IMediaPosition, piid ) ||
-		 IsEqualGUID( &IID_IMediaSeeking, piid ) )
-	{
-		TRACE( "IMediaSeeking(or IMediaPosition) is queried\n" );
-		return IUnknown_QueryInterface( (IUnknown*)(&This->pSeekPass->unk), piid, ppobj );
-	}
-
-	return E_NOINTERFACE;
-}
-
-static void QUARTZ_DestroyFileWriter(IUnknown* punk)
-{
-	CFileWriterImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-	CFileWriterImpl_OnInactive(&This->basefilter);
-
-	if ( This->pPin != NULL )
-	{
-		IUnknown_Release(This->pPin->unk.punkControl);
-		This->pPin = NULL;
-	}
-	if ( This->pSeekPass != NULL )
-	{
-		IUnknown_Release((IUnknown*)&This->pSeekPass->unk);
-		This->pSeekPass = NULL;
-	}
-
-	if ( This->m_hFile != INVALID_HANDLE_VALUE )
-	{
-		CloseHandle( This->m_hFile );
-		This->m_hFile = INVALID_HANDLE_VALUE;
-	}
-	if ( This->m_pszFileName != NULL )
-	{
-		QUARTZ_FreeMem( This->m_pszFileName );
-		This->m_pszFileName = NULL;
-	}
-	QUARTZ_MediaType_Free( &This->m_mt );
-
-	CFileWriterImpl_UninitIFileSinkFilter2(This);
-	CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
-
-	DeleteCriticalSection( &This->m_csReceive );
-}
-
-HRESULT QUARTZ_CreateFileWriter(IUnknown* punkOuter,void** ppobj)
-{
-	CFileWriterImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	This = (CFileWriterImpl*)
-		QUARTZ_AllocObj( sizeof(CFileWriterImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	This->pSeekPass = NULL;
-	This->pPin = NULL;
-	This->m_fInFlush = FALSE;
-
-	This->m_hFile = INVALID_HANDLE_VALUE;
-	This->m_pszFileName = NULL;
-	This->m_cbFileName = 0;
-	This->m_dwMode = 0;
-	ZeroMemory( &This->m_mt, sizeof(AM_MEDIA_TYPE) );
-
-	QUARTZ_IUnkInit( &This->unk, punkOuter );
-	This->qiext.pNext = NULL;
-	This->qiext.pOnQueryInterface = &CFileWriterImpl_OnQueryInterface;
-	QUARTZ_IUnkAddDelegation( &This->unk, &This->qiext );
-
-	hr = CBaseFilterImpl_InitIBaseFilter(
-		&This->basefilter,
-		This->unk.punkControl,
-		&CLSID_FileWriter,
-		QUARTZ_FileWriter_Name,
-		&filterhandlers );
-	if ( SUCCEEDED(hr) )
-	{
-		hr = CFileWriterImpl_InitIFileSinkFilter2(This);
-		if ( FAILED(hr) )
-		{
-			CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = FilterIFEntries;
-	This->unk.dwEntries = sizeof(FilterIFEntries)/sizeof(FilterIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyFileWriter;
-
-	InitializeCriticalSection( &This->m_csReceive );
-
-	hr = QUARTZ_CreateFileWriterPin(
-		This,
-		&This->basefilter.csFilter,
-		&This->m_csReceive,
-		&This->pPin );
-	if ( SUCCEEDED(hr) )
-		hr = QUARTZ_CompList_AddComp(
-			This->basefilter.pInPins,
-			(IUnknown*)&This->pPin->pin,
-			NULL, 0 );
-	if ( SUCCEEDED(hr) )
-		hr = QUARTZ_CreateSeekingPassThruInternal(
-			(IUnknown*)&(This->unk), &This->pSeekPass,
-			TRUE, (IPin*)&(This->pPin->pin) );
-
-	if ( FAILED(hr) )
-	{
-		IUnknown_Release( This->unk.punkControl );
-		return hr;
-	}
-
-	*ppobj = (void*)&(This->unk);
-
-	return S_OK;
-}
-
-/***************************************************************************
- *
- *	new/delete CFileWriterPinImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry PinIFEntries[] =
-{
-  { &IID_IPin, offsetof(CFileWriterPinImpl,pin)-offsetof(CFileWriterPinImpl,unk) },
-  { &IID_IMemInputPin, offsetof(CFileWriterPinImpl,meminput)-offsetof(CFileWriterPinImpl,unk) },
-  { &IID_IStream, offsetof(CFileWriterPinImpl,stream)-offsetof(CFileWriterPinImpl,unk) },
-};
-
-static void QUARTZ_DestroyFileWriterPin(IUnknown* punk)
-{
-	CFileWriterPinImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	CPinBaseImpl_UninitIPin( &This->pin );
-	CMemInputPinBaseImpl_UninitIMemInputPin( &This->meminput );
-	CFileWriterPinImpl_UninitIStream(This);
-}
-
-HRESULT QUARTZ_CreateFileWriterPin(
-        CFileWriterImpl* pFilter,
-        CRITICAL_SECTION* pcsPin,
-        CRITICAL_SECTION* pcsPinReceive,
-        CFileWriterPinImpl** ppPin)
-{
-	CFileWriterPinImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p,%p,%p)\n",pFilter,pcsPin,pcsPinReceive,ppPin);
-
-	This = (CFileWriterPinImpl*)
-		QUARTZ_AllocObj( sizeof(CFileWriterPinImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &This->unk, NULL );
-	This->pRender = pFilter;
-
-	hr = CPinBaseImpl_InitIPin(
-		&This->pin,
-		This->unk.punkControl,
-		pcsPin, pcsPinReceive,
-		&pFilter->basefilter,
-		QUARTZ_FileWriterPin_Name,
-		FALSE,
-		&pinhandlers );
-
-	if ( SUCCEEDED(hr) )
-	{
-		hr = CMemInputPinBaseImpl_InitIMemInputPin(
-			&This->meminput,
-			This->unk.punkControl,
-			&This->pin );
-		if ( SUCCEEDED(hr) )
-		{
-			hr = CFileWriterPinImpl_InitIStream(This);
-			if ( FAILED(hr) )
-			{
-				CMemInputPinBaseImpl_UninitIMemInputPin(&This->meminput);
-			}
-		}
-
-		if ( FAILED(hr) )
-		{
-			CPinBaseImpl_UninitIPin( &This->pin );
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = PinIFEntries;
-	This->unk.dwEntries = sizeof(PinIFEntries)/sizeof(PinIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyFileWriterPin;
-
-	*ppPin = This;
-
-	TRACE("returned successfully.\n");
-
-	return S_OK;
-}
-
-/***************************************************************************
- *
- *	CFileWriterPinImpl::IStream
- *
- */
-
-static HRESULT WINAPI
-IStream_fnQueryInterface(IStream* iface,REFIID riid,void** ppobj)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IStream_fnAddRef(IStream* iface)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IStream_fnRelease(IStream* iface)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IStream_fnRead(IStream* iface,void* pv,ULONG cb,ULONG* pcbRead)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_FAIL;
-}
-
-static HRESULT WINAPI
-IStream_fnWrite(IStream* iface,const void* pv,ULONG cb,ULONG* pcbWritten)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-	HRESULT hr;
-
-	FIXME("(%p)->(%p,%lu,%p)\n",This,pv,cb,pcbWritten);
-
-	EnterCriticalSection( &This->pRender->m_csReceive );
-	if ( This->pRender->m_hFile == INVALID_HANDLE_VALUE )
-	{
-		hr = E_UNEXPECTED;
-		goto err;
-	}
-
-	if ( ! WriteFile( This->pRender->m_hFile, pv, cb, pcbWritten, NULL ) )
-	{
-		hr = E_FAIL;
-		goto err;
-	}
-
-	hr = S_OK;
-err:
-	LeaveCriticalSection( &This->pRender->m_csReceive );
-	return hr;
-}
-
-static HRESULT WINAPI
-IStream_fnSeek(IStream* iface,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER* plibNewPosition)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-	HRESULT hr;
-	DWORD	dwDistLow;
-	LONG	lDistHigh;
-
-	FIXME("(%p)->() stub!\n",This);
-
-	EnterCriticalSection( &This->pRender->m_csReceive );
-	if ( This->pRender->m_hFile == INVALID_HANDLE_VALUE )
-	{
-		hr = E_UNEXPECTED;
-		goto err;
-	}
-
-	dwDistLow = dlibMove.s.LowPart;
-	lDistHigh = dlibMove.s.HighPart;
-
-	SetLastError(0);
-	dwDistLow = SetFilePointer( This->pRender->m_hFile, (LONG)dwDistLow, &lDistHigh, dwOrigin );
-	if ( dwDistLow == 0xffffffff && GetLastError() != 0 )
-	{
-		hr = E_FAIL;
-		goto err;
-	}
-
-	if ( plibNewPosition != NULL )
-	{
-		plibNewPosition->s.LowPart = dwDistLow;
-		plibNewPosition->s.HighPart = lDistHigh;
-	}
-
-	hr = S_OK;
-err:
-	LeaveCriticalSection( &This->pRender->m_csReceive );
-	return hr;
-}
-
-static HRESULT WINAPI
-IStream_fnSetSize(IStream* iface,ULARGE_INTEGER libNewSize)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	if ( This->pRender->m_hFile == INVALID_HANDLE_VALUE )
-		return E_UNEXPECTED;
-
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IStream_fnCopyTo(IStream* iface,IStream* pstrm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_FAIL;
-}
-
-static HRESULT WINAPI
-IStream_fnCommit(IStream* iface,DWORD grfCommitFlags)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IStream_fnRevert(IStream* iface)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IStream_fnLockRegion(IStream* iface,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IStream_fnUnlockRegion(IStream* iface,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IStream_fnStat(IStream* iface,STATSTG* pstatstg,DWORD grfStatFlag)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IStream_fnClone(IStream* iface,IStream** ppstrm)
-{
-	CFileWriterPinImpl_THIS(iface,stream);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static ICOM_VTABLE(IStream) istream =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IStream_fnQueryInterface,
-	IStream_fnAddRef,
-	IStream_fnRelease,
-	/* IStream fields */
-	IStream_fnRead,
-	IStream_fnWrite,
-	IStream_fnSeek,
-	IStream_fnSetSize,
-	IStream_fnCopyTo,
-	IStream_fnCommit,
-	IStream_fnRevert,
-	IStream_fnLockRegion,
-	IStream_fnUnlockRegion,
-	IStream_fnStat,
-	IStream_fnClone,
-};
-
-HRESULT CFileWriterPinImpl_InitIStream( CFileWriterPinImpl* This )
-{
-	TRACE("(%p)\n",This);
-	ICOM_VTBL(&This->stream) = &istream;
-
-	return NOERROR;
-}
-
-HRESULT CFileWriterPinImpl_UninitIStream( CFileWriterPinImpl* This )
-{
-	TRACE("(%p)\n",This);
-
-	return S_OK;
-}
-
-
-/***************************************************************************
- *
- *	CFileWriterImpl::IFileSinkFilter2
- *
- */
-
-static HRESULT WINAPI
-IFileSinkFilter2_fnQueryInterface(IFileSinkFilter2* iface,REFIID riid,void** ppobj)
-{
-	CFileWriterImpl_THIS(iface,filesink);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IFileSinkFilter2_fnAddRef(IFileSinkFilter2* iface)
-{
-	CFileWriterImpl_THIS(iface,filesink);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IFileSinkFilter2_fnRelease(IFileSinkFilter2* iface)
-{
-	CFileWriterImpl_THIS(iface,filesink);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IFileSinkFilter2_fnSetFileName(IFileSinkFilter2* iface,LPCOLESTR pszFileName,const AM_MEDIA_TYPE* pmt)
-{
-	CFileWriterImpl_THIS(iface,filesink);
-	HRESULT hr;
-
-	TRACE("(%p)->(%s,%p)\n",This,debugstr_w(pszFileName),pmt);
-
-	if ( pszFileName == NULL )
-		return E_POINTER;
-
-	if ( This->m_pszFileName != NULL )
-		return E_UNEXPECTED;
-
-	This->m_cbFileName = sizeof(WCHAR)*(lstrlenW(pszFileName)+1);
-	This->m_pszFileName = (WCHAR*)QUARTZ_AllocMem( This->m_cbFileName );
-	if ( This->m_pszFileName == NULL )
-		return E_OUTOFMEMORY;
-	memcpy( This->m_pszFileName, pszFileName, This->m_cbFileName );
-
-	if ( pmt != NULL )
-	{
-		hr = QUARTZ_MediaType_Copy( &This->m_mt, pmt );
-		if ( FAILED(hr) )
-			goto err;
-	}
-	else
-	{
-		ZeroMemory( &This->m_mt, sizeof(AM_MEDIA_TYPE) );
-		memcpy( &This->m_mt.majortype, &MEDIATYPE_Stream, sizeof(GUID) );
-		memcpy( &This->m_mt.subtype, &MEDIASUBTYPE_NULL, sizeof(GUID) );
-		This->m_mt.lSampleSize = 1;
-		memcpy( &This->m_mt.formattype, &FORMAT_None, sizeof(GUID) );
-	}
-
-	This->m_hFile = CreateFileW(
-		This->m_pszFileName,
-		GENERIC_WRITE,
-		0,
-		NULL,
-		( This->m_dwMode == AM_FILE_OVERWRITE ) ? CREATE_ALWAYS : OPEN_ALWAYS,
-		FILE_ATTRIBUTE_NORMAL,
-		(HANDLE)NULL );
-	if ( This->m_hFile == INVALID_HANDLE_VALUE )
-	{
-		hr = E_FAIL;
-		goto err;
-	}
-
-	This->pPin->pin.pmtAcceptTypes = &This->m_mt;
-	This->pPin->pin.cAcceptTypes = 1;
-
-	return NOERROR;
-err:;
-	return hr;
-}
-
-static HRESULT WINAPI
-IFileSinkFilter2_fnGetCurFile(IFileSinkFilter2* iface,LPOLESTR* ppszFileName,AM_MEDIA_TYPE* pmt)
-{
-	CFileWriterImpl_THIS(iface,filesink);
-	HRESULT hr = E_NOTIMPL;
-
-	TRACE("(%p)->(%p,%p)\n",This,ppszFileName,pmt);
-
-	if ( ppszFileName == NULL || pmt == NULL )
-		return E_POINTER;
-
-	if ( This->m_pszFileName == NULL )
-		return E_FAIL;
-
-	hr = QUARTZ_MediaType_Copy( pmt, &This->m_mt );
-	if ( FAILED(hr) )
-		return hr;
-
-	*ppszFileName = (WCHAR*)CoTaskMemAlloc( This->m_cbFileName );
-	if ( *ppszFileName == NULL )
-	{
-		QUARTZ_MediaType_Free(pmt);
-		ZeroMemory( pmt, sizeof(AM_MEDIA_TYPE) );
-		return E_OUTOFMEMORY;
-	}
-
-	memcpy( *ppszFileName, This->m_pszFileName, This->m_cbFileName );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IFileSinkFilter2_fnSetMode(IFileSinkFilter2* iface,DWORD dwFlags)
-{
-	CFileWriterImpl_THIS(iface,filesink);
-
-	TRACE("(%p)->(%08lx)\n",This,dwFlags);
-
-	if ( dwFlags != 0 && dwFlags != AM_FILE_OVERWRITE )
-		return E_INVALIDARG;
-	This->m_dwMode = dwFlags;
-
-	return S_OK;
-}
-
-static HRESULT WINAPI
-IFileSinkFilter2_fnGetMode(IFileSinkFilter2* iface,DWORD* pdwFlags)
-{
-	CFileWriterImpl_THIS(iface,filesink);
-
-	TRACE("(%p)->(%p)\n",This,pdwFlags);
-
-	if ( pdwFlags == NULL )
-		return E_POINTER;
-
-	*pdwFlags = This->m_dwMode;
-
-	return S_OK;
-}
-
-static ICOM_VTABLE(IFileSinkFilter2) ifilesink2 =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IFileSinkFilter2_fnQueryInterface,
-	IFileSinkFilter2_fnAddRef,
-	IFileSinkFilter2_fnRelease,
-	/* IFileSinkFilter2 fields */
-	IFileSinkFilter2_fnSetFileName,
-	IFileSinkFilter2_fnGetCurFile,
-	IFileSinkFilter2_fnSetMode,
-	IFileSinkFilter2_fnGetMode,
-};
-
-HRESULT CFileWriterImpl_InitIFileSinkFilter2( CFileWriterImpl* This )
-{
-	TRACE("(%p)\n",This);
-	ICOM_VTBL(&This->filesink) = &ifilesink2;
-
-	return NOERROR;
-}
-
-HRESULT CFileWriterImpl_UninitIFileSinkFilter2( CFileWriterImpl* This )
-{
-	TRACE("(%p)\n",This);
-
-	return S_OK;
-}
-
-
diff --git a/dlls/quartz/filesink.h b/dlls/quartz/filesink.h
deleted file mode 100644
index 5c2fb83..0000000
--- a/dlls/quartz/filesink.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Implements CLSID_FileWriter.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_FILESINK_H
-#define	WINE_DSHOW_FILESINK_H
-
-#include "iunk.h"
-#include "basefilt.h"
-#include "seekpass.h"
-
-typedef struct CFileWriterImpl	CFileWriterImpl;
-typedef struct CFileWriterPinImpl	CFileWriterPinImpl;
-
-
-typedef struct FileWriterPin_IStreamImpl
-{
-	ICOM_VFIELD(IStream);
-} FileWriterPin_IStreamImpl;
-
-typedef struct FileWriter_IFileSinkFilter2Impl
-{
-	ICOM_VFIELD(IFileSinkFilter2);
-} FileWriter_IFileSinkFilter2Impl;
-
-struct CFileWriterImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CBaseFilterImpl	basefilter;
-	FileWriter_IFileSinkFilter2Impl	filesink;
-	QUARTZ_IFDelegation	qiext;
-
-	CSeekingPassThru*	pSeekPass;
-	CFileWriterPinImpl* pPin;
-
-	CRITICAL_SECTION	m_csReceive;
-	BOOL	m_fInFlush;
-
-	/* for writing */
-	HANDLE	m_hFile;
-	WCHAR*	m_pszFileName;
-	DWORD	m_cbFileName;
-	DWORD	m_dwMode;
-	AM_MEDIA_TYPE	m_mt;
-};
-
-struct CFileWriterPinImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CPinBaseImpl	pin;
-	CMemInputPinBaseImpl	meminput;
-	FileWriterPin_IStreamImpl	stream;
-
-	CFileWriterImpl* pRender;
-};
-
-#define	CFileWriterImpl_THIS(iface,member)	CFileWriterImpl*	This = ((CFileWriterImpl*)(((char*)iface)-offsetof(CFileWriterImpl,member)))
-#define	CFileWriterPinImpl_THIS(iface,member)	CFileWriterPinImpl*	This = ((CFileWriterPinImpl*)(((char*)iface)-offsetof(CFileWriterPinImpl,member)))
-
-#define CFileWriterPinImpl_IStream(th)	((IStream*)&((th)->stream))
-
-
-HRESULT CFileWriterPinImpl_InitIStream( CFileWriterPinImpl* This );
-HRESULT CFileWriterPinImpl_UninitIStream( CFileWriterPinImpl* This );
-HRESULT CFileWriterImpl_InitIFileSinkFilter2( CFileWriterImpl* This );
-HRESULT CFileWriterImpl_UninitIFileSinkFilter2( CFileWriterImpl* This );
-
-HRESULT QUARTZ_CreateFileWriter(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateFileWriterPin(
-        CFileWriterImpl* pFilter,
-        CRITICAL_SECTION* pcsPin,
-        CRITICAL_SECTION* pcsPinReceive,
-        CFileWriterPinImpl** ppPin);
-
-
-#endif	/* WINE_DSHOW_FILESINK_H */
diff --git a/dlls/quartz/fmap.c b/dlls/quartz/fmap.c
deleted file mode 100644
index 4a113ac..0000000
--- a/dlls/quartz/fmap.c
+++ /dev/null
@@ -1,1125 +0,0 @@
-/*
- * Implementation of CLSID_FilterMapper and CLSID_FilterMapper2.
- *
- * FIXME - some stubs
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winreg.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "fmap.h"
-#include "regsvr.h"
-#include "devenum.h"
-#include "complist.h"
-#include "enumunk.h"
-
-/***************************************************************************/
-
-typedef struct QUARTZ_REGFILTERDATA
-{
-	DWORD	dwVersion; /* =2 */
-	DWORD	dwMerit;
-	DWORD	cPins; /* count of pins */
-	DWORD	dwZero; /* padding??? */
-} QUARTZ_REGFILTERDATA;
-
-typedef struct QUARTZ_REGPINDATA
-{
-	CHAR	id[4]; /* '0pi3', '1pi3', ... */
-	DWORD	dwFlags; /* flags */
-	UINT	cInstances; /* FIXME - is this correct? */
-	UINT	nMediaTypes; /* count of media types('0ty3') */
-	UINT	nMediums; /* FIXME - is this correct? */
-	UINT	nOfsClsPinCategory; /* FIXME - is this correct? */
-} QUARTZ_REGPINDATA;
-
-typedef struct QUARTZ_REGMEDIATYPE
-{
-	CHAR	id[4]; /* '0ty3', '1ty3', ... */
-	DWORD	nZero; /* padding??? */
-	UINT	nOfsMajorType;
-	UINT	nOfsMinorType;
-} QUARTZ_REGMEDIATYPE;
-
-
-
-/***************************************************************************/
-
-static
-REGFILTER2* QUARTZ_RegFilterV2FromFilterData(
-	const BYTE* pData, DWORD cbData )
-{
-	REGFILTER2*	pFilter;
-	REGFILTERPINS2*	pPin;
-	REGPINTYPES*	pTypes;
-	BYTE* pDst;
-	const QUARTZ_REGFILTERDATA*	pRegFilter;
-	const QUARTZ_REGPINDATA*	pRegPin;
-	const QUARTZ_REGMEDIATYPE*	pRegMediaType;
-	DWORD	cPins;
-	DWORD	cbBufSize;
-	UINT	n;
-
-	TRACE("(%p,%lu)\n",pData,cbData);
-
-	if ( cbData < sizeof(QUARTZ_REGFILTERDATA) )
-		return NULL;
-
-	pRegFilter = (QUARTZ_REGFILTERDATA*)pData;
-
-	if ( pRegFilter->dwVersion != 2 ) return NULL; /* FIXME */
-
-	if ( cbData < (sizeof(QUARTZ_REGFILTERDATA)+sizeof(QUARTZ_REGPINDATA)*pRegFilter->cPins) )
-		return NULL;
-
-	cbBufSize = sizeof(REGFILTER2);
-	cPins = pRegFilter->cPins;
-	pRegPin = (const QUARTZ_REGPINDATA*)(pRegFilter+1);
-	while ( cPins-- > 0 )
-	{
-		if ( pRegPin->nMediums != 0 ||
-			 pRegPin->nOfsClsPinCategory != 0 )
-			return NULL; /* FIXME */
-
-		cbBufSize += sizeof(REGFILTERPINS2) +
-			pRegPin->nMediaTypes * (sizeof(REGPINTYPES) + sizeof(GUID)*2) +
-			pRegPin->nMediums * sizeof(REGPINMEDIUM) +
-			sizeof(CLSID);
-		pRegPin = (const QUARTZ_REGPINDATA*)( ((const BYTE*)pRegPin) +
-			sizeof(QUARTZ_REGPINDATA) +
-			sizeof(QUARTZ_REGMEDIATYPE) * pRegPin->nMediaTypes );
-	}
-
-	pFilter = (REGFILTER2*)QUARTZ_AllocMem( cbBufSize );
-	if ( pFilter == NULL ) return NULL;
-	ZeroMemory( pFilter, cbBufSize );
-	pPin = (REGFILTERPINS2*)(pFilter+1);
-	pDst = (BYTE*)(pPin + pRegFilter->cPins);
-
-	pFilter->dwVersion = 2;
-	pFilter->dwMerit = pRegFilter->dwMerit;
-	pFilter->u.s2.cPins2 = pRegFilter->cPins;
-	pFilter->u.s2.rgPins2 = pPin;
-
-	cPins = pRegFilter->cPins;
-	TRACE("cPins = %lu\n",cPins);
-
-	pRegPin = (const QUARTZ_REGPINDATA*)(pRegFilter+1);
-	while ( cPins-- > 0 )
-	{
-		pPin->dwFlags = pRegPin->dwFlags;
-		pPin->cInstances = pRegPin->cInstances;
-		pPin->nMediaTypes = pRegPin->nMediaTypes;
-		pPin->lpMediaType = NULL;
-		pPin->nMediums = pRegPin->nMediums;
-		pPin->lpMedium = NULL;
-		pPin->clsPinCategory = NULL;
-
-		pTypes = (REGPINTYPES*)pDst;
-		pPin->lpMediaType = pTypes;
-		pDst += sizeof(REGPINTYPES) * pRegPin->nMediaTypes;
-
-		pRegPin = (const QUARTZ_REGPINDATA*)( ((const BYTE*)pRegPin) +
-			sizeof(QUARTZ_REGPINDATA) );
-
-		for ( n = 0; n < pPin->nMediaTypes; n++ )
-		{
-			pRegMediaType = ((const QUARTZ_REGMEDIATYPE*)pRegPin);
-			TRACE("ofsMajor = %u, ofsMinor = %u\n", pRegMediaType->nOfsMajorType, pRegMediaType->nOfsMinorType);
-			memcpy( pDst, pData+pRegMediaType->nOfsMajorType, sizeof(GUID) );
-			pTypes->clsMajorType = (const GUID*)pDst; pDst += sizeof(GUID);
-			memcpy( pDst, pData+pRegMediaType->nOfsMinorType, sizeof(GUID) );
-			pTypes->clsMinorType = (const GUID*)pDst; pDst += sizeof(GUID);
-
-			pRegPin = (const QUARTZ_REGPINDATA*)( ((const BYTE*)pRegPin) +
-				sizeof(QUARTZ_REGMEDIATYPE) );
-			pTypes ++;
-		}
-
-		/* FIXME - pPin->lpMedium */
-		/* FIXME - pPin->clsPinCategory */
-
-		pPin ++;
-	}
-
-	return pFilter;
-}
-
-static
-BYTE* QUARTZ_RegFilterV2ToFilterData(
-	const REGFILTER2* pFilter, DWORD* pcbData )
-{
-	DWORD	cbData;
-	DWORD	cbPinData;
-	DWORD	cPins;
-	const REGFILTERPINS2*	pPin;
-	const REGPINTYPES*	pTypes;
-	BYTE*	pRet = NULL;
-	BYTE*	pDst;
-	QUARTZ_REGFILTERDATA*	pRegFilter;
-	QUARTZ_REGPINDATA*	pRegPin;
-	QUARTZ_REGMEDIATYPE*	pRegMediaType;
-	UINT	n;
-
-	if ( pFilter->dwVersion != 2 ) return NULL; /* FIXME */
-
-	cbData = sizeof(QUARTZ_REGFILTERDATA);
-	cPins = pFilter->u.s2.cPins2;
-	pPin = pFilter->u.s2.rgPins2;
-	if ( cPins > 10 ) return NULL; /* FIXME */
-
-	cbPinData = 0;
-	while ( cPins-- > 0 )
-	{
-		if ( pPin->cInstances != 0 ||
-			 pPin->nMediaTypes > 10 ||
-			 pPin->nMediums != 0 ||
-			 pPin->clsPinCategory != 0 )
-		{
-			FIXME( "not implemented.\n" );
-			return NULL; /* FIXME */
-		}
-
-		cbPinData += sizeof(QUARTZ_REGPINDATA) +
-			pPin->nMediaTypes * sizeof(QUARTZ_REGMEDIATYPE);
-		cbData += pPin->nMediaTypes * (sizeof(GUID)*2);
-		pPin ++;
-	}
-	cbData += cbPinData;
-	TRACE("cbData %lu, cbPinData %lu\n",cbData,cbPinData);
-
-	pRet = (BYTE*)QUARTZ_AllocMem( cbData );
-	if ( pRet == NULL ) return NULL;
-	ZeroMemory( pRet, cbData );
-	pDst = pRet;
-
-	pRegFilter = (QUARTZ_REGFILTERDATA*)pDst;
-	pDst += sizeof(QUARTZ_REGFILTERDATA);
-
-	pRegFilter->dwVersion = 2;
-	pRegFilter->dwMerit = pFilter->dwMerit;
-	pRegFilter->cPins = pFilter->u.s2.cPins2;
-
-	pRegPin = (QUARTZ_REGPINDATA*)pDst;
-	pDst += cbPinData;
-
-	pPin = pFilter->u.s2.rgPins2;
-	for ( cPins = 0; cPins < pFilter->u.s2.cPins2; cPins++ )
-	{
-		pRegPin->id[0] = '0'+cPins;
-		pRegPin->id[1] = 'p';
-		pRegPin->id[2] = 'i';
-		pRegPin->id[3] = '3';
-		pRegPin->dwFlags = pPin->dwFlags; /* flags */
-		pRegPin->cInstances = pPin->cInstances;
-		pRegPin->nMediaTypes = pPin->nMediaTypes;
-		pRegPin->nMediums = pPin->nMediums;
-		pRegPin->nOfsClsPinCategory = 0; /* FIXME */
-
-		pTypes = pPin->lpMediaType;
-		pRegPin = (QUARTZ_REGPINDATA*)( ((const BYTE*)pRegPin) +
-			sizeof(QUARTZ_REGPINDATA) );
-		for ( n = 0; n < pPin->nMediaTypes; n++ )
-		{
-			pRegMediaType = ((QUARTZ_REGMEDIATYPE*)pRegPin);
-
-			pRegMediaType->id[0] = '0'+n;
-			pRegMediaType->id[1] = 't';
-			pRegMediaType->id[2] = 'y';
-			pRegMediaType->id[3] = '3';
-
-			/* FIXME - CLSID should be shared. */
-			pRegMediaType->nOfsMajorType = pDst - pRet;
-			memcpy( pDst, pTypes->clsMajorType, sizeof(GUID) );
-			pDst += sizeof(GUID);
-			pRegMediaType->nOfsMinorType = pDst - pRet;
-			memcpy( pDst, pTypes->clsMinorType, sizeof(GUID) );
-			pDst += sizeof(GUID);
-
-			pRegPin = (QUARTZ_REGPINDATA*)( ((const BYTE*)pRegPin) +
-				sizeof(QUARTZ_REGMEDIATYPE) );
-			pTypes ++;
-		}
-		pPin ++;
-	}
-
-	*pcbData = pDst - pRet;
-	TRACE("cbData %lu/%lu\n",*pcbData,cbData);
-
-	return pRet;
-}
-
-static
-REGFILTER2* QUARTZ_RegFilterV1ToV2( const REGFILTER2* prfV1 )
-{
-	REGFILTER2*	prfV2;
-	const REGFILTERPINS*	pPinV1;
-	REGFILTERPINS2*	pPinV2;
-	DWORD	cPins;
-
-	if ( prfV1->dwVersion != 1 ) return NULL;
-
-	prfV2 = (REGFILTER2*)QUARTZ_AllocMem(
-		sizeof(REGFILTER2) + sizeof(REGFILTERPINS2) * prfV1->u.s1.cPins );
-	if ( prfV2 == NULL ) return NULL;
-	ZeroMemory( prfV2, sizeof(REGFILTER2) + sizeof(REGFILTERPINS2) * prfV1->u.s1.cPins );
-	pPinV1 = prfV1->u.s1.rgPins;
-	pPinV2 = (REGFILTERPINS2*)(prfV2+1);
-	prfV2->dwVersion = 2;
-	prfV2->dwMerit = prfV1->dwMerit;
-	prfV2->u.s2.cPins2 = prfV1->u.s1.cPins;
-	prfV2->u.s2.rgPins2 = pPinV2;
-
-	cPins = prfV1->u.s1.cPins;
-	while ( cPins-- > 0 )
-	{
-		pPinV2->dwFlags = 0;
-		pPinV2->cInstances = 0;
-		pPinV2->nMediaTypes = pPinV1->nMediaTypes;
-		pPinV2->lpMediaType = pPinV1->lpMediaType;
-		pPinV2->nMediums = 0;
-		pPinV2->lpMedium = NULL;
-		pPinV2->clsPinCategory = NULL;
-
-		if ( pPinV1->bRendered )
-			pPinV2->dwFlags |= REG_PINFLAG_B_RENDERER;
-		if ( pPinV1->bOutput )
-			pPinV2->dwFlags |= REG_PINFLAG_B_OUTPUT;
-		if ( pPinV1->bZero )
-			pPinV2->dwFlags |= REG_PINFLAG_B_ZERO;
-		if ( pPinV1->bMany )
-			pPinV2->dwFlags |= REG_PINFLAG_B_MANY;
-
-		pPinV1 ++;
-		pPinV2 ++;
-	}
-
-	return prfV2;
-}
-
-static
-BYTE* QUARTZ_RegFilterToFilterData(
-	const REGFILTER2* pFilter, DWORD* pcbData )
-{
-	REGFILTER2*	prfV2;
-	BYTE*	pRet = NULL;
-
-	*pcbData = 0;
-	switch ( pFilter->dwVersion )
-	{
-	case 1:
-		prfV2 = QUARTZ_RegFilterV1ToV2( pFilter );
-		if ( prfV2 != NULL )
-		{
-			pRet = QUARTZ_RegFilterV2ToFilterData( prfV2, pcbData );
-			QUARTZ_FreeMem( prfV2 );
-		}
-		break;
-	case 2:
-		pRet = QUARTZ_RegFilterV2ToFilterData( pFilter, pcbData );
-		break;
-	default:
-		FIXME( "unknown REGFILTER2 version - %08lu\n", pFilter->dwVersion );
-		break;
-	}
-
-	return pRet;
-}
-
-/***************************************************************************/
-
-static
-BOOL QUARTZ_CheckPinType( BOOL bExactMatch, const REGFILTERPINS2* pPin, DWORD cTypes, const GUID* pTypes, const REGPINMEDIUM* pMedium, const CLSID* pCategory, BOOL bRender )
-{
-	DWORD	n1, n2;
-	BOOL	bMatch;
-
-	if ( cTypes > 0 && pTypes != NULL )
-	{
-		bMatch = FALSE;
-		for ( n1 = 0; n1 < pPin->nMediaTypes; n1++ )
-		{
-			for ( n2 = 0; n2 < cTypes; n2++ )
-			{
-				if ( IsEqualGUID(pPin->lpMediaType[n1].clsMajorType,&GUID_NULL) || IsEqualGUID(pPin->lpMediaType[n1].clsMajorType, &pTypes[n2*2+0]) || (!bExactMatch && IsEqualGUID(pPin->lpMediaType[n1].clsMajorType,&GUID_NULL)) )
-				{
-					if ( IsEqualGUID(pPin->lpMediaType[n1].clsMinorType,&GUID_NULL) || IsEqualGUID(pPin->lpMediaType[n1].clsMinorType, &pTypes[n2*2+1]) || (!bExactMatch && IsEqualGUID(pPin->lpMediaType[n1].clsMinorType,&GUID_NULL)) )
-					{
-						bMatch = TRUE;
-						break;
-					}
-				}
-			}
-		}
-		TRACE("Check media type %d\n",(int)bMatch);
-		if ( !bMatch )
-			return FALSE;
-	}
-
-	if ( pMedium != NULL )
-	{
-		bMatch = FALSE;
-		for ( n1 = 0; n1 < pPin->nMediums; n1++ )
-		{
-			if ( IsEqualGUID( &pPin->lpMedium[n1].clsMedium, &pMedium->clsMedium ) && pPin->lpMedium[n1].dw1 == pMedium->dw1 && pPin->lpMedium[n1].dw2 == pMedium->dw2 )
-			{
-				bMatch = TRUE;
-				break;
-			}
-		}
-		TRACE("Check medium %d\n",(int)bMatch);
-		if ( !bMatch )
-			return FALSE;
-	}
-
-	if ( pCategory != NULL )
-	{
-		if ( pPin->clsPinCategory == NULL )
-			return FALSE;
-		if ( (!bExactMatch && IsEqualGUID(pCategory,&GUID_NULL)) || IsEqualGUID(pCategory,pPin->clsPinCategory) )
-			return TRUE;
-		return FALSE;
-	}
-
-	if ( bRender && (!(pPin->dwFlags & REG_PINFLAG_B_RENDERER)) )
-	{
-		TRACE("not a renderer\n");
-		return FALSE;
-	}
-
-	return TRUE;
-}
-
-
-
-
-/***************************************************************************
- *
- *	new/delete for CLSID_FilterMapper
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry FMapIFEntries[] =
-{
-  { &IID_IFilterMapper, offsetof(CFilterMapper,fmap)-offsetof(CFilterMapper,unk) },
-};
-
-
-static void QUARTZ_DestroyFilterMapper(IUnknown* punk)
-{
-	CFilterMapper_THIS(punk,unk);
-
-	CFilterMapper_UninitIFilterMapper( This );
-}
-
-HRESULT QUARTZ_CreateFilterMapper(IUnknown* punkOuter,void** ppobj)
-{
-	CFilterMapper*	pfm;
-	HRESULT	hr;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	pfm = (CFilterMapper*)QUARTZ_AllocObj( sizeof(CFilterMapper) );
-	if ( pfm == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &pfm->unk, punkOuter );
-	hr = CFilterMapper_InitIFilterMapper( pfm );
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj( pfm );
-		return hr;
-	}
-
-	pfm->unk.pEntries = FMapIFEntries;
-	pfm->unk.dwEntries = sizeof(FMapIFEntries)/sizeof(FMapIFEntries[0]);
-	pfm->unk.pOnFinalRelease = QUARTZ_DestroyFilterMapper;
-
-	*ppobj = (void*)(&pfm->unk);
-
-	return S_OK;
-}
-
-/***************************************************************************
- *
- *	CLSID_FilterMapper::IFilterMapper
- *
- */
-
-static HRESULT WINAPI
-IFilterMapper_fnQueryInterface(IFilterMapper* iface,REFIID riid,void** ppobj)
-{
-	CFilterMapper_THIS(iface,fmap);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IFilterMapper_fnAddRef(IFilterMapper* iface)
-{
-	CFilterMapper_THIS(iface,fmap);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IFilterMapper_fnRelease(IFilterMapper* iface)
-{
-	CFilterMapper_THIS(iface,fmap);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-
-static HRESULT WINAPI
-IFilterMapper_fnRegisterFilter(IFilterMapper* iface,CLSID clsid,LPCWSTR lpwszName,DWORD dwMerit)
-{
-	CFilterMapper_THIS(iface,fmap);
-
-	FIXME("(%p)->(%s,%s,%08lx)\n",This,
-		debugstr_guid(&clsid),debugstr_w(lpwszName),dwMerit);
-
-	/* FIXME */
-	/* FIXME - handle dwMerit! */
-	return QUARTZ_RegisterAMovieFilter(
-		&CLSID_LegacyAmFilterCategory,
-		&clsid,
-		NULL, 0,
-		lpwszName, NULL, TRUE );
-}
-
-static HRESULT WINAPI
-IFilterMapper_fnRegisterFilterInstance(IFilterMapper* iface,CLSID clsid,LPCWSTR lpwszName,CLSID* pclsidMedia)
-{
-	CFilterMapper_THIS(iface,fmap);
-	HRESULT	hr;
-
-	FIXME("(%p)->()\n",This);
-
-	if ( pclsidMedia == NULL )
-		return E_POINTER;
-	hr = CoCreateGuid(pclsidMedia);
-	if ( FAILED(hr) )
-		return hr;
-
-	/* FIXME */
-	/* this doesn't work. */
-	/* return IFilterMapper_RegisterFilter(iface,
-		*pclsidMedia,lpwszName,0x60000000); */
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IFilterMapper_fnRegisterPin(IFilterMapper* iface,CLSID clsidFilter,LPCWSTR lpwszName,BOOL bRendered,BOOL bOutput,BOOL bZero,BOOL bMany,CLSID clsidReserved,LPCWSTR lpwszReserved)
-{
-	CFilterMapper_THIS(iface,fmap);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IFilterMapper_fnRegisterPinType(IFilterMapper* iface,CLSID clsidFilter,LPCWSTR lpwszName,CLSID clsidMajorType,CLSID clsidSubType)
-{
-	CFilterMapper_THIS(iface,fmap);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IFilterMapper_fnUnregisterFilter(IFilterMapper* iface,CLSID clsidFilter)
-{
-	CFilterMapper_THIS(iface,fmap);
-
-	FIXME("(%p)->(%s)\n",This,debugstr_guid(&clsidFilter));
-
-	/* FIXME */
-	return QUARTZ_RegisterAMovieFilter(
-		&CLSID_LegacyAmFilterCategory,
-		&clsidFilter,
-		NULL, 0, NULL, NULL, FALSE );
-}
-
-static HRESULT WINAPI
-IFilterMapper_fnUnregisterFilterInstance(IFilterMapper* iface,CLSID clsidMedia)
-{
-	CFilterMapper_THIS(iface,fmap);
-
-	FIXME("(%p)->(%s)\n",This,debugstr_guid(&clsidMedia));
-
-	/* FIXME */
-	/* this doesn't work. */
-	/* return IFilterMapper_UnregisterFilter(iface,clsidMedia); */
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IFilterMapper_fnUnregisterPin(IFilterMapper* iface,CLSID clsidPin,LPCWSTR lpwszName)
-{
-	CFilterMapper_THIS(iface,fmap);
-
-	FIXME("(%p)->(%s,%s) stub!\n",This,
-		debugstr_guid(&clsidPin),debugstr_w(lpwszName));
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IFilterMapper_fnEnumMatchingFilters(IFilterMapper* iface,IEnumRegFilters** ppobj,DWORD dwMerit,BOOL bInputNeeded,CLSID clsInMajorType,CLSID clsidSubType,BOOL bRender,BOOL bOutputNeeded,CLSID clsOutMajorType,CLSID clsOutSubType)
-{
-	CFilterMapper_THIS(iface,fmap);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-
-static ICOM_VTABLE(IFilterMapper) ifmap =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IFilterMapper_fnQueryInterface,
-	IFilterMapper_fnAddRef,
-	IFilterMapper_fnRelease,
-	/* IFilterMapper fields */
-	IFilterMapper_fnRegisterFilter,
-	IFilterMapper_fnRegisterFilterInstance,
-	IFilterMapper_fnRegisterPin,
-	IFilterMapper_fnRegisterPinType,
-	IFilterMapper_fnUnregisterFilter,
-	IFilterMapper_fnUnregisterFilterInstance,
-	IFilterMapper_fnUnregisterPin,
-	IFilterMapper_fnEnumMatchingFilters,
-};
-
-
-HRESULT CFilterMapper_InitIFilterMapper( CFilterMapper* pfm )
-{
-	TRACE("(%p)\n",pfm);
-	ICOM_VTBL(&pfm->fmap) = &ifmap;
-
-	return NOERROR;
-}
-
-void CFilterMapper_UninitIFilterMapper( CFilterMapper* pfm )
-{
-	TRACE("(%p)\n",pfm);
-}
-
-
-/***************************************************************************
- *
- *	new/delete for CLSID_FilterMapper2
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry FMap2IFEntries[] =
-{
-  { &IID_IFilterMapper2, offsetof(CFilterMapper2,fmap2)-offsetof(CFilterMapper2,unk) },
-};
-
-
-static void QUARTZ_DestroyFilterMapper2(IUnknown* punk)
-{
-	CFilterMapper2_THIS(punk,unk);
-
-	CFilterMapper2_UninitIFilterMapper2( This );
-}
-
-HRESULT QUARTZ_CreateFilterMapper2(IUnknown* punkOuter,void** ppobj)
-{
-	CFilterMapper2*	pfm;
-	HRESULT	hr;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	pfm = (CFilterMapper2*)QUARTZ_AllocObj( sizeof(CFilterMapper2) );
-	if ( pfm == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &pfm->unk, punkOuter );
-	hr = CFilterMapper2_InitIFilterMapper2( pfm );
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj( pfm );
-		return hr;
-	}
-
-	pfm->unk.pEntries = FMap2IFEntries;
-	pfm->unk.dwEntries = sizeof(FMap2IFEntries)/sizeof(FMap2IFEntries[0]);
-	pfm->unk.pOnFinalRelease = QUARTZ_DestroyFilterMapper2;
-
-	*ppobj = (void*)(&pfm->unk);
-
-	return S_OK;
-}
-
-/***************************************************************************
- *
- *	CLSID_FilterMapper2::IFilterMapper2
- *
- */
-
-
-static HRESULT WINAPI
-IFilterMapper2_fnQueryInterface(IFilterMapper2* iface,REFIID riid,void** ppobj)
-{
-	CFilterMapper2_THIS(iface,fmap2);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IFilterMapper2_fnAddRef(IFilterMapper2* iface)
-{
-	CFilterMapper2_THIS(iface,fmap2);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IFilterMapper2_fnRelease(IFilterMapper2* iface)
-{
-	CFilterMapper2_THIS(iface,fmap2);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IFilterMapper2_fnCreateCategory(IFilterMapper2* iface,REFCLSID rclsidCategory,DWORD dwMerit,LPCWSTR lpwszDesc)
-{
-	CFilterMapper2_THIS(iface,fmap2);
-
-	FIXME("(%p)->(%s,%lu,%s) stub!\n",This,
-		debugstr_guid(rclsidCategory),
-		(unsigned long)dwMerit,debugstr_w(lpwszDesc));
-
-	return E_NOTIMPL;
-}
-
-
-static HRESULT WINAPI
-IFilterMapper2_fnUnregisterFilter(IFilterMapper2* iface,const CLSID* pclsidCategory,const OLECHAR* lpwszInst,REFCLSID rclsidFilter)
-{
-	CFilterMapper2_THIS(iface,fmap2);
-	WCHAR*	pwszPath = NULL;
-	HRESULT hr;
-
-	TRACE("(%p)->(%s,%s,%s)\n",This,
-		debugstr_guid(pclsidCategory),
-		debugstr_w(lpwszInst),
-		debugstr_guid(rclsidFilter));
-
-	if ( pclsidCategory == NULL )
-		pclsidCategory = &CLSID_LegacyAmFilterCategory;
-
-	hr = QUARTZ_GetFilterRegPath(
-		&pwszPath, pclsidCategory, rclsidFilter, lpwszInst );
-	if ( FAILED(hr) )
-		return hr;
-
-	hr = QUARTZ_RegDeleteKey(HKEY_CLASSES_ROOT,pwszPath);
-	QUARTZ_FreeMem(pwszPath);
-
-	return hr;
-}
-
-
-static HRESULT WINAPI
-IFilterMapper2_fnRegisterFilter(IFilterMapper2* iface,REFCLSID rclsidFilter,LPCWSTR lpName,IMoniker** ppMoniker,const CLSID* pclsidCategory,const OLECHAR* lpwszInst,const REGFILTER2* pRF2)
-{
-	CFilterMapper2_THIS(iface,fmap2);
-	WCHAR*  pwszPath = NULL;
-	IMoniker*	pMoniker = NULL;
-	BYTE*	pFilterData = NULL;
-	DWORD	cbFilterData = 0;
-	HRESULT hr;
-
-	TRACE( "(%p)->(%s,%s,%p,%s,%s,%p) stub!\n",This,
-		debugstr_guid(rclsidFilter),debugstr_w(lpName),
-		ppMoniker,debugstr_guid(pclsidCategory),
-		debugstr_w(lpwszInst),pRF2 );
-
-	if ( lpName == NULL || pRF2 == NULL )
-		return E_POINTER;
-
-	if ( ppMoniker != NULL && *ppMoniker != NULL )
-	{
-		FIXME( "ppMoniker != NULL - not implemented! *ppMoniker = %p\n",*ppMoniker );
-		return E_NOTIMPL;
-	}
-
-	if ( pclsidCategory == NULL )
-		pclsidCategory = &CLSID_LegacyAmFilterCategory;
-
-	if ( pMoniker == NULL )
-	{
-	        hr = QUARTZ_GetFilterRegPath(
-		        &pwszPath, pclsidCategory, rclsidFilter, lpwszInst );
-		if ( FAILED(hr) )
-			return hr;
-		hr = QUARTZ_CreateDeviceMoniker(
-			HKEY_CLASSES_ROOT,pwszPath,&pMoniker);
-		QUARTZ_FreeMem(pwszPath);
-		if ( FAILED(hr) )
-			return hr;
-	}
-
-	pFilterData = QUARTZ_RegFilterToFilterData( pRF2, &cbFilterData );
-	if ( pFilterData == NULL || cbFilterData == 0 )
-	{
-		hr = E_FAIL;
-		goto err;
-	}
-
-	hr = QUARTZ_RegisterFilterToMoniker(
-		pMoniker, rclsidFilter, lpName, pFilterData, cbFilterData );
-	if ( FAILED(hr) )
-		goto err;
-
-	if ( ppMoniker != NULL )
-	{
-		*ppMoniker = pMoniker;
-		pMoniker = NULL;
-	}
-err:
-	if ( pFilterData != NULL )
-		QUARTZ_FreeMem(pFilterData);
-	if ( pMoniker != NULL )
-		IMoniker_Release(pMoniker);
-
-	return hr;
-}
-
-struct MATCHED_ITEM
-{
-	IMoniker*	pMonFilter;
-	DWORD		dwMerit;
-};
-
-static int sort_comp_merit(const void* p1,const void* p2)
-{
-	const struct MATCHED_ITEM*	pItem1 = (const struct MATCHED_ITEM*)p1;
-        const struct MATCHED_ITEM*      pItem2 = (const struct MATCHED_ITEM*)p2;
-
-	return (int)pItem2->dwMerit - (int)pItem1->dwMerit;
-}
-
-static HRESULT WINAPI
-IFilterMapper2_fnEnumMatchingFilters(IFilterMapper2* iface,
-	IEnumMoniker** ppEnumMoniker,DWORD dwFlags,BOOL bExactMatch,DWORD dwMerit,
-	BOOL bInputNeeded,DWORD cInputTypes,const GUID* pguidInputTypes,const REGPINMEDIUM* pPinMediumIn,const CLSID* pPinCategoryIn,BOOL bRender,
-	BOOL bOutputNeeded,DWORD cOutputTypes,const GUID* pguidOutputTypes,const REGPINMEDIUM* pPinMediumOut,const CLSID* pPinCategoryOut)
-{
-	CFilterMapper2_THIS(iface,fmap2);
-	ICreateDevEnum*	pEnum = NULL;
-	IEnumMoniker*	pCategories = NULL;
-	IMoniker*	pCat = NULL;
-	DWORD	dwCatMerit;
-	IEnumMoniker*	pCatFilters = NULL;
-	IMoniker*	pFilter = NULL;
-	CLSID	clsid;
-	ULONG	cReturned;
-	BYTE*	pbFilterData = NULL;
-	DWORD	cbFilterData = 0;
-	REGFILTER2*	prf2 = NULL;
-	QUARTZ_CompList*	pListFilters = NULL;
-	struct MATCHED_ITEM*	pItems = NULL;
-	struct MATCHED_ITEM*	pItemsTmp;
-	int			cItems = 0;
-	const REGFILTERPINS2*	pRegFilterPin;
-	DWORD	n;
-	BOOL	bMatch;
-	HRESULT hr;
-
-	WARN("(%p)->(%p,%08lx,%d,%08lx,%d,%lu,%p,%p,%p,%d,%d,%lu,%p,%p,%p) some features are not implemented\n",
-		This,ppEnumMoniker,dwFlags,bExactMatch,dwMerit,
-		bInputNeeded,cInputTypes,pguidInputTypes,
-		pPinMediumIn,pPinCategoryIn,
-		bRender,
-		bOutputNeeded,cOutputTypes,pguidOutputTypes,
-		pPinMediumOut,pPinCategoryOut);
-
-	if ( ppEnumMoniker == NULL )
-		return E_POINTER;
-	*ppEnumMoniker = NULL;
-	if ( dwFlags != 0 )
-		return E_INVALIDARG;
-
-	hr = CoCreateInstance(
-		&CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,
-		&IID_ICreateDevEnum, (void**)&pEnum );
-	if ( FAILED(hr) )
-		goto err;
-
-	hr = ICreateDevEnum_CreateClassEnumerator(pEnum,&CLSID_ActiveMovieCategories,&pCategories,0);
-	if ( hr != S_OK )
-		goto err;
-
-	while ( 1 )
-	{
-		if ( pCat != NULL )
-		{
-			IMoniker_Release(pCat);
-			pCat = NULL;
-		}
-		hr = IEnumMoniker_Next(pCategories,1,&pCat,&cReturned);
-		if ( FAILED(hr) )
-			goto err;
-		if ( hr != S_OK )
-			break;
-		hr = QUARTZ_GetMeritFromMoniker(pCat,&dwCatMerit);
-		if ( hr != S_OK || dwMerit > dwCatMerit )
-			continue;
-		hr = QUARTZ_GetCLSIDFromMoniker(pCat,&clsid);
-		if ( hr != S_OK )
-			continue;
-
-		if ( pCatFilters != NULL )
-		{
-			IEnumMoniker_Release(pCatFilters);
-			pCatFilters = NULL;
-		}
-		hr = ICreateDevEnum_CreateClassEnumerator(pEnum,&clsid,&pCatFilters,0);
-		if ( FAILED(hr) )
-			goto err;
-		if ( hr != S_OK )
-			continue;
-
-		while ( 1 )
-		{
-			if ( pFilter != NULL )
-			{
-				IMoniker_Release(pFilter);
-				pFilter = NULL;
-			}
-			hr = IEnumMoniker_Next(pCatFilters,1,&pFilter,&cReturned);
-			if ( FAILED(hr) )
-				goto err;
-			if ( hr != S_OK )
-				break;
-			if ( pbFilterData != NULL )
-			{
-				QUARTZ_FreeMem(pbFilterData);
-				pbFilterData = NULL;
-			}
-			if(TRACE_ON(quartz))
-			{
-				CLSID clsidTrace;
-				if (SUCCEEDED(QUARTZ_GetCLSIDFromMoniker(pFilter,&clsidTrace)))
-				{
-					TRACE("moniker clsid %s\n",debugstr_guid(&clsidTrace));
-				}
-			}
-			hr = QUARTZ_GetFilterDataFromMoniker(pFilter,&pbFilterData,&cbFilterData);
-			if ( hr != S_OK )
-				continue;
-
-			if ( prf2 != NULL )
-			{
-				QUARTZ_FreeMem(prf2);
-				prf2 = NULL;
-			}
-			prf2 = QUARTZ_RegFilterV2FromFilterData(pbFilterData,cbFilterData);
-			if ( prf2 == NULL )
-				continue;
-			TRACE("prf2 %p, Merit %08lx\n",prf2,prf2->dwMerit);
-			if ( prf2->dwMerit < dwMerit || prf2->dwVersion != 2 )
-				continue;
-
-			/* check input pins. */
-			if ( bInputNeeded )
-			{
-				bMatch = FALSE;
-				for ( n = 0; n < prf2->u.s2.cPins2; n++ )
-				{
-					pRegFilterPin = &prf2->u.s2.rgPins2[n];
-					if ( pRegFilterPin->dwFlags & REG_PINFLAG_B_OUTPUT )
-						continue;
-					bMatch = QUARTZ_CheckPinType( bExactMatch, pRegFilterPin, cInputTypes, pguidInputTypes, pPinMediumIn, pPinCategoryIn, bRender );
-					if ( bMatch )
-						break;
-				}
-				if ( !bMatch )
-				{
-					TRACE("no matching input pin\n");
-					continue;
-				}
-			}
-
-			/* check output pins. */
-			if ( bOutputNeeded )
-			{
-				bMatch = FALSE;
-				for ( n = 0; n < prf2->u.s2.cPins2; n++ )
-				{
-					pRegFilterPin = &prf2->u.s2.rgPins2[n];
-					if ( !(pRegFilterPin->dwFlags & REG_PINFLAG_B_OUTPUT) )
-						continue;
-					bMatch = QUARTZ_CheckPinType( bExactMatch, pRegFilterPin, cOutputTypes, pguidOutputTypes, pPinMediumOut, pPinCategoryOut, FALSE );
-					if ( bMatch )
-						break;
-				}
-				if ( !bMatch )
-				{
-					TRACE("no matching output pin\n");
-					continue;
-				}
-			}
-
-			/* matched - add pFilter to the list. */
-			pItemsTmp = QUARTZ_ReallocMem( pItems, sizeof(struct MATCHED_ITEM) * (cItems+1) );
-			if ( pItemsTmp == NULL )
-			{
-				hr = E_OUTOFMEMORY;
-				goto err;
-			}
-			pItems = pItemsTmp;
-			pItemsTmp = pItems + cItems; cItems ++;
-			pItemsTmp->pMonFilter = pFilter; pFilter = NULL;
-			pItemsTmp->dwMerit = prf2->dwMerit;
-		}
-	}
-
-	if ( pItems == NULL || cItems == 0 )
-	{
-		hr = S_FALSE;
-		goto err;
-	}
-
-	/* FIXME - sort in Merit order */
-	TRACE("sort in Merit order\n");
-	qsort( pItems, cItems, sizeof(struct MATCHED_ITEM), sort_comp_merit );
-
-	pListFilters = QUARTZ_CompList_Alloc();
-	if ( pListFilters == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto err;
-	}
-	for ( n = 0; n < cItems; n++ )
-	{
-		TRACE("merit %08lx\n",pItems[n].dwMerit);
-		hr = QUARTZ_CompList_AddComp( pListFilters, (IUnknown*)pItems[n].pMonFilter, NULL, 0 );
-		if ( FAILED(hr) )
-			goto err;
-	}
-
-	hr = QUARTZ_CreateEnumUnknown( &IID_IEnumMoniker, (void**)ppEnumMoniker, pListFilters );
-	if ( FAILED(hr) )
-		goto err;
-
-	hr = S_OK;
-err:
-	if ( pEnum != NULL )
-		ICreateDevEnum_Release(pEnum);
-	if ( pCategories != NULL )
-		IEnumMoniker_Release(pCategories);
-	if ( pCat != NULL )
-		IMoniker_Release(pCat);
-	if ( pCatFilters != NULL )
-		IEnumMoniker_Release(pCatFilters);
-	if ( pFilter != NULL )
-		IMoniker_Release(pFilter);
-	if ( pbFilterData != NULL )
-		QUARTZ_FreeMem(pbFilterData);
-	if ( prf2 != NULL )
-		QUARTZ_FreeMem(prf2);
-	if ( pItems != NULL && cItems > 0 )
-	{
-		for ( n = 0; n < cItems; n++ )
-		{
-			if ( pItems[n].pMonFilter != NULL )
-				IMoniker_Release(pItems[n].pMonFilter);
-		}
-		QUARTZ_FreeMem(pItems);
-	}
-	if ( pListFilters != NULL )
-		QUARTZ_CompList_Free( pListFilters );
-
-	TRACE("returns %08lx\n",hr);
-
-	return hr;
-}
-
-
-
-
-static ICOM_VTABLE(IFilterMapper2) ifmap2 =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IFilterMapper2_fnQueryInterface,
-	IFilterMapper2_fnAddRef,
-	IFilterMapper2_fnRelease,
-	/* IFilterMapper2 fields */
-	IFilterMapper2_fnCreateCategory,
-	IFilterMapper2_fnUnregisterFilter,
-	IFilterMapper2_fnRegisterFilter,
-	IFilterMapper2_fnEnumMatchingFilters,
-};
-
-
-HRESULT CFilterMapper2_InitIFilterMapper2( CFilterMapper2* pfm )
-{
-	TRACE("(%p)\n",pfm);
-	ICOM_VTBL(&pfm->fmap2) = &ifmap2;
-
-	return NOERROR;
-}
-
-void CFilterMapper2_UninitIFilterMapper2( CFilterMapper2* pfm )
-{
-	TRACE("(%p)\n",pfm);
-}
-
diff --git a/dlls/quartz/fmap.h b/dlls/quartz/fmap.h
deleted file mode 100644
index 8c5981f..0000000
--- a/dlls/quartz/fmap.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_FMAP_H
-#define	WINE_DSHOW_FMAP_H
-
-/*
-		implements CLSID_FilterMapper.
-
-	- At least, the following interfaces should be implemented:
-
-	IUnknown
-		+ IFilterMapper
- */
-
-#include "iunk.h"
-
-
-typedef struct FM_IFilterMapperImpl
-{
-	ICOM_VFIELD(IFilterMapper);
-} FM_IFilterMapperImpl;
-
-typedef struct CFilterMapper
-{
-	QUARTZ_IUnkImpl	unk;
-	FM_IFilterMapperImpl	fmap;
-} CFilterMapper;
-
-#define	CFilterMapper_THIS(iface,member)		CFilterMapper*	This = ((CFilterMapper*)(((char*)iface)-offsetof(CFilterMapper,member)))
-
-HRESULT QUARTZ_CreateFilterMapper(IUnknown* punkOuter,void** ppobj);
-
-
-HRESULT CFilterMapper_InitIFilterMapper( CFilterMapper* pfm );
-void CFilterMapper_UninitIFilterMapper( CFilterMapper* pfm );
-
-
-
-/*
-		implements CLSID_FilterMapper2.
-
-	- At least, the following interfaces should be implemented:
-
-	IUnknown
-		+ IFilterMapper2
- */
-
-
-typedef struct FM2_IFilterMapper2Impl
-{
-	ICOM_VFIELD(IFilterMapper2);
-} FM2_IFilterMapper2Impl;
-
-typedef struct CFilterMapper2
-{
-	QUARTZ_IUnkImpl	unk;
-	FM2_IFilterMapper2Impl	fmap2;
-	/* IFilterMapper2 fields */
-} CFilterMapper2;
-
-#define	CFilterMapper2_THIS(iface,member)		CFilterMapper2*	This = ((CFilterMapper2*)(((char*)iface)-offsetof(CFilterMapper2,member)))
-
-HRESULT QUARTZ_CreateFilterMapper2(IUnknown* punkOuter,void** ppobj);
-
-
-HRESULT CFilterMapper2_InitIFilterMapper2( CFilterMapper2* psde );
-void CFilterMapper2_UninitIFilterMapper2( CFilterMapper2* psde );
-
-#endif	/* WINE_DSHOW_FMAP_H */
diff --git a/dlls/quartz/ifgraph.c b/dlls/quartz/ifgraph.c
deleted file mode 100644
index e713c21..0000000
--- a/dlls/quartz/ifgraph.c
+++ /dev/null
@@ -1,1521 +0,0 @@
-/*
- * Implementation of IFilterGraph and related interfaces
- *	+ IGraphVersion
- *
- * FIXME - create a thread to process some methods correctly.
- *
- * FIXME - ReconnectEx
- * FIXME - process Pause/Stop asynchronously and notify when completed.
- *
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "winreg.h"
-#include "strmif.h"
-#include "control.h"
-#include "uuids.h"
-#include "vfwmsgs.h"
-#include "evcode.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "fgraph.h"
-#include "enumunk.h"
-#include "sysclock.h"
-#include "regsvr.h"
-
-
-#ifndef NUMELEMS
-#define NUMELEMS(elem)	(sizeof(elem)/sizeof(elem[0]))
-#endif	/* NUMELEMS */
-
-static HRESULT CFilterGraph_DisconnectAllPins( IBaseFilter* pFilter )
-{
-	IEnumPins*	pEnum = NULL;
-	IPin*	pPin;
-	IPin*	pConnTo;
-	ULONG	cFetched;
-	HRESULT	hr;
-
-	hr = IBaseFilter_EnumPins( pFilter, &pEnum );
-	if ( FAILED(hr) )
-		return hr;
-	if ( pEnum == NULL )
-		return E_FAIL;
-
-	while ( 1 )
-	{
-		pPin = NULL;
-		cFetched = 0;
-		hr = IEnumPins_Next( pEnum, 1, &pPin, &cFetched );
-		if ( FAILED(hr) )
-			break;
-		if ( hr != NOERROR || pPin == NULL || cFetched != 1 )
-		{
-			hr = NOERROR;
-			break;
-		}
-
-		pConnTo = NULL;
-		hr = IPin_ConnectedTo(pPin,&pConnTo);
-		if ( hr == NOERROR && pConnTo != NULL )
-		{
-			IPin_Disconnect(pPin);
-			IPin_Disconnect(pConnTo);
-			IPin_Release(pConnTo);
-		}
-
-		IPin_Release( pPin );
-	}
-
-	IEnumPins_Release( pEnum );
-
-	return hr;
-}
-
-
-static HRESULT CFilterGraph_GraphChanged( CFilterGraph* This )
-{
-	/* IDistributorNotify_NotifyGraphChange() */
-
-	This->m_lGraphVersion ++;
-
-	return NOERROR;
-}
-
-/***************************************************************************
- *
- *	CFilterGraph internal methods for IFilterGraph2::AddSourceFilter().
- *
- */
-
-static HRESULT QUARTZ_PeekFile(
-	const WCHAR* pwszFileName,
-	BYTE* pData, DWORD cbData, DWORD* pcbRead )
-{
-	HANDLE	hFile;
-	HRESULT hr = E_FAIL;
-
-	*pcbRead = 0;
-	hFile = CreateFileW( pwszFileName,
-		GENERIC_READ, FILE_SHARE_READ,
-		NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)NULL );
-	if ( hFile == INVALID_HANDLE_VALUE )
-		return E_FAIL;
-	if ( ReadFile( hFile, pData, cbData, pcbRead, NULL ) )
-		hr = NOERROR;
-	CloseHandle( hFile );
-
-	return hr;
-}
-
-
-static const WCHAR* skip_space(const WCHAR* pwsz)
-{
-	if ( pwsz == NULL ) return NULL;
-	while ( *pwsz == (WCHAR)' ' ) pwsz++;
-	return pwsz;
-}
-
-static const WCHAR* get_dword(const WCHAR* pwsz,DWORD* pdw)
-{
-	DWORD	dw = 0;
-
-	*pdw = 0;
-	if ( pwsz == NULL ) return NULL;
-	while ( *pwsz >= (WCHAR)'0' && *pwsz <= (WCHAR)'9' )
-	{
-		dw = dw * 10 + (DWORD)(*pwsz-(WCHAR)'0');
-		pwsz ++;
-	}
-	*pdw = dw;
-	return pwsz;
-}
-
-static int wchar_to_hex(WCHAR wch)
-{
-	if ( wch >= (WCHAR)'0' && wch <= (WCHAR)'9' )
-		return (int)(wch - (WCHAR)'0');
-	if ( wch >= (WCHAR)'A' && wch <= (WCHAR)'F' )
-		return (int)(wch - (WCHAR)'A' + 10);
-	if ( wch >= (WCHAR)'a' && wch <= (WCHAR)'f' )
-		return (int)(wch - (WCHAR)'a' + 10);
-	return -1;
-}
-
-static const WCHAR* get_hex(const WCHAR* pwsz,BYTE* pb)
-{
-	int	hi,lo;
-
-	*pb = 0;
-	if ( pwsz == NULL ) return NULL;
-	hi = wchar_to_hex(*pwsz); if ( hi < 0 ) return NULL; pwsz++;
-	lo = wchar_to_hex(*pwsz); if ( lo < 0 ) return NULL; pwsz++;
-	*pb = (BYTE)( (hi << 4) | lo );
-	return pwsz;
-}
-
-static const WCHAR* skip_hex(const WCHAR* pwsz)
-{
-	if ( pwsz == NULL ) return NULL;
-	while ( 1 )
-	{
-		if ( wchar_to_hex(*pwsz) < 0 )
-			break;
-		pwsz++;
-	}
-	return pwsz;
-}
-
-static const WCHAR* next_token(const WCHAR* pwsz)
-{
-	if ( pwsz == NULL ) return NULL;
-	pwsz = skip_space(pwsz);
-	if ( *pwsz != (WCHAR)',' ) return NULL; pwsz++;
-	return skip_space(pwsz);
-}
-
-
-static HRESULT QUARTZ_SourceTypeIsMatch(
-	const BYTE* pData, DWORD cbData,
-	const WCHAR* pwszTempl, DWORD cchTempl )
-{
-	DWORD	dwOfs;
-	DWORD	n;
-	DWORD	cbLen;
-	const WCHAR*	pwszMask;
-	const WCHAR*	pwszValue;
-	BYTE	bMask;
-	BYTE	bValue;
-
-	TRACE("(%p,%lu,%s,%lu)\n",pData,cbData,debugstr_w(pwszTempl),cchTempl);
-
-	pwszTempl = skip_space(pwszTempl);
-	while ( 1 )
-	{
-		pwszTempl = get_dword(pwszTempl,&dwOfs);
-		pwszTempl = next_token(pwszTempl);
-		pwszTempl = get_dword(pwszTempl,&cbLen);
-		pwszMask = pwszTempl = next_token(pwszTempl);
-		pwszTempl = skip_hex(pwszTempl);
-		pwszValue = pwszTempl = next_token(pwszTempl);
-		pwszTempl = skip_hex(pwszValue);
-		pwszTempl = skip_space(pwszTempl);
-		if ( pwszValue == NULL )
-		{
-			WARN( "parse error\n" );
-			return S_FALSE;
-		}
-
-		if ( dwOfs >= cbData || ( (dwOfs+cbLen) >= cbData ) )
-		{
-			WARN( "length of given data is too short\n" );
-			return S_FALSE;
-		}
-
-		for ( n = 0; n < cbLen; n++ )
-		{
-			pwszMask = get_hex(pwszMask,&bMask);
-			if ( pwszMask == NULL ) bMask = 0xff;
-			pwszValue = get_hex(pwszValue,&bValue);
-			if ( pwszValue == NULL )
-			{
-				WARN( "parse error - invalid hex data\n" );
-				return S_FALSE;
-			}
-			if ( (pData[dwOfs+n]&bMask) != (bValue&bMask) )
-			{
-				TRACE( "not matched\n" );
-				return S_FALSE;
-			}
-		}
-
-		if ( *pwszTempl == 0 )
-			break;
-		pwszTempl = next_token(pwszTempl);
-		if ( pwszTempl == NULL )
-		{
-			WARN( "parse error\n" );
-			return S_FALSE;
-		}
-	}
-
-	TRACE( "matched\n" );
-	return NOERROR;
-}
-
-static HRESULT QUARTZ_GetSourceTypeFromData(
-	const BYTE* pData, DWORD cbData,
-	GUID* pidMajor, GUID* pidSub, CLSID* pidSource )
-{
-	HRESULT	hr = S_FALSE;
-	LONG	lr;
-	WCHAR	wszMajor[128];
-	WCHAR	wszSub[128];
-	WCHAR	wszSource[128];
-	WCHAR	wszSourceFilter[128];
-	WCHAR*	pwszLocalBuf = NULL;
-	WCHAR*	pwszTemp;
-	DWORD	cbLocalBuf = 0;
-	DWORD	cbPath;
-	DWORD	dwIndexMajor;
-	HKEY	hkMajor;
-	DWORD	dwIndexSub;
-	HKEY	hkSub;
-	DWORD	dwIndexSource;
-	HKEY	hkSource;
-	DWORD	dwRegType;
-	DWORD	cbRegData;
-	FILETIME	ftLastWrite;
-	static const WCHAR wszFmt[] = {'%','l','u',0};
-
-	if ( RegOpenKeyExW( HKEY_CLASSES_ROOT, QUARTZ_wszMediaType, 0, KEY_READ, &hkMajor ) == ERROR_SUCCESS )
-	{
-		dwIndexMajor = 0;
-		while ( hr == S_FALSE )
-		{
-			cbPath = NUMELEMS(wszMajor)-1;
-			lr = RegEnumKeyExW(
-				hkMajor, dwIndexMajor ++, wszMajor, &cbPath,
-				NULL, NULL, NULL, &ftLastWrite );
-			if ( lr != ERROR_SUCCESS )
-				break;
-			if ( RegOpenKeyExW( hkMajor, wszMajor, 0, KEY_READ, &hkSub ) == ERROR_SUCCESS )
-			{
-				dwIndexSub = 0;
-				while ( hr == S_FALSE )
-				{
-					cbPath = NUMELEMS(wszSub)-1;
-					lr = RegEnumKeyExW(
-						hkSub, dwIndexSub ++, wszSub, &cbPath,
-						NULL, NULL, NULL, &ftLastWrite );
-					if ( lr != ERROR_SUCCESS )
-						break;
-					if ( RegOpenKeyExW( hkSub, wszSub, 0, KEY_READ, &hkSource ) == ERROR_SUCCESS )
-					{
-						dwIndexSource = 0;
-						while ( hr == S_FALSE )
-						{
-							wsprintfW(wszSource,wszFmt,dwIndexSource++);
-							lr = RegQueryValueExW(
-								hkSource, wszSource, NULL,
-								&dwRegType, NULL, &cbRegData );
-							if ( lr != ERROR_SUCCESS )
-								break;
-							if ( cbLocalBuf < cbRegData )
-							{
-								pwszTemp = (WCHAR*)QUARTZ_ReallocMem( pwszLocalBuf, cbRegData+sizeof(WCHAR) );
-								if ( pwszTemp == NULL )
-								{
-									hr = E_OUTOFMEMORY;
-									break;
-								}
-								pwszLocalBuf = pwszTemp;
-								cbLocalBuf = cbRegData+sizeof(WCHAR);
-							}
-							cbRegData = cbLocalBuf;
-							lr = RegQueryValueExW(
-								hkSource, wszSource, NULL,
-								&dwRegType, (BYTE*)pwszLocalBuf, &cbRegData );
-							if ( lr != ERROR_SUCCESS )
-								break;
-
-							hr = QUARTZ_SourceTypeIsMatch(
-								pData, cbData,
-								pwszLocalBuf, cbRegData / sizeof(WCHAR) );
-							if ( hr == S_OK )
-							{
-								hr = CLSIDFromString(wszMajor,pidMajor);
-								if ( hr == NOERROR )
-									hr = CLSIDFromString(wszSub,pidSub);
-								if ( hr == NOERROR )
-								{
-									lstrcpyW(wszSource,QUARTZ_wszSourceFilter);
-									cbRegData = NUMELEMS(wszSourceFilter)-sizeof(WCHAR);
-									lr = RegQueryValueExW(
-										hkSource, wszSource, NULL,
-										&dwRegType,
-										(BYTE*)wszSourceFilter, &cbRegData );
-									if ( lr == ERROR_SUCCESS )
-									{
-										hr = CLSIDFromString(wszSourceFilter,pidSource);
-									}
-									else
-										hr = E_FAIL;
-								}
-
-								if ( hr != NOERROR && SUCCEEDED(hr) )
-									hr = E_FAIL;
-							}
-							if ( hr != S_FALSE )
-								break;
-						}
-						RegCloseKey( hkSource );
-					}
-				}
-				RegCloseKey( hkSub );
-			}
-		}
-		RegCloseKey( hkMajor );
-	}
-
-	if ( pwszLocalBuf != NULL )
-		QUARTZ_FreeMem(pwszLocalBuf);
-
-	return hr;
-}
-
-
-
-/***************************************************************************
- *
- *	CFilterGraph::IFilterGraph2 methods
- *
- */
-
-static HRESULT WINAPI
-IFilterGraph2_fnQueryInterface(IFilterGraph2* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,fgraph);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IFilterGraph2_fnAddRef(IFilterGraph2* iface)
-{
-	CFilterGraph_THIS(iface,fgraph);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IFilterGraph2_fnRelease(IFilterGraph2* iface)
-{
-	CFilterGraph_THIS(iface,fgraph);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnAddFilter(IFilterGraph2* iface,IBaseFilter* pFilter, LPCWSTR pName)
-{
-	CFilterGraph_THIS(iface,fgraph);
-	FILTER_STATE fs;
-	FILTER_INFO	info;
-	IBaseFilter*	pTempFilter;
-	FG_FilterData*	pActiveFiltersNew;
-	HRESULT	hr;
-	HRESULT	hrSucceeded = S_OK;
-	int i,iLen;
-
-	TRACE( "(%p)->(%p,%s)\n",This,pFilter,debugstr_w(pName) );
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	hr = IMediaFilter_GetState(CFilterGraph_IMediaFilter(This),0,&fs);
-	if ( hr == VFW_S_STATE_INTERMEDIATE )
-		hr = VFW_E_STATE_CHANGED;
-	if ( fs != State_Stopped )
-		hr = VFW_E_NOT_STOPPED;
-	if ( FAILED(hr) )
-		goto end;
-
-	TRACE( "(%p) search the specified name.\n",This );
-
-	if ( pName != NULL )
-	{
-		hr = IFilterGraph2_FindFilterByName( CFilterGraph_IFilterGraph2(This), pName, &pTempFilter );
-		if ( hr == S_OK )
-		{
-			IBaseFilter_Release(pTempFilter);
-			hrSucceeded = VFW_S_DUPLICATE_NAME;
-		}
-		else
-		{
-			goto name_ok;
-		}
-
-		iLen = lstrlenW(pName);
-		if ( iLen > 32 )
-			iLen = 32;
-		memcpy( info.achName, pName, sizeof(WCHAR)*iLen );
-		info.achName[iLen] = 0;
-	}
-	else
-	{
-		ZeroMemory( &info, sizeof(info) );
-		hr = IBaseFilter_QueryFilterInfo( pFilter, &info );
-		if ( FAILED(hr) )
-			goto end;
-		if ( info.pGraph != NULL )
-		{
-			IFilterGraph_Release(info.pGraph);
-			hr = E_FAIL;	/* FIXME */
-			goto end;
-		}
-
-		hr = IFilterGraph2_FindFilterByName( CFilterGraph_IFilterGraph2(This), pName, &pTempFilter );
-		if ( hr != S_OK )
-		{
-			pName = info.achName;
-			goto name_ok;
-		}
-	}
-
-	/* generate modified names for this filter.. */
-	iLen = lstrlenW(info.achName);
-	if ( iLen > 32 )
-		iLen = 32;
-	info.achName[iLen++] = ' ';
-
-	for ( i = 0; i <= 99; i++ )
-	{
-		info.achName[iLen+0] = (i%10) + '0';
-		info.achName[iLen+1] = ((i/10)%10) + '0';
-		info.achName[iLen+2] = 0;
-
-		hr = IFilterGraph2_FindFilterByName( CFilterGraph_IFilterGraph2(This), info.achName, &pTempFilter );
-		if ( hr != S_OK )
-		{
-			pName = info.achName;
-			goto name_ok;
-		}
-	}
-
-	hr = ( pName == NULL ) ? E_FAIL : VFW_E_DUPLICATE_NAME;
-	goto end;
-
-name_ok:
-	TRACE( "(%p) add this filter - %s.\n",This,debugstr_w(pName) );
-
-	/* register this filter. */
-	pActiveFiltersNew = (FG_FilterData*)QUARTZ_ReallocMem(
-		This->m_pActiveFilters,
-		sizeof(FG_FilterData) * (This->m_cActiveFilters+1) );
-	if ( pActiveFiltersNew == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto end;
-	}
-	This->m_pActiveFilters = pActiveFiltersNew;
-	pActiveFiltersNew = &This->m_pActiveFilters[This->m_cActiveFilters];
-
-	pActiveFiltersNew->pFilter = NULL;
-	pActiveFiltersNew->pPosition = NULL;
-	pActiveFiltersNew->pSeeking = NULL;
-	pActiveFiltersNew->pwszName = NULL;
-	pActiveFiltersNew->cbName = 0;
-
-	pActiveFiltersNew->cbName = sizeof(WCHAR)*(lstrlenW(pName)+1);
-	pActiveFiltersNew->pwszName = (WCHAR*)QUARTZ_AllocMem( pActiveFiltersNew->cbName );
-	if ( pActiveFiltersNew->pwszName == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto end;
-	}
-	memcpy( pActiveFiltersNew->pwszName, pName, pActiveFiltersNew->cbName );
-
-	pActiveFiltersNew->pFilter = pFilter;
-	IBaseFilter_AddRef(pFilter);
-	IBaseFilter_QueryInterface( pFilter, &IID_IMediaPosition, (void**)&pActiveFiltersNew->pPosition );
-	IBaseFilter_QueryInterface( pFilter, &IID_IMediaSeeking, (void**)&pActiveFiltersNew->pSeeking );
-
-	This->m_cActiveFilters ++;
-
-	hr = IBaseFilter_JoinFilterGraph(pFilter,(IFilterGraph*)iface,pName);
-	if ( SUCCEEDED(hr) )
-	{
-		EnterCriticalSection( &This->m_csClock );
-		hr = IBaseFilter_SetSyncSource( pFilter, This->m_pClock );
-		LeaveCriticalSection( &This->m_csClock );
-	}
-	if ( FAILED(hr) )
-	{
-		IBaseFilter_JoinFilterGraph(pFilter,NULL,pName);
-		IFilterGraph2_RemoveFilter(CFilterGraph_IFilterGraph2(This),pFilter);
-		goto end;
-	}
-
-	hr = CFilterGraph_GraphChanged(This);
-	if ( FAILED(hr) )
-		goto end;
-
-	hr = hrSucceeded;
-end:
-	LeaveCriticalSection( &This->m_csFilters );
-
-	TRACE( "(%p) return %08lx\n", This, hr );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnRemoveFilter(IFilterGraph2* iface,IBaseFilter* pFilter)
-{
-	CFilterGraph_THIS(iface,fgraph);
-	FILTER_STATE fs;
-	DWORD	n,copy;
-	HRESULT	hr = NOERROR;
-
-	TRACE( "(%p)->(%p)\n",This,pFilter );
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	hr = IMediaFilter_GetState(CFilterGraph_IMediaFilter(This),0,&fs);
-	if ( hr == VFW_S_STATE_INTERMEDIATE )
-		hr = VFW_E_STATE_CHANGED;
-	if ( fs != State_Stopped )
-		hr = VFW_E_NOT_STOPPED;
-	if ( FAILED(hr) )
-		goto end;
-
-	hr = S_FALSE; /* FIXME? */
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pFilter == pFilter )
-		{
-			CFilterGraph_DisconnectAllPins(pFilter);
-			(void)IBaseFilter_SetSyncSource( pFilter, NULL );
-			(void)IBaseFilter_JoinFilterGraph(
-				pFilter, NULL, This->m_pActiveFilters[n].pwszName );
-
-			if ( This->m_pActiveFilters[n].pFilter != NULL )
-				IBaseFilter_Release(This->m_pActiveFilters[n].pFilter);
-			if ( This->m_pActiveFilters[n].pPosition != NULL )
-				IMediaPosition_Release(This->m_pActiveFilters[n].pPosition);
-			if ( This->m_pActiveFilters[n].pSeeking != NULL )
-				IMediaSeeking_Release(This->m_pActiveFilters[n].pSeeking);
-			if ( This->m_pActiveFilters[n].pwszName != NULL )
-				QUARTZ_FreeMem(This->m_pActiveFilters[n].pwszName);
-
-			copy = This->m_cActiveFilters - n - 1;
-			if ( copy > 0 )
-				memmove( &This->m_pActiveFilters[n],
-						 &This->m_pActiveFilters[n+1],
-						 sizeof(FG_FilterData) * copy );
-			This->m_cActiveFilters --;
-
-			hr = CFilterGraph_GraphChanged(This);
-			break;
-		}
-	}
-
-end:;
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnEnumFilters(IFilterGraph2* iface,IEnumFilters** ppEnum)
-{
-	CFilterGraph_THIS(iface,fgraph);
-	QUARTZ_CompList*	pList = NULL;
-	DWORD	n;
-	HRESULT	hr;
-
-	TRACE( "(%p)->(%p)\n",This,ppEnum );
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	pList = QUARTZ_CompList_Alloc();
-	if ( pList == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto err;
-	}
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		hr = QUARTZ_CompList_AddTailComp(
-			pList, (IUnknown*)This->m_pActiveFilters[n].pFilter, NULL, 0 );
-		if ( FAILED(hr) )
-			goto err;
-	}
-
-	hr = QUARTZ_CreateEnumUnknown(
-		&IID_IEnumFilters, (void**)ppEnum, pList );
-err:
-	if ( pList != NULL )
-		QUARTZ_CompList_Free( pList );
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnFindFilterByName(IFilterGraph2* iface,LPCWSTR pName,IBaseFilter** ppFilter)
-{
-	CFilterGraph_THIS(iface,fgraph);
-	DWORD	n;
-	DWORD	cbName;
-	HRESULT	hr = E_FAIL;	/* FIXME */
-
-	TRACE( "(%p)->(%s,%p)\n",This,debugstr_w(pName),ppFilter );
-
-	if ( pName == NULL || ppFilter == NULL )
-		return E_POINTER;
-	*ppFilter = NULL;
-
-	cbName = sizeof(WCHAR) * (lstrlenW(pName) + 1);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].cbName == cbName &&
-			 !memcmp( This->m_pActiveFilters[n].pwszName, pName, cbName ) )
-		{
-			*ppFilter = This->m_pActiveFilters[n].pFilter;
-			IBaseFilter_AddRef(*ppFilter);
-			hr = NOERROR;
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnConnectDirect(IFilterGraph2* iface,IPin* pOut,IPin* pIn,const AM_MEDIA_TYPE* pmt)
-{
-	CFilterGraph_THIS(iface,fgraph);
-	IPin*	pConnTo;
-	PIN_INFO	infoIn;
-	PIN_INFO	infoOut;
-	FILTER_INFO	finfoIn;
-	FILTER_INFO	finfoOut;
-	FILTER_STATE	fs;
-	HRESULT	hr;
-
-	TRACE( "(%p)->(%p,%p,%p)\n",This,pOut,pIn,pmt );
-
-	infoIn.pFilter = NULL;
-	infoOut.pFilter = NULL;
-	finfoIn.pGraph = NULL;
-	finfoOut.pGraph = NULL;
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	hr = IMediaFilter_GetState(CFilterGraph_IMediaFilter(This),0,&fs);
-	if ( hr == VFW_S_STATE_INTERMEDIATE )
-		hr = VFW_E_STATE_CHANGED;
-	if ( fs != State_Stopped )
-		hr = VFW_E_NOT_STOPPED;
-	if ( FAILED(hr) )
-		goto end;
-
-	hr = IPin_QueryPinInfo(pIn,&infoIn);
-	if ( FAILED(hr) )
-		goto end;
-	hr = IPin_QueryPinInfo(pOut,&infoOut);
-	if ( FAILED(hr) )
-		goto end;
-	if ( infoIn.pFilter == NULL || infoOut.pFilter == NULL ||
-		 infoIn.dir != PINDIR_INPUT || infoOut.dir != PINDIR_OUTPUT )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-
-	hr = IBaseFilter_QueryFilterInfo(infoIn.pFilter,&finfoIn);
-	if ( FAILED(hr) )
-		goto end;
-	hr = IBaseFilter_QueryFilterInfo(infoOut.pFilter,&finfoOut);
-	if ( FAILED(hr) )
-		goto end;
-	if ( finfoIn.pGraph != ((IFilterGraph*)iface) ||
-		 finfoOut.pGraph != ((IFilterGraph*)iface) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-
-	pConnTo = NULL;
-	hr = IPin_ConnectedTo(pIn,&pConnTo);
-	if ( hr == NOERROR && pConnTo != NULL )
-	{
-		IPin_Release(pConnTo);
-		hr = VFW_E_ALREADY_CONNECTED;
-		goto end;
-	}
-
-	pConnTo = NULL;
-	hr = IPin_ConnectedTo(pOut,&pConnTo);
-	if ( hr == NOERROR && pConnTo != NULL )
-	{
-		IPin_Release(pConnTo);
-		hr = VFW_E_ALREADY_CONNECTED;
-		goto end;
-	}
-
-	TRACE("(%p) try to connect %p<->%p\n",This,pIn,pOut);
-	hr = IPin_Connect(pOut,pIn,pmt);
-	if ( FAILED(hr) )
-	{
-		TRACE("(%p)->Connect(%p,%p) hr = %08lx\n",pOut,pIn,pmt,hr);
-		IPin_Disconnect(pOut);
-		IPin_Disconnect(pIn);
-		goto end;
-	}
-
-	hr = CFilterGraph_GraphChanged(This);
-	if ( FAILED(hr) )
-		goto end;
-
-end:
-	LeaveCriticalSection( &This->m_csFilters );
-
-	if ( infoIn.pFilter != NULL )
-		IBaseFilter_Release(infoIn.pFilter);
-	if ( infoOut.pFilter != NULL )
-		IBaseFilter_Release(infoOut.pFilter);
-	if ( finfoIn.pGraph != NULL )
-		IFilterGraph_Release(finfoIn.pGraph);
-	if ( finfoOut.pGraph != NULL )
-		IFilterGraph_Release(finfoOut.pGraph);
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnReconnect(IFilterGraph2* iface,IPin* pPin)
-{
-	CFilterGraph_THIS(iface,fgraph);
-
-	TRACE( "(%p)->(%p)\n",This,pPin );
-
-	return IFilterGraph2_ReconnectEx(iface,pPin,NULL);
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnDisconnect(IFilterGraph2* iface,IPin* pPin)
-{
-	CFilterGraph_THIS(iface,fgraph);
-	IPin* pConnTo;
-	HRESULT hr;
-
-	TRACE( "(%p)->(%p)\n",This,pPin );
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	pConnTo = NULL;
-	hr = IPin_ConnectedTo(pPin,&pConnTo);
-	if ( hr == NOERROR && pConnTo != NULL )
-	{
-		IPin_Disconnect(pConnTo);
-		IPin_Release(pConnTo);
-	}
-	hr = IPin_Disconnect(pPin);
-	if ( FAILED(hr) )
-		goto end;
-
-	hr = CFilterGraph_GraphChanged(This);
-	if ( FAILED(hr) )
-		goto end;
-
-end:
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnSetDefaultSyncSource(IFilterGraph2* iface)
-{
-	CFilterGraph_THIS(iface,fgraph);
-	IUnknown* punk;
-	IReferenceClock* pClock;
-	HRESULT hr;
-
-	FIXME( "(%p)->() stub!\n", This );
-
-	/* FIXME - search all filters from renderer. */
-
-	hr = QUARTZ_CreateSystemClock( NULL, (void**)&punk );
-	if ( FAILED(hr) )
-		return hr;
-	hr = IUnknown_QueryInterface( punk, &IID_IReferenceClock, (void**)&pClock );	IUnknown_Release( punk );
-	if ( FAILED(hr) )
-		return hr;
-
-	hr = IMediaFilter_SetSyncSource(
-		CFilterGraph_IMediaFilter(This), pClock );
-	IReferenceClock_Release( pClock );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnConnect(IFilterGraph2* iface,IPin* pOut,IPin* pIn)
-{
-	CFilterGraph_THIS(iface,fgraph);
-	IFilterMapper2*	pMap2 = NULL;
-	IEnumMoniker*	pEnumMon = NULL;
-	IMoniker*	pMon = NULL;
-	IBaseFilter*	pFilter = NULL;
-	IEnumPins*	pEnumPin = NULL;
-	IPin*	pPinTry = NULL;
-	PIN_INFO	info;
-	PIN_DIRECTION	pindir;
-	ULONG	cReturned;
-	BOOL	bTryConnect;
-	BOOL	bConnected = FALSE;
-	CLSID	clsidOutFilter;
-	CLSID	clsidInFilter;
-	CLSID	clsid;
-	HRESULT	hr;
-
-	TRACE( "(%p)->(%p,%p)\n",This,pOut,pIn );
-
-	/* At first, try to connect directly. */
-	hr = IFilterGraph_ConnectDirect(iface,pOut,pIn,NULL);
-	if ( hr == NOERROR )
-		return NOERROR;
-
-	/* FIXME - try to connect indirectly. */
-	FIXME( "(%p)->(%p,%p) not fully implemented\n",This,pOut,pIn );
-
-	info.pFilter = NULL;
-	hr = IPin_QueryPinInfo(pOut,&info);
-	if ( FAILED(hr) )
-		return hr;
-	if ( info.pFilter == NULL )
-		return E_FAIL;
-	hr = IBaseFilter_GetClassID(info.pFilter,&clsidOutFilter);
-	IBaseFilter_Release(info.pFilter);
-	if ( FAILED(hr) )
-		return hr;
-
-	info.pFilter = NULL;
-	hr = IPin_QueryPinInfo(pIn,&info);
-	if ( FAILED(hr) )
-		return hr;
-	if ( info.pFilter == NULL )
-		return E_FAIL;
-	hr = IBaseFilter_GetClassID(info.pFilter,&clsidInFilter);
-	IBaseFilter_Release(info.pFilter);
-	if ( FAILED(hr) )
-		return hr;
-
-	/* FIXME - try to connect with unused filters. */
-	/* FIXME - try to connect with cached filters. */
-	/* FIXME - enumerate transform filters and try to connect */
-	hr = CoCreateInstance(
-		&CLSID_FilterMapper2, NULL, CLSCTX_INPROC_SERVER,
-		&IID_IFilterMapper2, (void**)&pMap2 );
-	if ( FAILED(hr) )
-		return hr;
-	hr = IFilterMapper2_EnumMatchingFilters(
-		pMap2,&pEnumMon,0,FALSE,MERIT_DO_NOT_USE+1,
-		TRUE,0,NULL,NULL,NULL,FALSE,
-		TRUE,0,NULL,NULL,NULL);
-	IFilterMapper2_Release(pMap2);
-	if ( FAILED(hr) )
-		return hr;
-	TRACE("try to connect indirectly\n");
-
-	if ( hr == S_OK )
-	{
-		while ( !bConnected && hr == S_OK )
-		{
-			hr = IEnumMoniker_Next(pEnumMon,1,&pMon,&cReturned);
-			if ( hr != S_OK )
-				break;
-			hr = IMoniker_BindToObject(pMon,NULL,NULL,&IID_IBaseFilter,(void**)&pFilter );
-			if ( hr == S_OK )
-			{
-				hr = IBaseFilter_GetClassID(pFilter,&clsid);
-				if ( hr == S_OK &&
-					 ( IsEqualGUID(&clsidOutFilter,&clsid) || IsEqualGUID(&clsidInFilter,&clsid) ) )
-					hr = S_FALSE;
-				else
-					hr = IFilterGraph2_AddFilter(iface,pFilter,NULL);
-				if ( hr == S_OK )
-				{
-					bTryConnect = FALSE;
-					hr = IBaseFilter_EnumPins(pFilter,&pEnumPin);
-					if ( hr == S_OK )
-					{
-						{
-							while ( !bTryConnect )
-							{
-								hr = IEnumPins_Next(pEnumPin,1,&pPinTry,&cReturned);
-								if ( hr != S_OK )
-									break;
-								hr = IPin_QueryDirection(pPinTry,&pindir);
-								if ( hr == S_OK && pindir == PINDIR_INPUT )
-								{
-									/* try to connect directly. */
-									hr = IFilterGraph2_ConnectDirect(iface,pOut,pPinTry,NULL);
-									if ( hr == S_OK )
-										bTryConnect = TRUE;
-									hr = S_OK;
-								}
-								IPin_Release(pPinTry); pPinTry = NULL;
-							}
-						}
-						IEnumPins_Release(pEnumPin); pEnumPin = NULL;
-					}
-					TRACE("TryConnect %d\n",bTryConnect);
-
-					if ( bTryConnect )
-					{
-						hr = IBaseFilter_EnumPins(pFilter,&pEnumPin);
-						if ( hr == S_OK )
-						{
-							while ( !bConnected )
-							{
-								hr = IEnumPins_Next(pEnumPin,1,&pPinTry,&cReturned);
-								if ( hr != S_OK )
-									break;
-								hr = IPin_QueryDirection(pPinTry,&pindir);
-								if ( hr == S_OK && pindir == PINDIR_OUTPUT )
-								{
-									/* try to connect indirectly. */
-									hr = IFilterGraph2_Connect(iface,pPinTry,pIn);
-									if ( hr == S_OK )
-										bConnected = TRUE;
-									hr = S_OK;
-								}
-								IPin_Release(pPinTry); pPinTry = NULL;
-							}
-							IEnumPins_Release(pEnumPin); pEnumPin = NULL;
-						}
-					}
-					if ( !bConnected )
-						hr = IFilterGraph2_RemoveFilter(iface,pFilter);
-				}
-				IBaseFilter_Release(pFilter); pFilter = NULL;
-				if ( SUCCEEDED(hr) )
-					hr = S_OK;
-			}
-			else
-			{
-				hr = S_OK;
-			}
-			IMoniker_Release(pMon); pMon = NULL;
-		}
-		IEnumMoniker_Release(pEnumMon); pEnumMon = NULL;
-	}
-
-	if ( SUCCEEDED(hr) && !bConnected )
-		hr = VFW_E_CANNOT_CONNECT;
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnRender(IFilterGraph2* iface,IPin* pOut)
-{
-	CFilterGraph_THIS(iface,fgraph);
-
-	TRACE( "(%p)->(%p)\n",This,pOut);
-
-	return IFilterGraph2_RenderEx( CFilterGraph_IFilterGraph2(This), pOut, 0, NULL );
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnRenderFile(IFilterGraph2* iface,LPCWSTR lpFileName,LPCWSTR lpPlayList)
-{
-	CFilterGraph_THIS(iface,fgraph);
-	HRESULT	hr;
-	IBaseFilter*	pFilter = NULL;
-	IEnumPins*	pEnum = NULL;
-	IPin*	pPin;
-	ULONG	cFetched;
-	PIN_DIRECTION	dir;
-	ULONG	cTryToRender;
-	ULONG	cActRender;
-
-	TRACE( "(%p)->(%s,%s)\n",This,
-		debugstr_w(lpFileName),debugstr_w(lpPlayList) );
-
-	if ( lpPlayList != NULL )
-		return E_INVALIDARG;
-
-	pFilter = NULL;
-	hr = IFilterGraph2_AddSourceFilter(iface,lpFileName,NULL,&pFilter);
-	if ( FAILED(hr) )
-		goto end;
-	if ( pFilter == NULL )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	TRACE("(%p) source filter %p\n",This,pFilter);
-
-	pEnum = NULL;
-	hr = IBaseFilter_EnumPins( pFilter, &pEnum );
-	if ( FAILED(hr) )
-		goto end;
-	if ( pEnum == NULL )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-
-	cTryToRender = 0;
-	cActRender = 0;
-
-	while ( 1 )
-	{
-		pPin = NULL;
-		cFetched = 0;
-		hr = IEnumPins_Next( pEnum, 1, &pPin, &cFetched );
-		if ( FAILED(hr) )
-			goto end;
-		if ( hr != NOERROR || pPin == NULL || cFetched != 1 )
-		{
-			hr = NOERROR;
-			break;
-		}
-		hr = IPin_QueryDirection( pPin, &dir );
-		if ( hr == NOERROR && dir == PINDIR_OUTPUT )
-		{
-			cTryToRender ++;
-			hr = IFilterGraph2_Render( iface, pPin );
-			if ( hr == NOERROR )
-				cActRender ++;
-		}
-		IPin_Release( pPin );
-	}
-
-	if ( hr == NOERROR )
-	{
-		if ( cTryToRender > cActRender )
-			hr = VFW_S_PARTIAL_RENDER;
-		if ( cActRender == 0 )
-			hr = E_FAIL;
-	}
-
-end:
-	if ( pEnum != NULL )
-		IEnumPins_Release( pEnum );
-	if ( pFilter != NULL )
-		IBaseFilter_Release( pFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnAddSourceFilter(IFilterGraph2* iface,LPCWSTR lpFileName,LPCWSTR lpFilterName,IBaseFilter** ppBaseFilter)
-{
-	CFilterGraph_THIS(iface,fgraph);
-	HRESULT	hr;
-	BYTE	bStartData[512];
-	DWORD	cbStartData;
-	AM_MEDIA_TYPE	mt;
-	CLSID	clsidSource;
-	IFileSourceFilter*	pSource;
-
-	TRACE( "(%p)->(%s,%s,%p)\n",This,
-		debugstr_w(lpFileName),debugstr_w(lpFilterName),ppBaseFilter );
-
-	if ( lpFileName == NULL || ppBaseFilter == NULL )
-		return E_POINTER;
-	*ppBaseFilter = NULL;
-
-	hr = QUARTZ_PeekFile( lpFileName, bStartData, 512, &cbStartData );
-	if ( FAILED(hr) )
-	{
-		FIXME("cannot open %s (NOTE: URL is not implemented)\n", debugstr_w(lpFileName));
-		return hr;
-	}
-	ZeroMemory( &mt, sizeof(AM_MEDIA_TYPE) );
-	mt.bFixedSizeSamples = 1;
-	mt.lSampleSize = 1;
-	memcpy( &mt.majortype, &MEDIATYPE_Stream, sizeof(GUID) );
-	memcpy( &mt.subtype, &MEDIASUBTYPE_NULL, sizeof(GUID) );
-	memcpy( &mt.formattype, &FORMAT_None, sizeof(GUID) );
-	hr = QUARTZ_GetSourceTypeFromData(
-		bStartData, cbStartData,
-		&mt.majortype, &mt.subtype, &clsidSource );
-	if ( FAILED(hr) )
-	{
-		ERR("QUARTZ_GetSourceTypeFromData() failed - return %08lx\n",hr);
-		return hr;
-	}
-	if ( hr != S_OK )
-	{
-		FIXME( "file %s - unknown format\n", debugstr_w(lpFileName) );
-		return VFW_E_INVALID_FILE_FORMAT;
-	}
-
-	hr = CoCreateInstance(
-		&clsidSource, NULL, CLSCTX_INPROC_SERVER,
-		&IID_IBaseFilter, (void**)ppBaseFilter );
-	if ( FAILED(hr) )
-		return hr;
-	hr = IBaseFilter_QueryInterface(*ppBaseFilter,&IID_IFileSourceFilter,(void**)&pSource);
-	if ( SUCCEEDED(hr) )
-	{
-		hr = IFileSourceFilter_Load(pSource,lpFileName,&mt);
-		IFileSourceFilter_Release(pSource);
-	}
-	if ( SUCCEEDED(hr) )
-		hr = IFilterGraph2_AddFilter(iface,*ppBaseFilter,lpFilterName);
-	if ( FAILED(hr) )
-	{
-		IBaseFilter_Release(*ppBaseFilter);
-		*ppBaseFilter = NULL;
-		return hr;
-	}
-
-	return S_OK;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnSetLogFile(IFilterGraph2* iface,DWORD_PTR hFile)
-{
-	CFilterGraph_THIS(iface,fgraph);
-
-	FIXME( "(%p)->() stub!\n", This );
-
-	return S_OK;	/* no debug output */
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnAbort(IFilterGraph2* iface)
-{
-	CFilterGraph_THIS(iface,fgraph);
-
-	FIXME( "(%p)->() stub!\n", This );
-
-	/* FIXME - abort the current asynchronous task. */
-
-	return S_OK;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnShouldOperationContinue(IFilterGraph2* iface)
-{
-	CFilterGraph_THIS(iface,fgraph);
-
-	FIXME( "(%p)->() stub!\n", This );
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnAddSourceFilterForMoniker(IFilterGraph2* iface,IMoniker* pMon,IBindCtx* pCtx,LPCWSTR pFilterName,IBaseFilter** ppFilter)
-{
-	CFilterGraph_THIS(iface,fgraph);
-
-	FIXME( "(%p)->() stub!\n", This );
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnReconnectEx(IFilterGraph2* iface,IPin* pPin,const AM_MEDIA_TYPE* pmt)
-{
-	CFilterGraph_THIS(iface,fgraph);
-	HRESULT hr;
-
-	FIXME( "(%p)->(%p,%p) stub!\n",This,pPin,pmt );
-
-	/* reconnect asynchronously. */
-
-	EnterCriticalSection( &This->m_csFilters );
-	hr = CFilterGraph_GraphChanged(This);
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IFilterGraph2_fnRenderEx(IFilterGraph2* iface,IPin* pOut,DWORD dwFlags,DWORD* pdwReserved)
-{
-	CFilterGraph_THIS(iface,fgraph);
-	HRESULT	hr;
-	IFilterMapper2*	pMap2 = NULL;
-	IEnumMoniker*	pEnumMon = NULL;
-	IMoniker*	pMon = NULL;
-	IBaseFilter*	pFilter = NULL;
-	IEnumPins*	pEnumPin = NULL;
-	IPin*	pPin = NULL;
-	PIN_DIRECTION	pindir;
-	BOOL	bRendered = FALSE;
-	ULONG	cReturned;
-
-	TRACE( "(%p)->(%p,%08lx,%p)\n",This,pPin,dwFlags,pdwReserved);
-
-	if ( pdwReserved != NULL )
-		return E_INVALIDARG;
-
-	if ( dwFlags != 0 )
-	{
-		FIXME( "dwFlags != 0 (0x%08lx)\n", dwFlags );
-		return E_INVALIDARG;
-	}
-
-	/* FIXME - must be locked */
-	/*EnterCriticalSection( &This->m_csFilters );*/
-
-	if ( pOut == NULL )
-		return E_POINTER;
-
-	hr = CoCreateInstance(
-		&CLSID_FilterMapper2, NULL, CLSCTX_INPROC_SERVER,
-		&IID_IFilterMapper2, (void**)&pMap2 );
-	if ( FAILED(hr) )
-		return hr;
-	hr = IFilterMapper2_EnumMatchingFilters(
-		pMap2,&pEnumMon,0,FALSE,MERIT_DO_NOT_USE+1,
-		TRUE,0,NULL,NULL,NULL,TRUE,
-		FALSE,0,NULL,NULL,NULL);
-	IFilterMapper2_Release(pMap2);
-	if ( FAILED(hr) )
-		return hr;
-	TRACE("try to render pin\n");
-
-	if ( hr == S_OK )
-	{
-		/* try to render pin. */
-		while ( !bRendered && hr == S_OK )
-		{
-			hr = IEnumMoniker_Next(pEnumMon,1,&pMon,&cReturned);
-			if ( hr != S_OK )
-				break;
-			hr = IMoniker_BindToObject(pMon,NULL,NULL,&IID_IBaseFilter,(void**)&pFilter );
-			if ( hr == S_OK )
-			{
-				hr = IFilterGraph2_AddFilter(iface,pFilter,NULL);
-				if ( hr == S_OK )
-				{
-					hr = IBaseFilter_EnumPins(pFilter,&pEnumPin);
-					if ( hr == S_OK )
-					{
-						while ( !bRendered )
-						{
-							hr = IEnumPins_Next(pEnumPin,1,&pPin,&cReturned);
-							if ( hr != S_OK )
-								break;
-							hr = IPin_QueryDirection(pPin,&pindir);
-							if ( hr == S_OK && pindir == PINDIR_INPUT )
-							{
-								/* try to connect. */
-								hr = IFilterGraph2_Connect(iface,pOut,pPin);
-								if ( hr == S_OK )
-									bRendered = TRUE;
-								hr = S_OK;
-							}
-							IPin_Release(pPin); pPin = NULL;
-						}
-						IEnumPins_Release(pEnumPin); pEnumPin = NULL;
-					}
-					if ( !bRendered )
-						hr = IFilterGraph2_RemoveFilter(iface,pFilter);
-				}
-				IBaseFilter_Release(pFilter); pFilter = NULL;
-				if ( SUCCEEDED(hr) )
-					hr = S_OK;
-			}
-			else
-			{
-				hr = S_OK;
-			}
-			IMoniker_Release(pMon); pMon = NULL;
-		}
-		IEnumMoniker_Release(pEnumMon); pEnumMon = NULL;
-	}
-
-	if ( bRendered )
-	{
-		/* successfully rendered(but may be partial now) */
-		hr = S_OK;
-
-		/* FIXME - try to render all inserted filters. */
-		/* hr = VFW_S_PARTIAL_RENDER; */
-	}
-	else
-	{
-		if ( SUCCEEDED(hr) )
-			hr = VFW_E_CANNOT_RENDER;
-	}
-
-	/*LeaveCriticalSection( &This->m_csFilters );*/
-
-	return hr;
-}
-
-
-
-
-static ICOM_VTABLE(IFilterGraph2) ifgraph =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IFilterGraph2_fnQueryInterface,
-	IFilterGraph2_fnAddRef,
-	IFilterGraph2_fnRelease,
-	/* IFilterGraph fields */
-	IFilterGraph2_fnAddFilter,
-	IFilterGraph2_fnRemoveFilter,
-	IFilterGraph2_fnEnumFilters,
-	IFilterGraph2_fnFindFilterByName,
-	IFilterGraph2_fnConnectDirect,
-	IFilterGraph2_fnReconnect,
-	IFilterGraph2_fnDisconnect,
-	IFilterGraph2_fnSetDefaultSyncSource,
-	/* IGraphBuilder fields */
-	IFilterGraph2_fnConnect,
-	IFilterGraph2_fnRender,
-	IFilterGraph2_fnRenderFile,
-	IFilterGraph2_fnAddSourceFilter,
-	IFilterGraph2_fnSetLogFile,
-	IFilterGraph2_fnAbort,
-	IFilterGraph2_fnShouldOperationContinue,
-	/* IFilterGraph2 fields */
-	IFilterGraph2_fnAddSourceFilterForMoniker,
-	IFilterGraph2_fnReconnectEx,
-	IFilterGraph2_fnRenderEx,
-};
-
-HRESULT CFilterGraph_InitIFilterGraph2( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-	ICOM_VTBL(&pfg->fgraph) = &ifgraph;
-
-	InitializeCriticalSection( &pfg->m_csFilters );
-	pfg->m_cActiveFilters = 0;
-	pfg->m_pActiveFilters = NULL;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIFilterGraph2( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-
-	/* remove all filters... */
-	while ( pfg->m_cActiveFilters > 0 )
-	{
-		IFilterGraph2_RemoveFilter(
-			CFilterGraph_IFilterGraph2(pfg),
-			pfg->m_pActiveFilters[pfg->m_cActiveFilters-1].pFilter );
-	}
-
-	if ( pfg->m_pActiveFilters != NULL )
-		QUARTZ_FreeMem( pfg->m_pActiveFilters );
-
-	DeleteCriticalSection( &pfg->m_csFilters );
-}
-
-/***************************************************************************
- *
- *	CFilterGraph::IGraphVersion methods
- *
- */
-
-static HRESULT WINAPI
-IGraphVersion_fnQueryInterface(IGraphVersion* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,graphversion);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IGraphVersion_fnAddRef(IGraphVersion* iface)
-{
-	CFilterGraph_THIS(iface,graphversion);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IGraphVersion_fnRelease(IGraphVersion* iface)
-{
-	CFilterGraph_THIS(iface,graphversion);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-
-static HRESULT WINAPI
-IGraphVersion_fnQueryVersion(IGraphVersion* iface,LONG* plVersion)
-{
-	CFilterGraph_THIS(iface,graphversion);
-
-	TRACE("(%p)->(%p)\n",This,plVersion);
-
-	if ( plVersion == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->m_csFilters );
-	*plVersion = This->m_lGraphVersion;
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return NOERROR;
-}
-
-
-static ICOM_VTABLE(IGraphVersion) igraphversion =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IGraphVersion_fnQueryInterface,
-	IGraphVersion_fnAddRef,
-	IGraphVersion_fnRelease,
-	/* IGraphVersion fields */
-	IGraphVersion_fnQueryVersion,
-};
-
-
-
-HRESULT CFilterGraph_InitIGraphVersion( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-	ICOM_VTBL(&pfg->graphversion) = &igraphversion;
-
-	pfg->m_lGraphVersion = 1;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIGraphVersion( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-}
-
-
diff --git a/dlls/quartz/ijgdec.c b/dlls/quartz/ijgdec.c
deleted file mode 100644
index 8b1e305..0000000
--- a/dlls/quartz/ijgdec.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * A simple wrapper of JPEG decoder.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include "config.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "ijgdec.h"
-
-#if defined(HAVE_LIBJPEG) && defined(HAVE_JPEGLIB_H)
-
-#include <jpeglib.h>
-#include <jerror.h>
-#include <setjmp.h>
-
-typedef struct IJGSrcImpl IJGSrcImpl;
-typedef struct IJGErrImpl IJGErrImpl;
-struct IJGSrcImpl
-{
-	struct jpeg_source_mgr	pub;	/* must be first */
-
-	const char** ppsrcs;
-	const int* plenofsrcs;
-	int srccount;
-	int srcindex;
-};
-
-struct IJGErrImpl
-{
-	struct jpeg_error_mgr err;
-
-	jmp_buf	env;
-};
-
-
-/* for the jpeg decompressor source manager. */
-static void IJGDec_init_source(j_decompress_ptr cinfo) {}
-
-static boolean IJGDec_fill_input_buffer(j_decompress_ptr cinfo)
-{
-	IJGSrcImpl* pImpl = (IJGSrcImpl*)cinfo->src;
-
-	if ( pImpl->srcindex >= pImpl->srccount )
-	{
-		ERREXIT(cinfo, JERR_INPUT_EMPTY);
-	}
-	pImpl->pub.next_input_byte = pImpl->ppsrcs[pImpl->srcindex];
-	pImpl->pub.bytes_in_buffer = pImpl->plenofsrcs[pImpl->srcindex];
-	pImpl->srcindex ++;
-
-	return TRUE;
-}
-
-static void IJGDec_skip_input_data(j_decompress_ptr cinfo,long num_bytes)
-{
-	IJGSrcImpl* pImpl = (IJGSrcImpl*)cinfo->src;
-
-	if ( num_bytes <= 0 ) return;
-
-	while ( num_bytes > pImpl->pub.bytes_in_buffer )
-	{
-		num_bytes -= pImpl->pub.bytes_in_buffer;
-		if ( !IJGDec_fill_input_buffer(cinfo) )
-		{
-			ERREXIT(cinfo, JERR_INPUT_EMPTY);
-		}
-	}
-
-	pImpl->pub.next_input_byte += num_bytes;
-	pImpl->pub.bytes_in_buffer -= num_bytes;
-}
-
-static void IJGDec_term_source(j_decompress_ptr cinfo)
-{
-}
-
-static void IJGDec_error_exit(j_common_ptr cinfo)
-{
-	IJGErrImpl* pImpl = (IJGErrImpl*)cinfo->err;
-
-	longjmp(pImpl->env,1);
-}
-
-static void rgb_to_bgr(char* pdata,int width)
-{
-	int x;
-	char c;
-
-	for(x=0;x<width;x++)
-	{
-		c = pdata[0];
-		pdata[0] = pdata[2];
-		pdata[2] = c;
-		pdata += 3;
-	}
-}
-
-int IJGDEC_Decode( char* pdst, int dstpitch, int dstwidth, int dstheight, int dstbpp, const char** ppsrcs, const int* plenofsrcs, int srccount )
-{
-	IJGSrcImpl jsrc;
-	IJGErrImpl jerr;
-	struct jpeg_decompress_struct jdec;
-	int ret = -1;
-
-	jsrc.ppsrcs = ppsrcs;
-	jsrc.plenofsrcs = plenofsrcs;
-	jsrc.srccount = srccount;
-	jsrc.srcindex = 0;
-	jsrc.pub.bytes_in_buffer = 0;
-	jsrc.pub.next_input_byte = NULL;
-	jsrc.pub.init_source = IJGDec_init_source;
-	jsrc.pub.fill_input_buffer = IJGDec_fill_input_buffer;
-	jsrc.pub.skip_input_data = IJGDec_skip_input_data;
-	jsrc.pub.resync_to_restart = jpeg_resync_to_restart;
-	jsrc.pub.term_source = IJGDec_term_source;
-
-	jdec.err = jpeg_std_error(&jerr.err);
-	jerr.err.error_exit = IJGDec_error_exit;
-
-	if ( setjmp(jerr.env) != 0 )
-	{
-		jpeg_destroy_decompress(&jdec);
-		return -1;
-	}
-
-	jpeg_create_decompress(&jdec);
-	jdec.src = &jsrc.pub;
-
-	ret = jpeg_read_header(&jdec,TRUE);
-	if ( ret != JPEG_HEADER_OK ) goto err;
-
-	jpeg_start_decompress(&jdec);
-
-	if ( jdec.output_width != dstwidth ||
-		 jdec.output_height != dstheight ||
-		 (jdec.output_components*8) != dstbpp ) goto err;
-
-	while (jdec.output_scanline < jdec.output_height)
-	{
-		jpeg_read_scanlines(&jdec,(JSAMPLE**)&pdst,1);
-		rgb_to_bgr(pdst,dstwidth);
-		pdst += dstpitch;
-	}
-
-	jpeg_finish_decompress(&jdec);
-	ret = 0;
-err:
-	jpeg_destroy_decompress(&jdec);
-
-	return ret;
-}
-
-#else
-
-int IJGDEC_Decode( char* pdst, int dstpitch, int dstwidth, int dstheight, int dstbpp, const char** ppsrcs, const int* plenofsrcs, int srccount )
-{
-	return -1;
-}
-
-#endif
-
-
diff --git a/dlls/quartz/ijgdec.h b/dlls/quartz/ijgdec.h
deleted file mode 100644
index 7de53c3..0000000
--- a/dlls/quartz/ijgdec.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * A simple wrapper of JPEG decoder.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-int IJGDEC_Decode( char* pdst, int dstpitch, int dstwidth, int dstheight, int dstbpp, const char** ppsrcs, const int* plenofsrcs, int srccount );
-
diff --git a/dlls/quartz/imcntl.c b/dlls/quartz/imcntl.c
deleted file mode 100644
index 001e3b0..0000000
--- a/dlls/quartz/imcntl.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Implementation of IMediaControl for FilterGraph.
- *
- * FIXME - stub.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "oleauto.h"
-#include "strmif.h"
-#include "control.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "fgraph.h"
-
-
-
-static HRESULT WINAPI
-IMediaControl_fnQueryInterface(IMediaControl* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IMediaControl_fnAddRef(IMediaControl* iface)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IMediaControl_fnRelease(IMediaControl* iface)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IMediaControl_fnGetTypeInfoCount(IMediaControl* iface,UINT* pcTypeInfo)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaControl_fnGetTypeInfo(IMediaControl* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaControl_fnGetIDsOfNames(IMediaControl* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaControl_fnInvoke(IMediaControl* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-static HRESULT WINAPI
-IMediaControl_fnRun(IMediaControl* iface)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	TRACE("(%p)->()\n",This);
-
-	return IMediaFilter_Run( CFilterGraph_IMediaFilter(This),
-			(REFERENCE_TIME)0 );
-}
-
-static HRESULT WINAPI
-IMediaControl_fnPause(IMediaControl* iface)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	TRACE("(%p)->()\n",This);
-
-	return IMediaFilter_Pause( CFilterGraph_IMediaFilter(This) );
-}
-
-static HRESULT WINAPI
-IMediaControl_fnStop(IMediaControl* iface)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-	HRESULT	hr;
-	FILTER_STATE	fs;
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaControl_GetState(iface,INFINITE,(OAFilterState*)&fs);
-	if ( SUCCEEDED(hr) && fs == State_Running )
-	{
-		hr = IMediaControl_Pause(iface);
-		if ( SUCCEEDED(hr) )
-			hr = IMediaControl_GetState(iface,INFINITE,(OAFilterState*)&fs);
-	}
-
-	if ( SUCCEEDED(hr) && fs == State_Paused )
-	{
-		hr = IMediaFilter_Stop(CFilterGraph_IMediaFilter(This));
-		if ( SUCCEEDED(hr) )
-			hr = IMediaControl_GetState(iface,INFINITE,(OAFilterState*)&fs);
-	}
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaControl_fnGetState(IMediaControl* iface,LONG lTimeOut,OAFilterState* pFilterState)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	TRACE("(%p)->()\n",This);
-
-	return IMediaFilter_GetState( CFilterGraph_IMediaFilter(This), (DWORD)lTimeOut, (FILTER_STATE*)pFilterState );
-}
-
-static HRESULT WINAPI
-IMediaControl_fnRenderFile(IMediaControl* iface,BSTR bstrFileName)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-	UINT	uLen;
-	WCHAR*	pwszName;
-	HRESULT	hr;
-
-	TRACE("(%p)->()\n",This);
-
-	uLen = SysStringLen(bstrFileName);
-	pwszName = (WCHAR*)QUARTZ_AllocMem( sizeof(WCHAR) * (uLen+1) );
-	if ( pwszName == NULL )
-		return E_OUTOFMEMORY;
-	memcpy( pwszName, bstrFileName, sizeof(WCHAR)*uLen );
-	pwszName[uLen] = (WCHAR)0;
-
-	hr = IFilterGraph2_RenderFile(
-		CFilterGraph_IFilterGraph2(This), pwszName, NULL );
-
-	QUARTZ_FreeMem( pwszName );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaControl_fnAddSourceFilter(IMediaControl* iface,BSTR bstrFileName,IDispatch** ppobj)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaControl_fnget_FilterCollection(IMediaControl* iface,IDispatch** ppobj)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaControl_fnget_RegFilterCollection(IMediaControl* iface,IDispatch** ppobj)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaControl_fnStopWhenReady(IMediaControl* iface)
-{
-	CFilterGraph_THIS(iface,mediacontrol);
-
-	TRACE("(%p)->()\n",This);
-
-	return IMediaFilter_Stop( CFilterGraph_IMediaFilter(This) );
-}
-
-
-static ICOM_VTABLE(IMediaControl) imediacontrol =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMediaControl_fnQueryInterface,
-	IMediaControl_fnAddRef,
-	IMediaControl_fnRelease,
-	/* IDispatch fields */
-	IMediaControl_fnGetTypeInfoCount,
-	IMediaControl_fnGetTypeInfo,
-	IMediaControl_fnGetIDsOfNames,
-	IMediaControl_fnInvoke,
-	/* IMediaControl fields */
-	IMediaControl_fnRun,
-	IMediaControl_fnPause,
-	IMediaControl_fnStop,
-	IMediaControl_fnGetState,
-	IMediaControl_fnRenderFile,
-	IMediaControl_fnAddSourceFilter,
-	IMediaControl_fnget_FilterCollection,
-	IMediaControl_fnget_RegFilterCollection,
-	IMediaControl_fnStopWhenReady,
-};
-
-
-HRESULT CFilterGraph_InitIMediaControl( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-	ICOM_VTBL(&pfg->mediacontrol) = &imediacontrol;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIMediaControl( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-}
diff --git a/dlls/quartz/imfilter.c b/dlls/quartz/imfilter.c
deleted file mode 100644
index 2045ab2..0000000
--- a/dlls/quartz/imfilter.c
+++ /dev/null
@@ -1,487 +0,0 @@
-/*
- * Implementation of IMediaFilter for FilterGraph.
- *
- * FIXME - stub.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "uuids.h"
-#include "vfwmsgs.h"
-#include "evcode.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "fgraph.h"
-
-
-#define	WINE_QUARTZ_POLL_INTERVAL	10
-
-/*****************************************************************************/
-
-static
-HRESULT CFilterGraph_PollGraphState(
-	CFilterGraph* This,
-	FILTER_STATE* pState)
-{
-	HRESULT	hr;
-	DWORD	n;
-
-	hr = S_OK;
-	*pState = State_Stopped;
-
-	EnterCriticalSection( &This->m_csGraphState );
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		hr = IBaseFilter_GetState( This->m_pActiveFilters[n].pFilter, (DWORD)0, pState );
-		if ( hr != S_OK )
-			break;
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-	LeaveCriticalSection( &This->m_csGraphState );
-
-	TRACE( "returns %08lx, state %d\n",
-		hr, *pState );
-
-	return hr;
-}
-
-static
-HRESULT CFilterGraph_StopGraph(
-	CFilterGraph* This )
-{
-	HRESULT	hr;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	hr = S_OK;
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		hrFilter = IBaseFilter_Stop( This->m_pActiveFilters[n].pFilter );
-		if ( hrFilter != S_OK )
-		{
-			if ( SUCCEEDED(hr) )
-				hr = hrFilter;
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static
-HRESULT CFilterGraph_PauseGraph(
-	CFilterGraph* This )
-{
-	HRESULT	hr;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	hr = S_OK;
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		hrFilter = IBaseFilter_Pause( This->m_pActiveFilters[n].pFilter );
-		if ( hrFilter != S_OK )
-		{
-			if ( SUCCEEDED(hr) )
-				hr = hrFilter;
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static
-HRESULT CFilterGraph_RunGraph(
-	CFilterGraph* This, REFERENCE_TIME rtStart )
-{
-	HRESULT	hr;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	hr = S_OK;
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		hrFilter = IBaseFilter_Run( This->m_pActiveFilters[n].pFilter, rtStart );
-		if ( hrFilter != S_OK )
-		{
-			if ( SUCCEEDED(hr) )
-				hr = hrFilter;
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static
-HRESULT CFilterGraph_SetSyncSourceGraph(
-	CFilterGraph* This, IReferenceClock* pClock )
-{
-	HRESULT	hr;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	hr = S_OK;
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		hrFilter = IBaseFilter_SetSyncSource( This->m_pActiveFilters[n].pFilter, pClock );
-		if ( hrFilter == E_NOTIMPL )
-			hrFilter = S_OK;
-		if ( hrFilter != S_OK )
-		{
-			if ( SUCCEEDED(hr) )
-				hr = hrFilter;
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-
-
-/*****************************************************************************/
-
-static HRESULT WINAPI
-IMediaFilter_fnQueryInterface(IMediaFilter* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,mediafilter);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IMediaFilter_fnAddRef(IMediaFilter* iface)
-{
-	CFilterGraph_THIS(iface,mediafilter);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IMediaFilter_fnRelease(IMediaFilter* iface)
-{
-	CFilterGraph_THIS(iface,mediafilter);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-
-static HRESULT WINAPI
-IMediaFilter_fnGetClassID(IMediaFilter* iface,CLSID* pclsid)
-{
-	CFilterGraph_THIS(iface,mediafilter);
-
-	TRACE("(%p)->()\n",This);
-
-	return IPersist_GetClassID(
-		CFilterGraph_IPersist(This),pclsid);
-}
-
-static HRESULT WINAPI
-IMediaFilter_fnStop(IMediaFilter* iface)
-{
-	CFilterGraph_THIS(iface,mediafilter);
-	HRESULT	hr;
-
-	TRACE("(%p)->()\n",This);
-
-	hr = S_OK;
-
-	EnterCriticalSection( &This->m_csGraphState );
-
-	if ( This->m_stateGraph != State_Stopped )
-	{
-		/* IDistributorNotify_Stop() */
-
-		hr = CFilterGraph_StopGraph(This);
-
-		This->m_stateGraph = State_Stopped;
-	}
-
-	LeaveCriticalSection( &This->m_csGraphState );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaFilter_fnPause(IMediaFilter* iface)
-{
-	CFilterGraph_THIS(iface,mediafilter);
-	HRESULT	hr;
-
-	TRACE("(%p)->()\n",This);
-
-	hr = S_OK;
-
-	EnterCriticalSection( &This->m_csGraphState );
-
-	if ( This->m_stateGraph != State_Paused )
-	{
-		/* IDistributorNotify_Pause() */
-
-		hr = CFilterGraph_PauseGraph(This);
-		if ( SUCCEEDED(hr) )
-			This->m_stateGraph = State_Paused;
-		else
-			(void)CFilterGraph_StopGraph(This);
-	}
-
-	LeaveCriticalSection( &This->m_csGraphState );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaFilter_fnRun(IMediaFilter* iface,REFERENCE_TIME rtStart)
-{
-	CFilterGraph_THIS(iface,mediafilter);
-	HRESULT	hr;
-	IReferenceClock*	pClock;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csGraphState );
-
-	if ( This->m_stateGraph == State_Stopped )
-	{
-		hr = IMediaFilter_Pause(iface);
-		if ( FAILED(hr) )
-			goto end;
-	}
-
-        /* handle the special time. */
-        if ( rtStart == (REFERENCE_TIME)0 )
-        {
-                hr = IMediaFilter_GetSyncSource(iface,&pClock);
-                if ( hr == S_OK && pClock != NULL )
-                {
-                        IReferenceClock_GetTime(pClock,&rtStart);
-                        IReferenceClock_Release(pClock);
-                }
-        }
-
-	hr = NOERROR;
-
-	if ( This->m_stateGraph != State_Running )
-	{
-		/* IDistributorNotify_Run() */
-
-		hr = CFilterGraph_RunGraph(This,rtStart);
-
-		if ( SUCCEEDED(hr) )
-			This->m_stateGraph = State_Running;
-		else
-			(void)CFilterGraph_StopGraph(This);
-	}
-
-end:
-	LeaveCriticalSection( &This->m_csGraphState );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaFilter_fnGetState(IMediaFilter* iface,DWORD dwTimeOut,FILTER_STATE* pState)
-{
-	CFilterGraph_THIS(iface,mediafilter);
-	HRESULT	hr;
-	DWORD	dwTickStart;
-	DWORD	dwTickUsed;
-
-	TRACE("(%p)->(%p)\n",This,pState);
-	if ( pState == NULL )
-		return E_POINTER;
-
-	dwTickStart = GetTickCount();
-
-	while ( 1 )
-	{
-		hr = CFilterGraph_PollGraphState( This, pState );
-		if ( hr != VFW_S_STATE_INTERMEDIATE )
-			break;
-		if ( dwTimeOut == 0 )
-			break;
-
-		Sleep( (dwTimeOut >= WINE_QUARTZ_POLL_INTERVAL) ?
-			WINE_QUARTZ_POLL_INTERVAL : dwTimeOut );
-
-		dwTickUsed = GetTickCount() - dwTickStart;
-
-		dwTickStart += dwTickUsed;
-		if ( dwTimeOut <= dwTickUsed )
-			dwTimeOut = 0;
-		else
-			dwTimeOut -= dwTickUsed;
-	}
-
-	EnterCriticalSection( &This->m_csGraphState );
-	*pState = This->m_stateGraph;
-	LeaveCriticalSection( &This->m_csGraphState );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaFilter_fnSetSyncSource(IMediaFilter* iface,IReferenceClock* pobjClock)
-{
-	CFilterGraph_THIS(iface,mediafilter);
-	HRESULT hr = NOERROR;
-
-	TRACE("(%p)->(%p)\n",This,pobjClock);
-
-	/* IDistributorNotify_SetSyncSource() */
-
-	EnterCriticalSection( &This->m_csClock );
-
-	hr = CFilterGraph_SetSyncSourceGraph( This, pobjClock );
-
-	if ( SUCCEEDED(hr) )
-	{
-		if ( This->m_pClock != NULL )
-		{
-			IReferenceClock_Release(This->m_pClock);
-			This->m_pClock = NULL;
-		}
-		This->m_pClock = pobjClock;
-		if ( pobjClock != NULL )
-			IReferenceClock_AddRef( pobjClock );
-		IMediaEventSink_Notify(CFilterGraph_IMediaEventSink(This),
-			EC_CLOCK_CHANGED, 0, 0);
-	}
-	else
-	{
-		(void)CFilterGraph_SetSyncSourceGraph( This, This->m_pClock );
-	}
-
-	LeaveCriticalSection( &This->m_csClock );
-
-	TRACE( "hr = %08lx\n", hr );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaFilter_fnGetSyncSource(IMediaFilter* iface,IReferenceClock** ppobjClock)
-{
-	CFilterGraph_THIS(iface,mediafilter);
-	HRESULT hr = VFW_E_NO_CLOCK;
-
-	TRACE("(%p)->(%p)\n",This,ppobjClock);
-
-	if ( ppobjClock == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->m_csClock );
-	*ppobjClock = This->m_pClock;
-	if ( This->m_pClock != NULL )
-	{
-		hr = NOERROR;
-		IReferenceClock_AddRef( This->m_pClock );
-	}
-	LeaveCriticalSection( &This->m_csClock );
-
-	TRACE( "hr = %08lx\n", hr );
-
-	return hr;
-}
-
-
-
-static ICOM_VTABLE(IMediaFilter) imediafilter =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMediaFilter_fnQueryInterface,
-	IMediaFilter_fnAddRef,
-	IMediaFilter_fnRelease,
-	/* IPersist fields */
-	IMediaFilter_fnGetClassID,
-	/* IMediaFilter fields */
-	IMediaFilter_fnStop,
-	IMediaFilter_fnPause,
-	IMediaFilter_fnRun,
-	IMediaFilter_fnGetState,
-	IMediaFilter_fnSetSyncSource,
-	IMediaFilter_fnGetSyncSource,
-};
-
-HRESULT CFilterGraph_InitIMediaFilter( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-
-	ICOM_VTBL(&pfg->mediafilter) = &imediafilter;
-
-	InitializeCriticalSection( &pfg->m_csGraphState );
-	InitializeCriticalSection( &pfg->m_csClock );
-	pfg->m_stateGraph = State_Stopped;
-	pfg->m_pClock = NULL;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIMediaFilter( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-
-	if ( pfg->m_pClock != NULL )
-	{
-		IReferenceClock_Release( pfg->m_pClock );
-		pfg->m_pClock = NULL;
-	}
-
-	DeleteCriticalSection( &pfg->m_csGraphState );
-	DeleteCriticalSection( &pfg->m_csClock );
-}
diff --git a/dlls/quartz/impos.c b/dlls/quartz/impos.c
deleted file mode 100644
index 76a95e9..0000000
--- a/dlls/quartz/impos.c
+++ /dev/null
@@ -1,541 +0,0 @@
-/*
- * Implementation of IMediaPosition for FilterGraph.
- *
- * FIXME - stub.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "fgraph.h"
-
-
-static HRESULT WINAPI
-IMediaPosition_fnQueryInterface(IMediaPosition* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IMediaPosition_fnAddRef(IMediaPosition* iface)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IMediaPosition_fnRelease(IMediaPosition* iface)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnGetTypeInfoCount(IMediaPosition* iface,UINT* pcTypeInfo)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-
-	TRACE("(%p)->()\n",This);
-
-	return IDispatch_GetTypeInfoCount(
-		CFilterGraph_IDispatch(This),pcTypeInfo);
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnGetTypeInfo(IMediaPosition* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-
-	TRACE("(%p)->()\n",This);
-
-	return IDispatch_GetTypeInfo(
-		CFilterGraph_IDispatch(This),iTypeInfo,lcid,ppobj);
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnGetIDsOfNames(IMediaPosition* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-
-	TRACE("(%p)->()\n",This);
-
-	return IDispatch_GetIDsOfNames(
-		CFilterGraph_IDispatch(This),riid,ppwszName,cNames,lcid,pDispId);
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnInvoke(IMediaPosition* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-
-	TRACE("(%p)->()\n",This);
-
-	return IDispatch_Invoke(
-		CFilterGraph_IDispatch(This),
-		DispId,riid,lcid,wFlags,pDispParams,pVarRes,pExcepInfo,puArgErr);
-}
-
-
-static HRESULT WINAPI
-IMediaPosition_fnget_Duration(IMediaPosition* iface,REFTIME* prefTime)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->(%p)\n",This,prefTime);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pPosition != NULL )
-		{
-			hrFilter = IMediaPosition_get_Duration( This->m_pActiveFilters[n].pPosition, prefTime );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnput_CurrentPosition(IMediaPosition* iface,REFTIME refTime)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pPosition != NULL )
-		{
-			hrFilter = IMediaPosition_put_CurrentPosition( This->m_pActiveFilters[n].pPosition, refTime );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnget_CurrentPosition(IMediaPosition* iface,REFTIME* prefTime)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pPosition != NULL )
-		{
-			hrFilter = IMediaPosition_get_CurrentPosition( This->m_pActiveFilters[n].pPosition, prefTime );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnget_StopTime(IMediaPosition* iface,REFTIME* prefTime)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pPosition != NULL )
-		{
-			hrFilter = IMediaPosition_get_StopTime( This->m_pActiveFilters[n].pPosition, prefTime );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnput_StopTime(IMediaPosition* iface,REFTIME refTime)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pPosition != NULL )
-		{
-			hrFilter = IMediaPosition_put_StopTime( This->m_pActiveFilters[n].pPosition, refTime );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnget_PrerollTime(IMediaPosition* iface,REFTIME* prefTime)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pPosition != NULL )
-		{
-			hrFilter = IMediaPosition_get_PrerollTime( This->m_pActiveFilters[n].pPosition, prefTime );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnput_PrerollTime(IMediaPosition* iface,REFTIME refTime)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pPosition != NULL )
-		{
-			hrFilter = IMediaPosition_put_PrerollTime( This->m_pActiveFilters[n].pPosition, refTime );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnput_Rate(IMediaPosition* iface,double dblRate)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pPosition != NULL )
-		{
-			hrFilter = IMediaPosition_put_Rate( This->m_pActiveFilters[n].pPosition, dblRate );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnget_Rate(IMediaPosition* iface,double* pdblRate)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pPosition != NULL )
-		{
-			hrFilter = IMediaPosition_get_Rate( This->m_pActiveFilters[n].pPosition, pdblRate );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnCanSeekForward(IMediaPosition* iface,LONG* pCanSeek)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pPosition != NULL )
-		{
-			hrFilter = IMediaPosition_CanSeekForward( This->m_pActiveFilters[n].pPosition, pCanSeek );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnCanSeekBackward(IMediaPosition* iface,LONG* pCanSeek)
-{
-	CFilterGraph_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pPosition != NULL )
-		{
-			hrFilter = IMediaPosition_CanSeekBackward( This->m_pActiveFilters[n].pPosition, pCanSeek );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-
-static ICOM_VTABLE(IMediaPosition) imediaposition =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMediaPosition_fnQueryInterface,
-	IMediaPosition_fnAddRef,
-	IMediaPosition_fnRelease,
-	/* IDispatch fields */
-	IMediaPosition_fnGetTypeInfoCount,
-	IMediaPosition_fnGetTypeInfo,
-	IMediaPosition_fnGetIDsOfNames,
-	IMediaPosition_fnInvoke,
-	/* IMediaPosition fields */
-	IMediaPosition_fnget_Duration,
-	IMediaPosition_fnput_CurrentPosition,
-	IMediaPosition_fnget_CurrentPosition,
-	IMediaPosition_fnget_StopTime,
-	IMediaPosition_fnput_StopTime,
-	IMediaPosition_fnget_PrerollTime,
-	IMediaPosition_fnput_PrerollTime,
-	IMediaPosition_fnput_Rate,
-	IMediaPosition_fnget_Rate,
-	IMediaPosition_fnCanSeekForward,
-	IMediaPosition_fnCanSeekBackward,
-};
-
-
-HRESULT CFilterGraph_InitIMediaPosition( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-	ICOM_VTBL(&pfg->mediaposition) = &imediaposition;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIMediaPosition( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-}
diff --git a/dlls/quartz/imseek.c b/dlls/quartz/imseek.c
deleted file mode 100644
index 199d8dc..0000000
--- a/dlls/quartz/imseek.c
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
- * Implementation of IMediaSeeking for FilterGraph.
- *
- * FIXME - stub.
- * FIXME - this interface should be allocated as a plug-in(?)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "fgraph.h"
-
-
-
-static HRESULT WINAPI
-IMediaSeeking_fnQueryInterface(IMediaSeeking* iface,REFIID riid,void** ppobj)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IMediaSeeking_fnAddRef(IMediaSeeking* iface)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IMediaSeeking_fnRelease(IMediaSeeking* iface)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetCapabilities(IMediaSeeking* iface,DWORD* pdwCaps)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_GetCapabilities( This->m_pActiveFilters[n].pSeeking, pdwCaps );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnCheckCapabilities(IMediaSeeking* iface,DWORD* pdwCaps)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_CheckCapabilities( This->m_pActiveFilters[n].pSeeking, pdwCaps );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnIsFormatSupported(IMediaSeeking* iface,const GUID* pidFormat)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_IsFormatSupported( This->m_pActiveFilters[n].pSeeking, pidFormat );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnQueryPreferredFormat(IMediaSeeking* iface,GUID* pidFormat)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_QueryPreferredFormat( This->m_pActiveFilters[n].pSeeking, pidFormat );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetTimeFormat(IMediaSeeking* iface,GUID* pidFormat)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_GetTimeFormat( This->m_pActiveFilters[n].pSeeking, pidFormat );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnIsUsingTimeFormat(IMediaSeeking* iface,const GUID* pidFormat)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_IsUsingTimeFormat( This->m_pActiveFilters[n].pSeeking, pidFormat );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnSetTimeFormat(IMediaSeeking* iface,const GUID* pidFormat)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_SetTimeFormat( This->m_pActiveFilters[n].pSeeking, pidFormat );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetDuration(IMediaSeeking* iface,LONGLONG* pllDuration)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_GetDuration( This->m_pActiveFilters[n].pSeeking, pllDuration );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetStopPosition(IMediaSeeking* iface,LONGLONG* pllPos)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_GetStopPosition( This->m_pActiveFilters[n].pSeeking, pllPos );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetCurrentPosition(IMediaSeeking* iface,LONGLONG* pllPos)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_GetCurrentPosition( This->m_pActiveFilters[n].pSeeking, pllPos );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnConvertTimeFormat(IMediaSeeking* iface,LONGLONG* pllOut,const GUID* pidFmtOut,LONGLONG llIn,const GUID* pidFmtIn)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_ConvertTimeFormat( This->m_pActiveFilters[n].pSeeking, pllOut, pidFmtOut, llIn, pidFmtIn );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnSetPositions(IMediaSeeking* iface,LONGLONG* pllCur,DWORD dwCurFlags,LONGLONG* pllStop,DWORD dwStopFlags)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_SetPositions( This->m_pActiveFilters[n].pSeeking, pllCur, dwCurFlags, pllStop, dwStopFlags );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetPositions(IMediaSeeking* iface,LONGLONG* pllCur,LONGLONG* pllStop)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_GetPositions( This->m_pActiveFilters[n].pSeeking, pllCur, pllStop );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetAvailable(IMediaSeeking* iface,LONGLONG* pllFirst,LONGLONG* pllLast)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_GetAvailable( This->m_pActiveFilters[n].pSeeking, pllFirst, pllLast );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnSetRate(IMediaSeeking* iface,double dblRate)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_SetRate( This->m_pActiveFilters[n].pSeeking, dblRate );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetRate(IMediaSeeking* iface,double* pdblRate)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_GetRate( This->m_pActiveFilters[n].pSeeking, pdblRate );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetPreroll(IMediaSeeking* iface,LONGLONG* pllPreroll)
-{
-	CFilterGraph_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	HRESULT	hrFilter;
-	DWORD	n;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->m_csFilters );
-
-	for ( n = 0; n < This->m_cActiveFilters; n++ )
-	{
-		if ( This->m_pActiveFilters[n].pSeeking != NULL )
-		{
-			hrFilter = IMediaSeeking_GetPreroll( This->m_pActiveFilters[n].pSeeking, pllPreroll );
-			if ( hr == E_NOTIMPL )
-			{
-				hr = hrFilter;
-			}
-			else
-			if ( hrFilter != E_NOTIMPL )
-			{
-				if ( SUCCEEDED(hr) )
-					hr = hrFilter;
-			}
-		}
-	}
-
-	LeaveCriticalSection( &This->m_csFilters );
-
-	return hr;
-}
-
-
-
-
-static ICOM_VTABLE(IMediaSeeking) imediaseeking =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMediaSeeking_fnQueryInterface,
-	IMediaSeeking_fnAddRef,
-	IMediaSeeking_fnRelease,
-	/* IMediaSeeking fields */
-	IMediaSeeking_fnGetCapabilities,
-	IMediaSeeking_fnCheckCapabilities,
-	IMediaSeeking_fnIsFormatSupported,
-	IMediaSeeking_fnQueryPreferredFormat,
-	IMediaSeeking_fnGetTimeFormat,
-	IMediaSeeking_fnIsUsingTimeFormat,
-	IMediaSeeking_fnSetTimeFormat,
-	IMediaSeeking_fnGetDuration,
-	IMediaSeeking_fnGetStopPosition,
-	IMediaSeeking_fnGetCurrentPosition,
-	IMediaSeeking_fnConvertTimeFormat,
-	IMediaSeeking_fnSetPositions,
-	IMediaSeeking_fnGetPositions,
-	IMediaSeeking_fnGetAvailable,
-	IMediaSeeking_fnSetRate,
-	IMediaSeeking_fnGetRate,
-	IMediaSeeking_fnGetPreroll,
-};
-
-HRESULT CFilterGraph_InitIMediaSeeking( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-	ICOM_VTBL(&pfg->mediaseeking) = &imediaseeking;
-
-	return NOERROR;
-}
-
-void CFilterGraph_UninitIMediaSeeking( CFilterGraph* pfg )
-{
-	TRACE("(%p)\n",pfg);
-}
diff --git a/dlls/quartz/iunk.c b/dlls/quartz/iunk.c
deleted file mode 100644
index d0f4c0f..0000000
--- a/dlls/quartz/iunk.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * An implementation of IUnknown.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-#include "wine/port.h"
-
-#include "windef.h"
-#include "winerror.h"
-#include "winbase.h"
-#include "wine/obj_base.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "iunk.h"
-
-
-static HRESULT WINAPI
-IUnknown_fnQueryInterface(IUnknown* iface,REFIID riid,LPVOID *ppobj)
-{
-	ICOM_THIS(QUARTZ_IUnkImpl,iface);
-	size_t	ofs;
-	DWORD	dwIndex;
-	QUARTZ_IFDelegation*	pDelegation;
-	HRESULT	hr;
-
-	TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
-
-	if ( ppobj == NULL )
-		return E_POINTER;
-	*ppobj = NULL;
-
-	ofs = 0;
-
-	if ( IsEqualGUID( &IID_IUnknown, riid ) )
-	{
-		TRACE("IID_IUnknown - returns inner object.\n");
-	}
-	else
-	{
-		for ( dwIndex = 0; dwIndex < This->dwEntries; dwIndex++ )
-		{
-			if ( IsEqualGUID( This->pEntries[dwIndex].piid, riid ) )
-			{
-				ofs = This->pEntries[dwIndex].ofsVTPtr;
-				break;
-			}
-		}
-		if ( dwIndex == This->dwEntries )
-		{
-			hr = E_NOINTERFACE;
-
-			/* delegation */
-			pDelegation = This->pDelegationFirst;
-			while ( pDelegation != NULL )
-			{
-				hr = (*pDelegation->pOnQueryInterface)( iface, riid, ppobj );
-				if ( hr != E_NOINTERFACE )
-					break;
-				pDelegation = pDelegation->pNext;
-			}
-
-			if ( hr == E_NOINTERFACE )
-			{
-				WARN("(%p) unknown interface: %s\n",This,debugstr_guid(riid));
-			}
-
-			return hr;
-		}
-	}
-
-	*ppobj = (LPVOID)(((char*)This) + ofs);
-	IUnknown_AddRef((IUnknown*)(*ppobj));
-
-	return S_OK;
-}
-
-static ULONG WINAPI
-IUnknown_fnAddRef(IUnknown* iface)
-{
-	ICOM_THIS(QUARTZ_IUnkImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return InterlockedExchangeAdd(&(This->ref),1) + 1;
-}
-
-static ULONG WINAPI
-IUnknown_fnRelease(IUnknown* iface)
-{
-	ICOM_THIS(QUARTZ_IUnkImpl,iface);
-	LONG	ref;
-
-	TRACE("(%p)->()\n",This);
-	ref = InterlockedExchangeAdd(&(This->ref),-1) - 1;
-	if ( ref > 0 )
-		return (ULONG)ref;
-
-	This->ref ++;
-	if ( This->pOnFinalRelease != NULL )
-		(*(This->pOnFinalRelease))(iface);
-	This->ref --;
-
-	QUARTZ_FreeObj(This);
-
-	return 0;
-}
-
-static ICOM_VTABLE(IUnknown) iunknown =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IUnknown_fnQueryInterface,
-	IUnknown_fnAddRef,
-	IUnknown_fnRelease,
-};
-
-
-void QUARTZ_IUnkInit( QUARTZ_IUnkImpl* pImpl, IUnknown* punkOuter )
-{
-	TRACE("(%p)\n",pImpl);
-
-	ICOM_VTBL(pImpl) = &iunknown;
-	pImpl->pEntries = NULL;
-	pImpl->dwEntries = 0;
-	pImpl->pDelegationFirst = NULL;
-	pImpl->pOnFinalRelease = NULL;
-	pImpl->ref = 1;
-	pImpl->punkControl = (IUnknown*)pImpl;
-
-	/* for implementing aggregation. */
-	if ( punkOuter != NULL )
-		pImpl->punkControl = punkOuter;
-}
-
-void QUARTZ_IUnkAddDelegation(
-	QUARTZ_IUnkImpl* pImpl, QUARTZ_IFDelegation* pDelegation )
-{
-	pDelegation->pNext = pImpl->pDelegationFirst;
-	pImpl->pDelegationFirst = pDelegation;
-}
-
diff --git a/dlls/quartz/iunk.h b/dlls/quartz/iunk.h
deleted file mode 100644
index bf35709..0000000
--- a/dlls/quartz/iunk.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * An implementation of IUnknown.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_IUNK_H
-#define	WINE_DSHOW_IUNK_H
-
-/*
-	To avoid implementing IUnknown for all interfaces,
-
-  1) To give a method to get rel-offset of IUnknown.
-  2) The IUnknown knows all IIDs and offsets of interfaces.
-
-    So each implementation must have following two members
-    with the following order:
-
-  typedef struct IDispatchImpl
-  {
-    ICOM_VFIELD(IDispatch);	<-pointer of the interface.
-    size_t	ofsIUnknown;	<-ofs<IDispatchImpl> - ofs<QUARTZ_IUnkImpl>
-  };
-
- */
-
-/* for InterlockedExchangeAdd. */
-#include <pshpack4.h>
-
-typedef struct QUARTZ_IFEntry
-{
-	const IID*	piid;		/* interface ID. */
-	size_t		ofsVTPtr;	/* offset from IUnknown. */
-} QUARTZ_IFEntry;
-
-typedef struct QUARTZ_IFDelegation
-{
-	struct QUARTZ_IFDelegation*	pNext;
-	HRESULT (*pOnQueryInterface)(
-		IUnknown* punk, const IID* piid, void** ppobj );
-} QUARTZ_IFDelegation;
-
-typedef struct QUARTZ_IUnkImpl
-{
-	/* pointer of IUnknown interface. */
-	ICOM_VFIELD(IUnknown);
-
-	/* array of supported IIDs and offsets. */
-	const QUARTZ_IFEntry*	pEntries;
-	DWORD	dwEntries;
-	/* list of delegation handlers. */
-	QUARTZ_IFDelegation*	pDelegationFirst;
-	/* called on final release. */
-	void (*pOnFinalRelease)(IUnknown* punk);
-
-	/* IUnknown fields. */
-	LONG	ref;
-	IUnknown*	punkControl;
-} QUARTZ_IUnkImpl;
-
-#include <poppack.h>
-
-
-void QUARTZ_IUnkInit( QUARTZ_IUnkImpl* pImpl, IUnknown* punkOuter );
-void QUARTZ_IUnkAddDelegation(
-	QUARTZ_IUnkImpl* pImpl, QUARTZ_IFDelegation* pDelegation );
-
-
-#endif	/* WINE_DSHOW_IUNK_H */
diff --git a/dlls/quartz/main.c b/dlls/quartz/main.c
index 04a494f..f67dd03 100644
--- a/dlls/quartz/main.c
+++ b/dlls/quartz/main.c
@@ -1,612 +1 @@
-/*
- * Exported APIs.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winerror.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winnls.h"
-#include "mmsystem.h"
-#include "ole2.h"
-#include "strmif.h"
-#include "control.h"
-#include "uuids.h"
-#include "errors.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "initguid.h"
-
-#include "quartz_private.h"
-#include "fgraph.h"
-#include "sysclock.h"
-#include "memalloc.h"
-#include "devenum.h"
-#include "fmap.h"
-#include "seekpass.h"
-#include "audren.h"
-#include "vidren.h"
-#include "parser.h"
-#include "asyncsrc.h"
-#include "xform.h"
-#include "capgraph.h"
-#include "filesink.h"
-
-
-typedef struct QUARTZ_CLASSENTRY
-{
-	const CLSID*	pclsid;
-	QUARTZ_pCreateIUnknown	pCreateIUnk;
-} QUARTZ_CLASSENTRY;
-
-
-static HRESULT WINAPI
-IClassFactory_fnQueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj);
-static ULONG WINAPI IClassFactory_fnAddRef(LPCLASSFACTORY iface);
-static ULONG WINAPI IClassFactory_fnRelease(LPCLASSFACTORY iface);
-static HRESULT WINAPI IClassFactory_fnCreateInstance(LPCLASSFACTORY iface,LPUNKNOWN pOuter,REFIID riid,LPVOID *ppobj);
-static HRESULT WINAPI IClassFactory_fnLockServer(LPCLASSFACTORY iface,BOOL dolock);
-
-static ICOM_VTABLE(IClassFactory) iclassfact =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	IClassFactory_fnQueryInterface,
-	IClassFactory_fnAddRef,
-	IClassFactory_fnRelease,
-	IClassFactory_fnCreateInstance,
-	IClassFactory_fnLockServer
-};
-
-typedef struct
-{
-	/* IUnknown fields */
-	ICOM_VFIELD(IClassFactory);
-	LONG	ref;
-	/* IClassFactory fields */
-	const QUARTZ_CLASSENTRY* pEntry;
-} IClassFactoryImpl;
-
-static const QUARTZ_CLASSENTRY QUARTZ_ClassList[] =
-{
-	{ &CLSID_FilterGraph, &QUARTZ_CreateFilterGraph },
-	{ &CLSID_FilterGraphNoThread, &QUARTZ_CreateFilterGraph }, /* FIXME? */
-	{ &CLSID_SystemClock, &QUARTZ_CreateSystemClock },
-	{ &CLSID_MemoryAllocator, &QUARTZ_CreateMemoryAllocator },
-	{ &CLSID_SystemDeviceEnum, &QUARTZ_CreateSystemDeviceEnum },
-	{ &CLSID_FilterMapper, &QUARTZ_CreateFilterMapper },
-	{ &CLSID_FilterMapper2, &QUARTZ_CreateFilterMapper2 },
-	{ &CLSID_SeekingPassThru, &QUARTZ_CreateSeekingPassThru },
-	{ &CLSID_CaptureGraphBuilder, &QUARTZ_CreateCaptureGraph },
-
-	{ &CLSID_AudioRender, &QUARTZ_CreateAudioRenderer },
-	{ &CLSID_VideoRenderer, &QUARTZ_CreateVideoRenderer },
-	{ &CLSID_quartzWaveParser, &QUARTZ_CreateWaveParser },
-	{ &CLSID_AviSplitter, &QUARTZ_CreateAVISplitter },
-	{ &CLSID_MPEG1Splitter, &QUARTZ_CreateMPEG1Splitter },
-	{ &CLSID_AsyncReader, &QUARTZ_CreateAsyncReader },
-	{ &CLSID_URLReader, &QUARTZ_CreateURLReader },
-	{ &CLSID_AVIDec, &QUARTZ_CreateAVIDec },
-	{ &CLSID_Colour, &QUARTZ_CreateColour },
-	{ &CLSID_ACMWrapper, &QUARTZ_CreateACMWrapper },
-	{ &CLSID_FileWriter, &QUARTZ_CreateFileWriter },
-	{ &CLSID_CMpegAudioCodec, &QUARTZ_CreateCMpegAudioCodec },
-	{ &CLSID_CMpegVideoCodec, &QUARTZ_CreateCMpegVideoCodec },
-	{ &CLSID_quartzQuickTimeMovieParser, &QUARTZ_CreateQuickTimeMovieParser },
-	{ &CLSID_quartzMIDIParser, &QUARTZ_CreateMIDIParser },
-	{ &CLSID_quartzMJPGDecompressor, QUARTZ_CreateMJPGDecompressor },
-	{ &CLSID_quartzQuickTimeDecompressor, QUARTZ_CreateQuickTimeDecompressor },
-	{ NULL, NULL },
-};
-
-/* per-process variables */
-static CRITICAL_SECTION csHeap;
-static DWORD dwClassObjRef;
-static HANDLE hDLLHeap;
-
-void* QUARTZ_AllocObj( DWORD dwSize )
-{
-	void*	pv;
-
-	EnterCriticalSection( &csHeap );
-	dwClassObjRef ++;
-	pv = HeapAlloc( hDLLHeap, 0, dwSize );
-	if ( pv == NULL )
-		dwClassObjRef --;
-	LeaveCriticalSection( &csHeap );
-
-	return pv;
-}
-
-void QUARTZ_FreeObj( void* pobj )
-{
-	EnterCriticalSection( &csHeap );
-	HeapFree( hDLLHeap, 0, pobj );
-	dwClassObjRef --;
-	LeaveCriticalSection( &csHeap );
-}
-
-void* QUARTZ_AllocMem( DWORD dwSize )
-{
-	return HeapAlloc( hDLLHeap, 0, dwSize );
-}
-
-void QUARTZ_FreeMem( void* pMem )
-{
-	HeapFree( hDLLHeap, 0, pMem );
-}
-
-void* QUARTZ_ReallocMem( void* pMem, DWORD dwSize )
-{
-	if ( pMem == NULL )
-		return QUARTZ_AllocMem( dwSize );
-
-	return HeapReAlloc( hDLLHeap, 0, pMem, dwSize );
-}
-
-static
-LPWSTR QUARTZ_strncpyAtoW( LPWSTR lpwstr, LPCSTR lpstr, INT wbuflen )
-{
-	INT	len;
-
-	len = MultiByteToWideChar( CP_ACP, 0, lpstr, -1, lpwstr, wbuflen );
-	if ( len == 0 )
-		*lpwstr = 0;
-	return lpwstr;
-}
-
-
-/************************************************************************/
-
-static HRESULT WINAPI
-IClassFactory_fnQueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
-{
-	ICOM_THIS(IClassFactoryImpl,iface);
-
-	TRACE("(%p)->(%p,%p)\n",This,riid,ppobj);
-	if ( ( IsEqualGUID( &IID_IUnknown, riid ) ) ||
-	     ( IsEqualGUID( &IID_IClassFactory, riid ) ) )
-	{
-		*ppobj = iface;
-		IClassFactory_AddRef(iface);
-		return S_OK;
-	}
-
-	return E_NOINTERFACE;
-}
-
-static ULONG WINAPI IClassFactory_fnAddRef(LPCLASSFACTORY iface)
-{
-	ICOM_THIS(IClassFactoryImpl,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return InterlockedExchangeAdd(&(This->ref),1) + 1;
-}
-
-static ULONG WINAPI IClassFactory_fnRelease(LPCLASSFACTORY iface)
-{
-	ICOM_THIS(IClassFactoryImpl,iface);
-	LONG	ref;
-
-	TRACE("(%p)->()\n",This);
-	ref = InterlockedExchangeAdd(&(This->ref),-1) - 1;
-	if ( ref > 0 )
-		return (ULONG)ref;
-
-	QUARTZ_FreeObj(This);
-	return 0;
-}
-
-static HRESULT WINAPI IClassFactory_fnCreateInstance(LPCLASSFACTORY iface,LPUNKNOWN pOuter,REFIID riid,LPVOID *ppobj)
-{
-	ICOM_THIS(IClassFactoryImpl,iface);
-	HRESULT	hr;
-	IUnknown*	punk;
-
-	TRACE("(%p)->(%p,%s,%p)\n",This,pOuter,debugstr_guid(riid),ppobj);
-
-	if ( ppobj == NULL )
-		return E_POINTER;
-	if ( pOuter != NULL && !IsEqualGUID( riid, &IID_IUnknown ) )
-		return CLASS_E_NOAGGREGATION;
-
-	*ppobj = NULL;
-
-	hr = (*This->pEntry->pCreateIUnk)(pOuter,(void**)&punk);
-	if ( hr != S_OK )
-		return hr;
-
-	hr = IUnknown_QueryInterface(punk,riid,ppobj);
-	IUnknown_Release(punk);
-
-	return hr;
-}
-
-static HRESULT WINAPI IClassFactory_fnLockServer(LPCLASSFACTORY iface,BOOL dolock)
-{
-	ICOM_THIS(IClassFactoryImpl,iface);
-	HRESULT	hr;
-
-	TRACE("(%p)->(%d)\n",This,dolock);
-	if (dolock)
-		hr = IClassFactory_AddRef(iface);
-	else
-		hr = IClassFactory_Release(iface);
-
-	return hr;
-}
-
-
-
-static HRESULT IClassFactory_Alloc( const CLSID* pclsid, void** ppobj )
-{
-	const QUARTZ_CLASSENTRY*	pEntry;
-	IClassFactoryImpl*	pImpl;
-
-	TRACE( "(%s,%p)\n", debugstr_guid(pclsid), ppobj );
-
-	pEntry = QUARTZ_ClassList;
-	while ( pEntry->pclsid != NULL )
-	{
-		if ( IsEqualGUID( pclsid, pEntry->pclsid ) )
-			goto found;
-		pEntry ++;
-	}
-
-	return CLASS_E_CLASSNOTAVAILABLE;
-found:
-	pImpl = (IClassFactoryImpl*)QUARTZ_AllocObj( sizeof(IClassFactoryImpl) );
-	if ( pImpl == NULL )
-		return E_OUTOFMEMORY;
-
-	TRACE( "allocated successfully.\n" );
-
-	ICOM_VTBL(pImpl) = &iclassfact;
-	pImpl->ref = 1;
-	pImpl->pEntry = pEntry;
-
-	*ppobj = (void*)pImpl;
-	return S_OK;
-}
-
-
-/***********************************************************************
- *		QUARTZ_InitProcess (internal)
- */
-static BOOL QUARTZ_InitProcess( void )
-{
-	TRACE("()\n");
-
-	dwClassObjRef = 0;
-	hDLLHeap = (HANDLE)NULL;
-	InitializeCriticalSection( &csHeap );
-
-	hDLLHeap = HeapCreate( 0, 0x10000, 0 );
-	if ( hDLLHeap == (HANDLE)NULL )
-		return FALSE;
-
-	return TRUE;
-}
-
-/***********************************************************************
- *		QUARTZ_UninitProcess (internal)
- */
-static void QUARTZ_UninitProcess( void )
-{
-	TRACE("()\n");
-
-	if ( dwClassObjRef != 0 )
-		ERR( "you must release some objects allocated from quartz.\n" );
-	if ( hDLLHeap != (HANDLE)NULL )
-	{
-		HeapDestroy( hDLLHeap );
-		hDLLHeap = (HANDLE)NULL;
-	}
-	DeleteCriticalSection( &csHeap );
-}
-
-/***********************************************************************
- *		QUARTZ_DllMain
- */
-BOOL WINAPI QUARTZ_DllMain(
-	HINSTANCE hInstDLL,
-	DWORD fdwReason,
-	LPVOID lpvReserved )
-{
-	TRACE("(%08x,%08lx,%p)\n",hInstDLL,fdwReason,lpvReserved);
-
-	switch ( fdwReason )
-	{
-	case DLL_PROCESS_ATTACH:
-		if ( !QUARTZ_InitProcess() )
-			return FALSE;
-		break;
-	case DLL_PROCESS_DETACH:
-		QUARTZ_UninitProcess();
-		break;
-	case DLL_THREAD_ATTACH:
-		break;
-	case DLL_THREAD_DETACH:
-		break;
-	}
-
-	return TRUE;
-}
-
-
-/***********************************************************************
- *		DllCanUnloadNow (QUARTZ.@)
- *
- * RETURNS
- *    Success: S_OK
- *    Failure: S_FALSE
- */
-HRESULT WINAPI QUARTZ_DllCanUnloadNow(void)
-{
-	HRESULT	hr;
-
-	EnterCriticalSection( &csHeap );
-	hr = ( dwClassObjRef == 0 ) ? S_OK : S_FALSE;
-	LeaveCriticalSection( &csHeap );
-
-	return hr;
-}
-
-/***********************************************************************
- *		DllGetClassObject (QUARTZ.@)
- */
-HRESULT WINAPI QUARTZ_DllGetClassObject(
-		const CLSID* pclsid,const IID* piid,void** ppv)
-{
-	*ppv = NULL;
-	if ( IsEqualCLSID( &IID_IUnknown, piid ) ||
-	     IsEqualCLSID( &IID_IClassFactory, piid ) )
-	{
-		return IClassFactory_Alloc( pclsid, ppv );
-	}
-
-	return CLASS_E_CLASSNOTAVAILABLE;
-}
-
-/***********************************************************************
- *		DllRegisterServer (QUARTZ.@)
- */
-
-HRESULT WINAPI QUARTZ_DllRegisterServer( void )
-{
-	FIXME( "(): stub\n" );
-	return E_FAIL;
-}
-
-/***********************************************************************
- *		DllUnregisterServer (QUARTZ.@)
- */
-
-HRESULT WINAPI QUARTZ_DllUnregisterServer( void )
-{
-	FIXME( "(): stub\n" );
-	return E_FAIL;
-}
-
-/**************************************************************************/
-/**************************************************************************/
-
-/* FIXME - all string should be defined in the resource of quartz. */
-
-static LPCSTR hresult_to_string( HRESULT hr )
-{
-	switch ( hr )
-	{
-	#define	ENTRY(x)	case x: return (const char*)#x
-	/* some known codes */
-	ENTRY(S_OK);
-	ENTRY(S_FALSE);
-	ENTRY(E_FAIL);
-	ENTRY(E_POINTER);
-	ENTRY(E_NOTIMPL);
-	ENTRY(E_NOINTERFACE);
-	ENTRY(E_OUTOFMEMORY);
-	ENTRY(CLASS_E_CLASSNOTAVAILABLE);
-	ENTRY(CLASS_E_NOAGGREGATION);
-
-	/* vfwmsgs.h */
-	ENTRY(VFW_S_NO_MORE_ITEMS);
-	ENTRY(VFW_E_BAD_KEY);
-	ENTRY(VFW_E_INVALIDMEDIATYPE);
-	ENTRY(VFW_E_INVALIDSUBTYPE);
-	ENTRY(VFW_E_NEED_OWNER);
-	ENTRY(VFW_E_ENUM_OUT_OF_SYNC);
-	ENTRY(VFW_E_ALREADY_CONNECTED);
-	ENTRY(VFW_E_FILTER_ACTIVE);
-	ENTRY(VFW_E_NO_TYPES);
-	ENTRY(VFW_E_NO_ACCEPTABLE_TYPES);
-	ENTRY(VFW_E_INVALID_DIRECTION);
-	ENTRY(VFW_E_NOT_CONNECTED);
-	ENTRY(VFW_E_NO_ALLOCATOR);
-	ENTRY(VFW_E_RUNTIME_ERROR);
-	ENTRY(VFW_E_BUFFER_NOTSET);
-	ENTRY(VFW_E_BUFFER_OVERFLOW);
-	ENTRY(VFW_E_BADALIGN);
-	ENTRY(VFW_E_ALREADY_COMMITTED);
-	ENTRY(VFW_E_BUFFERS_OUTSTANDING);
-	ENTRY(VFW_E_NOT_COMMITTED);
-	ENTRY(VFW_E_SIZENOTSET);
-	ENTRY(VFW_E_NO_CLOCK);
-	ENTRY(VFW_E_NO_SINK);
-	ENTRY(VFW_E_NO_INTERFACE);
-	ENTRY(VFW_E_NOT_FOUND);
-	ENTRY(VFW_E_CANNOT_CONNECT);
-	ENTRY(VFW_E_CANNOT_RENDER);
-	ENTRY(VFW_E_CHANGING_FORMAT);
-	ENTRY(VFW_E_NO_COLOR_KEY_SET);
-	ENTRY(VFW_E_NOT_OVERLAY_CONNECTION);
-	ENTRY(VFW_E_NOT_SAMPLE_CONNECTION);
-	ENTRY(VFW_E_PALETTE_SET);
-	ENTRY(VFW_E_COLOR_KEY_SET);
-	ENTRY(VFW_E_NO_COLOR_KEY_FOUND);
-	ENTRY(VFW_E_NO_PALETTE_AVAILABLE);
-	ENTRY(VFW_E_NO_DISPLAY_PALETTE);
-	ENTRY(VFW_E_TOO_MANY_COLORS);
-	ENTRY(VFW_E_STATE_CHANGED);
-	ENTRY(VFW_E_NOT_STOPPED);
-	ENTRY(VFW_E_NOT_PAUSED);
-	ENTRY(VFW_E_NOT_RUNNING);
-	ENTRY(VFW_E_WRONG_STATE);
-	ENTRY(VFW_E_START_TIME_AFTER_END);
-	ENTRY(VFW_E_INVALID_RECT);
-	ENTRY(VFW_E_TYPE_NOT_ACCEPTED);
-	ENTRY(VFW_E_SAMPLE_REJECTED);
-	ENTRY(VFW_E_SAMPLE_REJECTED_EOS);
-	ENTRY(VFW_S_DUPLICATE_NAME);
-	ENTRY(VFW_E_DUPLICATE_NAME);
-	ENTRY(VFW_E_TIMEOUT);
-	ENTRY(VFW_E_INVALID_FILE_FORMAT);
-	ENTRY(VFW_E_ENUM_OUT_OF_RANGE);
-	ENTRY(VFW_E_CIRCULAR_GRAPH);
-	ENTRY(VFW_E_NOT_ALLOWED_TO_SAVE);
-	ENTRY(VFW_E_TIME_ALREADY_PASSED);
-	ENTRY(VFW_E_ALREADY_CANCELLED);
-	ENTRY(VFW_E_CORRUPT_GRAPH_FILE);
-	ENTRY(VFW_E_ADVISE_ALREADY_SET);
-	ENTRY(VFW_S_STATE_INTERMEDIATE);
-	ENTRY(VFW_E_NO_MODEX_AVAILABLE);
-	ENTRY(VFW_E_NO_ADVISE_SET);
-	ENTRY(VFW_E_NO_FULLSCREEN);
-	ENTRY(VFW_E_IN_FULLSCREEN_MODE);
-	ENTRY(VFW_E_UNKNOWN_FILE_TYPE);
-	ENTRY(VFW_E_CANNOT_LOAD_SOURCE_FILTER);
-	ENTRY(VFW_S_PARTIAL_RENDER);
-	ENTRY(VFW_E_FILE_TOO_SHORT);
-	ENTRY(VFW_E_INVALID_FILE_VERSION);
-	ENTRY(VFW_S_SOME_DATA_IGNORED);
-	ENTRY(VFW_S_CONNECTIONS_DEFERRED);
-	ENTRY(VFW_E_INVALID_CLSID);
-	ENTRY(VFW_E_INVALID_MEDIA_TYPE);
-	ENTRY(VFW_E_SAMPLE_TIME_NOT_SET);
-	ENTRY(VFW_S_RESOURCE_NOT_NEEDED);
-	ENTRY(VFW_E_MEDIA_TIME_NOT_SET);
-	ENTRY(VFW_E_NO_TIME_FORMAT_SET);
-	ENTRY(VFW_E_MONO_AUDIO_HW);
-	ENTRY(VFW_S_MEDIA_TYPE_IGNORED);
-	ENTRY(VFW_E_NO_DECOMPRESSOR);
-	ENTRY(VFW_E_NO_AUDIO_HARDWARE);
-	ENTRY(VFW_S_VIDEO_NOT_RENDERED);
-	ENTRY(VFW_S_AUDIO_NOT_RENDERED);
-	ENTRY(VFW_E_RPZA);
-	ENTRY(VFW_S_RPZA);
-	ENTRY(VFW_E_PROCESSOR_NOT_SUITABLE);
-	ENTRY(VFW_E_UNSUPPORTED_AUDIO);
-	ENTRY(VFW_E_UNSUPPORTED_VIDEO);
-	ENTRY(VFW_E_MPEG_NOT_CONSTRAINED);
-	ENTRY(VFW_E_NOT_IN_GRAPH);
-	ENTRY(VFW_S_ESTIMATED);
-	ENTRY(VFW_E_NO_TIME_FORMAT);
-	ENTRY(VFW_E_READ_ONLY);
-	ENTRY(VFW_S_RESERVED);
-	ENTRY(VFW_E_BUFFER_UNDERFLOW);
-	ENTRY(VFW_E_UNSUPPORTED_STREAM);
-	ENTRY(VFW_E_NO_TRANSPORT);
-	ENTRY(VFW_S_STREAM_OFF);
-	ENTRY(VFW_S_CANT_CUE);
-	ENTRY(VFW_E_BAD_VIDEOCD);
-	ENTRY(VFW_S_NO_STOP_TIME);
-	ENTRY(VFW_E_OUT_OF_VIDEO_MEMORY);
-	ENTRY(VFW_E_VP_NEGOTIATION_FAILED);
-	ENTRY(VFW_E_DDRAW_CAPS_NOT_SUITABLE);
-	ENTRY(VFW_E_NO_VP_HARDWARE);
-	ENTRY(VFW_E_NO_CAPTURE_HARDWARE);
-	ENTRY(VFW_E_DVD_OPERATION_INHIBITED);
-	ENTRY(VFW_E_DVD_INVALIDDOMAIN);
-	ENTRY(VFW_E_DVD_NO_BUTTON);
-	ENTRY(VFW_E_DVD_GRAPHNOTREADY);
-	ENTRY(VFW_E_DVD_RENDERFAIL);
-	ENTRY(VFW_E_DVD_DECNOTENOUGH);
-	ENTRY(VFW_E_DDRAW_VERSION_NOT_SUITABLE);
-	ENTRY(VFW_E_COPYPROT_FAILED);
-	ENTRY(VFW_S_NOPREVIEWPIN);
-	ENTRY(VFW_E_TIME_EXPIRED);
-	ENTRY(VFW_S_DVD_NON_ONE_SEQUENTIAL);
-	ENTRY(VFW_E_DVD_WRONG_SPEED);
-	ENTRY(VFW_E_DVD_MENU_DOES_NOT_EXIST);
-	ENTRY(VFW_E_DVD_CMD_CANCELLED);
-	ENTRY(VFW_E_DVD_STATE_WRONG_VERSION);
-	ENTRY(VFW_E_DVD_STATE_CORRUPT);
-	ENTRY(VFW_E_DVD_STATE_WRONG_DISC);
-	ENTRY(VFW_E_DVD_INCOMPATIBLE_REGION);
-	ENTRY(VFW_E_DVD_NO_ATTRIBUTES);
-	ENTRY(VFW_E_DVD_NO_GOUP_PGC);
-	ENTRY(VFW_E_DVD_LOW_PARENTAL_LEVEL);
-	ENTRY(VFW_E_DVD_NOT_IN_KARAOKE_MODE);
-	ENTRY(VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE);
-	ENTRY(VFW_S_DVD_NOT_ACCURATE);
-	ENTRY(VFW_E_FRAME_STEP_UNSUPPORTED);
-	ENTRY(VFW_E_DVD_STREAM_DISABLED);
-	ENTRY(VFW_E_DVD_TITLE_UNKNOWN);
-	ENTRY(VFW_E_DVD_INVALID_DISC);
-	ENTRY(VFW_E_DVD_NO_RESUME_INFORMATION);
-	ENTRY(VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD);
-	ENTRY(VFW_E_PIN_ALREADY_BLOCKED);
-	ENTRY(VFW_E_CERTIFICATION_FAILURE);
-	#undef	ENTRY
-	}
-
-	return NULL;
-}
-
-/***********************************************************************
- *	AMGetErrorTextA	(quartz.@)
- */
-DWORD WINAPI AMGetErrorTextA(HRESULT hr, LPSTR pszbuf, DWORD dwBufLen)
-{
-	LPCSTR	lpszRes;
-	DWORD len;
-
-	lpszRes = hresult_to_string( hr );
-	if ( lpszRes == NULL )
-		return 0;
-	len = (DWORD)(strlen(lpszRes)+1);
-	if ( len > dwBufLen )
-		return 0;
-
-	memcpy( pszbuf, lpszRes, len );
-	return len;
-}
-
-/***********************************************************************
- *	AMGetErrorTextW	(quartz.@)
- */
-DWORD WINAPI AMGetErrorTextW(HRESULT hr, LPWSTR pwszbuf, DWORD dwBufLen)
-{
-	CHAR	szBuf[MAX_ERROR_TEXT_LEN+1];
-	DWORD	dwLen;
-
-	dwLen = AMGetErrorTextA(hr,szBuf,MAX_ERROR_TEXT_LEN);
-	if ( dwLen == 0 )
-		return 0;
-	szBuf[dwLen] = 0;
-
-	QUARTZ_strncpyAtoW( pwszbuf, szBuf, dwBufLen );
-
-	return lstrlenW( pwszbuf );
-}
+/* all codes are removed by author */
diff --git a/dlls/quartz/memalloc.c b/dlls/quartz/memalloc.c
deleted file mode 100644
index ea5cf1f..0000000
--- a/dlls/quartz/memalloc.c
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
- * Implementation of CLSID_MemoryAllocator.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "uuids.h"
-#include "vfwmsgs.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "memalloc.h"
-
-
-/***************************************************************************
- *
- *	new/delete for CLSID_MemoryAllocator.
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry IFEntries[] =
-{
-  { &IID_IMemAllocator, offsetof(CMemoryAllocator,memalloc)-offsetof(CMemoryAllocator,unk) },
-};
-
-static void QUARTZ_DestroyMemoryAllocator(IUnknown* punk)
-{
-	CMemoryAllocator_THIS(punk,unk);
-
-	CMemoryAllocator_UninitIMemAllocator( This );
-}
-
-HRESULT QUARTZ_CreateMemoryAllocator(IUnknown* punkOuter,void** ppobj)
-{
-	CMemoryAllocator*	pma;
-	HRESULT	hr;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	pma = (CMemoryAllocator*)QUARTZ_AllocObj( sizeof(CMemoryAllocator) );
-	if ( pma == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &pma->unk, punkOuter );
-	hr = CMemoryAllocator_InitIMemAllocator( pma );
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj( pma );
-		return hr;
-	}
-
-	pma->unk.pEntries = IFEntries;
-	pma->unk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]);
-	pma->unk.pOnFinalRelease = QUARTZ_DestroyMemoryAllocator;
-
-	*ppobj = (void*)(&pma->unk);
-
-	return S_OK;
-}
-
-
-/***************************************************************************
- *
- *	CMemoryAllocator::IMemAllocator
- *
- */
-
-static HRESULT
-IMemAllocator_LockUnusedBuffer(CMemoryAllocator* This,IMediaSample** ppSample)
-{
-	HRESULT hr = E_FAIL;
-	LONG	i;
-
-	TRACE("(%p) try to enter critical section\n",This);
-	EnterCriticalSection( &This->csMem );
-	TRACE("(%p) enter critical section\n",This);
-
-	if ( This->pData == NULL || This->ppSamples == NULL ||
-	     This->prop.cBuffers <= 0 )
-	{
-		hr = VFW_E_NOT_COMMITTED;
-		goto end;
-	}
-
-
-	for ( i = 0; i < This->prop.cBuffers; i++ )
-	{
-		if ( This->ppSamples[i] == NULL )
-		{
-			hr = VFW_E_NOT_COMMITTED;
-			goto end;
-		}
-		if ( This->ppSamples[i]->ref == 0 )
-		{
-			*ppSample = (IMediaSample*)(This->ppSamples[i]);
-			IMediaSample_AddRef( *ppSample );
-			hr = NOERROR;
-			goto end;
-		}
-	}
-
-	hr = VFW_E_TIMEOUT;
-end:
-	LeaveCriticalSection( &This->csMem );
-	TRACE("(%p) leave critical section\n",This);
-
-	return hr;
-}
-
-/* TRUE = all samples are released */
-static BOOL
-IMemAllocator_ReleaseUnusedBuffer(CMemoryAllocator* This)
-{
-	LONG	i;
-	BOOL	bRet = TRUE;
-
-	TRACE("(%p) try to enter critical section\n",This);
-	EnterCriticalSection( &This->csMem );
-	TRACE("(%p) enter critical section\n",This);
-
-	if ( This->pData == NULL || This->ppSamples == NULL ||
-	     This->prop.cBuffers <= 0 )
-		goto end;
-
-	for ( i = 0; i < This->prop.cBuffers; i++ )
-	{
-		if ( This->ppSamples[i]->ref == 0 )
-		{
-			QUARTZ_DestroyMemMediaSample( This->ppSamples[i] );
-			This->ppSamples[i] = NULL;
-		}
-		else
-		{
-			bRet = FALSE;
-		}
-	}
-
-	if ( bRet )
-	{
-		QUARTZ_FreeMem(This->ppSamples);
-		This->ppSamples = NULL;
-		QUARTZ_FreeMem(This->pData);
-		This->pData = NULL;
-	}
-
-end:
-	LeaveCriticalSection( &This->csMem );
-	TRACE("(%p) leave critical section\n",This);
-
-	return bRet;
-}
-
-
-static HRESULT WINAPI
-IMemAllocator_fnQueryInterface(IMemAllocator* iface,REFIID riid,void** ppobj)
-{
-	CMemoryAllocator_THIS(iface,memalloc);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IMemAllocator_fnAddRef(IMemAllocator* iface)
-{
-	CMemoryAllocator_THIS(iface,memalloc);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IMemAllocator_fnRelease(IMemAllocator* iface)
-{
-	CMemoryAllocator_THIS(iface,memalloc);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IMemAllocator_fnSetProperties(IMemAllocator* iface,ALLOCATOR_PROPERTIES* pPropReq,ALLOCATOR_PROPERTIES* pPropActual)
-{
-	CMemoryAllocator_THIS(iface,memalloc);
-	long	padding;
-	HRESULT	hr;
-
-	TRACE( "(%p)->(%p,%p)\n", This, pPropReq, pPropActual );
-
-	if ( pPropReq == NULL || pPropActual == NULL )
-		return E_POINTER;
-	if ( pPropReq->cBuffers <= 0 ||
-	     pPropReq->cbBuffer <= 0 ||
-	     pPropReq->cbAlign < 0 ||
-	     pPropReq->cbPrefix < 0 )
-	{
-		TRACE("pPropReq is invalid\n");
-		return E_INVALIDARG;
-	}
-
-	if ( pPropReq->cbAlign == 0 ||
-	     ( pPropReq->cbAlign & (pPropReq->cbAlign-1) ) != 0 )
-	{
-		WARN("cbAlign is invalid - %ld\n",pPropReq->cbAlign);
-		return VFW_E_BADALIGN;
-	}
-
-	hr = NOERROR;
-
-	EnterCriticalSection( &This->csMem );
-
-	if ( This->pData != NULL || This->ppSamples != NULL )
-	{
-		/* if commited, properties must not be changed. */
-		TRACE("already commited\n");
-		hr = E_UNEXPECTED;
-		goto end;
-	}
-
-	This->prop.cBuffers = pPropReq->cBuffers;
-	This->prop.cbBuffer = pPropReq->cbBuffer;
-	This->prop.cbAlign = pPropReq->cbAlign;
-	This->prop.cbPrefix = pPropReq->cbPrefix;
-
-	if ( This->prop.cbAlign == 0 )
-		This->prop.cbAlign = 1;
-	padding = This->prop.cbAlign -
-		( (This->prop.cbBuffer+This->prop.cbPrefix) % This->prop.cbAlign );
-
-	This->prop.cbBuffer += padding;
-
-	memcpy( pPropActual, &This->prop, sizeof(ALLOCATOR_PROPERTIES) );
-
-end:
-	LeaveCriticalSection( &This->csMem );
-
-	TRACE("returned successfully.\n");
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMemAllocator_fnGetProperties(IMemAllocator* iface,ALLOCATOR_PROPERTIES* pProp)
-{
-	CMemoryAllocator_THIS(iface,memalloc);
-
-	TRACE( "(%p)->(%p)\n", This, pProp );
-
-	if ( pProp == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->csMem );
-
-	memcpy( pProp, &This->prop, sizeof(ALLOCATOR_PROPERTIES) );
-
-	LeaveCriticalSection( &This->csMem );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IMemAllocator_fnCommit(IMemAllocator* iface)
-{
-	CMemoryAllocator_THIS(iface,memalloc);
-	HRESULT	hr;
-	LONG	lBufSize;
-	LONG	i;
-	BYTE*	pCur;
-
-	TRACE( "(%p)->()\n", This );
-
-	EnterCriticalSection( &This->csMem );
-
-	hr = NOERROR;
-	/* FIXME - handle in Decommitting */
-	if ( This->pData != NULL || This->ppSamples != NULL ||
-	     This->prop.cBuffers <= 0 )
-		goto end;
-
-	lBufSize = This->prop.cBuffers *
-		(This->prop.cbBuffer + This->prop.cbPrefix) +
-		This->prop.cbAlign;
-	if ( lBufSize <= 0 )
-		lBufSize = 1;
-
-	This->pData = (BYTE*)QUARTZ_AllocMem( lBufSize );
-	if ( This->pData == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto end;
-	}
-
-	This->ppSamples = (CMemMediaSample**)QUARTZ_AllocMem(
-		sizeof(CMemMediaSample*) * This->prop.cBuffers );
-	if ( This->ppSamples == NULL )
-	{
-		hr = E_OUTOFMEMORY;
-		goto end;
-	}
-
-	for ( i = 0; i < This->prop.cBuffers; i++ )
-		This->ppSamples[i] = NULL;
-
-	pCur = This->pData + This->prop.cbAlign - ((This->pData-(BYTE*)NULL) & (This->prop.cbAlign-1));
-
-	for ( i = 0; i < This->prop.cBuffers; i++ )
-	{
-		hr = QUARTZ_CreateMemMediaSample(
-			pCur, (This->prop.cbBuffer + This->prop.cbPrefix),
-			iface, &This->ppSamples[i] );
-		if ( FAILED(hr) )
-			goto end;
-		pCur += (This->prop.cbBuffer + This->prop.cbPrefix);
-	}
-
-	hr = NOERROR;
-end:
-	if ( FAILED(hr) )
-		IMemAllocator_Decommit(iface);
-
-	LeaveCriticalSection( &This->csMem );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMemAllocator_fnDecommit(IMemAllocator* iface)
-{
-	CMemoryAllocator_THIS(iface,memalloc);
-
-	TRACE( "(%p)->()\n", This );
-
-	while ( 1 )
-	{
-		ResetEvent( This->hEventSample );
-
-		/* to avoid deadlock, don't hold critical section while blocking */
-		if ( IMemAllocator_ReleaseUnusedBuffer(This) )
-			break;
-
-		WaitForSingleObject( This->hEventSample, INFINITE );
-	}
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IMemAllocator_fnGetBuffer(IMemAllocator* iface,IMediaSample** ppSample,REFERENCE_TIME* prtStart,REFERENCE_TIME* prtEnd,DWORD dwFlags)
-{
-	CMemoryAllocator_THIS(iface,memalloc);
-	HRESULT	hr;
-
-	TRACE( "(%p)->(%p,%p,%p,%lu)\n", This, ppSample, prtStart, prtEnd, dwFlags );
-
-	if ( ppSample == NULL )
-		return E_POINTER;
-
-	while ( 1 )
-	{
-		ResetEvent( This->hEventSample );
-
-		/* to avoid deadlock, don't hold critical section while blocking */
-		hr = IMemAllocator_LockUnusedBuffer(This,ppSample);
-		if ( ( hr != VFW_E_TIMEOUT ) || ( dwFlags & AM_GBF_NOWAIT ) )
-			goto end;
-
-		WaitForSingleObject( This->hEventSample, INFINITE );
-	}
-
-end:
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMemAllocator_fnReleaseBuffer(IMemAllocator* iface,IMediaSample* pSample)
-{
-	CMemoryAllocator_THIS(iface,memalloc);
-
-	TRACE( "(%p)->(%p)\n", This, pSample );
-	SetEvent( This->hEventSample );
-
-	return NOERROR;
-}
-
-
-
-static ICOM_VTABLE(IMemAllocator) imemalloc =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMemAllocator_fnQueryInterface,
-	IMemAllocator_fnAddRef,
-	IMemAllocator_fnRelease,
-	/* IMemAllocator fields */
-	IMemAllocator_fnSetProperties,
-	IMemAllocator_fnGetProperties,
-	IMemAllocator_fnCommit,
-	IMemAllocator_fnDecommit,
-	IMemAllocator_fnGetBuffer,
-	IMemAllocator_fnReleaseBuffer,
-};
-
-
-HRESULT CMemoryAllocator_InitIMemAllocator( CMemoryAllocator* pma )
-{
-	TRACE("(%p)\n",pma);
-
-	ICOM_VTBL(&pma->memalloc) = &imemalloc;
-
-	ZeroMemory( &pma->prop, sizeof(pma->prop) );
-	pma->hEventSample = (HANDLE)NULL;
-	pma->pData = NULL;
-	pma->ppSamples = NULL;
-
-	pma->hEventSample = CreateEventA( NULL, TRUE, FALSE, NULL );
-	if ( pma->hEventSample == (HANDLE)NULL )
-		return E_OUTOFMEMORY;
-
-	InitializeCriticalSection( &pma->csMem );
-
-	return NOERROR;
-}
-
-void CMemoryAllocator_UninitIMemAllocator( CMemoryAllocator* pma )
-{
-	TRACE("(%p)\n",pma);
-
-	IMemAllocator_Decommit( (IMemAllocator*)(&pma->memalloc) );
-
-	DeleteCriticalSection( &pma->csMem );
-
-	if ( pma->hEventSample != (HANDLE)NULL )
-		CloseHandle( pma->hEventSample );
-}
-
diff --git a/dlls/quartz/memalloc.h b/dlls/quartz/memalloc.h
deleted file mode 100644
index 6cecfd1..0000000
--- a/dlls/quartz/memalloc.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef WINE_DSHOW_MEMALLOC_H
-#define WINE_DSHOW_MEMALLOC_H
-
-/*
-		implements CLSID_MemoryAllocator.
-
-	- At least, the following interfaces should be implemented:
-
-	IUnknown
-		+ IMemAllocator
-
-*/
-
-#include "iunk.h"
-#include "sample.h"
-
-typedef struct MA_IMemAllocatorImpl
-{
-	ICOM_VFIELD(IMemAllocator);
-} MA_IMemAllocatorImpl;
-
-typedef struct CMemoryAllocator
-{
-	QUARTZ_IUnkImpl	unk;
-	MA_IMemAllocatorImpl	memalloc;
-
-	/* IMemAllocator fields. */
-	CRITICAL_SECTION	csMem;
-	ALLOCATOR_PROPERTIES	prop;
-	HANDLE	hEventSample;
-	BYTE*	pData;
-	CMemMediaSample**	ppSamples;
-} CMemoryAllocator;
-
-#define	CMemoryAllocator_THIS(iface,member)		CMemoryAllocator*	This = ((CMemoryAllocator*)(((char*)iface)-offsetof(CMemoryAllocator,member)))
-
-HRESULT QUARTZ_CreateMemoryAllocator(IUnknown* punkOuter,void** ppobj);
-
-HRESULT CMemoryAllocator_InitIMemAllocator( CMemoryAllocator* pma );
-void CMemoryAllocator_UninitIMemAllocator( CMemoryAllocator* pma );
-
-
-#endif  /* WINE_DSHOW_MEMALLOC_H */
diff --git a/dlls/quartz/midparse.c b/dlls/quartz/midparse.c
deleted file mode 100644
index 37f7715..0000000
--- a/dlls/quartz/midparse.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Implements MIDI Parser.
- *
- *	FIXME - stub
- *	FIXME - no seeking
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "mmsystem.h"
-#include "vfw.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "vfwmsgs.h"
-#include "amvideo.h"
-#include "uuids.h"
-
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "parser.h"
-#include "mtype.h"
-
-
-
-static const WCHAR QUARTZ_MIDIParser_Name[] =
-{ 'Q','u','i','c','k','T','i','m','e',' ','M','o','v','i','e',' ','P','a','r','s','e','r',0 };
-static const WCHAR QUARTZ_MIDIParserInPin_Name[] =
-{ 'I','n',0 };
-static const WCHAR QUARTZ_MIDIParserOutPin_Name[] =
-{ 'O','u','t',0 };
-
-
-/****************************************************************************
- *
- *	CMIDIParseImpl
- */
-
-
-typedef struct CMIDIParseImpl CMIDIParseImpl;
-
-struct CMIDIParseImpl
-{
-};
-
-
-static HRESULT CMIDIParseImpl_InitParser( CParserImpl* pImpl, ULONG* pcStreams )
-{
-	WARN("(%p,%p) stub\n",pImpl,pcStreams);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CMIDIParseImpl_UninitParser( CParserImpl* pImpl )
-{
-	CMIDIParseImpl*	This = (CMIDIParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	/* destruct */
-
-	QUARTZ_FreeMem( This );
-	pImpl->m_pUserData = NULL;
-
-	return NOERROR;
-}
-
-static LPCWSTR CMIDIParseImpl_GetOutPinName( CParserImpl* pImpl, ULONG nStreamIndex )
-{
-	CMIDIParseImpl*	This = (CMIDIParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p,%lu)\n",This,nStreamIndex);
-
-	return QUARTZ_MIDIParserOutPin_Name;
-}
-
-static HRESULT CMIDIParseImpl_GetStreamType( CParserImpl* pImpl, ULONG nStreamIndex, AM_MEDIA_TYPE* pmt )
-{
-	CMIDIParseImpl*	This = (CMIDIParseImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p) stub\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CMIDIParseImpl_CheckStreamType( CParserImpl* pImpl, ULONG nStreamIndex, const AM_MEDIA_TYPE* pmt )
-{
-	CMIDIParseImpl*	This = (CMIDIParseImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p) stub\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CMIDIParseImpl_GetAllocProp( CParserImpl* pImpl, ALLOCATOR_PROPERTIES* pReqProp )
-{
-	CMIDIParseImpl*	This = (CMIDIParseImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p,%p) stub\n",This,pReqProp);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CMIDIParseImpl_GetNextRequest( CParserImpl* pImpl, ULONG* pnStreamIndex, LONGLONG* pllStart, LONG* plLength, REFERENCE_TIME* prtStart, REFERENCE_TIME* prtStop, DWORD* pdwSampleFlags )
-{
-	CMIDIParseImpl*	This = (CMIDIParseImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p) stub\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CMIDIParseImpl_ProcessSample( CParserImpl* pImpl, ULONG nStreamIndex, LONGLONG llStart, LONG lLength, IMediaSample* pSample )
-{
-	CMIDIParseImpl*	This = (CMIDIParseImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p,%lu,%ld,%ld,%p)\n",This,nStreamIndex,(long)llStart,lLength,pSample);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return E_NOTIMPL;
-}
-
-static const struct ParserHandlers CMIDIParseImpl_Handlers =
-{
-	CMIDIParseImpl_InitParser,
-	CMIDIParseImpl_UninitParser,
-	CMIDIParseImpl_GetOutPinName,
-	CMIDIParseImpl_GetStreamType,
-	CMIDIParseImpl_CheckStreamType,
-	CMIDIParseImpl_GetAllocProp,
-	CMIDIParseImpl_GetNextRequest,
-	CMIDIParseImpl_ProcessSample,
-
-	/* for IQualityControl */
-	NULL, /* pQualityNotify */
-
-	/* for seeking */
-	NULL, /* pGetSeekingCaps */
-	NULL, /* pIsTimeFormatSupported */
-	NULL, /* pGetCurPos */
-	NULL, /* pSetCurPos */
-	NULL, /* pGetDuration */
-	NULL, /* pGetStopPos */
-	NULL, /* pSetStopPos */
-	NULL, /* pGetPreroll */
-};
-
-HRESULT QUARTZ_CreateMIDIParser(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateParser(
-		punkOuter,ppobj,
-		&CLSID_quartzMIDIParser,
-		QUARTZ_MIDIParser_Name,
-		QUARTZ_MIDIParserInPin_Name,
-		&CMIDIParseImpl_Handlers );
-}
-
-
diff --git a/dlls/quartz/mjpgdec.c b/dlls/quartz/mjpgdec.c
deleted file mode 100644
index 023c704..0000000
--- a/dlls/quartz/mjpgdec.c
+++ /dev/null
@@ -1,406 +0,0 @@
-/*
- * Implements AVI MJPG Decompressor.
- *
- *	FIXME - stub
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "vfw.h"
-#include "strmif.h"
-#include "control.h"
-#include "amvideo.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "xform.h"
-#include "ijgdec.h"
-
-static const WCHAR MJPGDec_FilterName[] =
-{'M','J','P','G',' ','D','e','c','o','m','p','r','e','s','s','o','r',0};
-
-typedef struct CMJPGDecImpl
-{
-	AM_MEDIA_TYPE*	m_pmtConv;
-	DWORD	m_cConv;
-	BITMAPINFOHEADER	m_biOut;
-} CMJPGDecImpl;
-
-static const BYTE jpeg_standard_dht_data[0x1f+0xb5+0x1f+0xb5+2*4] =
-{
-	 0xff, 0xc4, 0x00, 0x1f, 0x00,
-	 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01,
-	 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-	 0x08, 0x09, 0x0a, 0x0b,
-
-	 0xff, 0xc4, 0x00, 0xb5, 0x10,
-	 0x00, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03,
-	 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7d,
-	 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,
-	 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,
-	 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08,
-	 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0,
-	 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16,
-	 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28,
-	 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
-	 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
-	 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
-	 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
-	 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
-	 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
-	 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
-	 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
-	 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
-	 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
-	 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,
-	 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2,
-	 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
-	 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
-	 0xf9, 0xfa,
-
-	 0xff, 0xc4, 0x00, 0x1f, 0x01,
-	 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-	 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-	 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-	 0x08, 0x09, 0x0a, 0x0b,
-
-	 0xff, 0xc4, 0x00, 0xb5, 0x11,
-	 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04,
-	 0x07, 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77,
-	 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21,
-	 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,
-	 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91,
-	 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0,
-	 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34,
-	 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26,
-	 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38,
-	 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
-	 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
-	 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
-	 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
-	 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
-	 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96,
-	 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5,
-	 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4,
-	 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3,
-	 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2,
-	 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,
-	 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
-	 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
-	 0xf9, 0xfa,
-};
-
-/***************************************************************************
- *
- *	CMJPGDecImpl methods
- *
- */
-
-static void MJPGDec_FreeOutTypes(CMJPGDecImpl* This)
-{
-	DWORD	i;
-
-	if ( This->m_pmtConv == NULL )
-		return;
-
-	TRACE("cConv = %lu\n",This->m_cConv);
-	for ( i = 0; i < This->m_cConv; i++ )
-	{
-		QUARTZ_MediaType_Free(&This->m_pmtConv[i]);
-	}
-	QUARTZ_FreeMem(This->m_pmtConv);
-	This->m_pmtConv = NULL;
-	This->m_cConv = 0;
-}
-
-
-static HRESULT MJPGDec_Init( CTransformBaseImpl* pImpl )
-{
-	CMJPGDecImpl*	This = pImpl->m_pUserData;
-
-	if ( This != NULL )
-		return NOERROR;
-
-	This = (CMJPGDecImpl*)QUARTZ_AllocMem( sizeof(CMJPGDecImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This, sizeof(CMJPGDecImpl) );
-	pImpl->m_pUserData = This;
-	/* construct */
-	This->m_pmtConv = NULL;
-	This->m_cConv = 0;
-
-	return NOERROR;
-}
-
-static HRESULT MJPGDec_Cleanup( CTransformBaseImpl* pImpl )
-{
-	CMJPGDecImpl*	This = pImpl->m_pUserData;
-
-	if ( This == NULL )
-		return NOERROR;
-	/* destruct */
-	MJPGDec_FreeOutTypes(This);
-
-	QUARTZ_FreeMem( This );
-	pImpl->m_pUserData = NULL;
-
-	return NOERROR;
-}
-
-static HRESULT MJPGDec_CheckMediaType( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut )
-{
-	CMJPGDecImpl*	This = pImpl->m_pUserData;
-	const BITMAPINFOHEADER*	pbiIn = NULL;
-	const BITMAPINFOHEADER*	pbiOut = NULL;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	if ( !IsEqualGUID( &pmtIn->majortype, &MEDIATYPE_Video ) )
-		return E_FAIL;
-	if ( !IsEqualGUID( &pmtIn->formattype, &FORMAT_VideoInfo ) )
-		return E_FAIL;
-	pbiIn = (&((const VIDEOINFOHEADER*)pmtIn->pbFormat)->bmiHeader);
-	if ( pbiIn->biCompression != mmioFOURCC('M','J','P','G') &&
-		 pbiIn->biCompression != mmioFOURCC('m','j','p','g') )
-		return E_FAIL;
-	if ( pbiIn->biBitCount != 24 )
-		return E_FAIL;
-
-	if ( pmtOut != NULL )
-	{
-		if ( !IsEqualGUID( &pmtOut->majortype, &MEDIATYPE_Video ) )
-			return E_FAIL;
-		if ( !IsEqualGUID( &pmtOut->formattype, &FORMAT_VideoInfo ) )
-			return E_FAIL;
-		if ( !IsEqualGUID( &pmtOut->subtype, &MEDIASUBTYPE_RGB24 ) )
-			return E_FAIL;
-		pbiOut = (&((const VIDEOINFOHEADER*)pmtOut->pbFormat)->bmiHeader);
-		if ( pbiOut->biCompression != 0 )
-			return E_FAIL;
-		if ( pbiIn->biWidth != pbiOut->biWidth ||
-			 pbiIn->biHeight != pbiOut->biHeight ||
-			 pbiIn->biPlanes != 1 || pbiOut->biPlanes != 1 ||
-			 pbiOut->biBitCount != pbiIn->biBitCount )
-			return E_FAIL;
-	}
-
-	return S_OK;
-}
-
-static HRESULT MJPGDec_GetOutputTypes( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE** ppmtAcceptTypes, ULONG* pcAcceptTypes )
-{
-	CMJPGDecImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-	DWORD dwIndex;
-	const BITMAPINFOHEADER*	pbiIn = NULL;
-	BITMAPINFOHEADER*	pbiOut = NULL;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = MJPGDec_CheckMediaType( pImpl, pmtIn, NULL );
-	if ( FAILED(hr) )
-		return hr;
-	pbiIn = (&((const VIDEOINFOHEADER*)pmtIn->pbFormat)->bmiHeader);
-
-	MJPGDec_FreeOutTypes(This);
-
-	This->m_cConv = 1;
-	This->m_pmtConv = (AM_MEDIA_TYPE*)QUARTZ_AllocMem( sizeof(AM_MEDIA_TYPE) );
-	if ( This->m_pmtConv == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This->m_pmtConv, sizeof(AM_MEDIA_TYPE) * 1 );
-
-	dwIndex = 0;
-
-	memcpy( &This->m_pmtConv[dwIndex].majortype, &MEDIATYPE_Video, sizeof(GUID) );
-	memcpy( &This->m_pmtConv[dwIndex].subtype, &MEDIASUBTYPE_RGB24, sizeof(GUID) );
-	This->m_pmtConv[dwIndex].bFixedSizeSamples = 1;
-	This->m_pmtConv[dwIndex].bTemporalCompression = 0;
-	This->m_pmtConv[dwIndex].lSampleSize = DIBSIZE(*pbiIn);
-	memcpy( &This->m_pmtConv[dwIndex].formattype, &FORMAT_VideoInfo, sizeof(GUID) );
-	This->m_pmtConv[dwIndex].cbFormat = sizeof(VIDEOINFO);
-	This->m_pmtConv[dwIndex].pbFormat = (BYTE*)CoTaskMemAlloc( This->m_pmtConv[dwIndex].cbFormat );
-	if ( This->m_pmtConv[dwIndex].pbFormat == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This->m_pmtConv[dwIndex].pbFormat, This->m_pmtConv[dwIndex].cbFormat );
-	pbiOut = &(((VIDEOINFOHEADER*)(This->m_pmtConv[dwIndex].pbFormat))->bmiHeader);
-	pbiOut->biSize = sizeof(BITMAPINFOHEADER);
-	pbiOut->biWidth = pbiIn->biWidth;
-	pbiOut->biHeight = pbiIn->biHeight;
-	pbiOut->biPlanes = 1;
-	pbiOut->biBitCount = pbiIn->biBitCount;
-
-	*ppmtAcceptTypes = This->m_pmtConv;
-	*pcAcceptTypes = This->m_cConv;
-
-	return S_OK;
-}
-
-static HRESULT MJPGDec_GetAllocProp( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, ALLOCATOR_PROPERTIES* pProp, BOOL* pbTransInPlace, BOOL* pbTryToReuseSample )
-{
-	CMJPGDecImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-	const BITMAPINFOHEADER*	pbiOut = NULL;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = MJPGDec_CheckMediaType( pImpl, pmtIn, NULL );
-	if ( FAILED(hr) )
-		return hr;
-	pbiOut = (&((const VIDEOINFOHEADER*)pmtOut->pbFormat)->bmiHeader);
-
-	pProp->cBuffers = 1;
-	pProp->cbBuffer = DIBSIZE(*pbiOut);
-
-	return S_OK;
-}
-
-static HRESULT MJPGDec_BeginTransform( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, BOOL bReuseSample )
-{
-	CMJPGDecImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-	const BITMAPINFOHEADER*	pbiOut = NULL;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = MJPGDec_CheckMediaType( pImpl, pmtIn, NULL );
-	if ( FAILED(hr) )
-		return hr;
-
-	ZeroMemory( &This->m_biOut, sizeof(BITMAPINFOHEADER) );
-
-	pbiOut = (&((const VIDEOINFOHEADER*)pmtOut->pbFormat)->bmiHeader);
-	memcpy( &This->m_biOut, pbiOut, sizeof(BITMAPINFOHEADER) );
-
-	return S_OK;
-}
-
-static HRESULT MJPGDec_Transform( CTransformBaseImpl* pImpl, IMediaSample* pSampIn, IMediaSample* pSampOut )
-{
-	CMJPGDecImpl*	This = pImpl->m_pUserData;
-	BYTE*	pDataIn = NULL;
-	BYTE*	pDataOut = NULL;
-	LONG	lDataInLen;
-	LONG	outpitch;
-	HRESULT hr;
-	const char*	psrcs[3];
-	int	lenofsrcs[3];
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = IMediaSample_GetPointer( pSampIn, &pDataIn );
-	if ( FAILED(hr) )
-		return hr;
-	lDataInLen = IMediaSample_GetActualDataLength( pSampIn );
-	if ( lDataInLen < 4 )
-		return E_FAIL;
-	hr = IMediaSample_GetPointer( pSampOut, &pDataOut );
-	if ( FAILED(hr) )
-		return hr;
-	IMediaSample_SetActualDataLength( pSampOut, DIBSIZE(This->m_biOut) );
-
-	if ( pDataIn[0] != 0xff || pDataIn[1] != 0xd8 )
-		return E_FAIL;
-
-	psrcs[0] = (const char*)&pDataIn[0];
-	psrcs[1] = (const char*)jpeg_standard_dht_data;
-	psrcs[2] = (const char*)&pDataIn[2];
-	lenofsrcs[0] = 2;
-	lenofsrcs[1] = sizeof(jpeg_standard_dht_data);
-	lenofsrcs[2] = lDataInLen - 2;
-
-	outpitch = DIBWIDTHBYTES(This->m_biOut);
-	if ( 0 > IJGDEC_Decode(
-		pDataOut + (This->m_biOut.biHeight-1) * outpitch, - outpitch,
-		This->m_biOut.biWidth, This->m_biOut.biHeight,
-		This->m_biOut.biBitCount,
-		&psrcs[0], &lenofsrcs[0], 3 ) )
-	{
-		return E_FAIL;
-	}
-
-	return S_OK;
-}
-
-static HRESULT MJPGDec_EndTransform( CTransformBaseImpl* pImpl )
-{
-	CMJPGDecImpl*	This = pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	ZeroMemory( &This->m_biOut, sizeof(BITMAPINFOHEADER) );
-
-	return S_OK;
-}
-
-
-static const TransformBaseHandlers transhandlers =
-{
-	MJPGDec_Init,
-	MJPGDec_Cleanup,
-	MJPGDec_CheckMediaType,
-	MJPGDec_GetOutputTypes,
-	MJPGDec_GetAllocProp,
-	MJPGDec_BeginTransform,
-	NULL,
-	MJPGDec_Transform,
-	MJPGDec_EndTransform,
-};
-
-HRESULT QUARTZ_CreateMJPGDecompressor(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateTransformBase(
-		punkOuter,ppobj,
-		&CLSID_quartzMJPGDecompressor,
-		MJPGDec_FilterName,
-		NULL, NULL,
-		&transhandlers );
-}
-
-
diff --git a/dlls/quartz/mpadec.c b/dlls/quartz/mpadec.c
deleted file mode 100644
index 25a6e93..0000000
--- a/dlls/quartz/mpadec.c
+++ /dev/null
@@ -1,369 +0,0 @@
-/*
- * Implements MPEG Audio Decoder(CLSID_CMpegAudioCodec)
- *
- *	FIXME - what library can we use? SMPEG??
- *
- *	FIXME - stub
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "mmsystem.h"
-#include "mmreg.h"
-#include "strmif.h"
-#include "control.h"
-#include "amvideo.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "xform.h"
-#include "mtype.h"
-
-static const WCHAR CMPEGAudioDecoderImpl_FilterName[] =
-{'M','P','E','G',' ','A','u','d','i','o',' ','D','e','c','o','d','e','r',0};
-
-
-typedef struct CMPEGAudioDecoderImpl
-{
-	AM_MEDIA_TYPE*	pmt;
-	DWORD		cmt;
-	WAVEFORMATEX	wfxOut;
-
-	/* codec stuffs */
-
-} CMPEGAudioDecoderImpl;
-
-
-/*****************************************************************************
- *
- *	codec-dependent stuffs	- no codec
- *
- */
-
-#define	NO_CODEC_IMPL
-
-static void Codec_OnConstruct(CMPEGAudioDecoderImpl* This)
-{
-}
-
-static void Codec_OnCleanup(CMPEGAudioDecoderImpl* This)
-{
-}
-
-static HRESULT Codec_BeginTransform(CTransformBaseImpl* pImpl,CMPEGAudioDecoderImpl* This)
-{
-	FIXME("no codec\n");
-	return E_NOTIMPL;
-}
-
-static HRESULT Codec_ProcessReceive(CTransformBaseImpl* pImpl,CMPEGAudioDecoderImpl* This,IMediaSample* pSampIn)
-{
-	FIXME("no codec\n");
-	return E_NOTIMPL;
-}
-
-static HRESULT Codec_EndTransform(CTransformBaseImpl* pImpl,CMPEGAudioDecoderImpl* This)
-{
-	FIXME("no codec\n");
-	return E_NOTIMPL;
-}
-
-
-
-/***************************************************************************
- *
- *	CMPEGAudioDecoderImpl methods
- *
- */
-
-static void CMPEGAudioDecoderImpl_CleanupOutTypes(CMPEGAudioDecoderImpl* This)
-{
-	DWORD	i;
-
-	if ( This->pmt != NULL )
-	{
-		for ( i = 0; i < This->cmt; i++ )
-		{
-			QUARTZ_MediaType_Free(&This->pmt[i]);
-		}
-		QUARTZ_FreeMem(This->pmt);
-		This->pmt = NULL;
-	}
-	This->cmt = 0;
-}
-
-static HRESULT CMPEGAudioDecoderImpl_Init( CTransformBaseImpl* pImpl )
-{
-	CMPEGAudioDecoderImpl*	This = (CMPEGAudioDecoderImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This != NULL )
-		return NOERROR;
-
-	This = (CMPEGAudioDecoderImpl*)QUARTZ_AllocMem( sizeof(CMPEGAudioDecoderImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This, sizeof(CMPEGAudioDecoderImpl) );
-	pImpl->m_pUserData = This;
-
-	/* construct */
-	This->pmt = NULL;
-	This->cmt = 0;
-	Codec_OnConstruct(This);
-
-	return S_OK;
-}
-
-static HRESULT CMPEGAudioDecoderImpl_Cleanup( CTransformBaseImpl* pImpl )
-{
-	CMPEGAudioDecoderImpl*	This = (CMPEGAudioDecoderImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return S_OK;
-
-	/* destruct */
-	Codec_OnCleanup(This);
-	CMPEGAudioDecoderImpl_CleanupOutTypes(This);
-
-	QUARTZ_FreeMem( This );
-	pImpl->m_pUserData = NULL;
-
-	return S_OK;
-}
-
-static HRESULT CMPEGAudioDecoderImpl_CheckMediaType( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut )
-{
-	CMPEGAudioDecoderImpl*	This = (CMPEGAudioDecoderImpl*)pImpl->m_pUserData;
-	const WAVEFORMATEX* pwfxIn;
-	const WAVEFORMATEX* pwfxOut;
-
-	TRACE("(%p)\n",This);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	if ( !IsEqualGUID( &pmtIn->majortype, &MEDIATYPE_Audio ) )
-		return E_FAIL;
-	if ( !IsEqualGUID( &pmtIn->formattype, &FORMAT_WaveFormatEx ) )
-		return E_FAIL;
-
-	if ( pmtIn->pbFormat == NULL ||
-	     pmtIn->cbFormat < sizeof(WAVEFORMATEX) )
-		return E_FAIL;
-	pwfxIn = (const WAVEFORMATEX*)pmtIn->pbFormat;
-	if ( pwfxIn->wFormatTag != WAVE_FORMAT_MPEG &&
-	     pwfxIn->wFormatTag != WAVE_FORMAT_MPEGLAYER3 )
-		return E_FAIL;
-	if ( pwfxIn->nChannels != 1 && pwfxIn->nChannels != 2 )
-		return E_FAIL;
-	if ( pwfxIn->nBlockAlign < 1 )
-		return E_FAIL;
-
-	if ( pmtOut != NULL )
-	{
-		if ( !IsEqualGUID( &pmtOut->majortype, &MEDIATYPE_Audio ) )
-			return E_FAIL;
-		if ( !IsEqualGUID( &pmtOut->formattype, &FORMAT_WaveFormatEx ) )
-			return E_FAIL;
-
-		if ( pmtOut->pbFormat == NULL ||
-		     pmtOut->cbFormat < sizeof(WAVEFORMATEX) )
-			return E_FAIL;
-		pwfxOut = (const WAVEFORMATEX*)pmtOut->pbFormat;
-
-		if ( pwfxOut->wFormatTag != WAVE_FORMAT_PCM )
-			return E_FAIL;
-		if ( pwfxOut->nChannels != pwfxIn->nChannels ||
-		     pwfxOut->nSamplesPerSec != pwfxIn->nSamplesPerSec )
-			return E_FAIL;
-		if ( pwfxOut->wBitsPerSample != 16 )
-			return E_FAIL;
-		if ( pwfxOut->nBlockAlign != (pwfxOut->nChannels * pwfxOut->wBitsPerSample >> 3 ) )
-			return E_FAIL;
-	}
-
-#ifdef	NO_CODEC_IMPL
-	WARN("no codec implementation\n");
-	return E_NOTIMPL;
-#else
-	return S_OK;
-#endif
-}
-
-static HRESULT CMPEGAudioDecoderImpl_GetOutputTypes( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE** ppmtAcceptTypes, ULONG* pcAcceptTypes )
-{
-	CMPEGAudioDecoderImpl*	This = (CMPEGAudioDecoderImpl*)pImpl->m_pUserData;
-	HRESULT hr;
-	const WAVEFORMATEX*	pwfxIn;
-	AM_MEDIA_TYPE*	pmtOut;
-	WAVEFORMATEX*	pwfxOut;
-
-	TRACE("(%p)\n",This);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = CMPEGAudioDecoderImpl_CheckMediaType( pImpl, pmtIn, NULL );
-	if ( FAILED(hr) )
-		return hr;
-	pwfxIn = (const WAVEFORMATEX*)pmtIn->pbFormat;
-
-	CMPEGAudioDecoderImpl_CleanupOutTypes(This);
-
-	This->cmt = 1;
-	This->pmt = (AM_MEDIA_TYPE*)QUARTZ_AllocMem(
-		sizeof(AM_MEDIA_TYPE) * This->cmt );
-	if ( This->pmt == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This->pmt, sizeof(AM_MEDIA_TYPE) * This->cmt );
-
-	pmtOut = &This->pmt[0];
-
-	memcpy( &pmtOut->majortype, &MEDIATYPE_Audio, sizeof(GUID) );
-	memcpy( &pmtOut->subtype, &MEDIASUBTYPE_PCM, sizeof(GUID) );
-	memcpy( &pmtOut->formattype, &FORMAT_WaveFormatEx, sizeof(GUID) );
-	pmtOut->bFixedSizeSamples = 1;
-	pmtOut->bTemporalCompression = 0;
-	pmtOut->lSampleSize = pwfxIn->nChannels * 16 >> 3;
-	pmtOut->pbFormat = (BYTE*)CoTaskMemAlloc( sizeof(WAVEFORMATEX) );
-	if ( pmtOut->pbFormat == NULL )
-		return E_OUTOFMEMORY;
-	pwfxOut = (WAVEFORMATEX*)pmtOut->pbFormat;
-	pmtOut->cbFormat = sizeof(WAVEFORMATEX);
-	pwfxOut->wFormatTag = WAVE_FORMAT_PCM;
-	pwfxOut->nChannels = pwfxIn->nChannels;
-	pwfxOut->nSamplesPerSec = pwfxIn->nSamplesPerSec;
-	pwfxOut->nAvgBytesPerSec = pwfxOut->nSamplesPerSec * pmtOut->lSampleSize;
-	pwfxOut->nBlockAlign = pmtOut->lSampleSize;
-	pwfxOut->wBitsPerSample = 16;
-	pwfxOut->cbSize = 0;
-
-	*ppmtAcceptTypes = This->pmt;
-	*pcAcceptTypes = This->cmt;
-
-	return S_OK;
-}
-
-static HRESULT CMPEGAudioDecoderImpl_GetAllocProp( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, ALLOCATOR_PROPERTIES* pProp, BOOL* pbTransInPlace, BOOL* pbTryToReuseSample )
-{
-	CMPEGAudioDecoderImpl*	This = (CMPEGAudioDecoderImpl*)pImpl->m_pUserData;
-	const WAVEFORMATEX*	pwfxIn;
-	const WAVEFORMATEX*	pwfxOut;
-	HRESULT hr;
-
-	TRACE("(%p)\n",This);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = CMPEGAudioDecoderImpl_CheckMediaType( pImpl, pmtIn, pmtOut );
-	if ( FAILED(hr) )
-		return hr;
-	pwfxIn = (const WAVEFORMATEX*)pmtIn->pbFormat;
-	pwfxOut = (const WAVEFORMATEX*)pmtOut->pbFormat;
-
-	pProp->cBuffers = 1;
-	pProp->cbBuffer = pwfxOut->nAvgBytesPerSec;
-
-	TRACE("cbBuffer %ld\n",pProp->cbBuffer);
-
-	*pbTransInPlace = FALSE;
-	*pbTryToReuseSample = FALSE;
-
-	return S_OK;
-}
-
-static HRESULT CMPEGAudioDecoderImpl_BeginTransform( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, BOOL bReuseSample )
-{
-	CMPEGAudioDecoderImpl*	This = (CMPEGAudioDecoderImpl*)pImpl->m_pUserData;
-	HRESULT hr;
-
-	TRACE("(%p,%p,%p,%d)\n",This,pmtIn,pmtOut,bReuseSample);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = CMPEGAudioDecoderImpl_CheckMediaType( pImpl, pmtIn, pmtOut );
-	if ( FAILED(hr) )
-		return hr;
-	memcpy( &This->wfxOut, (const WAVEFORMATEX*)pmtOut->pbFormat, sizeof(WAVEFORMATEX) );
-
-	return Codec_BeginTransform(pImpl,This);
-}
-
-static HRESULT CMPEGAudioDecoderImpl_ProcessReceive( CTransformBaseImpl* pImpl, IMediaSample* pSampIn )
-{
-	CMPEGAudioDecoderImpl*	This = (CMPEGAudioDecoderImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p,%p)\n",This,pSampIn);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return Codec_ProcessReceive(pImpl,This,pSampIn);
-}
-
-static HRESULT CMPEGAudioDecoderImpl_EndTransform( CTransformBaseImpl* pImpl )
-{
-	CMPEGAudioDecoderImpl*	This = (CMPEGAudioDecoderImpl*)pImpl->m_pUserData;
-	HRESULT hr;
-
-	TRACE("(%p)\n",This);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = Codec_EndTransform(pImpl,This);
-	if ( FAILED(hr) )
-		return hr;
-	ZeroMemory( &This->wfxOut, sizeof(WAVEFORMATEX) );
-
-	return S_OK;
-}
-
-
-static const TransformBaseHandlers transhandlers =
-{
-	CMPEGAudioDecoderImpl_Init,
-	CMPEGAudioDecoderImpl_Cleanup,
-	CMPEGAudioDecoderImpl_CheckMediaType,
-	CMPEGAudioDecoderImpl_GetOutputTypes,
-	CMPEGAudioDecoderImpl_GetAllocProp,
-	CMPEGAudioDecoderImpl_BeginTransform,
-	CMPEGAudioDecoderImpl_ProcessReceive,
-	NULL,
-	CMPEGAudioDecoderImpl_EndTransform,
-};
-
-HRESULT QUARTZ_CreateCMpegAudioCodec(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateTransformBase(
-		punkOuter,ppobj,
-		&CLSID_CMpegAudioCodec,
-		CMPEGAudioDecoderImpl_FilterName,
-		NULL, NULL,
-		&transhandlers );
-}
-
diff --git a/dlls/quartz/mpgparse.c b/dlls/quartz/mpgparse.c
deleted file mode 100644
index 98f1e4e..0000000
--- a/dlls/quartz/mpgparse.c
+++ /dev/null
@@ -1,751 +0,0 @@
-/*
- * Implements MPEG-1 / MPEG-2 Parser(Splitter).
- *
- *	FIXME - no splitter implementation.
- *	FIXME - no packet support (implemented payload only)
- *	FIXME - no seeking
- *
- * Copyright (C) 2002 Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "mmsystem.h"
-#include "vfw.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "vfwmsgs.h"
-#include "amvideo.h"
-#include "mmreg.h"
-#include "uuids.h"
-#include "dvdmedia.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "parser.h"
-#include "mtype.h"
-
-static const WCHAR QUARTZ_MPEG1Parser_Name[] =
-{ 'M','P','E','G','-','I',' ','S','p','l','i','t','t','e','r',0 };
-static const WCHAR QUARTZ_MPEG2Parser_Name[] =
-{ 'M','P','E','G','-','2',' ','S','p','l','i','t','t','e','r',0 };
-static const WCHAR QUARTZ_MPGParserInPin_Name[] =
-{ 'I','n',0 };
-static const WCHAR QUARTZ_MPGParserOutPin_VideoPinName[] =
-{ 'V','i','d','e','o',0 };
-static const WCHAR QUARTZ_MPGParserOutPin_AudioPinName[] =
-{ 'A','u','d','i','o',0 };
-	/* FIXME */
-static const WCHAR QUARTZ_MPGParserOutPin_UnknownTypePinName[] =
-{ 'O','u','t',0 };
-
-
-
-static DWORD bitratesl1[16] =
-	{  0, 32, 64, 96,128,160,192,224,256,288,320,352,384,416,448,  0};
-static DWORD bitratesl2[16] =
-	{  0, 32, 48, 56, 64, 80, 96,112,128,160,192,224,256,320,384,  0};
-static DWORD bitratesl3[16] =
-	{  0, 32, 40, 48, 56, 64, 80, 96,112,128,160,192,224,256,320,  0};
-
-
-/****************************************************************************
- *
- *	CMPGParseImpl
- */
-
-
-typedef struct CMPGParseImpl CMPGParseImpl;
-typedef struct CMPGParsePayload CMPGParsePayload;
-
-enum MPGPayloadType
-{
-	MPGPayload_Video = 0xe0,
-	MPGPayload_Audio = 0xc0,
-};
-
-struct CMPGParseImpl
-{
-	LONGLONG	llPosNext;
-	BOOL	bRawPayload;
-	DWORD	dwPayloadBlockSizeMax;
-	DWORD	cPayloads;
-	CMPGParsePayload*	pPayloads;
-};
-
-struct CMPGParsePayload
-{
-	enum MPGPayloadType	payloadtype;
-	BOOL	bDataDiscontinuity;
-};
-
-static HRESULT CMPGParseImpl_GetStreamType( CParserImpl* pImpl, ULONG nStreamIndex, AM_MEDIA_TYPE* pmt );
-
-static HRESULT CMPGParseImpl_SyncReadPayload(
-	CParserImpl* pImpl, CMPGParseImpl* This,
-	enum MPGPayloadType payloadtype,
-	LONGLONG llPosStart, LONG lLength, BYTE* pbBuf )
-{
-	if ( This == NULL || This->pPayloads == NULL )
-		return E_UNEXPECTED;
-
-	if ( This->bRawPayload )
-	{
-		if ( payloadtype != This->pPayloads[0].payloadtype )
-			return E_UNEXPECTED;
-		return IAsyncReader_SyncRead( pImpl->m_pReader, llPosStart, lLength, pbBuf );
-	}
-	else
-	{
-		FIXME( "not implemented\n" );
-	}
-
-	return E_NOTIMPL;
-}
-
-
-
-static HRESULT CMPGParseImpl_InitParser( CParserImpl* pImpl, ULONG* pcStreams )
-{
-	CMPGParseImpl*	This = NULL;
-	HRESULT hr;
-	DWORD	n;
-	AM_MEDIA_TYPE	mt;
-	BYTE	hdrbuf[8];
-
-	TRACE("(%p,%p)\n",pImpl,pcStreams);
-
-	This = (CMPGParseImpl*)QUARTZ_AllocMem( sizeof(CMPGParseImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	pImpl->m_pUserData = This;
-	ZeroMemory( This, sizeof(CMPGParseImpl) );
-
-	hr = IAsyncReader_SyncRead( pImpl->m_pReader, 0, 8, hdrbuf );
-	if ( FAILED(hr) )
-		return hr;
-	if ( hr != S_OK )
-		return E_FAIL;
-
-	if ( hdrbuf[0] == 0x00 && hdrbuf[1] == 0x00 &&
-		 hdrbuf[2] == 0x01 && hdrbuf[3] == 0xba )
-	{
-		This->bRawPayload = FALSE;
-		This->dwPayloadBlockSizeMax = 0;
-
-		FIXME( "no mpeg/system support\n" );
-		return E_FAIL;
-	}
-	else
-	if ( hdrbuf[0] == 0x00 && hdrbuf[1] == 0x00 &&
-		 hdrbuf[2] == 0x01 && hdrbuf[3] == 0xb3 )
-	{
-		TRACE( "mpeg/video payload\n" );
-		This->llPosNext = 0;
-		This->bRawPayload = TRUE;
-		This->dwPayloadBlockSizeMax = 0x4000;
-		This->cPayloads = 1;
-		This->pPayloads = (CMPGParsePayload*)QUARTZ_AllocMem( sizeof(CMPGParsePayload) );
-		if ( This->pPayloads == NULL )
-			return E_OUTOFMEMORY;
-		*pcStreams = 1;
-		This->pPayloads[0].payloadtype = MPGPayload_Video;
-		This->pPayloads[0].bDataDiscontinuity = TRUE;
-	}
-	else
-	if ( hdrbuf[0] == 0xff && (hdrbuf[1]&0xf0) == 0xf0 )
-	{
-		TRACE( "mpeg/audio payload\n" );
-		This->llPosNext = 0;
-		This->bRawPayload = TRUE;
-		This->dwPayloadBlockSizeMax = 0;
-		This->cPayloads = 1;
-		This->pPayloads = (CMPGParsePayload*)QUARTZ_AllocMem( sizeof(CMPGParsePayload) );
-		if ( This->pPayloads == NULL )
-			return E_OUTOFMEMORY;
-		*pcStreams = 1;
-		This->pPayloads[0].payloadtype = MPGPayload_Audio;
-		This->pPayloads[0].bDataDiscontinuity = TRUE;
-	}
-	else
-	{
-		return E_FAIL;
-	}
-
-	/* To determine block size, scan all payloads. */
-	ZeroMemory( &mt, sizeof(mt) );
-	for ( n = 0; n < This->cPayloads; n++ )
-	{
-		CMPGParseImpl_GetStreamType(pImpl,n,&mt);
-		QUARTZ_MediaType_Free(&mt);
-	}
-
-	return S_OK;
-}
-
-static HRESULT CMPGParseImpl_UninitParser( CParserImpl* pImpl )
-{
-	CMPGParseImpl*	This = (CMPGParseImpl*)pImpl->m_pUserData;
-	ULONG	nIndex;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	/* destruct */
-
-	if ( This->pPayloads != NULL )
-	{
-		for ( nIndex = 0; nIndex < This->cPayloads; nIndex++ )
-		{
-			/* release this stream */
-
-			
-		}
-		QUARTZ_FreeMem( This->pPayloads );
-		This->pPayloads = NULL;
-	}
-
-	QUARTZ_FreeMem( This );
-	pImpl->m_pUserData = NULL;
-
-	return NOERROR;
-}
-
-static LPCWSTR CMPGParseImpl_GetOutPinName( CParserImpl* pImpl, ULONG nStreamIndex )
-{
-	CMPGParseImpl*	This = (CMPGParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p,%lu)\n",This,nStreamIndex);
-
-	if ( This == NULL || nStreamIndex >= This->cPayloads )
-		return NULL;
-
-	switch ( This->pPayloads[nStreamIndex].payloadtype )
-	{
-	case MPGPayload_Video:
-		return QUARTZ_MPGParserOutPin_VideoPinName;
-	case MPGPayload_Audio:
-		return QUARTZ_MPGParserOutPin_AudioPinName;
-	default:
-		FIXME("mpeg - unknown stream type %02x\n",This->pPayloads[nStreamIndex].payloadtype);
-	}
-
-	/* FIXME */
-	return QUARTZ_MPGParserOutPin_UnknownTypePinName;
-}
-
-static HRESULT CMPGParseImpl_GetStreamType( CParserImpl* pImpl, ULONG nStreamIndex, AM_MEDIA_TYPE* pmt )
-{
-	CMPGParseImpl*	This = (CMPGParseImpl*)pImpl->m_pUserData;
-	HRESULT	hr;
-	BYTE	hdrbuf[140+10];
-	UINT	seqhdrlen;
-	MPEG1VIDEOINFO*	pmpg1vi;
-	MPEG2VIDEOINFO*	pmpg2vi;
-	MPEG1WAVEFORMAT*	pmpg1wav;
-	enum MPGPayloadType	payloadtype;
-	DWORD	dwPayloadBlockSize;
-
-	TRACE("(%p,%lu,%p)\n",This,nStreamIndex,pmt);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-	if ( nStreamIndex >= This->cPayloads )
-		return E_INVALIDARG;
-
-	ZeroMemory( pmt, sizeof(AM_MEDIA_TYPE) );
-
-	payloadtype = This->pPayloads[nStreamIndex].payloadtype;
-	switch ( payloadtype )
-	{
-	case MPGPayload_Video:
-		hr = CMPGParseImpl_SyncReadPayload(
-			pImpl, This, payloadtype, 0, 140+10, hdrbuf );
-		if ( FAILED(hr) )
-			return hr;
-		if ( hr != S_OK )
-			return E_FAIL;
-
-		memcpy( &pmt->majortype, &MEDIATYPE_Video, sizeof(GUID) );
-		seqhdrlen = 12;
-		if ( hdrbuf[seqhdrlen-1] & 0x2 )
-			seqhdrlen += 64;
-		if ( hdrbuf[seqhdrlen-1] & 0x1 )
-			seqhdrlen += 64;
-		if ( hdrbuf[seqhdrlen  ] == 0x00 && hdrbuf[seqhdrlen+1] == 0x00 &&
-			 hdrbuf[seqhdrlen+2] == 0x01 && hdrbuf[seqhdrlen+3] == 0xb5 )
-		{
-			/* video MPEG-2 */
-			FIXME("video MPEG-2\n");
-			if ( (hdrbuf[seqhdrlen+4]&0xf0) != 0x1 )
-				return E_FAIL;
-			memcpy( &pmt->subtype, &MEDIASUBTYPE_MPEG2_VIDEO, sizeof(GUID) );
-			memcpy( &pmt->formattype, &FORMAT_MPEG2_VIDEO, sizeof(GUID) );
-			pmt->bFixedSizeSamples = 0;
-			pmt->bTemporalCompression = 1;
-			pmt->lSampleSize = 0;
-			pmt->cbFormat = sizeof(MPEG2VIDEOINFO);
-			pmt->pbFormat = (BYTE*)CoTaskMemAlloc( sizeof(MPEG2VIDEOINFO) );
-			if ( pmt->pbFormat == NULL )
-				return E_OUTOFMEMORY;
-			ZeroMemory( pmt->pbFormat, sizeof(MPEG2VIDEOINFO) );
-			pmpg2vi = (MPEG2VIDEOINFO*)pmt->pbFormat;
-			pmpg2vi->hdr.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
-			pmpg2vi->hdr.bmiHeader.biWidth = ((UINT)hdrbuf[4] << 4) | ((UINT)hdrbuf[5] >> 4); /* FIXME! */
-			pmpg2vi->hdr.bmiHeader.biHeight = (((UINT)hdrbuf[5] & 0xf) << 8) | ((UINT)hdrbuf[6]); /* FIXME! */
-			pmpg2vi->hdr.dwInterlaceFlags = AMINTERLACE_FieldPatBothRegular; /* FIXME? */
-			pmpg2vi->hdr.dwCopyProtectFlags = AMCOPYPROTECT_RestrictDuplication; /* FIXME? */
-			pmpg2vi->hdr.dwPictAspectRatioX = 1; /* FIXME? */
-			pmpg2vi->hdr.dwPictAspectRatioY = 1; /* FIXME? */
-			pmpg2vi->dwStartTimeCode = 0;
-			pmpg2vi->cbSequenceHeader = seqhdrlen + 10;
-			switch ( hdrbuf[seqhdrlen+4] & 0xf )
-			{
-			case 5: pmpg2vi->dwProfile = AM_MPEG2Profile_Simple; break;
-			case 4: pmpg2vi->dwProfile = AM_MPEG2Profile_Main; break;
-			case 3: pmpg2vi->dwProfile = AM_MPEG2Profile_SNRScalable; break;
-			case 2: pmpg2vi->dwProfile = AM_MPEG2Profile_SpatiallyScalable; break;
-			case 1: pmpg2vi->dwProfile = AM_MPEG2Profile_High; break;
-			default: return E_FAIL;
-			}
-			switch ( hdrbuf[seqhdrlen+5] >> 4 )
-			{
-			case 10: pmpg2vi->dwLevel = AM_MPEG2Level_Low; break;
-			case  8: pmpg2vi->dwLevel = AM_MPEG2Level_Main; break;
-			case  6: pmpg2vi->dwLevel = AM_MPEG2Level_High1440; break;
-			case  4: pmpg2vi->dwLevel = AM_MPEG2Level_High; break;
-			default: return E_FAIL;
-			}
-			pmpg2vi->dwFlags = 0; /* FIXME? */
-			memcpy( pmpg2vi->dwSequenceHeader, hdrbuf, seqhdrlen + 10 );
-
-			return S_OK;
-		}
-		else
-		{
-			/* MPEG-1 */
-			memcpy( &pmt->subtype, &MEDIASUBTYPE_MPEG1Payload, sizeof(GUID) );
-			memcpy( &pmt->formattype, &FORMAT_MPEGVideo, sizeof(GUID) );
-			pmt->bFixedSizeSamples = 0;
-			pmt->bTemporalCompression = 1;
-			pmt->lSampleSize = 0;
-			pmt->cbFormat = sizeof(MPEG1VIDEOINFO);
-			pmt->pbFormat = (BYTE*)CoTaskMemAlloc( sizeof(MPEG1VIDEOINFO) );
-			if ( pmt->pbFormat == NULL )
-				return E_OUTOFMEMORY;
-			ZeroMemory( pmt->pbFormat, sizeof(MPEG1VIDEOINFO) );
-			pmpg1vi = (MPEG1VIDEOINFO*)pmt->pbFormat;
-			pmpg1vi->hdr.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
-			pmpg1vi->hdr.bmiHeader.biWidth = ((UINT)hdrbuf[4] << 4) | ((UINT)hdrbuf[5] >> 4);
-			pmpg1vi->hdr.bmiHeader.biHeight = (((UINT)hdrbuf[5] & 0xf) << 8) | ((UINT)hdrbuf[6]);
-			pmpg1vi->hdr.bmiHeader.biPlanes = 1;
-			pmpg1vi->dwStartTimeCode = 0;
-			pmpg1vi->cbSequenceHeader = seqhdrlen;
-			memcpy( pmpg1vi->bSequenceHeader, hdrbuf, seqhdrlen );
-		}
-
-		return S_OK;
-	case MPGPayload_Audio:
-		hr = CMPGParseImpl_SyncReadPayload(
-			pImpl, This, payloadtype, 0, 4, hdrbuf );
-		if ( FAILED(hr) )
-			return hr;
-		if ( hr != S_OK )
-			return E_FAIL;
-
-		memcpy( &pmt->majortype, &MEDIATYPE_Audio, sizeof(GUID) );
-		memcpy( &pmt->formattype, &FORMAT_WaveFormatEx, sizeof(GUID) );
-
-		if ( !( hdrbuf[1] & 0x8 ) )
-		{
-			/* FIXME!!! */
-			FIXME("audio not MPEG-1\n");
-			return E_FAIL;
-		}
-		else
-		{
-			/* MPEG-1 */
-			memcpy( &pmt->subtype, &MEDIASUBTYPE_MPEG1AudioPayload, sizeof(GUID) );
-			pmt->bFixedSizeSamples = 0;
-			pmt->bTemporalCompression = 1;
-			pmt->lSampleSize = 0;
-			pmt->cbFormat = sizeof(MPEG1WAVEFORMAT);
-			pmt->pbFormat = (BYTE*)CoTaskMemAlloc( sizeof(MPEG1WAVEFORMAT) );
-			if ( pmt->pbFormat == NULL )
-				return E_OUTOFMEMORY;
-			ZeroMemory( pmt->pbFormat, sizeof(MPEG1WAVEFORMAT) );
-			pmpg1wav = (MPEG1WAVEFORMAT*)pmt->pbFormat;
-			switch ( hdrbuf[1] & 0x6 )
-			{
-			case 0x6:
-				TRACE("layer 1\n");
-				pmpg1wav->fwHeadLayer = ACM_MPEG_LAYER1;
-				break;
-			case 0x4:
-				TRACE("layer 2\n");
-				pmpg1wav->fwHeadLayer = ACM_MPEG_LAYER2;
-				break;
-			case 0x2:
-				TRACE("layer 3\n");
-				pmpg1wav->fwHeadLayer = ACM_MPEG_LAYER3;
-				break;
-			default: return E_FAIL;
-			}
-
-			switch ( pmpg1wav->fwHeadLayer )
-			{
-			case ACM_MPEG_LAYER1:
-				pmpg1wav->dwHeadBitrate = bitratesl1[hdrbuf[2]>>4]*1000;
-				break;
-			case ACM_MPEG_LAYER2:
-				pmpg1wav->dwHeadBitrate = bitratesl2[hdrbuf[2]>>4]*1000;
-				break;
-			case ACM_MPEG_LAYER3:
-				pmpg1wav->dwHeadBitrate = bitratesl3[hdrbuf[2]>>4]*1000;
-				break;
-			}
-			if ( pmpg1wav->dwHeadBitrate == 0 )
-				return E_FAIL;
-
-			switch ( hdrbuf[3] & 0xc0 )
-			{
-			case 0x00:
-				TRACE("STEREO\n");
-				pmpg1wav->fwHeadMode = ACM_MPEG_STEREO;
-				break;
-			case 0x40:
-				TRACE("JOINTSTEREO\n");
-				pmpg1wav->fwHeadMode = ACM_MPEG_JOINTSTEREO;
-				break;
-			case 0x80:
-				TRACE("DUALCHANNEL\n");
-				pmpg1wav->fwHeadMode = ACM_MPEG_DUALCHANNEL;
-				break;
-			case 0xc0:
-				TRACE("SINGLECHANNEL\n");
-				pmpg1wav->fwHeadMode = ACM_MPEG_SINGLECHANNEL;
-				break;
-			}
-
-			pmpg1wav->fwHeadModeExt = (hdrbuf[3] & 0x30) >> 4; /* FIXME?? */
-			pmpg1wav->wHeadEmphasis = (hdrbuf[3] & 0x03); /* FIXME?? */
-			pmpg1wav->fwHeadFlags = ACM_MPEG_ID_MPEG1;
-			if ( hdrbuf[1] & 0x1 )
-				pmpg1wav->fwHeadFlags |= ACM_MPEG_PROTECTIONBIT;
-			if ( hdrbuf[2] & 0x1 )
-				pmpg1wav->fwHeadFlags |= ACM_MPEG_PRIVATEBIT;
-			if ( hdrbuf[3] & 0x8 )
-				pmpg1wav->fwHeadFlags |= ACM_MPEG_COPYRIGHT;
-			if ( hdrbuf[3] & 0x4 )
-				pmpg1wav->fwHeadFlags |= ACM_MPEG_ORIGINALHOME;
-			pmpg1wav->dwPTSLow = 0;
-			pmpg1wav->dwPTSHigh = 0;
-
-			pmpg1wav->wfx.wFormatTag = WAVE_FORMAT_MPEG;
-			pmpg1wav->wfx.nChannels = (pmpg1wav->fwHeadMode != ACM_MPEG_SINGLECHANNEL) ? 2 : 1;
-			switch ( hdrbuf[2] & 0x0c )
-			{
-			case 0x00:
-				TRACE("44100Hz\n");
-				pmpg1wav->wfx.nSamplesPerSec = 44100;
-				break;
-			case 0x01:
-				TRACE("48000Hz\n");
-				pmpg1wav->wfx.nSamplesPerSec = 48000;
-				break;
-			case 0x02:
-				TRACE("32000Hz\n");
-				pmpg1wav->wfx.nSamplesPerSec = 32000;
-				break;
-			default: return E_FAIL;
-			}
-			pmpg1wav->wfx.nAvgBytesPerSec = pmpg1wav->dwHeadBitrate >> 3;
-			switch ( pmpg1wav->fwHeadLayer )
-			{
-			case ACM_MPEG_LAYER1:
-				pmpg1wav->wfx.nBlockAlign = (384>>3) * pmpg1wav->dwHeadBitrate / pmpg1wav->wfx.nSamplesPerSec;
-				break;
-			case ACM_MPEG_LAYER2:
-				pmpg1wav->wfx.nBlockAlign = (1152>>3) * pmpg1wav->dwHeadBitrate / pmpg1wav->wfx.nSamplesPerSec;
-				break;
-			case ACM_MPEG_LAYER3:
-				pmpg1wav->wfx.nBlockAlign = 1;
-				break;
-			}
-			pmpg1wav->wfx.wBitsPerSample = 0;
-			pmpg1wav->wfx.cbSize = sizeof(MPEG1WAVEFORMAT) - sizeof(WAVEFORMATEX);
-			if ( pmpg1wav->fwHeadLayer != ACM_MPEG_LAYER3 )
-			{
-				pmt->bFixedSizeSamples = 1;
-				pmt->lSampleSize = pmpg1wav->wfx.nBlockAlign;
-			}
-			dwPayloadBlockSize = (pmpg1wav->wfx.nAvgBytesPerSec + pmpg1wav->wfx.nBlockAlign - 1) / pmpg1wav->wfx.nBlockAlign;
-			if ( dwPayloadBlockSize > This->dwPayloadBlockSizeMax )
-				This->dwPayloadBlockSizeMax = dwPayloadBlockSize;
-			TRACE("payload block size = %lu\n",dwPayloadBlockSize);
-		}
-
-		return S_OK;
-	default:
-		FIXME("mpeg - unknown stream type %02x\n",This->pPayloads[nStreamIndex].payloadtype);
-		break;
-	}
-
-	FIXME("stub\n");
-	return E_NOTIMPL;
-}
-
-static HRESULT CMPGParseImpl_CheckStreamType( CParserImpl* pImpl, ULONG nStreamIndex, const AM_MEDIA_TYPE* pmt )
-{
-	CMPGParseImpl*	This = (CMPGParseImpl*)pImpl->m_pUserData;
-	HRESULT hr;
-	AM_MEDIA_TYPE	mt;
-	MPEG1VIDEOINFO*	pmpg1vi;
-	MPEG1VIDEOINFO*	pmpg1viCheck;
-	MPEG2VIDEOINFO*	pmpg2vi;
-	MPEG2VIDEOINFO*	pmpg2viCheck;
-	WAVEFORMATEX*	pwfx;
-	WAVEFORMATEX*	pwfxCheck;
-	enum MPGPayloadType	payloadtype;
-
-	TRACE("(%p,%lu,%p)\n",This,nStreamIndex,pmt);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-	if ( nStreamIndex >= This->cPayloads )
-		return E_INVALIDARG;
-
-	hr = CMPGParseImpl_GetStreamType( pImpl, nStreamIndex, &mt );
-	if ( FAILED(hr) )
-		return hr;
-	if ( !IsEqualGUID( &pmt->majortype, &mt.majortype ) ||
-		 !IsEqualGUID( &pmt->subtype, &mt.subtype ) ||
-		 !IsEqualGUID( &pmt->formattype, &mt.formattype ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-
-	TRACE("check format\n");
-	hr = S_OK;
-
-	payloadtype = This->pPayloads[nStreamIndex].payloadtype;
-	switch ( payloadtype )
-	{
-	case MPGPayload_Video:
-		if ( IsEqualGUID( &mt.formattype, &FORMAT_MPEGVideo ) )
-		{
-			/* MPEG-1 Video */
-			if ( pmt->cbFormat != mt.cbFormat ||
-				 pmt->pbFormat == NULL )
-			{
-				hr = E_FAIL;
-				goto end;
-			}
-			pmpg1vi = (MPEG1VIDEOINFO*)mt.pbFormat;
-			pmpg1viCheck = (MPEG1VIDEOINFO*)pmt->pbFormat;
-			if ( memcmp( pmpg1vi, pmpg1viCheck, sizeof(MPEG1VIDEOINFO) ) != 0 )
-			{
-				hr = E_FAIL;
-				goto end;
-			}
-		}
-		else
-		if ( IsEqualGUID( &mt.formattype, &FORMAT_MPEG2_VIDEO ) )
-		{
-			/* MPEG-2 Video */
-			if ( pmt->cbFormat != mt.cbFormat ||
-				 pmt->pbFormat == NULL )
-			{
-				hr = E_FAIL;
-				goto end;
-			}
-			pmpg2vi = (MPEG2VIDEOINFO*)mt.pbFormat;
-			pmpg2viCheck = (MPEG2VIDEOINFO*)pmt->pbFormat;
-			if ( memcmp( pmpg2vi, pmpg2viCheck, sizeof(MPEG2VIDEOINFO) ) != 0 )
-			{
-				hr = E_FAIL;
-				goto end;
-			}
-		}
-		else
-		{
-			hr = E_FAIL;
-			goto end;
-		}
-		break;
-	case MPGPayload_Audio:
-		if ( IsEqualGUID( &mt.formattype, &FORMAT_WaveFormatEx ) )
-		{
-			if ( mt.cbFormat != pmt->cbFormat ||
-				 pmt->pbFormat == NULL )
-			{
-				hr = E_FAIL;
-				goto end;
-			}
-			pwfx = (WAVEFORMATEX*)mt.pbFormat;
-			pwfxCheck = (WAVEFORMATEX*)pmt->pbFormat;
-
-			if ( memcmp( pwfx, pwfxCheck, sizeof(WAVEFORMATEX) ) != 0 )
-			{
-				hr = E_FAIL;
-				goto end;
-			}
-		}
-		else
-		{
-			hr = E_FAIL;
-			goto end;
-		}
-
-		break;
-	default:
-		FIXME( "unsupported payload type\n" );
-		hr = E_FAIL;
-		goto end;
-	}
-
-	hr = S_OK;
-end:
-	QUARTZ_MediaType_Free( &mt );
-
-	TRACE("%08lx\n",hr);
-
-	return hr;
-}
-
-static HRESULT CMPGParseImpl_GetAllocProp( CParserImpl* pImpl, ALLOCATOR_PROPERTIES* pReqProp )
-{
-	CMPGParseImpl*	This = (CMPGParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p,%p)\n",This,pReqProp);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	ZeroMemory( pReqProp, sizeof(ALLOCATOR_PROPERTIES) );
-	pReqProp->cBuffers = This->cPayloads;
-	pReqProp->cbBuffer = This->dwPayloadBlockSizeMax;
-
-	TRACE("buf %d size %d\n",
-		(int)This->cPayloads,
-		(int)This->dwPayloadBlockSizeMax);
-
-	return S_OK;
-}
-
-static HRESULT CMPGParseImpl_GetNextRequest( CParserImpl* pImpl, ULONG* pnStreamIndex, LONGLONG* pllStart, LONG* plLength, REFERENCE_TIME* prtStart, REFERENCE_TIME* prtStop, DWORD* pdwSampleFlags )
-{
-	CMPGParseImpl*	This = (CMPGParseImpl*)pImpl->m_pUserData;
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-	*pdwSampleFlags = AM_SAMPLE_SPLICEPOINT;
-
-	TRACE("(%p)\n",This);
-
-	if ( This->bRawPayload )
-	{
-		if ( This->dwPayloadBlockSizeMax == 0 ||
-			 This->cPayloads != 1 || This->pPayloads == NULL )
-			return E_UNEXPECTED;
-		*pnStreamIndex = 0;
-		*pllStart = This->llPosNext;
-		*plLength = This->dwPayloadBlockSizeMax;
-		*prtStart = 0;
-		*prtStop = 0;
-		if ( This->pPayloads[0].bDataDiscontinuity )
-		{
-			*pdwSampleFlags |= AM_SAMPLE_DATADISCONTINUITY;
-			This->pPayloads[0].bDataDiscontinuity = FALSE;
-		}
-	}
-	else
-	{
-		FIXME("stub\n");
-		return E_NOTIMPL;
-	}
-
-	return S_OK;
-}
-
-static HRESULT CMPGParseImpl_ProcessSample( CParserImpl* pImpl, ULONG nStreamIndex, LONGLONG llStart, LONG lLength, IMediaSample* pSample )
-{
-	CMPGParseImpl*	This = (CMPGParseImpl*)pImpl->m_pUserData;
-	HRESULT hr;
-
-	TRACE("(%p,%lu,%ld,%ld,%p)\n",This,nStreamIndex,(long)llStart,lLength,pSample);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	if ( This->bRawPayload )
-	{
-		hr = IMediaSample_SetTime(pSample,NULL,NULL);
-		if ( FAILED(hr) )
-			return hr;
-	}
-
-	return NOERROR;
-}
-
-
-static const struct ParserHandlers CMPGParseImpl_Handlers =
-{
-	CMPGParseImpl_InitParser,
-	CMPGParseImpl_UninitParser,
-	CMPGParseImpl_GetOutPinName,
-	CMPGParseImpl_GetStreamType,
-	CMPGParseImpl_CheckStreamType,
-	CMPGParseImpl_GetAllocProp,
-	CMPGParseImpl_GetNextRequest,
-	CMPGParseImpl_ProcessSample,
-
-	/* for IQualityControl */
-	NULL, /* pQualityNotify */
-
-	/* for seeking */
-	NULL, /* pGetSeekingCaps */
-	NULL, /* pIsTimeFormatSupported */
-	NULL, /* pGetCurPos */
-	NULL, /* pSetCurPos */
-	NULL, /* pGetDuration */
-	NULL, /* pGetStopPos */
-	NULL, /* pSetStopPos */
-	NULL, /* pGetPreroll */
-};
-
-HRESULT QUARTZ_CreateMPEG1Splitter(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateParser(
-		punkOuter,ppobj,
-		&CLSID_MPEG1Splitter,
-		QUARTZ_MPEG1Parser_Name,
-		QUARTZ_MPGParserInPin_Name,
-		&CMPGParseImpl_Handlers );
-}
-
-
diff --git a/dlls/quartz/mpvdec.c b/dlls/quartz/mpvdec.c
deleted file mode 100644
index f005a34..0000000
--- a/dlls/quartz/mpvdec.c
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Implements MPEG Video Decoder(CLSID_CMpegVideoCodec)
- *
- *	FIXME - what library can we use? SMPEG??
- *
- *	FIXME - stub
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "amvideo.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "xform.h"
-#include "mtype.h"
-
-static const WCHAR CMPEGVideoDecoderImpl_FilterName[] =
-{'M','P','E','G',' ','V','i','d','e','o',' ','D','e','c','o','d','e','r',0};
-
-
-typedef struct CMPEGVideoDecoderImpl
-{
-	AM_MEDIA_TYPE*	pmt;
-	DWORD		cmt;
-
-} CMPEGVideoDecoderImpl;
-
-
-/*****************************************************************************
- *
- *	codec-dependent stuffs	- no codec
- *
- */
-
-#define	NO_CODEC_IMPL
-
-static void Codec_OnConstruct(CMPEGVideoDecoderImpl* This)
-{
-}
-
-static void Codec_OnCleanup(CMPEGVideoDecoderImpl* This)
-{
-}
-
-static HRESULT Codec_BeginTransform(CTransformBaseImpl* pImpl,CMPEGVideoDecoderImpl* This)
-{
-	FIXME("no codec\n");
-	return E_NOTIMPL;
-}
-
-static HRESULT Codec_ProcessReceive(CTransformBaseImpl* pImpl,CMPEGVideoDecoderImpl* This,IMediaSample* pSampIn)
-{
-	FIXME("no codec\n");
-	return E_NOTIMPL;
-}
-
-static HRESULT Codec_EndTransform(CTransformBaseImpl* pImpl,CMPEGVideoDecoderImpl* This)
-{
-	FIXME("no codec\n");
-	return E_NOTIMPL;
-}
-
-
-
-/***************************************************************************
- *
- *	CMPEGVideoDecoderImpl methods
- *
- */
-
-static void CMPEGVideoDecoderImpl_CleanupOutTypes(CMPEGVideoDecoderImpl* This)
-{
-	DWORD	i;
-
-	if ( This->pmt != NULL )
-	{
-		for ( i = 0; i < This->cmt; i++ )
-		{
-			QUARTZ_MediaType_Free(&This->pmt[i]);
-		}
-		QUARTZ_FreeMem(This->pmt);
-		This->pmt = NULL;
-	}
-	This->cmt = 0;
-}
-
-static HRESULT CMPEGVideoDecoderImpl_Init( CTransformBaseImpl* pImpl )
-{
-	CMPEGVideoDecoderImpl*	This = pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This != NULL )
-		return NOERROR;
-
-	This = (CMPEGVideoDecoderImpl*)QUARTZ_AllocMem( sizeof(CMPEGVideoDecoderImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This, sizeof(CMPEGVideoDecoderImpl) );
-	pImpl->m_pUserData = This;
-
-	/* construct */
-	This->pmt = NULL;
-	This->cmt = 0;
-	Codec_OnConstruct(This);
-
-	return S_OK;
-}
-
-static HRESULT CMPEGVideoDecoderImpl_Cleanup( CTransformBaseImpl* pImpl )
-{
-	CMPEGVideoDecoderImpl*	This = pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return S_OK;
-
-	/* destruct */
-	Codec_OnCleanup(This);
-	CMPEGVideoDecoderImpl_CleanupOutTypes(This);
-
-	QUARTZ_FreeMem( This );
-	pImpl->m_pUserData = NULL;
-
-	return S_OK;
-}
-
-static HRESULT CMPEGVideoDecoderImpl_CheckMediaType( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut )
-{
-	CMPEGVideoDecoderImpl*	This = pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-
-
-#ifdef	NO_CODEC_IMPL
-	WARN("no codec implementation\n");
-	return E_NOTIMPL;
-#else
-	return S_OK;
-#endif
-}
-
-static HRESULT CMPEGVideoDecoderImpl_GetOutputTypes( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE** ppmtAcceptTypes, ULONG* pcAcceptTypes )
-{
-	CMPEGVideoDecoderImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-
-	FIXME("(%p)\n",This);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = CMPEGVideoDecoderImpl_CheckMediaType( pImpl, pmtIn, NULL );
-	if ( FAILED(hr) )
-		return hr;
-
-	CMPEGVideoDecoderImpl_CleanupOutTypes(This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CMPEGVideoDecoderImpl_GetAllocProp( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, ALLOCATOR_PROPERTIES* pProp, BOOL* pbTransInPlace, BOOL* pbTryToReuseSample )
-{
-	CMPEGVideoDecoderImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-
-	FIXME("(%p)\n",This);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = CMPEGVideoDecoderImpl_CheckMediaType( pImpl, pmtIn, pmtOut );
-	if ( FAILED(hr) )
-		return hr;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CMPEGVideoDecoderImpl_BeginTransform( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, BOOL bReuseSample )
-{
-	CMPEGVideoDecoderImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-
-	FIXME("(%p,%p,%p,%d)\n",This,pmtIn,pmtOut,bReuseSample);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = CMPEGVideoDecoderImpl_CheckMediaType( pImpl, pmtIn, pmtOut );
-	if ( FAILED(hr) )
-		return hr;
-
-	return Codec_BeginTransform(pImpl,This);
-}
-
-static HRESULT CMPEGVideoDecoderImpl_ProcessReceive( CTransformBaseImpl* pImpl, IMediaSample* pSampIn )
-{
-	CMPEGVideoDecoderImpl*	This = pImpl->m_pUserData;
-
-	FIXME("(%p)\n",This);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return Codec_ProcessReceive(pImpl,This,pSampIn);
-}
-
-static HRESULT CMPEGVideoDecoderImpl_EndTransform( CTransformBaseImpl* pImpl )
-{
-	CMPEGVideoDecoderImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-
-	FIXME("(%p)\n",This);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = Codec_EndTransform(pImpl,This);
-	if ( FAILED(hr) )
-		return hr;
-
-	return S_OK;
-}
-
-static const TransformBaseHandlers transhandlers =
-{
-	CMPEGVideoDecoderImpl_Init,
-	CMPEGVideoDecoderImpl_Cleanup,
-	CMPEGVideoDecoderImpl_CheckMediaType,
-	CMPEGVideoDecoderImpl_GetOutputTypes,
-	CMPEGVideoDecoderImpl_GetAllocProp,
-	CMPEGVideoDecoderImpl_BeginTransform,
-	CMPEGVideoDecoderImpl_ProcessReceive,
-	NULL,
-	CMPEGVideoDecoderImpl_EndTransform,
-};
-
-HRESULT QUARTZ_CreateCMpegVideoCodec(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateTransformBase(
-		punkOuter,ppobj,
-		&CLSID_CMpegVideoCodec,
-		CMPEGVideoDecoderImpl_FilterName,
-		NULL, NULL,
-		&transhandlers );
-}
-
-
-
diff --git a/dlls/quartz/mtype.c b/dlls/quartz/mtype.c
deleted file mode 100644
index ca7684d..0000000
--- a/dlls/quartz/mtype.c
+++ /dev/null
@@ -1,552 +0,0 @@
-/*
- * Implements IEnumMediaTypes and helper functions. (internal)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "mmsystem.h"
-#include "strmif.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "mtype.h"
-#include "iunk.h"
-
-
-/****************************************************************************/
-
-
-
-HRESULT QUARTZ_MediaType_Copy(
-	AM_MEDIA_TYPE* pmtDst,
-	const AM_MEDIA_TYPE* pmtSrc )
-{
-	memcpy( &pmtDst->majortype, &pmtSrc->majortype, sizeof(GUID) );
-	memcpy( &pmtDst->subtype, &pmtSrc->subtype, sizeof(GUID) );
-	pmtDst->bFixedSizeSamples = pmtSrc->bFixedSizeSamples;
-	pmtDst->bTemporalCompression = pmtSrc->bTemporalCompression;
-	pmtDst->lSampleSize = pmtSrc->lSampleSize;
-	memcpy( &pmtDst->formattype, &pmtSrc->formattype, sizeof(GUID) );
-	pmtDst->pUnk = NULL;
-	pmtDst->cbFormat = pmtSrc->cbFormat;
-	pmtDst->pbFormat = NULL;
-
-	if ( pmtSrc->pbFormat != NULL && pmtSrc->cbFormat != 0 )
-	{
-		pmtDst->pbFormat = (BYTE*)CoTaskMemAlloc( pmtSrc->cbFormat );
-		if ( pmtDst->pbFormat == NULL )
-		{
-			return E_OUTOFMEMORY;
-		}
-		memcpy( pmtDst->pbFormat, pmtSrc->pbFormat, pmtSrc->cbFormat );
-	}
-
-	if ( pmtSrc->pUnk != NULL )
-	{
-		pmtDst->pUnk = pmtSrc->pUnk;
-		IUnknown_AddRef( pmtSrc->pUnk );
-	}
-
-	return S_OK;
-}
-
-void QUARTZ_MediaType_Free(
-	AM_MEDIA_TYPE* pmt )
-{
-	if ( pmt->pUnk != NULL )
-	{
-		IUnknown_Release( pmt->pUnk );
-		pmt->pUnk = NULL;
-	}
-	if ( pmt->pbFormat != NULL )
-	{
-		CoTaskMemFree( pmt->pbFormat );
-		pmt->cbFormat = 0;
-		pmt->pbFormat = NULL;
-	}
-}
-
-AM_MEDIA_TYPE* QUARTZ_MediaType_Duplicate(
-	const AM_MEDIA_TYPE* pmtSrc )
-{
-	AM_MEDIA_TYPE*	pmtDup;
-
-	pmtDup = (AM_MEDIA_TYPE*)CoTaskMemAlloc( sizeof(AM_MEDIA_TYPE) );
-	if ( pmtDup == NULL )
-		return NULL;
-	if ( QUARTZ_MediaType_Copy( pmtDup, pmtSrc ) != S_OK )
-	{
-		CoTaskMemFree( pmtDup );
-		return NULL;
-	}
-
-	return pmtDup;
-}
-
-void QUARTZ_MediaType_Destroy(
-	AM_MEDIA_TYPE* pmt )
-{
-	QUARTZ_MediaType_Free( pmt );
-	CoTaskMemFree( pmt );
-}
-
-void QUARTZ_MediaSubType_FromFourCC(
-	GUID* psubtype, DWORD dwFourCC )
-{
-	TRACE( "FourCC %c%c%c%c\n",
-			(int)(dwFourCC>> 0)&0xff,
-			(int)(dwFourCC>> 8)&0xff,
-			(int)(dwFourCC>>16)&0xff,
-			(int)(dwFourCC>>24)&0xff );
-	memcpy( psubtype, &MEDIASUBTYPE_PCM, sizeof(GUID) );
-	psubtype->Data1 = dwFourCC;
-}
-
-BOOL QUARTZ_MediaSubType_IsFourCC(
-	const GUID* psubtype )
-{
-	GUID guidTemp;
-
-	QUARTZ_MediaSubType_FromFourCC(
-		&guidTemp, psubtype->Data1 );
-	return IsEqualGUID( psubtype, &guidTemp );
-}
-
-HRESULT QUARTZ_MediaSubType_FromBitmap(
-	GUID* psubtype, const BITMAPINFOHEADER* pbi )
-{
-	HRESULT hr;
-	DWORD*	pdwBitf;
-
-	if ( (pbi->biCompression & 0xffff0000) != 0 )
-		return S_FALSE;
-
-	if ( pbi->biWidth <= 0 || pbi->biHeight == 0 )
-		return E_FAIL;
-
-	hr = E_FAIL;
-	switch ( pbi->biCompression )
-	{
-	case 0:
-		if ( pbi->biPlanes != 1 )
-			break;
-		switch ( pbi->biBitCount )
-		{
-		case  1:
-			memcpy( psubtype, &MEDIASUBTYPE_RGB1, sizeof(GUID) );
-			hr = S_OK;
-			break;
-		case  4:
-			memcpy( psubtype, &MEDIASUBTYPE_RGB4, sizeof(GUID) );
-			hr = S_OK;
-			break;
-		case  8:
-			memcpy( psubtype, &MEDIASUBTYPE_RGB8, sizeof(GUID) );
-			hr = S_OK;
-			break;
-		case 16:
-			memcpy( psubtype, &MEDIASUBTYPE_RGB555, sizeof(GUID) );
-			hr = S_OK;
-			break;
-		case 24:
-			memcpy( psubtype, &MEDIASUBTYPE_RGB24, sizeof(GUID) );
-			hr = S_OK;
-			break;
-		case 32:
-			memcpy( psubtype, &MEDIASUBTYPE_RGB32, sizeof(GUID) );
-			hr = S_OK;
-			break;
-		}
-		break;
-	case 1:
-		if ( pbi->biPlanes == 1 && pbi->biHeight > 0 &&
-			 pbi->biBitCount == 8 )
-		{
-			QUARTZ_MediaSubType_FromFourCC( psubtype, 1 );
-			hr = S_OK;
-		}
-		break;
-	case 2:
-		if ( pbi->biPlanes == 1 && pbi->biHeight > 0 &&
-			 pbi->biBitCount == 4 )
-		{
-			QUARTZ_MediaSubType_FromFourCC( psubtype, 2 );
-			hr = S_OK;
-		}
-		break;
-	case 3:
-		if ( pbi->biPlanes != 1 )
-			break;
-		pdwBitf = (DWORD*)( (BYTE*)pbi + sizeof(BITMAPINFOHEADER) );
-		switch ( pbi->biBitCount )
-		{
-		case 16:
-			if ( pdwBitf[0] == 0x7c00 &&
-				 pdwBitf[1] == 0x03e0 &&
-				 pdwBitf[2] == 0x001f )
-			{
-				memcpy( psubtype, &MEDIASUBTYPE_RGB555, sizeof(GUID) );
-				hr = S_OK;
-			}
-			if ( pdwBitf[0] == 0xf800 &&
-				 pdwBitf[1] == 0x07e0 &&
-				 pdwBitf[2] == 0x001f )
-			{
-				memcpy( psubtype, &MEDIASUBTYPE_RGB565, sizeof(GUID) );
-				hr = S_OK;
-			}
-			break;
-		case 32:
-			if ( pdwBitf[0] == 0x00ff0000 &&
-				 pdwBitf[1] == 0x0000ff00 &&
-				 pdwBitf[2] == 0x000000ff )
-			{
-				memcpy( psubtype, &MEDIASUBTYPE_RGB32, sizeof(GUID) );
-				hr = S_OK;
-			}
-			break;
-		}
-		break;
-	}
-
-	return hr;
-}
-
-void QUARTZ_PatchBitmapInfoHeader( BITMAPINFOHEADER* pbi )
-{
-	switch ( pbi->biCompression )
-	{
-	case mmioFOURCC('R','G','B',' '):
-		pbi->biCompression = 0;
-		break;
-	case mmioFOURCC('R','L','E',' '):
-	case mmioFOURCC('M','R','L','E'):
-	case mmioFOURCC('R','L','E','8'):
-	case mmioFOURCC('R','L','E','4'):
-		if ( pbi->biBitCount == 4 )
-			pbi->biCompression = 2;
-		else
-			pbi->biCompression = 1;
-		break;
-	}
-}
-
-BOOL QUARTZ_BitmapHasFixedSample( const BITMAPINFOHEADER* pbi )
-{
-	switch ( pbi->biCompression )
-	{
-	case 0:
-	case 3:
-	case mmioFOURCC('I','4','2','0'):
-	case mmioFOURCC('I','Y','U','V'):
-	case mmioFOURCC('Y','U','Y','V'):
-	case mmioFOURCC('Y','V','U','9'):
-	case mmioFOURCC('Y','4','1','1'):
-	case mmioFOURCC('Y','4','1','P'):
-	case mmioFOURCC('Y','U','Y','2'):
-	case mmioFOURCC('Y','V','Y','U'):
-	case mmioFOURCC('U','Y','V','Y'):
-	case mmioFOURCC('Y','2','1','1'):
-	case mmioFOURCC('Y','V','1','2'):
-		return TRUE;
-	}
-
-	return FALSE;
-}
-
-
-/****************************************************************************/
-
-typedef struct IEnumMediaTypesImpl
-{
-	ICOM_VFIELD(IEnumMediaTypes);
-} IEnumMediaTypesImpl;
-
-typedef struct
-{
-	QUARTZ_IUnkImpl	unk;
-	IEnumMediaTypesImpl	enummtype;
-	struct QUARTZ_IFEntry	IFEntries[1];
-	CRITICAL_SECTION	cs;
-	AM_MEDIA_TYPE*	pTypes;
-	ULONG	cTypes;
-	ULONG	cCur;
-} CEnumMediaTypes;
-
-#define	CEnumMediaTypes_THIS(iface,member)		CEnumMediaTypes*	This = ((CEnumMediaTypes*)(((char*)iface)-offsetof(CEnumMediaTypes,member)))
-
-
-
-static HRESULT WINAPI
-IEnumMediaTypes_fnQueryInterface(IEnumMediaTypes* iface,REFIID riid,void** ppobj)
-{
-	CEnumMediaTypes_THIS(iface,enummtype);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IEnumMediaTypes_fnAddRef(IEnumMediaTypes* iface)
-{
-	CEnumMediaTypes_THIS(iface,enummtype);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IEnumMediaTypes_fnRelease(IEnumMediaTypes* iface)
-{
-	CEnumMediaTypes_THIS(iface,enummtype);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IEnumMediaTypes_fnNext(IEnumMediaTypes* iface,ULONG cReq,AM_MEDIA_TYPE** ppmtype,ULONG* pcFetched)
-{
-	CEnumMediaTypes_THIS(iface,enummtype);
-	HRESULT	hr;
-	ULONG	cFetched;
-
-	TRACE("(%p)->(%lu,%p,%p)\n",This,cReq,ppmtype,pcFetched);
-
-	if ( pcFetched == NULL && cReq > 1 )
-		return E_INVALIDARG;
-	if ( ppmtype == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->cs );
-
-	hr = NOERROR;
-	cFetched = 0;
-	while ( cReq > 0 )
-	{
-		if ( This->cCur >= This->cTypes )
-		{
-			hr = S_FALSE;
-			break;
-		}
-		ppmtype[ cFetched ] =
-			QUARTZ_MediaType_Duplicate( &This->pTypes[ This->cCur ] );
-		if ( ppmtype[ cFetched ] == NULL )
-		{
-			hr = E_OUTOFMEMORY;
-			while ( cFetched > 0 )
-			{
-				cFetched --;
-				QUARTZ_MediaType_Destroy( ppmtype[ cFetched ] );
-			}
-			break;
-		}
-
-		cFetched ++;
-
-		This->cCur ++;
-		cReq --;
-	}
-
-	LeaveCriticalSection( &This->cs );
-
-	if ( pcFetched != NULL )
-		*pcFetched = cFetched;
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IEnumMediaTypes_fnSkip(IEnumMediaTypes* iface,ULONG cSkip)
-{
-	CEnumMediaTypes_THIS(iface,enummtype);
-	HRESULT	hr;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->cs );
-
-	hr = NOERROR;
-	while ( cSkip > 0 )
-	{
-		if ( This->cCur >= This->cTypes )
-		{
-			hr = S_FALSE;
-			break;
-		}
-		This->cCur ++;
-		cSkip --;
-	}
-
-	LeaveCriticalSection( &This->cs );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IEnumMediaTypes_fnReset(IEnumMediaTypes* iface)
-{
-	CEnumMediaTypes_THIS(iface,enummtype);
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->cs );
-
-	This->cCur = 0;
-
-	LeaveCriticalSection( &This->cs );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IEnumMediaTypes_fnClone(IEnumMediaTypes* iface,IEnumMediaTypes** ppobj)
-{
-	CEnumMediaTypes_THIS(iface,enummtype);
-	HRESULT	hr;
-
-	TRACE("(%p)->()\n",This);
-
-	if ( ppobj == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->cs );
-
-	hr = QUARTZ_CreateEnumMediaTypes(
-		ppobj,
-		This->pTypes, This->cTypes );
-	if ( SUCCEEDED(hr) )
-		IEnumMediaTypes_Skip( *ppobj, This->cCur );
-
-	LeaveCriticalSection( &This->cs );
-
-	return hr;
-}
-
-
-static ICOM_VTABLE(IEnumMediaTypes) ienummtype =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IEnumMediaTypes_fnQueryInterface,
-	IEnumMediaTypes_fnAddRef,
-	IEnumMediaTypes_fnRelease,
-	/* IEnumMediaTypes fields */
-	IEnumMediaTypes_fnNext,
-	IEnumMediaTypes_fnSkip,
-	IEnumMediaTypes_fnReset,
-	IEnumMediaTypes_fnClone,
-};
-
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry IFEntries[] =
-{
-  { &IID_IEnumMediaTypes, offsetof(CEnumMediaTypes,enummtype)-offsetof(CEnumMediaTypes,unk) },
-};
-
-
-void QUARTZ_DestroyEnumMediaTypes(IUnknown* punk)
-{
-	CEnumMediaTypes_THIS(punk,unk);
-	ULONG	i;
-
-	if ( This->pTypes != NULL )
-	{
-		for ( i = 0; i < This->cTypes; i++ )
-			QUARTZ_MediaType_Free( &This->pTypes[i] );
-		QUARTZ_FreeMem( This->pTypes );
-	}
-
-	DeleteCriticalSection( &This->cs );
-}
-
-HRESULT QUARTZ_CreateEnumMediaTypes(
-	IEnumMediaTypes** ppobj,
-	const AM_MEDIA_TYPE* pTypes, ULONG cTypes )
-{
-	CEnumMediaTypes*	penum;
-	AM_MEDIA_TYPE*	pTypesDup = NULL;
-	ULONG	i;
-	HRESULT	hr;
-
-	TRACE("(%p,%p,%lu)\n",ppobj,pTypes,cTypes);
-
-	if ( cTypes > 0 )
-	{
-		pTypesDup = (AM_MEDIA_TYPE*)QUARTZ_AllocMem(
-			sizeof( AM_MEDIA_TYPE ) * cTypes );
-		if ( pTypesDup == NULL )
-			return E_OUTOFMEMORY;
-
-		i = 0;
-		while ( i < cTypes )
-		{
-			hr = QUARTZ_MediaType_Copy( &pTypesDup[i], &pTypes[i] );
-			if ( FAILED(hr) )
-			{
-				while ( i > 0 )
-				{
-					i --;
-					QUARTZ_MediaType_Free( &pTypesDup[i] );
-				}
-				QUARTZ_FreeMem( pTypesDup );
-				return hr;
-			}
-
-			i ++;
-		}
-	}
-
-	penum = (CEnumMediaTypes*)QUARTZ_AllocObj( sizeof(CEnumMediaTypes) );
-	if ( penum == NULL )
-	{
-		return E_OUTOFMEMORY;
-	}
-	penum->pTypes = pTypesDup;
-	penum->cTypes = cTypes;
-	penum->cCur = 0;
-
-	QUARTZ_IUnkInit( &penum->unk, NULL );
-	ICOM_VTBL(&penum->enummtype) = &ienummtype;
-
-	penum->unk.pEntries = IFEntries;
-	penum->unk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]);
-	penum->unk.pOnFinalRelease = QUARTZ_DestroyEnumMediaTypes;
-
-	InitializeCriticalSection( &penum->cs );
-
-	*ppobj = (IEnumMediaTypes*)(&penum->enummtype);
-
-	return S_OK;
-}
-
-
diff --git a/dlls/quartz/mtype.h b/dlls/quartz/mtype.h
deleted file mode 100644
index f421eb1..0000000
--- a/dlls/quartz/mtype.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Implements IEnumMediaTypes and helper functions. (internal)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef WINE_DSHOW_MTYPE_H
-#define WINE_DSHOW_MTYPE_H
-
-HRESULT QUARTZ_MediaType_Copy(
-	AM_MEDIA_TYPE* pmtDst,
-	const AM_MEDIA_TYPE* pmtSrc );
-void QUARTZ_MediaType_Free(
-	AM_MEDIA_TYPE* pmt );
-AM_MEDIA_TYPE* QUARTZ_MediaType_Duplicate(
-	const AM_MEDIA_TYPE* pmtSrc );
-void QUARTZ_MediaType_Destroy(
-	AM_MEDIA_TYPE* pmt );
-
-void QUARTZ_MediaSubType_FromFourCC(
-	GUID* psubtype, DWORD dwFourCC );
-BOOL QUARTZ_MediaSubType_IsFourCC(
-	const GUID* psubtype );
-
-HRESULT QUARTZ_MediaSubType_FromBitmap(
-	GUID* psubtype, const BITMAPINFOHEADER* pbi );
-
-void QUARTZ_PatchBitmapInfoHeader( BITMAPINFOHEADER* pbi );
-BOOL QUARTZ_BitmapHasFixedSample( const BITMAPINFOHEADER* pbi );
-
-
-HRESULT QUARTZ_CreateEnumMediaTypes(
-	IEnumMediaTypes** ppobj,
-	const AM_MEDIA_TYPE* pTypes, ULONG cTypes );
-
-
-#endif /* WINE_DSHOW_MTYPE_H */
diff --git a/dlls/quartz/parser.c b/dlls/quartz/parser.c
deleted file mode 100644
index de3052c..0000000
--- a/dlls/quartz/parser.c
+++ /dev/null
@@ -1,2152 +0,0 @@
-/*
- * Implements IBaseFilter for parsers. (internal)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * FIXME - handle errors/flushing correctly.
- * FIXME - handle seeking.
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "mmsystem.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "vfwmsgs.h"
-#include "evcode.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "parser.h"
-#include "mtype.h"
-#include "memalloc.h"
-
-#define	QUARTZ_MSG_EXITTHREAD	(WM_APP+2)
-#define	QUARTZ_MSG_SEEK			(WM_APP+3)
-
-#ifndef OATRUE
-#define OATRUE (-1)
-#define OAFALSE (0)
-#endif
-
-HRESULT CParserOutPinImpl_InitIMediaSeeking( CParserOutPinImpl* This );
-void CParserOutPinImpl_UninitIMediaSeeking( CParserOutPinImpl* This );
-HRESULT CParserOutPinImpl_InitIMediaPosition( CParserOutPinImpl* This );
-void CParserOutPinImpl_UninitIMediaPosition( CParserOutPinImpl* This );
-
-/***************************************************************************
- *
- *	CParserImpl internal thread
- *
- */
-
-static
-void CParserImplThread_ClearAllRequests( CParserImpl* This )
-{
-	ULONG	nIndex;
-
-	TRACE("(%p)\n",This);
-
-	for ( nIndex = 0; nIndex < This->m_cOutStreams; nIndex++ )
-	{
-		This->m_ppOutPins[nIndex]->m_bReqUsed = FALSE;
-		This->m_ppOutPins[nIndex]->m_pReqSample = NULL;
-	}
-}
-
-static
-void CParserImplThread_ReleaseAllRequests( CParserImpl* This )
-{
-	ULONG	nIndex;
-
-	TRACE("(%p)\n",This);
-
-	for ( nIndex = 0; nIndex < This->m_cOutStreams; nIndex++ )
-	{
-		if ( This->m_ppOutPins[nIndex]->m_bReqUsed )
-		{
-			if ( This->m_ppOutPins[nIndex]->m_pReqSample != NULL )
-			{
-				IMediaSample_Release(This->m_ppOutPins[nIndex]->m_pReqSample);
-				This->m_ppOutPins[nIndex]->m_pReqSample = NULL;
-			}
-			This->m_ppOutPins[nIndex]->m_bReqUsed = FALSE;
-		}
-	}
-}
-
-static
-BOOL CParserImplThread_HasPendingSamples( CParserImpl* This )
-{
-	ULONG	nIndex;
-
-	for ( nIndex = 0; nIndex < This->m_cOutStreams; nIndex++ )
-	{
-		if ( This->m_ppOutPins[nIndex]->m_bReqUsed &&
-			 This->m_ppOutPins[nIndex]->m_pReqSample != NULL )
-			return TRUE;
-	}
-
-	return FALSE;
-}
-
-static
-HRESULT CParserImplThread_FlushAllPendingSamples( CParserImpl* This )
-{
-	HRESULT hr;
-	IMediaSample*	pSample;
-	DWORD_PTR	dwContext;
-
-	TRACE("(%p)\n",This);
-
-	/* remove all samples from queue. */
-	hr = IAsyncReader_BeginFlush(This->m_pReader);
-	if ( FAILED(hr) )
-		return hr;
-	IAsyncReader_EndFlush(This->m_pReader);
-
-	/* remove all processed samples from queue. */
-	while ( 1 )
-	{
-		hr = IAsyncReader_WaitForNext(This->m_pReader,0,&pSample,&dwContext);
-		if ( hr != S_OK )
-			break;
-	}
-
-	CParserImplThread_ReleaseAllRequests(This);
-
-	return NOERROR;
-}
-
-static HRESULT CParserImplThread_SendEndOfStream( CParserImpl* This )
-{
-	ULONG	nIndex;
-	HRESULT hr;
-	HRESULT hrRet;
-	CParserOutPinImpl*	pOutPin;
-
-	TRACE("(%p)\n",This);
-	if ( This->m_bSendEOS )
-		return NOERROR;
-	This->m_bSendEOS = TRUE;
-
-	hrRet = S_OK;
-	for ( nIndex = 0; nIndex < This->m_cOutStreams; nIndex++ )
-	{
-		pOutPin = This->m_ppOutPins[nIndex];
-		hr = CPinBaseImpl_SendEndOfStream(&pOutPin->pin);
-		if ( FAILED(hr) )
-		{
-			if ( SUCCEEDED(hrRet) )
-				hrRet = hr;
-		}
-		else
-		{
-			if ( hr != S_OK && hrRet == S_OK )
-				hrRet = hr;
-		}
-	}
-
-	return hrRet;
-}
-
-static
-void CParserImplThread_MemDecommit( CParserImpl* This )
-{
-	ULONG	nIndex;
-	IMemAllocator*	pAlloc;
-
-	TRACE("(%p)\n",This);
-
-	if ( This->m_pAllocator != NULL )
-		IMemAllocator_Decommit( This->m_pAllocator );
-
-	if ( This->m_ppOutPins != NULL && This->m_cOutStreams > 0 )
-	{
-		for ( nIndex = 0; nIndex < This->m_cOutStreams; nIndex++ )
-		{
-			pAlloc = This->m_ppOutPins[nIndex]->m_pOutPinAllocator;
-			if ( pAlloc != NULL )
-				IMemAllocator_Decommit( pAlloc );
-		}
-	}
-}
-
-static HRESULT CParserImplThread_SendFlush( CParserImpl* This )
-{
-	ULONG	nIndex;
-	HRESULT hr;
-	HRESULT hrRet;
-	CParserOutPinImpl*	pOutPin;
-
-	TRACE("(%p)\n",This);
-	hrRet = S_OK;
-	for ( nIndex = 0; nIndex < This->m_cOutStreams; nIndex++ )
-	{
-		pOutPin = This->m_ppOutPins[nIndex];
-		hr = CPinBaseImpl_SendBeginFlush(&pOutPin->pin);
-		if ( FAILED(hr) )
-		{
-			if ( SUCCEEDED(hrRet) )
-				hrRet = hr;
-		}
-		else
-		{
-			if ( hr != S_OK && hrRet == S_OK )
-				hrRet = hr;
-			hr = CPinBaseImpl_SendEndFlush(&pOutPin->pin);
-			if ( FAILED(hr) )
-				hrRet = hr;
-		}
-	}
-
-	return hrRet;
-}
-
-static void CParserImplThread_ErrorAbort( CParserImpl* This, HRESULT hr )
-{
-	CBaseFilterImpl_MediaEventNotify(
-		&This->basefilter,EC_ERRORABORT,(LONG_PTR)hr,(LONG_PTR)0);
-	CParserImplThread_SendEndOfStream(This);
-}
-
-static
-void CParserImplThread_ResetAllStreams( CParserImpl* This )
-{
-	ULONG	nIndex;
-
-	if ( This->m_pHandler->pSetCurPos != NULL )
-	{
-		for ( nIndex = 0; nIndex < This->m_cOutStreams; nIndex++ )
-			This->m_pHandler->pSetCurPos(This,
-				&This->m_guidTimeFormat,nIndex,(LONGLONG)0);
-	}
-}
-
-static
-HRESULT CParserImplThread_ProcessNextSample( CParserImpl* This )
-{
-	IMediaSample*	pSample;
-	DWORD_PTR	dwContext;
-	ULONG	nIndex;
-	HRESULT hr;
-	CParserOutPinImpl*	pOutPin;
-	MSG	msg;
-
-	while ( 1 )
-	{
-		if ( PeekMessageA( &msg, (HWND)NULL, 0, 0, PM_REMOVE ) )
-		{
-			hr = NOERROR;
-			switch ( msg.message )
-			{
-			case QUARTZ_MSG_EXITTHREAD:
-				TRACE("(%p) EndThread\n",This);
-				CParserImplThread_FlushAllPendingSamples(This);
-				CParserImplThread_ClearAllRequests(This);
-				CParserImplThread_SendFlush(This);
-				CParserImplThread_SendEndOfStream(This);
-				This->m_bSendEOS = FALSE;
-
-				CParserImplThread_ResetAllStreams(This);
-				CParserImplThread_MemDecommit(This);
-
-				TRACE("(%p) exit thread\n",This);
-				return S_FALSE;
-			case QUARTZ_MSG_SEEK:
-				FIXME("(%p) Seek\n",This);
-				CParserImplThread_FlushAllPendingSamples(This);
-				hr = CParserImplThread_SendFlush(This);
-				CParserImplThread_SendEndOfStream(This);
-				/* FIXME - process seeking. */
-				/* FIXME - Send NewSegment. */
-				break;
-			default:
-				FIXME( "invalid message %04u\n", (unsigned)msg.message );
-				hr = E_FAIL;
-				CParserImplThread_ErrorAbort(This,hr);
-			}
-
-			return hr;
-		}
-
-		hr = IAsyncReader_WaitForNext(This->m_pReader,PARSER_POLL_INTERVAL,&pSample,&dwContext);
-		nIndex = (ULONG)dwContext;
-		if ( hr != VFW_E_TIMEOUT )
-			break;
-	}
-	if ( FAILED(hr) )
-	{
-		CParserImplThread_ErrorAbort(This,hr);
-		return hr;
-	}
-
-	pOutPin = This->m_ppOutPins[nIndex];
-	if ( pOutPin != NULL && pOutPin->m_bReqUsed )
-	{
-		if ( This->m_pHandler->pProcessSample != NULL )
-			hr = This->m_pHandler->pProcessSample(This,nIndex,pOutPin->m_llReqStart,pOutPin->m_lReqLength,pOutPin->m_pReqSample);
-
-		IMediaSample_SetSyncPoint( pOutPin->m_pReqSample, (pOutPin->m_dwSampleFlags & AM_SAMPLE_SPLICEPOINT) ? TRUE : FALSE );
-		IMediaSample_SetPreroll( pOutPin->m_pReqSample, (pOutPin->m_dwSampleFlags & AM_SAMPLE_PREROLL) ? TRUE : FALSE );
-		IMediaSample_SetDiscontinuity( pOutPin->m_pReqSample, (pOutPin->m_dwSampleFlags & AM_SAMPLE_DATADISCONTINUITY) ? TRUE : FALSE );
-
-		if ( SUCCEEDED(hr) )
-		{
-			if ( pOutPin->m_pOutPinAllocator != NULL &&
-				 pOutPin->m_pOutPinAllocator != This->m_pAllocator )
-			{
-				/* if pin has its own allocator, sample must be copied */
-				hr = IMemAllocator_GetBuffer( This->m_pAllocator, &pSample, NULL, NULL, 0 );
-				if ( SUCCEEDED(hr) )
-				{
-					hr = QUARTZ_IMediaSample_Copy(
-						pSample, pOutPin->m_pReqSample, TRUE );
-					if ( SUCCEEDED(hr) )
-						hr = CPinBaseImpl_SendSample(&pOutPin->pin,pSample);
-					IMediaSample_Release(pSample);
-				}
-			}
-			else
-			{
-				hr = CPinBaseImpl_SendSample(&pOutPin->pin,pOutPin->m_pReqSample);
-			}
-		}
-
-		if ( FAILED(hr) )
-			CParserImplThread_ErrorAbort(This,hr);
-
-		IMediaSample_Release(pOutPin->m_pReqSample);
-		pOutPin->m_pReqSample = NULL;
-		pOutPin->m_bReqUsed = FALSE;
-	}
-
-	if ( SUCCEEDED(hr) )
-		hr = NOERROR;
-
-	TRACE("return %08lx\n",hr);
-
-	return hr;
-}
-
-static
-DWORD WINAPI CParserImplThread_Entry( LPVOID pv )
-{
-	CParserImpl*	This = (CParserImpl*)pv;
-	BOOL	bReqNext;
-	ULONG	nIndex = 0;
-	HRESULT hr;
-	REFERENCE_TIME	rtSampleTimeStart, rtSampleTimeEnd;
-	LONGLONG	llReqStart;
-	LONG	lReqLength;
-	DWORD	dwSampleFlags;
-	REFERENCE_TIME	rtReqStart, rtReqStop;
-	IMediaSample*	pSample;
-	MSG	msg;
-
-	/* initialize the message queue. */
-	PeekMessageA( &msg, (HWND)NULL, 0, 0, PM_NOREMOVE );
-
-	CParserImplThread_ClearAllRequests(This);
-
-	/* resume the owner thread. */
-	SetEvent( This->m_hEventInit );
-
-	TRACE( "Enter message loop.\n" );
-
-	bReqNext = TRUE;
-	while ( 1 )
-	{
-		if ( bReqNext )
-		{
-			/* Get the next request.  */
-			hr = This->m_pHandler->pGetNextRequest( This, &nIndex, &llReqStart, &lReqLength, &rtReqStart, &rtReqStop, &dwSampleFlags );
-			if ( FAILED(hr) )
-			{
-				CParserImplThread_ErrorAbort(This,hr);
-				break;
-			}
-			if ( hr != S_OK )
-			{
-				/* Flush pending samples. */
-				hr = S_OK;
-				while ( CParserImplThread_HasPendingSamples(This) )
-				{
-					hr = CParserImplThread_ProcessNextSample(This);
-					if ( hr != S_OK )
-						break;
-				}
-				if ( hr != S_OK )
-				{
-					/* notification is already sent */
-					break;
-				}
-
-				/* Send End Of Stream. */
-				hr = CParserImplThread_SendEndOfStream(This);
-				if ( hr != S_OK )
-				{
-					/* notification is already sent */
-					break;
-				}
-
-				/* Blocking... */
-				hr = CParserImplThread_ProcessNextSample(This);
-				if ( hr != S_OK )
-				{
-					/* notification is already sent */
-					break;
-				}
-				continue;
-			}
-			if ( This->m_ppOutPins[nIndex]->pin.pPinConnectedTo == NULL )
-				continue;
-
-			rtSampleTimeStart = This->basefilter.rtStart + llReqStart * QUARTZ_TIMEUNITS;
-			rtSampleTimeEnd = (llReqStart + lReqLength) * QUARTZ_TIMEUNITS;
-			bReqNext = FALSE;
-		}
-
-		if ( !This->m_ppOutPins[nIndex]->m_bReqUsed )
-		{
-			hr = IMemAllocator_GetBuffer( This->m_pAllocator, &pSample, NULL, NULL, 0 );
-			if ( FAILED(hr) )
-			{
-				CParserImplThread_ErrorAbort(This,hr);
-				break;
-			}
-			hr = IMediaSample_SetTime(pSample,&rtSampleTimeStart,&rtSampleTimeEnd);
-			if ( SUCCEEDED(hr) )
-				hr = IAsyncReader_Request(This->m_pReader,pSample,nIndex);
-			if ( FAILED(hr) )
-			{
-				CParserImplThread_ErrorAbort(This,hr);
-				break;
-			}
-
-			This->m_ppOutPins[nIndex]->m_bReqUsed = TRUE;
-			This->m_ppOutPins[nIndex]->m_pReqSample = pSample;
-			This->m_ppOutPins[nIndex]->m_llReqStart = llReqStart;
-			This->m_ppOutPins[nIndex]->m_lReqLength = lReqLength;
-			This->m_ppOutPins[nIndex]->m_rtReqStart = rtSampleTimeStart;
-			This->m_ppOutPins[nIndex]->m_rtReqStop = rtSampleTimeEnd;
-			This->m_ppOutPins[nIndex]->m_dwSampleFlags = dwSampleFlags;
-			bReqNext = TRUE;
-			continue;
-		}
-
-		hr = CParserImplThread_ProcessNextSample(This);
-		if ( hr != S_OK )
-		{
-			/* notification is already sent */
-			break;
-		}
-	}
-
-	This->m_dwThreadId = 0;
-	This->basefilter.bIntermediateState = FALSE;
-	SetEvent( This->m_hEventInit );
-
-	return 0;
-}
-
-/***************************************************************************
- *
- *	CParserImpl internal methods
- *
- */
-
-static
-void CParserImpl_SetAsyncReader( CParserImpl* This, IAsyncReader* pReader )
-{
-	if ( This->m_pReader != NULL )
-	{
-		IAsyncReader_Release( This->m_pReader );
-		This->m_pReader = NULL;
-	}
-	if ( pReader != NULL )
-	{
-		This->m_pReader = pReader;
-		IAsyncReader_AddRef(This->m_pReader);
-	}
-}
-
-static
-void CParserImpl_ReleaseOutPins( CParserImpl* This )
-{
-	ULONG nIndex;
-
-	if ( This->m_ppOutPins != NULL )
-	{
-		for ( nIndex = 0; nIndex < This->m_cOutStreams; nIndex++ )
-		{
-			if ( This->m_ppOutPins[nIndex] != NULL )
-			{
-				IUnknown_Release(This->m_ppOutPins[nIndex]->unk.punkControl);
-				This->m_ppOutPins[nIndex] = NULL;
-			}
-		}
-		QUARTZ_FreeMem(This->m_ppOutPins);
-		This->m_ppOutPins = NULL;
-	}
-	This->m_cOutStreams = 0;
-}
-
-static
-BOOL CParserImpl_OutPinsAreConnected( CParserImpl* This )
-{
-	QUARTZ_CompListItem*	pItem;
-	IPin*	pPin;
-	IPin*	pPinPeer;
-	HRESULT hr;
-
-	QUARTZ_CompList_Lock( This->basefilter.pOutPins );
-	pItem = QUARTZ_CompList_GetFirst( This->basefilter.pOutPins );
-	while ( pItem != NULL )
-	{
-		if ( pItem == NULL )
-			break;
-		pPin = (IPin*)QUARTZ_CompList_GetItemPtr(pItem);
-		pPinPeer = NULL;
-		hr = IPin_ConnectedTo(pPin,&pPinPeer);
-		if ( hr == S_OK && pPinPeer != NULL )
-		{
-			IPin_Release(pPinPeer);
-			return TRUE;
-		}
-		pItem = QUARTZ_CompList_GetNext( This->basefilter.pOutPins, pItem );
-	}
-	QUARTZ_CompList_Unlock( This->basefilter.pOutPins );
-
-	return FALSE;
-}
-
-static
-void CParserImpl_ReleaseListOfOutPins( CParserImpl* This )
-{
-	QUARTZ_CompListItem*	pItem;
-
-	QUARTZ_CompList_Lock( This->basefilter.pOutPins );
-	while ( 1 )
-	{
-		pItem = QUARTZ_CompList_GetFirst( This->basefilter.pOutPins );
-		if ( pItem == NULL )
-			break;
-		QUARTZ_CompList_RemoveComp(
-			This->basefilter.pOutPins,
-			QUARTZ_CompList_GetItemPtr(pItem) );
-	}
-	QUARTZ_CompList_Unlock( This->basefilter.pOutPins );
-}
-
-
-static
-HRESULT CParserImpl_BeginThread( CParserImpl* This )
-{
-	DWORD dwRes;
-	HANDLE hEvents[2];
-
-	if ( This->m_bIsRunning )
-	{
-		TRACE("(%p) - already running\n",This);
-		return NOERROR;
-	}
-
-	This->m_hEventInit = CreateEventA(NULL,TRUE,FALSE,NULL);
-	if ( This->m_hEventInit == (HANDLE)NULL )
-		return E_OUTOFMEMORY;
-
-	/* create the processing thread. */
-	This->m_hThread = CreateThread(
-		NULL, 0,
-		CParserImplThread_Entry,
-		(LPVOID)This,
-		0, &This->m_dwThreadId );
-	if ( This->m_hThread == (HANDLE)NULL )
-	{
-		CloseHandle( This->m_hEventInit );
-		This->m_hEventInit = (HANDLE)NULL;
-		return E_FAIL;
-	}
-
-	hEvents[0] = This->m_hEventInit;
-	hEvents[1] = This->m_hThread;
-
-	dwRes = WaitForMultipleObjects(2,hEvents,FALSE,INFINITE);
-
-	ResetEvent( This->m_hEventInit );
-	CloseHandle( This->m_hThread );
-	This->m_hThread = (HANDLE)NULL;
-
-	if ( dwRes != WAIT_OBJECT_0 )
-		return E_FAIL;
-
-	This->m_bIsRunning = TRUE;
-
-	return NOERROR;
-}
-
-static
-BOOL CParserImpl_EndThread( CParserImpl* This, BOOL bAsync )
-{
-	DWORD	dwThreadId;
-
-	TRACE("(%p)\n",This);
-	dwThreadId = This->m_dwThreadId;
-	if ( This->m_hEventInit != (HANDLE)NULL )
-	{
-		if ( dwThreadId != 0 )
-			PostThreadMessageA(
-				dwThreadId, QUARTZ_MSG_EXITTHREAD, 0, 0 );
-		if ( bAsync &&
-			 WaitForSingleObject( This->m_hEventInit, 0 ) == WAIT_TIMEOUT )
-			return FALSE;
-
-		WaitForSingleObject( This->m_hEventInit, INFINITE );
-		CloseHandle( This->m_hEventInit );
-		This->m_bIsRunning = FALSE;
-		This->m_hEventInit = (HANDLE)NULL;
-	}
-
-	return TRUE;
-}
-
-static
-HRESULT CParserImpl_MemCommit( CParserImpl* This )
-{
-	HRESULT hr;
-	ULONG	nIndex;
-	IMemAllocator*	pAlloc;
-
-	TRACE("(%p)\n",This);
-
-	if ( This->m_pAllocator == NULL )
-		return E_UNEXPECTED;
-
-	hr = IMemAllocator_Commit( This->m_pAllocator );
-	if ( FAILED(hr) )
-		return hr;
-
-	if ( This->m_ppOutPins != NULL && This->m_cOutStreams > 0 )
-	{
-		for ( nIndex = 0; nIndex < This->m_cOutStreams; nIndex++ )
-		{
-			pAlloc = This->m_ppOutPins[nIndex]->m_pOutPinAllocator;
-			if ( pAlloc != NULL && pAlloc != This->m_pAllocator )
-			{
-				hr = IMemAllocator_Commit( pAlloc );
-				if ( FAILED(hr) )
-					return hr;
-			}
-		}
-	}
-
-	return NOERROR;
-}
-
-static
-HRESULT CParserImpl_GetPreferredTimeFormat( CParserImpl* This, GUID* pguidFormat )
-{
-	static const GUID* tryformats[] =
-	{
-		&TIME_FORMAT_MEDIA_TIME,
-		&TIME_FORMAT_FRAME,
-		&TIME_FORMAT_SAMPLE,
-		&TIME_FORMAT_FIELD,
-		&TIME_FORMAT_BYTE,
-		NULL,
-	};
-	DWORD	n;
-
-	if ( This->m_pHandler->pIsTimeFormatSupported == NULL )
-		return E_NOTIMPL;
-
-	n = 0;
-	while ( tryformats[n] != NULL )
-	{
-		if ( This->m_pHandler->pIsTimeFormatSupported( This, tryformats[n] ) == S_OK )
-		{
-			memcpy( pguidFormat, tryformats[n], sizeof(GUID) );
-			return S_OK;
-		}
-		n ++;
-	}
-
-	return E_FAIL;
-
-}
-
-
-/***************************************************************************
- *
- *	CParserImpl methods
- *
- */
-
-static HRESULT CParserImpl_OnActive( CBaseFilterImpl* pImpl )
-{
-	CParserImpl_THIS(pImpl,basefilter);
-
-	TRACE( "(%p)\n", This );
-
-	if ( !CParserImpl_OutPinsAreConnected(This) )
-		return NOERROR;
-
-	return NOERROR;
-}
-
-static HRESULT CParserImpl_OnInactive( CBaseFilterImpl* pImpl )
-{
-	CParserImpl_THIS(pImpl,basefilter);
-	HRESULT hr;
-
-	TRACE( "(%p)\n", This );
-
-	if ( !CParserImpl_OutPinsAreConnected(This) )
-		return NOERROR;
-
-	hr = CParserImpl_MemCommit(This);
-	if ( FAILED(hr) )
-		return hr;
-
-	if ( This->basefilter.fstate == State_Stopped )
-		CParserImpl_EndThread(This,FALSE);
-
-	hr = CParserImpl_BeginThread(This);
-	if ( FAILED(hr) )
-	{
-		FIXME("CParserImpl_BeginThread returns %08lx\n",hr);
-		CParserImpl_EndThread(This,FALSE);
-		return hr;
-	}
-
-	return NOERROR;
-}
-
-static HRESULT CParserImpl_OnStop( CBaseFilterImpl* pImpl )
-{
-	CParserImpl_THIS(pImpl,basefilter);
-
-	TRACE( "(%p)\n", This );
-
-	This->basefilter.bIntermediateState = TRUE;
-	if ( !CParserImpl_EndThread(This,TRUE) )
-		return VFW_S_STATE_INTERMEDIATE;
-
-	This->basefilter.bIntermediateState = FALSE;
-	return NOERROR;
-}
-
-
-static const CBaseFilterHandlers filterhandlers =
-{
-	CParserImpl_OnActive, /* pOnActive */
-	CParserImpl_OnInactive, /* pOnInactive */
-	CParserImpl_OnStop, /* pOnStop */
-};
-
-
-/***************************************************************************
- *
- *	CParserInPinImpl methods
- *
- */
-
-static HRESULT CParserInPinImpl_OnPreConnect( CPinBaseImpl* pImpl, IPin* pPin )
-{
-	CParserInPinImpl_THIS(pImpl,pin);
-	HRESULT hr;
-	ULONG	nIndex;
-	IUnknown*	punk;
-	IAsyncReader* pReader = NULL;
-	LPCWSTR pwszOutPinName;
-	IMemAllocator*	pAllocActual;
-	AM_MEDIA_TYPE*	pmt;
-
-	TRACE("(%p,%p)\n",This,pPin);
-
-	if ( This->pParser->m_pHandler->pInitParser == NULL ||
-		 This->pParser->m_pHandler->pUninitParser == NULL ||
-		 This->pParser->m_pHandler->pGetOutPinName == NULL ||
-		 This->pParser->m_pHandler->pGetStreamType == NULL ||
-		 This->pParser->m_pHandler->pCheckStreamType == NULL ||
-		 This->pParser->m_pHandler->pGetAllocProp == NULL ||
-		 This->pParser->m_pHandler->pGetNextRequest == NULL )
-	{
-		FIXME("this parser is not implemented.\n");
-		return E_NOTIMPL;
-	}
-
-	/* at first, release all output pins. */
-	if ( CParserImpl_OutPinsAreConnected(This->pParser) )
-		return E_FAIL;
-	CParserImpl_ReleaseListOfOutPins(This->pParser);
-	CParserImpl_ReleaseOutPins(This->pParser);
-
-	CParserImpl_SetAsyncReader( This->pParser, NULL );
-	hr = IPin_QueryInterface( pPin, &IID_IAsyncReader, (void**)&pReader );
-	if ( FAILED(hr) )
-		return hr;
-	CParserImpl_SetAsyncReader( This->pParser, pReader );
-	IAsyncReader_Release(pReader);
-
-	/* initialize parser. */
-	hr = This->pParser->m_pHandler->pInitParser(This->pParser,&This->pParser->m_cOutStreams);
-	if ( FAILED(hr) )
-		return hr;
-	This->pParser->m_ppOutPins = (CParserOutPinImpl**)QUARTZ_AllocMem(
-		sizeof(CParserOutPinImpl*) * This->pParser->m_cOutStreams );
-	if ( This->pParser->m_ppOutPins == NULL )
-		return E_OUTOFMEMORY;
-	for ( nIndex = 0; nIndex < This->pParser->m_cOutStreams; nIndex++ )
-		This->pParser->m_ppOutPins[nIndex] = NULL;
-
-	/* create and initialize an allocator. */
-	hr = This->pParser->m_pHandler->pGetAllocProp(This->pParser,&This->pParser->m_propAlloc);
-	if ( FAILED(hr) )
-		return hr;
-	if ( This->pParser->m_propAlloc.cbAlign == 0 )
-		This->pParser->m_propAlloc.cbAlign = 1;
-
-	if ( This->pParser->m_pAllocator == NULL )
-	{
-		hr = QUARTZ_CreateMemoryAllocator(NULL,(void**)&punk);
-		if ( FAILED(hr) )
-			return hr;
-		hr = IUnknown_QueryInterface( punk, &IID_IMemAllocator, (void**)&This->pParser->m_pAllocator );
-		IUnknown_Release(punk);
-		if ( FAILED(hr) )
-			return hr;
-	}
-	pAllocActual = NULL;
-	hr = IAsyncReader_RequestAllocator(pReader,This->pParser->m_pAllocator,&This->pParser->m_propAlloc,&pAllocActual);
-	if ( FAILED(hr) )
-		return hr;
-	IMemAllocator_Release(This->pParser->m_pAllocator);
-	This->pParser->m_pAllocator = pAllocActual;
-
-	/* create output pins. */
-	for ( nIndex = 0; nIndex < This->pParser->m_cOutStreams; nIndex++ )
-	{
-		pwszOutPinName = This->pParser->m_pHandler->pGetOutPinName(This->pParser,nIndex);
-		if ( pwszOutPinName == NULL )
-			return E_FAIL;
-		hr = QUARTZ_CreateParserOutPin(
-			This->pParser,
-			&This->pParser->m_csParser,
-			&This->pParser->m_ppOutPins[nIndex],
-			nIndex, pwszOutPinName );
-		if ( SUCCEEDED(hr) )
-			hr = QUARTZ_CompList_AddTailComp(
-				This->pParser->basefilter.pOutPins,
-				(IUnknown*)&(This->pParser->m_ppOutPins[nIndex]->pin),
-				NULL, 0 );
-		if ( FAILED(hr) )
-			return hr;
-		pmt = &This->pParser->m_ppOutPins[nIndex]->m_mtOut;
-		QUARTZ_MediaType_Free( pmt );
-		ZeroMemory( pmt, sizeof(AM_MEDIA_TYPE) );
-		hr = This->pParser->m_pHandler->pGetStreamType(This->pParser,nIndex,pmt);
-		if ( FAILED(hr) )
-		{
-			ZeroMemory( pmt, sizeof(AM_MEDIA_TYPE) );
-			return hr;
-		}
-		This->pParser->m_ppOutPins[nIndex]->pin.cAcceptTypes = 1;
-		This->pParser->m_ppOutPins[nIndex]->pin.pmtAcceptTypes = pmt;
-	}
-
-	return NOERROR;
-}
-
-static HRESULT CParserInPinImpl_OnDisconnect( CPinBaseImpl* pImpl )
-{
-	CParserInPinImpl_THIS(pImpl,pin);
-
-	/* assume the graph is already stopped */
-	/*CParserImpl_OnInactive(&This->pParser->basefilter);*/
-	/*CParserImpl_OnStop(&This->pParser->basefilter);*/
-	if ( This->pParser->m_pHandler->pUninitParser != NULL )
-		This->pParser->m_pHandler->pUninitParser(This->pParser);
-	CParserImpl_SetAsyncReader( This->pParser, NULL );
-	if ( This->pParser->m_pAllocator != NULL )
-	{
-		IMemAllocator_Decommit(This->pParser->m_pAllocator);
-		IMemAllocator_Release(This->pParser->m_pAllocator);
-		This->pParser->m_pAllocator = NULL;
-	}
-
-	return NOERROR;
-}
-
-static HRESULT CParserInPinImpl_CheckMediaType( CPinBaseImpl* pImpl, const AM_MEDIA_TYPE* pmt )
-{
-	CParserInPinImpl_THIS(pImpl,pin);
-
-	TRACE("(%p,%p)\n",This,pmt);
-
-	if ( !IsEqualGUID( &pmt->majortype, &MEDIATYPE_Stream ) )
-		return E_FAIL;
-
-	return NOERROR;
-}
-
-static const CBasePinHandlers inputpinhandlers =
-{
-	CParserInPinImpl_OnPreConnect, /* pOnPreConnect */
-	NULL, /* pOnPostConnect */
-	CParserInPinImpl_OnDisconnect, /* pOnDisconnect */
-	CParserInPinImpl_CheckMediaType, /* pCheckMediaType */
-	NULL, /* pQualityNotify */
-	NULL, /* pReceive */
-	NULL, /* pReceiveCanBlock */
-	NULL, /* pEndOfStream */
-	NULL, /* pBeginFlush */
-	NULL, /* pEndFlush */
-	NULL, /* pNewSegment */
-};
-
-/***************************************************************************
- *
- *	CParserOutPinImpl methods
- *
- */
-
-static HRESULT CParserOutPinImpl_OnPostConnect( CPinBaseImpl* pImpl, IPin* pPin )
-{
-	CParserOutPinImpl_THIS(pImpl,pin);
-	ALLOCATOR_PROPERTIES	propReq;
-	ALLOCATOR_PROPERTIES	propActual;
-	IMemAllocator*	pAllocator;
-	HRESULT hr;
-	BOOL	bNewAllocator = FALSE;
-
-	TRACE("(%p,%p)\n",This,pPin);
-
-	if ( This->pin.pMemInputPinConnectedTo == NULL )
-		return E_UNEXPECTED;
-
-	if ( This->m_pOutPinAllocator != NULL )
-	{
-		IMemAllocator_Release(This->m_pOutPinAllocator);
-		This->m_pOutPinAllocator = NULL;
-	}
-
-	/* try to use This->pParser->m_pAllocator. */
-	ZeroMemory( &propReq, sizeof(ALLOCATOR_PROPERTIES) );
-	hr = IMemInputPin_GetAllocatorRequirements(
-		This->pin.pMemInputPinConnectedTo, &propReq );
-	if ( propReq.cbAlign != 0 )
-	{
-		if ( This->pParser->m_propAlloc.cbAlign != ( This->pParser->m_propAlloc.cbAlign / propReq.cbAlign * propReq.cbAlign ) )
-			bNewAllocator = TRUE;
-	}
-	if ( propReq.cbPrefix != 0 )
-		bNewAllocator = TRUE;
-	if ( !bNewAllocator )
-	{
-		hr = IMemInputPin_NotifyAllocator(
-			This->pin.pMemInputPinConnectedTo,
-			This->pParser->m_pAllocator, FALSE );
-		if ( hr == NOERROR )
-		{
-			This->m_pOutPinAllocator = This->pParser->m_pAllocator;
-			IMemAllocator_AddRef(This->m_pOutPinAllocator);
-			return NOERROR;
-		}
-	}
-
-	hr = IMemInputPin_GetAllocator(
-			This->pin.pMemInputPinConnectedTo, &pAllocator );
-	if ( FAILED(hr) )
-		return hr;
-	hr = IMemAllocator_SetProperties( pAllocator, &This->pParser->m_propAlloc, &propActual );
-	if ( SUCCEEDED(hr) )
-		hr = IMemInputPin_NotifyAllocator(
-			This->pin.pMemInputPinConnectedTo, pAllocator, FALSE );
-	if ( FAILED(hr) )
-	{
-		IMemAllocator_Release(pAllocator);
-		return hr;
-	}
-
-	This->m_pOutPinAllocator = pAllocator;
-	return NOERROR;
-}
-
-static HRESULT CParserOutPinImpl_OnDisconnect( CPinBaseImpl* pImpl )
-{
-	CParserOutPinImpl_THIS(pImpl,pin);
-
-	if ( This->m_pOutPinAllocator != NULL )
-	{
-		IMemAllocator_Release(This->m_pOutPinAllocator);
-		This->m_pOutPinAllocator = NULL;
-	}
-
-	return NOERROR;
-}
-
-static HRESULT CParserOutPinImpl_CheckMediaType( CPinBaseImpl* pImpl, const AM_MEDIA_TYPE* pmt )
-{
-	CParserOutPinImpl_THIS(pImpl,pin);
-	HRESULT hr;
-
-	TRACE("(%p,%p)\n",This,pmt);
-	if ( pmt == NULL )
-		return E_POINTER;
-
-	if ( This->pParser->m_pHandler->pCheckStreamType == NULL )
-		return E_NOTIMPL;
-
-	hr = This->pParser->m_pHandler->pCheckStreamType( This->pParser, This->nStreamIndex, pmt );
-	if ( FAILED(hr) )
-		return hr;
-
-	return NOERROR;
-}
-
-
-static const CBasePinHandlers outputpinhandlers =
-{
-	NULL, /* pOnPreConnect */
-	CParserOutPinImpl_OnPostConnect, /* pOnPostConnect */
-	CParserOutPinImpl_OnDisconnect, /* pOnDisconnect */
-	CParserOutPinImpl_CheckMediaType, /* pCheckMediaType */
-	NULL, /* pQualityNotify */
-	OutputPinSync_Receive, /* pReceive */
-	OutputPinSync_ReceiveCanBlock, /* pReceiveCanBlock */
-	OutputPinSync_EndOfStream, /* pEndOfStream */
-	OutputPinSync_BeginFlush, /* pBeginFlush */
-	OutputPinSync_EndFlush, /* pEndFlush */
-	OutputPinSync_NewSegment, /* pNewSegment */
-};
-
-/***************************************************************************
- *
- *	new/delete CParserImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry FilterIFEntries[] =
-{
-  { &IID_IPersist, offsetof(CParserImpl,basefilter)-offsetof(CParserImpl,unk) },
-  { &IID_IMediaFilter, offsetof(CParserImpl,basefilter)-offsetof(CParserImpl,unk) },
-  { &IID_IBaseFilter, offsetof(CParserImpl,basefilter)-offsetof(CParserImpl,unk) },
-};
-
-static void QUARTZ_DestroyParser(IUnknown* punk)
-{
-	CParserImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->m_pInPin != NULL )
-		CParserInPinImpl_OnDisconnect(&This->m_pInPin->pin);
-
-	CParserImpl_SetAsyncReader( This, NULL );
-	if ( This->m_pAllocator != NULL )
-	{
-		IMemAllocator_Release(This->m_pAllocator);
-		This->m_pAllocator = NULL;
-	}
-	if ( This->m_pInPin != NULL )
-	{
-		IUnknown_Release(This->m_pInPin->unk.punkControl);
-		This->m_pInPin = NULL;
-	}
-	CParserImpl_ReleaseOutPins( This );
-
-	DeleteCriticalSection( &This->m_csParser );
-
-	CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
-}
-
-HRESULT QUARTZ_CreateParser(
-	IUnknown* punkOuter,void** ppobj,
-	const CLSID* pclsidParser,
-	LPCWSTR pwszParserName,
-	LPCWSTR pwszInPinName,
-	const ParserHandlers* pHandler )
-{
-	CParserImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	This = (CParserImpl*)
-		QUARTZ_AllocObj( sizeof(CParserImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This, sizeof(CParserImpl) );
-
-	This->m_pInPin = NULL;
-	This->m_cOutStreams = 0;
-	This->m_ppOutPins = NULL;
-	memcpy( &This->m_guidTimeFormat, &TIME_FORMAT_NONE, sizeof(GUID) );
-	This->m_pReader = NULL;
-	This->m_pAllocator = NULL;
-	ZeroMemory( &This->m_propAlloc, sizeof(ALLOCATOR_PROPERTIES) );
-	This->m_hEventInit = (HANDLE)NULL;
-	This->m_bIsRunning = FALSE;
-	This->m_hThread = (HANDLE)NULL;
-	This->m_dwThreadId = 0;
-	This->m_bSendEOS = FALSE;
-	This->m_pHandler = pHandler;
-	This->m_pUserData = NULL;
-
-	QUARTZ_IUnkInit( &This->unk, punkOuter );
-
-	hr = CBaseFilterImpl_InitIBaseFilter(
-		&This->basefilter,
-		This->unk.punkControl,
-		pclsidParser,
-		pwszParserName,
-		&filterhandlers );
-	if ( SUCCEEDED(hr) )
-	{
-		/* construct this class. */
-		hr = S_OK;
-
-		if ( FAILED(hr) )
-		{
-			CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = FilterIFEntries;
-	This->unk.dwEntries = sizeof(FilterIFEntries)/sizeof(FilterIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyParser;
-	InitializeCriticalSection( &This->m_csParser );
-
-	/* create the input pin. */
-	hr = QUARTZ_CreateParserInPin(
-		This,
-		&This->m_csParser,
-		&This->m_pInPin,
-		pwszInPinName );
-	if ( SUCCEEDED(hr) )
-		hr = QUARTZ_CompList_AddComp(
-			This->basefilter.pInPins,
-			(IUnknown*)&(This->m_pInPin->pin),
-			NULL, 0 );
-
-	if ( FAILED(hr) )
-	{
-		IUnknown_Release( This->unk.punkControl );
-		return hr;
-	}
-
-	*ppobj = (void*)&(This->unk);
-
-	(void)CParserImpl_GetPreferredTimeFormat( This, &This->m_guidTimeFormat );
-
-	return S_OK;
-}
-
-/***************************************************************************
- *
- *	new/delete CParserInPinImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry InPinIFEntries[] =
-{
-  { &IID_IPin, offsetof(CParserInPinImpl,pin)-offsetof(CParserInPinImpl,unk) },
-  { &IID_IMemInputPin, offsetof(CParserInPinImpl,meminput)-offsetof(CParserInPinImpl,unk) },
-};
-
-static void QUARTZ_DestroyParserInPin(IUnknown* punk)
-{
-	CParserInPinImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	CPinBaseImpl_UninitIPin( &This->pin );
-	CMemInputPinBaseImpl_UninitIMemInputPin( &This->meminput );
-}
-
-HRESULT QUARTZ_CreateParserInPin(
-	CParserImpl* pFilter,
-	CRITICAL_SECTION* pcsPin,
-	CParserInPinImpl** ppPin,
-	LPCWSTR pwszPinName )
-{
-	CParserInPinImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p,%p)\n",pFilter,pcsPin,ppPin);
-
-	This = (CParserInPinImpl*)
-		QUARTZ_AllocObj( sizeof(CParserInPinImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &This->unk, NULL );
-	This->pParser = pFilter;
-
-	hr = CPinBaseImpl_InitIPin(
-		&This->pin,
-		This->unk.punkControl,
-		pcsPin, NULL,
-		&pFilter->basefilter,
-		pwszPinName,
-		FALSE,
-		&inputpinhandlers );
-
-	if ( SUCCEEDED(hr) )
-	{
-		hr = CMemInputPinBaseImpl_InitIMemInputPin(
-			&This->meminput,
-			This->unk.punkControl,
-			&This->pin );
-		if ( FAILED(hr) )
-		{
-			CPinBaseImpl_UninitIPin( &This->pin );
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = InPinIFEntries;
-	This->unk.dwEntries = sizeof(InPinIFEntries)/sizeof(InPinIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyParserInPin;
-
-	*ppPin = This;
-
-	TRACE("returned successfully.\n");
-
-	return S_OK;
-}
-
-
-/***************************************************************************
- *
- *	new/delete CParserOutPinImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry OutPinIFEntries[] =
-{
-  { &IID_IPin, offsetof(CParserOutPinImpl,pin)-offsetof(CParserOutPinImpl,unk) },
-  { &IID_IQualityControl, offsetof(CParserOutPinImpl,qcontrol)-offsetof(CParserOutPinImpl,unk) },
-  { &IID_IMediaSeeking, offsetof(CParserOutPinImpl,mediaseeking)-offsetof(CParserOutPinImpl,unk) },
-  { &IID_IMediaPosition, offsetof(CParserOutPinImpl,mediaposition)-offsetof(CParserOutPinImpl,unk) },
-};
-
-static void QUARTZ_DestroyParserOutPin(IUnknown* punk)
-{
-	CParserOutPinImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	QUARTZ_MediaType_Free( &This->m_mtOut );
-	if ( This->m_pOutPinAllocator != NULL )
-		IMemAllocator_Release(This->m_pOutPinAllocator);
-
-	CParserOutPinImpl_UninitIMediaPosition(This);
-	CParserOutPinImpl_UninitIMediaSeeking(This);
-	CQualityControlPassThruImpl_UninitIQualityControl( &This->qcontrol );
-	CPinBaseImpl_UninitIPin( &This->pin );
-
-}
-
-HRESULT QUARTZ_CreateParserOutPin(
-	CParserImpl* pFilter,
-	CRITICAL_SECTION* pcsPin,
-	CParserOutPinImpl** ppPin,
-	ULONG nStreamIndex,
-	LPCWSTR pwszPinName )
-{
-	CParserOutPinImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p,%p)\n",pFilter,pcsPin,ppPin);
-
-	This = (CParserOutPinImpl*)
-		QUARTZ_AllocObj( sizeof(CParserOutPinImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &This->unk, NULL );
-	This->pParser = pFilter;
-	This->nStreamIndex = nStreamIndex;
-	ZeroMemory( &This->m_mtOut, sizeof(AM_MEDIA_TYPE) );
-	This->m_pOutPinAllocator = NULL;
-	This->m_pUserData = NULL;
-	This->m_bReqUsed = FALSE;
-	This->m_pReqSample = NULL;
-	This->m_llReqStart = 0;
-	This->m_lReqLength = 0;
-	This->m_rtReqStart = 0;
-	This->m_rtReqStop = 0;
-	This->m_dwSampleFlags = 0;
-
-
-	hr = CPinBaseImpl_InitIPin(
-		&This->pin,
-		This->unk.punkControl,
-		pcsPin, NULL,
-		&pFilter->basefilter,
-		pwszPinName,
-		TRUE,
-		&outputpinhandlers );
-
-	if ( SUCCEEDED(hr) )
-	{
-		hr = CQualityControlPassThruImpl_InitIQualityControl(
-			&This->qcontrol,
-			This->unk.punkControl,
-			&This->pin );
-		if ( SUCCEEDED(hr) )
-		{
-			hr = CParserOutPinImpl_InitIMediaSeeking(This);
-			if ( SUCCEEDED(hr) )
-			{
-				hr = CParserOutPinImpl_InitIMediaPosition(This);
-				if ( FAILED(hr) )
-				{
-					CParserOutPinImpl_UninitIMediaSeeking(This);
-				}
-			}
-			if ( FAILED(hr) )
-			{
-				CQualityControlPassThruImpl_UninitIQualityControl( &This->qcontrol );
-			}
-		}
-		if ( FAILED(hr) )
-		{
-			CPinBaseImpl_UninitIPin( &This->pin );
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = OutPinIFEntries;
-	This->unk.dwEntries = sizeof(OutPinIFEntries)/sizeof(OutPinIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyParserOutPin;
-
-	*ppPin = This;
-
-	TRACE("returned successfully.\n");
-
-	return S_OK;
-}
-
-
-/***************************************************************************
- *
- *	IMediaSeeking for CParserOutPinImpl
- *
- */
-
-static HRESULT WINAPI
-IMediaSeeking_fnQueryInterface(IMediaSeeking* iface,REFIID riid,void** ppobj)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IMediaSeeking_fnAddRef(IMediaSeeking* iface)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IMediaSeeking_fnRelease(IMediaSeeking* iface)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetCapabilities(IMediaSeeking* iface,DWORD* pdwCaps)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-
-	TRACE("(%p)->(%p)\n",This,pdwCaps);
-
-	if ( pdwCaps == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pGetSeekingCaps == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,pdwCaps);
-	}
-	else
-	{
-		hr = This->pParser->m_pHandler->pGetSeekingCaps( This->pParser, pdwCaps );
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnCheckCapabilities(IMediaSeeking* iface,DWORD* pdwCaps)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-	DWORD	dwCaps;
-
-	TRACE("(%p)->(%p)\n",This,pdwCaps);
-
-	if ( pdwCaps == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pGetSeekingCaps == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,pdwCaps);
-	}
-	else
-	{
-		hr = This->pParser->m_pHandler->pGetSeekingCaps( This->pParser, &dwCaps );
-		if ( SUCCEEDED(hr) )
-		{
-			dwCaps &= *pdwCaps;
-			if ( dwCaps == *pdwCaps )
-				hr = S_OK;
-			else
-			if ( dwCaps != 0 )
-				hr = S_FALSE;
-			else
-				hr = E_FAIL;
-			*pdwCaps = dwCaps;
-		}
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnIsFormatSupported(IMediaSeeking* iface,const GUID* pidFormat)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-
-	TRACE("(%p)->(%s)\n",This,debugstr_guid(pidFormat));
-
-	if ( pidFormat == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pIsTimeFormatSupported == NULL )
-	{
-		FIXME("(%p)->(%s) not implemented\n",This,debugstr_guid(pidFormat));
-	}
-	else
-	{
-		hr = This->pParser->m_pHandler->pIsTimeFormatSupported( This->pParser, pidFormat );
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnQueryPreferredFormat(IMediaSeeking* iface,GUID* pidFormat)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-	HRESULT hr;
-
-	TRACE("(%p)->(%p)\n",This,pidFormat);
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	hr = CParserImpl_GetPreferredTimeFormat( This->pParser, pidFormat );
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetTimeFormat(IMediaSeeking* iface,GUID* pidFormat)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-
-	TRACE("(%p)->(%p)\n",This,pidFormat);
-
-	if ( pidFormat == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pIsTimeFormatSupported == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,pidFormat);
-	}
-	else
-	{
-		memcpy( pidFormat, &This->pParser->m_guidTimeFormat, sizeof(GUID) );
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnIsUsingTimeFormat(IMediaSeeking* iface,const GUID* pidFormat)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-
-	TRACE("(%p)->(%p)\n",This,pidFormat);
-
-	if ( pidFormat == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pIsTimeFormatSupported == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,pidFormat);
-	}
-	else
-	{
-		hr = IsEqualGUID( pidFormat, &This->pParser->m_guidTimeFormat ) ? S_OK : S_FALSE;
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnSetTimeFormat(IMediaSeeking* iface,const GUID* pidFormat)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-
-	TRACE("(%p)->(%p)\n",This,pidFormat);
-
-	if ( pidFormat == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pIsTimeFormatSupported == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,pidFormat);
-	}
-	else
-	{
-		if ( This->pParser->m_pHandler->pIsTimeFormatSupported( This->pParser, pidFormat ) == S_OK )
-		{
-			memcpy( &This->pParser->m_guidTimeFormat, pidFormat, sizeof(GUID) );
-		}
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetDuration(IMediaSeeking* iface,LONGLONG* pllDuration)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-
-	TRACE("(%p)->(%p)\n",This,pllDuration);
-
-	if ( pllDuration == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pGetDuration == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,pllDuration);
-	}
-	else
-	{
-		hr = This->pParser->m_pHandler->pGetDuration( This->pParser, &This->pParser->m_guidTimeFormat, This->nStreamIndex, pllDuration );
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetStopPosition(IMediaSeeking* iface,LONGLONG* pllPos)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-
-	TRACE("(%p)->(%p)\n",This,pllPos);
-
-	if ( pllPos == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pGetStopPos == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,pllPos);
-	}
-	else
-	{
-		hr = This->pParser->m_pHandler->pGetStopPos( This->pParser, &This->pParser->m_guidTimeFormat, This->nStreamIndex, pllPos );
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetCurrentPosition(IMediaSeeking* iface,LONGLONG* pllPos)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-
-	TRACE("(%p)->(%p)\n",This,pllPos);
-
-	if ( pllPos == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pGetCurPos == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,pllPos);
-	}
-	else
-	{
-		hr = This->pParser->m_pHandler->pGetCurPos( This->pParser, &This->pParser->m_guidTimeFormat, This->nStreamIndex, pllPos );
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnConvertTimeFormat(IMediaSeeking* iface,LONGLONG* pllOut,const GUID* pidFmtOut,LONGLONG llIn,const GUID* pidFmtIn)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnSetPositions(IMediaSeeking* iface,LONGLONG* pllCur,DWORD dwCurFlags,LONGLONG* pllStop,DWORD dwStopFlags)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetPositions(IMediaSeeking* iface,LONGLONG* pllCur,LONGLONG* pllStop)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-	HRESULT	hr = E_NOTIMPL;
-
-	TRACE("(%p)->(%p,%p)\n",This,pllCur,pllStop);
-
-	if ( pllCur == NULL || pllStop == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pGetCurPos == NULL ||
-		 This->pParser->m_pHandler->pGetStopPos == NULL )
-	{
-		FIXME("(%p)->(%p,%p) not implemented\n",This,pllCur,pllStop);
-	}
-	else
-	{
-		hr = This->pParser->m_pHandler->pGetCurPos( This->pParser, &This->pParser->m_guidTimeFormat, This->nStreamIndex, pllCur );
-		if ( SUCCEEDED(hr) )
-			hr = This->pParser->m_pHandler->pGetStopPos( This->pParser, &This->pParser->m_guidTimeFormat, This->nStreamIndex, pllStop );
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetAvailable(IMediaSeeking* iface,LONGLONG* pllFirst,LONGLONG* pllLast)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnSetRate(IMediaSeeking* iface,double dblRate)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetRate(IMediaSeeking* iface,double* pdblRate)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetPreroll(IMediaSeeking* iface,LONGLONG* pllPreroll)
-{
-	CParserOutPinImpl_THIS(iface,mediaseeking);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-
-
-static ICOM_VTABLE(IMediaSeeking) imediaseeking =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMediaSeeking_fnQueryInterface,
-	IMediaSeeking_fnAddRef,
-	IMediaSeeking_fnRelease,
-	/* IMediaSeeking fields */
-	IMediaSeeking_fnGetCapabilities,
-	IMediaSeeking_fnCheckCapabilities,
-	IMediaSeeking_fnIsFormatSupported,
-	IMediaSeeking_fnQueryPreferredFormat,
-	IMediaSeeking_fnGetTimeFormat,
-	IMediaSeeking_fnIsUsingTimeFormat,
-	IMediaSeeking_fnSetTimeFormat,
-	IMediaSeeking_fnGetDuration,
-	IMediaSeeking_fnGetStopPosition,
-	IMediaSeeking_fnGetCurrentPosition,
-	IMediaSeeking_fnConvertTimeFormat,
-	IMediaSeeking_fnSetPositions,
-	IMediaSeeking_fnGetPositions,
-	IMediaSeeking_fnGetAvailable,
-	IMediaSeeking_fnSetRate,
-	IMediaSeeking_fnGetRate,
-	IMediaSeeking_fnGetPreroll,
-};
-
-HRESULT CParserOutPinImpl_InitIMediaSeeking( CParserOutPinImpl* This )
-{
-	TRACE("(%p)\n",This);
-	ICOM_VTBL(&This->mediaseeking) = &imediaseeking;
-
-	return NOERROR;
-}
-
-void CParserOutPinImpl_UninitIMediaSeeking( CParserOutPinImpl* This )
-{
-	TRACE("(%p)\n",This);
-}
-
-/***************************************************************************
- *
- *	IMediaPosition for CParserOutPinImpl
- *
- */
-
-static HRESULT WINAPI
-IMediaPosition_fnQueryInterface(IMediaPosition* iface,REFIID riid,void** ppobj)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IMediaPosition_fnAddRef(IMediaPosition* iface)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IMediaPosition_fnRelease(IMediaPosition* iface)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnGetTypeInfoCount(IMediaPosition* iface,UINT* pcTypeInfo)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnGetTypeInfo(IMediaPosition* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnGetIDsOfNames(IMediaPosition* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnInvoke(IMediaPosition* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-static HRESULT WINAPI
-IMediaPosition_fnget_Duration(IMediaPosition* iface,REFTIME* prefTime)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	LONGLONG	llPos;
-
-	TRACE("(%p)->(%p)\n",This,prefTime);
-
-	if ( prefTime == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pGetDuration == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,prefTime);
-	}
-	else
-	{
-		hr = This->pParser->m_pHandler->pGetDuration( This->pParser, &TIME_FORMAT_MEDIA_TIME, This->nStreamIndex, &llPos );
-		if ( SUCCEEDED(hr) )
-			*prefTime = (REFTIME)llPos;
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnput_CurrentPosition(IMediaPosition* iface,REFTIME refTime)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	/*LONGLONG	llPos;*/
-
-	FIXME("(%p)->() stub!\n",This);
-
-#if 0	/* not yet */
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pSetCurPos == NULL )
-	{
-		FIXME("(%p)->() not implemented\n",This);
-	}
-	else
-	{
-		llPos = (LONGLONG)refTime;
-		hr = This->pParser->m_pHandler->pSetCurPos( This->pParser, &TIME_FORMAT_MEDIA_TIME, This->nStreamIndex, llPos );
-		/* FIXME - flush all streams. */
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-#endif
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnget_CurrentPosition(IMediaPosition* iface,REFTIME* prefTime)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	LONGLONG	llPos;
-
-	TRACE("(%p)->(%p)\n",This,prefTime);
-
-	if ( prefTime == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pGetCurPos == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,prefTime);
-	}
-	else
-	{
-		hr = This->pParser->m_pHandler->pGetCurPos( This->pParser, &TIME_FORMAT_MEDIA_TIME, This->nStreamIndex, &llPos );
-		if ( SUCCEEDED(hr) )
-			*prefTime = (REFTIME)llPos;
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnget_StopTime(IMediaPosition* iface,REFTIME* prefTime)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	LONGLONG	llPos;
-
-	TRACE("(%p)->(%p)\n",This,prefTime);
-
-	if ( prefTime == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pGetStopPos == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,prefTime);
-	}
-	else
-	{
-		hr = This->pParser->m_pHandler->pGetStopPos( This->pParser, &TIME_FORMAT_MEDIA_TIME, This->nStreamIndex, &llPos );
-		if ( SUCCEEDED(hr) )
-			*prefTime = (REFTIME)llPos;
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnput_StopTime(IMediaPosition* iface,REFTIME refTime)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	LONGLONG	llPos;
-
-	TRACE("(%p)->()\n",This);
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pSetStopPos == NULL )
-	{
-		FIXME("(%p)->() not implemented\n",This);
-	}
-	else
-	{
-		llPos = (LONGLONG)refTime;
-		hr = This->pParser->m_pHandler->pSetStopPos( This->pParser, &TIME_FORMAT_MEDIA_TIME, This->nStreamIndex, llPos );
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnget_PrerollTime(IMediaPosition* iface,REFTIME* prefTime)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnput_PrerollTime(IMediaPosition* iface,REFTIME refTime)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnput_Rate(IMediaPosition* iface,double dblRate)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-
-	return IMediaSeeking_SetRate(CParserOutPinImpl_IMediaSeeking(This),dblRate);
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnget_Rate(IMediaPosition* iface,double* pdblRate)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-
-	return IMediaSeeking_GetRate(CParserOutPinImpl_IMediaSeeking(This),pdblRate);
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnCanSeekForward(IMediaPosition* iface,LONG* pCanSeek)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	DWORD	dwCaps;
-
-	TRACE("(%p)->(%p)\n",This,pCanSeek);
-
-	if ( pCanSeek == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pGetSeekingCaps == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,pCanSeek);
-	}
-	else
-	{
-		hr = This->pParser->m_pHandler->pGetSeekingCaps( This->pParser, &dwCaps );
-		if ( SUCCEEDED(hr) )
-		{
-			*pCanSeek = (dwCaps & AM_SEEKING_CanSeekForwards) ? OATRUE : OAFALSE;
-			hr = S_OK;
-		}
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnCanSeekBackward(IMediaPosition* iface,LONG* pCanSeek)
-{
-	CParserOutPinImpl_THIS(iface,mediaposition);
-	HRESULT	hr = E_NOTIMPL;
-	DWORD	dwCaps;
-
-	TRACE("(%p)->(%p)\n",This,pCanSeek);
-
-	if ( pCanSeek == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->pParser->m_csParser );
-	if ( This->pParser->m_pHandler->pGetSeekingCaps == NULL )
-	{
-		FIXME("(%p)->(%p) not implemented\n",This,pCanSeek);
-	}
-	else
-	{
-		hr = This->pParser->m_pHandler->pGetSeekingCaps( This->pParser, &dwCaps );
-		if ( SUCCEEDED(hr) )
-		{
-			*pCanSeek = (dwCaps & AM_SEEKING_CanSeekBackwards) ? OATRUE : OAFALSE;
-			hr = S_OK;
-		}
-	}
-	LeaveCriticalSection( &This->pParser->m_csParser );
-
-	return hr;
-}
-
-
-static ICOM_VTABLE(IMediaPosition) imediaposition =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMediaPosition_fnQueryInterface,
-	IMediaPosition_fnAddRef,
-	IMediaPosition_fnRelease,
-	/* IDispatch fields */
-	IMediaPosition_fnGetTypeInfoCount,
-	IMediaPosition_fnGetTypeInfo,
-	IMediaPosition_fnGetIDsOfNames,
-	IMediaPosition_fnInvoke,
-	/* IMediaPosition fields */
-	IMediaPosition_fnget_Duration,
-	IMediaPosition_fnput_CurrentPosition,
-	IMediaPosition_fnget_CurrentPosition,
-	IMediaPosition_fnget_StopTime,
-	IMediaPosition_fnput_StopTime,
-	IMediaPosition_fnget_PrerollTime,
-	IMediaPosition_fnput_PrerollTime,
-	IMediaPosition_fnput_Rate,
-	IMediaPosition_fnget_Rate,
-	IMediaPosition_fnCanSeekForward,
-	IMediaPosition_fnCanSeekBackward,
-};
-
-
-HRESULT CParserOutPinImpl_InitIMediaPosition( CParserOutPinImpl* This )
-{
-	TRACE("(%p)\n",This);
-	ICOM_VTBL(&This->mediaposition) = &imediaposition;
-
-	return NOERROR;
-}
-
-void CParserOutPinImpl_UninitIMediaPosition( CParserOutPinImpl* This )
-{
-	TRACE("(%p)\n",This);
-}
-
diff --git a/dlls/quartz/parser.h b/dlls/quartz/parser.h
deleted file mode 100644
index 4ce9aaf..0000000
--- a/dlls/quartz/parser.h
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Implements Parser.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_PARSER_H
-#define	WINE_DSHOW_PARSER_H
-
-#include "iunk.h"
-#include "basefilt.h"
-
-typedef struct CParserImpl CParserImpl;
-typedef struct CParserInPinImpl CParserInPinImpl;
-typedef struct CParserOutPinImpl CParserOutPinImpl;
-typedef struct ParserHandlers ParserHandlers;
-
-/* {D51BD5A0-7548-11CF-A520-0080C77EF58A} */
-DEFINE_GUID(CLSID_quartzQuickTimeMovieParser,
-0xD51BD5A0,0x7548,0x11CF,0xA5,0x20,0x00,0x80,0xC7,0x7E,0xF5,0x8A);
-/* {D51BD5A1-7548-11CF-A520-0080C77EF58A} */
-DEFINE_GUID(CLSID_quartzWaveParser,
-0xD51BD5A1,0x7548,0x11CF,0xA5,0x20,0x00,0x80,0xC7,0x7E,0xF5,0x8A);
-/* {D51BD5A2-7548-11CF-A520-0080C77EF58A} */
-DEFINE_GUID(CLSID_quartzMIDIParser,
-0xD51BD5A2,0x7548,0x11CF,0xA5,0x20,0x00,0x80,0xC7,0x7E,0xF5,0x8A);
-/* {D51BD5A3-7548-11CF-A520-0080C77EF58A} */
-DEFINE_GUID(CLSID_quartzMultifileParser,
-0xD51BD5A3,0x7548,0x11CF,0xA5,0x20,0x00,0x80,0xC7,0x7E,0xF5,0x8A);
-
-
-
-struct CParserImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CBaseFilterImpl	basefilter;
-
-	CParserInPinImpl* m_pInPin;
-	ULONG	m_cOutStreams;
-	CParserOutPinImpl**	m_ppOutPins;
-	GUID	m_guidTimeFormat;
-
-	CRITICAL_SECTION	m_csParser;
-	IAsyncReader*	m_pReader;
-	IMemAllocator*	m_pAllocator;
-	ALLOCATOR_PROPERTIES	m_propAlloc;
-	HANDLE	m_hEventInit;
-	BOOL	m_bIsRunning;
-	DWORD	m_dwThreadId;
-	HANDLE	m_hThread;
-	BOOL	m_bSendEOS;
-
-	const ParserHandlers*	m_pHandler;
-	void*	m_pUserData;
-};
-
-struct CParserInPinImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CPinBaseImpl	pin;
-	CMemInputPinBaseImpl	meminput;
-
-	CParserImpl*	pParser;
-};
-
-struct CParserOutPinImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CPinBaseImpl	pin;
-	CQualityControlPassThruImpl	qcontrol;
-	struct { ICOM_VFIELD(IMediaSeeking); } mediaseeking;
-	struct { ICOM_VFIELD(IMediaPosition); } mediaposition;
-
-	CParserImpl*	pParser;
-	ULONG	nStreamIndex;
-
-	AM_MEDIA_TYPE	m_mtOut;
-	IMemAllocator*	m_pOutPinAllocator;
-	void*	m_pUserData;
-
-	/* for parser */
-	BOOL	m_bReqUsed;
-	IMediaSample*	m_pReqSample;
-	LONGLONG	m_llReqStart;
-	LONG	m_lReqLength;
-	REFERENCE_TIME	m_rtReqStart;
-	REFERENCE_TIME	m_rtReqStop;
-	DWORD	m_dwSampleFlags;
-};
-
-
-
-struct ParserHandlers
-{
-	HRESULT (*pInitParser)( CParserImpl* pImpl, ULONG* pcStreams );
-	HRESULT (*pUninitParser)( CParserImpl* pImpl );
-	LPCWSTR (*pGetOutPinName)( CParserImpl* pImpl, ULONG nStreamIndex );
-	HRESULT (*pGetStreamType)( CParserImpl* pImpl, ULONG nStreamIndex, AM_MEDIA_TYPE* pmt );
-	HRESULT (*pCheckStreamType)( CParserImpl* pImpl, ULONG nStreamIndex, const AM_MEDIA_TYPE* pmt );
-	HRESULT (*pGetAllocProp)( CParserImpl* pImpl, ALLOCATOR_PROPERTIES* pReqProp );
-	/* S_OK - ok, S_FALSE - end of stream */
-	HRESULT (*pGetNextRequest)( CParserImpl* pImpl, ULONG* pnStreamIndex, LONGLONG* pllStart, LONG* plLength, REFERENCE_TIME* prtStart, REFERENCE_TIME* prtStop, DWORD* pdwSampleFlags );
-	HRESULT (*pProcessSample)( CParserImpl* pImpl, ULONG nStreamIndex, LONGLONG llStart, LONG lLength, IMediaSample* pSample );
-
-	/* for IQualityControl */
-	HRESULT (*pQualityNotify)( CParserImpl* pImpl, ULONG nStreamIndex, Quality q );
-
-	/* for seeking */
-	HRESULT (*pGetSeekingCaps)( CParserImpl* pImpl, DWORD* pdwCaps );
-	HRESULT (*pIsTimeFormatSupported)( CParserImpl* pImpl, const GUID* pTimeFormat );
-	HRESULT (*pGetCurPos)( CParserImpl* pImpl, const GUID* pTimeFormat, DWORD nStreamIndex, LONGLONG* pllPos );
-	HRESULT (*pSetCurPos)( CParserImpl* pImpl, const GUID* pTimeFormat, DWORD nStreamIndex, LONGLONG llPos );
-	HRESULT (*pGetDuration)( CParserImpl* pImpl, const GUID* pTimeFormat, DWORD nStreamIndex, LONGLONG* pllDuration );
-	HRESULT (*pGetStopPos)( CParserImpl* pImpl, const GUID* pTimeFormat, DWORD nStreamIndex, LONGLONG* pllPos );
-	HRESULT (*pSetStopPos)( CParserImpl* pImpl, const GUID* pTimeFormat, DWORD nStreamIndex, LONGLONG llPos );
-	HRESULT (*pGetPreroll)( CParserImpl* pImpl, const GUID* pTimeFormat, DWORD nStreamIndex, LONGLONG* pllPreroll );
-};
-
-#define	CParserImpl_THIS(iface,member)	CParserImpl*	This = ((CParserImpl*)(((char*)iface)-offsetof(CParserImpl,member)))
-#define	CParserInPinImpl_THIS(iface,member)	CParserInPinImpl*	This = ((CParserInPinImpl*)(((char*)iface)-offsetof(CParserInPinImpl,member)))
-#define	CParserOutPinImpl_THIS(iface,member)	CParserOutPinImpl*	This = ((CParserOutPinImpl*)(((char*)iface)-offsetof(CParserOutPinImpl,member)))
-
-
-#define CParserOutPinImpl_IMediaSeeking(th)	((IMediaSeeking*)&((th)->mediaseeking))
-#define CParserOutPinImpl_IMediaPosition(th)	((IMediaPosition*)&((th)->mediaposition))
-
-HRESULT QUARTZ_CreateParser(
-	IUnknown* punkOuter,void** ppobj,
-	const CLSID* pclsidParser,
-	LPCWSTR pwszParserName,
-	LPCWSTR pwszInPinName,
-	const ParserHandlers* pHandler );
-HRESULT QUARTZ_CreateParserInPin(
-	CParserImpl* pFilter,
-	CRITICAL_SECTION* pcsPin,
-	CParserInPinImpl** ppPin,
-	LPCWSTR pwszPinName );
-HRESULT QUARTZ_CreateParserOutPin(
-	CParserImpl* pFilter,
-	CRITICAL_SECTION* pcsPin,
-	CParserOutPinImpl** ppPin,
-	ULONG nStreamIndex,
-	LPCWSTR pwszPinName );
-
-
-#define PARSER_POLL_INTERVAL	100
-
-#define PARSER_RIFF_OfsFirst 12
-#define PARSER_WAVE mmioFOURCC('W','A','V','E')
-#define PARSER_AVI  mmioFOURCC('A','V','I',' ')
-#define PARSER_AVIX mmioFOURCC('A','V','I','X')
-
-#define PARSER_fmt  mmioFOURCC('f','m','t',' ')
-#define PARSER_fact mmioFOURCC('f','a','c','t')
-#define PARSER_data mmioFOURCC('d','a','t','a')
-
-#define PARSER_LIST mmioFOURCC('L','I','S','T')
-
-#define PARSER_hdrl mmioFOURCC('h','d','r','l')
-#define PARSER_avih mmioFOURCC('a','v','i','h')
-#define PARSER_strl mmioFOURCC('s','t','r','l')
-#define PARSER_strh mmioFOURCC('s','t','r','h')
-#define PARSER_strf mmioFOURCC('s','t','r','f')
-#define PARSER_idx1 mmioFOURCC('i','d','x','1')
-#define PARSER_indx mmioFOURCC('i','n','d','x')
-#define PARSER_movi mmioFOURCC('m','o','v','i')
-#define PARSER_JUNK mmioFOURCC('J','U','N','K')
-
-#define PARSER_vids mmioFOURCC('v','i','d','s')
-#define PARSER_auds mmioFOURCC('a','u','d','s')
-#define PARSER_mids mmioFOURCC('m','i','d','s')
-#define PARSER_txts mmioFOURCC('t','x','t','s')
-
-#define PARSER_LE_UINT16(ptr)	(((DWORD)(ptr)[0])|((DWORD)(ptr)[1]<<8))
-#define PARSER_LE_UINT32(ptr)	(((DWORD)(ptr)[0])|((DWORD)(ptr)[1]<<8)|((DWORD)(ptr)[2]<<16)|((DWORD)(ptr)[3]<<24))
-#define PARSER_BE_UINT16(ptr)	(((DWORD)(ptr)[0]<<8)|((DWORD)(ptr)[1]))
-#define PARSER_BE_UINT32(ptr)	(((DWORD)(ptr)[0]<<24)|((DWORD)(ptr)[1]<<16)|((DWORD)(ptr)[2]<<8)|((DWORD)(ptr)[3]))
-
-HRESULT QUARTZ_CreateWaveParser(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateAVISplitter(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateMPEG1Splitter(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateQuickTimeMovieParser(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateMIDIParser(IUnknown* punkOuter,void** ppobj);
-
-
-HRESULT RIFF_GetNext(
-	CParserImpl* pImpl, LONGLONG llOfs,
-	DWORD* pdwCode, DWORD* pdwLength );
-HRESULT RIFF_SearchChunk(
-	CParserImpl* pImpl,
-	DWORD dwSearchLengthMax,
-	LONGLONG llOfs, DWORD dwChunk,
-	LONGLONG* pllOfs, DWORD* pdwChunkLength );
-HRESULT RIFF_SearchList(
-	CParserImpl* pImpl,
-	DWORD dwSearchLengthMax,
-	LONGLONG llOfs, DWORD dwListChunk,
-	LONGLONG* pllOfs, DWORD* pdwChunkLength );
-
-
-#endif	/* WINE_DSHOW_PARSER_H */
diff --git a/dlls/quartz/qtdec.c b/dlls/quartz/qtdec.c
deleted file mode 100644
index 33d7897..0000000
--- a/dlls/quartz/qtdec.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Implements QuickTime Video Decompressor.
- *
- *	FIXME - stub
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "vfw.h"
-#include "strmif.h"
-#include "control.h"
-#include "amvideo.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "xform.h"
-
-static const WCHAR QTDec_FilterName[] =
-{'Q','u','i','c','k','T','i','m','e',' ','D','e','c','o','m','p','r','e','s','s','o','r',0};
-
-typedef struct CQTDecImpl
-{
-	AM_MEDIA_TYPE*	m_pmtConv;
-	DWORD	m_cConv;
-} CQTDecImpl;
-
-/***************************************************************************
- *
- *	CQTDecImpl methods
- *
- */
-
-static void QTDec_FreeOutTypes(CQTDecImpl* This)
-{
-	DWORD	i;
-
-	if ( This->m_pmtConv == NULL )
-		return;
-
-	TRACE("cConv = %lu\n",This->m_cConv);
-	for ( i = 0; i < This->m_cConv; i++ )
-	{
-		QUARTZ_MediaType_Free(&This->m_pmtConv[i]);
-	}
-	QUARTZ_FreeMem(This->m_pmtConv);
-	This->m_pmtConv = NULL;
-	This->m_cConv = 0;
-}
-
-
-static HRESULT QTDec_Init( CTransformBaseImpl* pImpl )
-{
-	CQTDecImpl*	This = pImpl->m_pUserData;
-
-	if ( This != NULL )
-		return NOERROR;
-
-	This = (CQTDecImpl*)QUARTZ_AllocMem( sizeof(CQTDecImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This, sizeof(CQTDecImpl) );
-	pImpl->m_pUserData = This;
-	/* construct */
-	This->m_pmtConv = NULL;
-	This->m_cConv = 0;
-
-	return NOERROR;
-}
-
-static HRESULT QTDec_Cleanup( CTransformBaseImpl* pImpl )
-{
-	CQTDecImpl*	This = pImpl->m_pUserData;
-
-	if ( This == NULL )
-		return NOERROR;
-	/* destruct */
-	QTDec_FreeOutTypes(This);
-
-	QUARTZ_FreeMem( This );
-	pImpl->m_pUserData = NULL;
-
-	return NOERROR;
-}
-
-static HRESULT QTDec_CheckMediaType( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut )
-{
-	CQTDecImpl*	This = pImpl->m_pUserData;
-
-	WARN("(%p) stub\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT QTDec_GetOutputTypes( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE** ppmtAcceptTypes, ULONG* pcAcceptTypes )
-{
-	CQTDecImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-
-	FIXME("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = QTDec_CheckMediaType( pImpl, pmtIn, NULL );
-	if ( FAILED(hr) )
-		return hr;
-
-	QTDec_FreeOutTypes(This);
-
-	*ppmtAcceptTypes = This->m_pmtConv;
-	*pcAcceptTypes = This->m_cConv;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT QTDec_GetAllocProp( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, ALLOCATOR_PROPERTIES* pProp, BOOL* pbTransInPlace, BOOL* pbTryToReuseSample )
-{
-	CQTDecImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-
-	FIXME("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = QTDec_CheckMediaType( pImpl, pmtIn, NULL );
-	if ( FAILED(hr) )
-		return hr;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT QTDec_BeginTransform( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, BOOL bReuseSample )
-{
-	CQTDecImpl*	This = pImpl->m_pUserData;
-	HRESULT hr;
-
-	FIXME("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = QTDec_CheckMediaType( pImpl, pmtIn, NULL );
-	if ( FAILED(hr) )
-		return hr;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT QTDec_Transform( CTransformBaseImpl* pImpl, IMediaSample* pSampIn, IMediaSample* pSampOut )
-{
-	CQTDecImpl*	This = pImpl->m_pUserData;
-	BYTE*	pDataIn = NULL;
-	BYTE*	pDataOut = NULL;
-	HRESULT hr;
-
-	FIXME("(%p)\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	hr = IMediaSample_GetPointer( pSampIn, &pDataIn );
-	if ( FAILED(hr) )
-		return hr;
-	hr = IMediaSample_GetPointer( pSampOut, &pDataOut );
-	if ( FAILED(hr) )
-		return hr;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT QTDec_EndTransform( CTransformBaseImpl* pImpl )
-{
-	CQTDecImpl*	This = pImpl->m_pUserData;
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return E_NOTIMPL;
-}
-
-
-static const TransformBaseHandlers transhandlers =
-{
-	QTDec_Init,
-	QTDec_Cleanup,
-	QTDec_CheckMediaType,
-	QTDec_GetOutputTypes,
-	QTDec_GetAllocProp,
-	QTDec_BeginTransform,
-	NULL,
-	QTDec_Transform,
-	QTDec_EndTransform,
-};
-
-HRESULT QUARTZ_CreateQuickTimeDecompressor(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateTransformBase(
-		punkOuter,ppobj,
-		&CLSID_quartzQuickTimeDecompressor,
-		QTDec_FilterName,
-		NULL, NULL,
-		&transhandlers );
-}
-
diff --git a/dlls/quartz/qtparse.c b/dlls/quartz/qtparse.c
deleted file mode 100644
index 424bddb..0000000
--- a/dlls/quartz/qtparse.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Implements QuickTime Parser(Splitter).
- *
- *	FIXME - stub
- *	FIXME - no seeking
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "mmsystem.h"
-#include "vfw.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "vfwmsgs.h"
-#include "amvideo.h"
-#include "uuids.h"
-
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "parser.h"
-#include "mtype.h"
-
-
-
-static const WCHAR QUARTZ_QTParser_Name[] =
-{ 'Q','u','i','c','k','T','i','m','e',' ','M','o','v','i','e',' ','P','a','r','s','e','r',0 };
-static const WCHAR QUARTZ_QTParserInPin_Name[] =
-{ 'I','n',0 };
-static const WCHAR QUARTZ_QTParserOutPin_Basename[] =
-{ 'S','t','r','e','a','m',0 };
-
-#define WINE_QUARTZ_QTPINNAME_MAX	64
-
-/****************************************************************************
- *
- *	CQTParseImpl
- */
-
-
-typedef struct CQTParseImpl CQTParseImpl;
-typedef struct CQTParseStream CQTParseStream;
-
-struct CQTParseImpl
-{
-	CQTParseStream*	pStreamsBuf;
-	DWORD	cIndexEntries;
-	WCHAR	wchWork[ WINE_QUARTZ_QTPINNAME_MAX ];
-};
-
-struct CQTParseStream
-{
-	int	dummy;
-};
-
-
-static HRESULT CQTParseImpl_InitParser( CParserImpl* pImpl, ULONG* pcStreams )
-{
-	WARN("(%p,%p) stub\n",pImpl,pcStreams);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CQTParseImpl_UninitParser( CParserImpl* pImpl )
-{
-	CQTParseImpl*	This = (CQTParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	/* destruct */
-
-	QUARTZ_FreeMem( This );
-	pImpl->m_pUserData = NULL;
-
-	return NOERROR;
-}
-
-static LPCWSTR CQTParseImpl_GetOutPinName( CParserImpl* pImpl, ULONG nStreamIndex )
-{
-	CQTParseImpl*	This = (CQTParseImpl*)pImpl->m_pUserData;
-	int wlen;
-
-	TRACE("(%p,%lu)\n",This,nStreamIndex);
-
-	if ( This == NULL /*|| nStreamIndex >= This->avih.dwStreams*/ )
-		return NULL;
-
-	wlen = lstrlenW(QUARTZ_QTParserOutPin_Basename);
-	memcpy( This->wchWork, QUARTZ_QTParserOutPin_Basename, sizeof(WCHAR)*wlen );
-	This->wchWork[ wlen ] = (nStreamIndex/10) + '0';
-	This->wchWork[ wlen+1 ] = (nStreamIndex%10) + '0';
-	This->wchWork[ wlen+2 ] = 0;
-
-	return This->wchWork;
-}
-
-static HRESULT CQTParseImpl_GetStreamType( CParserImpl* pImpl, ULONG nStreamIndex, AM_MEDIA_TYPE* pmt )
-{
-	CQTParseImpl*	This = (CQTParseImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p) stub\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CQTParseImpl_CheckStreamType( CParserImpl* pImpl, ULONG nStreamIndex, const AM_MEDIA_TYPE* pmt )
-{
-	CQTParseImpl*	This = (CQTParseImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p) stub\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CQTParseImpl_GetAllocProp( CParserImpl* pImpl, ALLOCATOR_PROPERTIES* pReqProp )
-{
-	CQTParseImpl*	This = (CQTParseImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p,%p) stub\n",This,pReqProp);
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CQTParseImpl_GetNextRequest( CParserImpl* pImpl, ULONG* pnStreamIndex, LONGLONG* pllStart, LONG* plLength, REFERENCE_TIME* prtStart, REFERENCE_TIME* prtStop, DWORD* pdwSampleFlags )
-{
-	CQTParseImpl*	This = (CQTParseImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p) stub\n",This);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CQTParseImpl_ProcessSample( CParserImpl* pImpl, ULONG nStreamIndex, LONGLONG llStart, LONG lLength, IMediaSample* pSample )
-{
-	CQTParseImpl*	This = (CQTParseImpl*)pImpl->m_pUserData;
-
-	FIXME("(%p,%lu,%ld,%ld,%p)\n",This,nStreamIndex,(long)llStart,lLength,pSample);
-
-	if ( This == NULL )
-		return E_UNEXPECTED;
-
-	return E_NOTIMPL;
-}
-
-static const struct ParserHandlers CQTParseImpl_Handlers =
-{
-	CQTParseImpl_InitParser,
-	CQTParseImpl_UninitParser,
-	CQTParseImpl_GetOutPinName,
-	CQTParseImpl_GetStreamType,
-	CQTParseImpl_CheckStreamType,
-	CQTParseImpl_GetAllocProp,
-	CQTParseImpl_GetNextRequest,
-	CQTParseImpl_ProcessSample,
-
-	/* for IQualityControl */
-	NULL, /* pQualityNotify */
-
-	/* for seeking */
-	NULL, /* pGetSeekingCaps */
-	NULL, /* pIsTimeFormatSupported */
-	NULL, /* pGetCurPos */
-	NULL, /* pSetCurPos */
-	NULL, /* pGetDuration */
-	NULL, /* pGetStopPos */
-	NULL, /* pSetStopPos */
-	NULL, /* pGetPreroll */
-};
-
-HRESULT QUARTZ_CreateQuickTimeMovieParser(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateParser(
-		punkOuter,ppobj,
-		&CLSID_quartzQuickTimeMovieParser,
-		QUARTZ_QTParser_Name,
-		QUARTZ_QTParserInPin_Name,
-		&CQTParseImpl_Handlers );
-}
-
-
diff --git a/dlls/quartz/quartz.spec b/dlls/quartz/quartz.spec
index 0e0a121..b8c333f 100644
--- a/dlls/quartz/quartz.spec
+++ b/dlls/quartz/quartz.spec
@@ -1,26 +1,16 @@
 name	quartz
 type	win32
-init	QUARTZ_DllMain
 
-import oleaut32.dll
-import ole32.dll
-import msvfw32.dll
-import msacm32.dll
-import winmm.dll
-import user32.dll
-import gdi32.dll
-import advapi32.dll
-import kernel32.dll
 import ntdll.dll
 
 debug_channels (quartz)
 
-@ stdcall AMGetErrorTextA(long ptr long) AMGetErrorTextA
-@ stdcall AMGetErrorTextW(long ptr long) AMGetErrorTextW
-@ stdcall AmpFactorToDB(long) QUARTZ_AmpFactorToDB
-@ stdcall DBToAmpFactor(long) QUARTZ_DBToAmpFactor
-@ stdcall DllCanUnloadNow() QUARTZ_DllCanUnloadNow
-@ stdcall DllGetClassObject(ptr ptr ptr) QUARTZ_DllGetClassObject
-@ stdcall DllRegisterServer() QUARTZ_DllRegisterServer
-@ stdcall DllUnregisterServer() QUARTZ_DllUnregisterServer
+@ stub AMGetErrorTextA
+@ stub AMGetErrorTextW
+@ stub AmpFactorToDB
+@ stub DBToAmpFactor
+@ stub DllCanUnloadNow
+@ stub DllGetClassObject
+@ stub DllRegisterServer
+@ stub DllUnregisterServer
 
diff --git a/dlls/quartz/quartz_private.h b/dlls/quartz/quartz_private.h
deleted file mode 100644
index b045366..0000000
--- a/dlls/quartz/quartz_private.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	QUARTZ_PRIVATE_H
-#define	QUARTZ_PRIVATE_H
-
-typedef HRESULT (*QUARTZ_pCreateIUnknown)(IUnknown* punkOuter,void** ppobj);
-
-void* QUARTZ_AllocObj( DWORD dwSize );
-void QUARTZ_FreeObj( void* pobj );
-void* QUARTZ_AllocMem( DWORD dwSize );
-void QUARTZ_FreeMem( void* pMem );
-void* QUARTZ_ReallocMem( void* pMem, DWORD dwSize );
-
-#define QUARTZ_TIMEUNITS		((LONGLONG)10000000)
-
-/* undocument APIs. */
-LONG WINAPI QUARTZ_AmpFactorToDB( LONG amp );
-LONG WINAPI QUARTZ_DBToAmpFactor( LONG dB );
-
-
-#endif	/* QUARTZ_PRIVATE_H */
-
diff --git a/dlls/quartz/regsvr.c b/dlls/quartz/regsvr.c
deleted file mode 100644
index a24ceb3..0000000
--- a/dlls/quartz/regsvr.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
- * Regster/Unregister servers. (for internal use)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "winreg.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "regsvr.h"
-
-#ifndef	NUMELEMS
-#define	NUMELEMS(elem)	(sizeof(elem)/sizeof((elem)[0]))
-#endif	/* NUMELEMS */
-
-const WCHAR QUARTZ_wszREG_SZ[7] =
-	{'R','E','G','_','S','Z',0};
-const WCHAR QUARTZ_wszInprocServer32[] =
-	{'I','n','p','r','o','c','S','e','r','v','e','r','3','2',0};
-const WCHAR QUARTZ_wszThreadingModel[] =
-	{'T','h','r','e','a','d','i','n','g','M','o','d','e','l',0};
-const WCHAR QUARTZ_wszBoth[] =
-	{'B','o','t','h',0};
-const WCHAR QUARTZ_wszCLSID[] =
-	{'C','L','S','I','D',0};
-const WCHAR QUARTZ_wszFilterData[] =
-	{'F','i','l','t','e','r','D','a','t','a',0};
-const WCHAR QUARTZ_wszFriendlyName[] =
-	{'F','r','i','e','n','d','l','y','N','a','m','e',0};
-const WCHAR QUARTZ_wszInstance[] =
-	{'I','n','s','t','a','n','c','e',0};
-const WCHAR QUARTZ_wszMerit[] =
-	{'M','e','r','i','t',0};
-const WCHAR QUARTZ_wszMediaType[] =
-	{'M','e','d','i','a',' ','T','y','p','e',0};
-const WCHAR QUARTZ_wszSubType[] =
-	{'S','u','b','T','y','p','e',0};
-const WCHAR QUARTZ_wszExtensions[] =
-	{'E','x','t','e','n','s','i','o','n','s',0};
-const WCHAR QUARTZ_wszSourceFilter[] =
-	{'S','o','u','r','c','e',' ','F','i','l','t','e','r',0};
-
-void QUARTZ_CatPathSepW( WCHAR* pBuf )
-{
-	int	len = lstrlenW(pBuf);
-	pBuf[len] = '\\';
-	pBuf[len+1] = 0;
-}
-
-void QUARTZ_GUIDtoString( WCHAR* pBuf, const GUID* pguid )
-{
-	/* W"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}" */
-	static const WCHAR wszFmt[] =
-		{'{','%','0','8','X','-','%','0','4','X','-','%','0','4','X',
-		 '-','%','0','2','X','%','0','2','X','-','%','0','2','X','%',
-		 '0','2','X','%','0','2','X','%','0','2','X','%','0','2','X',
-		 '%','0','2','X','}',0};
-
-	wsprintfW( pBuf, wszFmt,
-		pguid->Data1, pguid->Data2, pguid->Data3,
-		pguid->Data4[0], pguid->Data4[1],
-		pguid->Data4[2], pguid->Data4[3],
-		pguid->Data4[4], pguid->Data4[5],
-		pguid->Data4[6], pguid->Data4[7] );
-}
-
-static
-LONG QUARTZ_RegOpenKeyW(
-	HKEY hkRoot, LPCWSTR lpszPath,
-	REGSAM rsAccess, HKEY* phKey,
-	BOOL fCreateKey )
-{
-	DWORD	dwDisp;
-	WCHAR	wszREG_SZ[ NUMELEMS(QUARTZ_wszREG_SZ) ];
-
-	memcpy(wszREG_SZ,QUARTZ_wszREG_SZ,sizeof(QUARTZ_wszREG_SZ) );
-
-	if ( fCreateKey )
-		return RegCreateKeyExW(
-			hkRoot, lpszPath, 0, wszREG_SZ,
-			REG_OPTION_NON_VOLATILE, rsAccess, NULL, phKey, &dwDisp );
-	else
-		return RegOpenKeyExW(
-			hkRoot, lpszPath, 0, rsAccess, phKey );
-}
-
-static
-LONG QUARTZ_RegSetValueString(
-	HKEY hKey, LPCWSTR lpszName, LPCWSTR lpValue )
-{
-	return RegSetValueExW(
-		hKey, lpszName, 0, REG_SZ,
-		(const BYTE*)lpValue,
-		sizeof(lpValue[0]) * (lstrlenW(lpValue)+1) );
-}
-
-static
-LONG QUARTZ_RegSetValueDWord(
-	HKEY hKey, LPCWSTR lpszName, DWORD dwValue )
-{
-	return RegSetValueExW(
-		hKey, lpszName, 0, REG_DWORD,
-		(const BYTE*)(&dwValue), sizeof(DWORD) );
-}
-
-static
-LONG QUARTZ_RegSetValueBinary(
-	HKEY hKey, LPCWSTR lpszName,
-	const BYTE* pData, int iLenOfData )
-{
-	return RegSetValueExW(
-		hKey, lpszName, 0, REG_BINARY, pData, iLenOfData );
-}
-
-HRESULT QUARTZ_CreateCLSIDPath(
-        WCHAR* pwszBuf, DWORD dwBufLen,
-        const CLSID* pclsid,
-        LPCWSTR lpszPathFromCLSID )
-{
-	int avail;
-
-	lstrcpyW( pwszBuf, QUARTZ_wszCLSID );
-	QUARTZ_CatPathSepW( pwszBuf+5 );
-	QUARTZ_GUIDtoString( pwszBuf+6, pclsid );
-	if ( lpszPathFromCLSID != NULL )
-	{
-		avail = (int)dwBufLen - lstrlenW(pwszBuf) - 8;
-		if ( avail <= lstrlenW(lpszPathFromCLSID) )
-			return E_FAIL;
-		QUARTZ_CatPathSepW( pwszBuf );
-		lstrcatW( pwszBuf, lpszPathFromCLSID );
-	}
-
-	return NOERROR;
-}
-
-HRESULT QUARTZ_OpenCLSIDKey(
-	HKEY* phKey,	/* [OUT] hKey */
-	REGSAM rsAccess,	/* [IN] access */
-	BOOL fCreate,	/* TRUE = RegCreateKey, FALSE = RegOpenKey */
-	const CLSID* pclsid,	/* CLSID */
-	LPCWSTR lpszPathFromCLSID )	/* related path from CLSID */
-{
-	WCHAR	szKey[ 1024 ];
-	HRESULT	hr;
-	LONG	lr;
-
-	hr = QUARTZ_CreateCLSIDPath(
-		szKey, NUMELEMS(szKey),
-		pclsid, lpszPathFromCLSID );
-	if ( FAILED(hr) )
-		return hr;
-
-	lr = QUARTZ_RegOpenKeyW(
-		HKEY_CLASSES_ROOT, szKey, rsAccess, phKey, fCreate );
-	if ( lr != ERROR_SUCCESS )
-		return E_FAIL;
-
-	return S_OK;
-}
-
-
-
-HRESULT QUARTZ_RegisterAMovieDLLServer(
-	const CLSID* pclsid,	/* [IN] CLSID */
-	LPCWSTR lpFriendlyName,	/* [IN] Friendly name */
-	LPCWSTR lpNameOfDLL,	/* [IN] name of the registered DLL */
-	BOOL fRegister )	/* [IN] TRUE = register, FALSE = unregister */
-{
-	HRESULT	hr;
-	HKEY	hKey;
-
-	if ( fRegister )
-	{
-		hr = QUARTZ_OpenCLSIDKey(
-			&hKey, KEY_ALL_ACCESS, TRUE,
-			pclsid, NULL );
-		if ( FAILED(hr) )
-			return hr;
-
-			if ( lpFriendlyName != NULL && QUARTZ_RegSetValueString(
-				hKey, NULL, lpFriendlyName ) != ERROR_SUCCESS )
-				hr = E_FAIL;
-
-		RegCloseKey( hKey );
-		if ( FAILED(hr) )
-			return hr;
-
-		hr = QUARTZ_OpenCLSIDKey(
-			&hKey, KEY_ALL_ACCESS, TRUE,
-			pclsid, QUARTZ_wszInprocServer32 );
-		if ( FAILED(hr) )
-			return hr;
-
-			if ( QUARTZ_RegSetValueString(
-				hKey, NULL, lpNameOfDLL ) != ERROR_SUCCESS )
-				hr = E_FAIL;
-			if ( QUARTZ_RegSetValueString(
-				hKey, QUARTZ_wszThreadingModel,
-				QUARTZ_wszBoth ) != ERROR_SUCCESS )
-				hr = E_FAIL;
-
-		RegCloseKey( hKey );
-		if ( FAILED(hr) )
-			return hr;
-	}
-	else
-	{
-		hr = QUARTZ_OpenCLSIDKey(
-			&hKey, KEY_ALL_ACCESS, FALSE,
-			pclsid, NULL );
-		if ( FAILED(hr) )
-			return NOERROR;
-
-			RegDeleteValueW( hKey, NULL );
-			RegDeleteValueW( hKey, QUARTZ_wszThreadingModel );
-
-		RegCloseKey( hKey );
-		if ( FAILED(hr) )
-			return hr;
-
-		/* I think key should be deleted only if no subkey exists. */
-		FIXME( "unregister %s - key should be removed!\n",
-				debugstr_guid(pclsid) );
-	}
-
-	return NOERROR;
-}
-
-
-HRESULT QUARTZ_RegisterCategory(
-	const CLSID* pguidFilterCategory,	/* [IN] Category */
-	LPCWSTR lpFriendlyName,	/* [IN] friendly name */
-	DWORD dwMerit,	/* [IN] merit */
-	BOOL fRegister )	/* [IN] TRUE = register, FALSE = unregister */
-{
-	HRESULT	hr;
-	HKEY	hKey;
-	WCHAR	szFilterPath[ 256 ];
-	WCHAR	szCLSID[ 256 ];
-
-	QUARTZ_GUIDtoString( szCLSID, pguidFilterCategory );
-	lstrcpyW( szFilterPath, QUARTZ_wszInstance );
-	QUARTZ_CatPathSepW( szFilterPath );
-	lstrcatW( szFilterPath, szCLSID );
-
-	if ( fRegister )
-	{
-		hr = QUARTZ_OpenCLSIDKey(
-			&hKey, KEY_ALL_ACCESS, TRUE,
-			&CLSID_ActiveMovieCategories, szFilterPath );
-		if ( FAILED(hr) )
-			return hr;
-
-			if ( QUARTZ_RegSetValueString(
-				hKey, QUARTZ_wszCLSID, szCLSID ) != ERROR_SUCCESS )
-				hr = E_FAIL;
-			if ( lpFriendlyName != NULL && QUARTZ_RegSetValueString(
-				hKey, QUARTZ_wszFriendlyName,
-				lpFriendlyName ) != ERROR_SUCCESS )
-				hr = E_FAIL;
-			if ( dwMerit != 0 &&
-				 QUARTZ_RegSetValueDWord(
-				 	hKey, QUARTZ_wszMerit, dwMerit ) != ERROR_SUCCESS )
-				hr = E_FAIL;
-
-		RegCloseKey( hKey );
-		if ( FAILED(hr) )
-			return hr;
-	}
-	else
-	{
-		hr = QUARTZ_OpenCLSIDKey(
-			&hKey, KEY_ALL_ACCESS, FALSE,
-			&CLSID_ActiveMovieCategories, szFilterPath );
-		if ( FAILED(hr) )
-			return NOERROR;
-
-			RegDeleteValueW( hKey, QUARTZ_wszCLSID );
-			RegDeleteValueW( hKey, QUARTZ_wszFriendlyName );
-			RegDeleteValueW( hKey, QUARTZ_wszMerit );
-
-		RegCloseKey( hKey );
-		if ( FAILED(hr) )
-			return hr;
-
-		/* I think key should be deleted only if no subkey exists. */
-		FIXME( "unregister category %s - key should be removed!\n",
-			debugstr_guid(pguidFilterCategory) );
-	}
-
-	return NOERROR;
-}
-
-
-HRESULT QUARTZ_RegisterAMovieFilter(
-	const CLSID* pguidFilterCategory,	/* [IN] Category */
-	const CLSID* pclsid,	/* [IN] CLSID of this filter */
-	const BYTE* pbFilterData,	/* [IN] filter data(no spec) */
-	DWORD cbFilterData,	/* [IN] size of the filter data */
-	LPCWSTR lpFriendlyName,	/* [IN] friendly name */
-	LPCWSTR lpInstance,	/* [IN] instance */
-	BOOL fRegister )	/* [IN] TRUE = register, FALSE = unregister */
-{
-	HRESULT	hr;
-	HKEY	hKey;
-	WCHAR	szFilterPath[ 256 ];
-	WCHAR	szCLSID[ 256 ];
-
-	QUARTZ_GUIDtoString( szCLSID, pclsid );
-	lstrcpyW( szFilterPath, QUARTZ_wszInstance );
-	QUARTZ_CatPathSepW( szFilterPath );
-	lstrcatW( szFilterPath, ( lpInstance != NULL ) ? lpInstance : szCLSID );
-
-	if ( fRegister )
-	{
-		hr = QUARTZ_OpenCLSIDKey(
-			&hKey, KEY_ALL_ACCESS, TRUE,
-			pguidFilterCategory, szFilterPath );
-		if ( FAILED(hr) )
-			return hr;
-
-			if ( QUARTZ_RegSetValueString(
-				hKey, QUARTZ_wszCLSID, szCLSID ) != ERROR_SUCCESS )
-				hr = E_FAIL;
-			if ( pbFilterData != NULL && cbFilterData > 0 &&
-				 QUARTZ_RegSetValueBinary(
-				 	hKey, QUARTZ_wszFilterData,
-				 	pbFilterData, cbFilterData ) != ERROR_SUCCESS )
-				hr = E_FAIL;
-			if ( lpFriendlyName != NULL && QUARTZ_RegSetValueString(
-				hKey, QUARTZ_wszFriendlyName,
-				lpFriendlyName ) != ERROR_SUCCESS )
-				hr = E_FAIL;
-
-		RegCloseKey( hKey );
-		if ( FAILED(hr) )
-			return hr;
-	}
-	else
-	{
-		hr = QUARTZ_OpenCLSIDKey(
-			&hKey, KEY_ALL_ACCESS, FALSE,
-			pguidFilterCategory, szFilterPath );
-		if ( FAILED(hr) )
-			return NOERROR;
-
-			RegDeleteValueW( hKey, QUARTZ_wszCLSID );
-			RegDeleteValueW( hKey, QUARTZ_wszFilterData );
-			RegDeleteValueW( hKey, QUARTZ_wszFriendlyName );
-
-		RegCloseKey( hKey );
-		if ( FAILED(hr) )
-			return hr;
-
-		/* I think key should be deleted only if no subkey exists. */
-		FIXME( "unregister category %s filter %s - key should be removed!\n",
-			debugstr_guid(pguidFilterCategory),
-			debugstr_guid(pclsid) );
-	}
-
-	return NOERROR;
-}
-
-
diff --git a/dlls/quartz/regsvr.h b/dlls/quartz/regsvr.h
deleted file mode 100644
index 5404524..0000000
--- a/dlls/quartz/regsvr.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Regster/Unregister servers. (for internal use)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	QUARTZ_REGSVR_H
-#define	QUARTZ_REGSVR_H
-
-extern const WCHAR QUARTZ_wszREG_SZ[7];
-extern const WCHAR QUARTZ_wszInprocServer32[];
-extern const WCHAR QUARTZ_wszThreadingModel[];
-extern const WCHAR QUARTZ_wszBoth[];
-extern const WCHAR QUARTZ_wszCLSID[];
-extern const WCHAR QUARTZ_wszFilterData[];
-extern const WCHAR QUARTZ_wszFriendlyName[];
-extern const WCHAR QUARTZ_wszInstance[];
-extern const WCHAR QUARTZ_wszMerit[];
-extern const WCHAR QUARTZ_wszMediaType[];
-extern const WCHAR QUARTZ_wszSubType[];
-extern const WCHAR QUARTZ_wszExtensions[];
-extern const WCHAR QUARTZ_wszSourceFilter[];
-
-
-void QUARTZ_CatPathSepW( WCHAR* pBuf );
-void QUARTZ_GUIDtoString( WCHAR* pBuf, const GUID* pguid );
-
-HRESULT QUARTZ_CreateCLSIDPath(
-	WCHAR* pwszBuf, DWORD dwBufLen,
-	const CLSID* pclsid,
-	LPCWSTR lpszPathFromCLSID );
-
-HRESULT QUARTZ_OpenCLSIDKey(
-	HKEY* phkey,	/* [OUT] hKey */
-	REGSAM rsAccess,	/* [IN] access */
-	BOOL fCreate,	/* TRUE = RegCreateKey, FALSE = RegOpenKey */
-	const CLSID* pclsid,	/* CLSID */
-	LPCWSTR lpszPathFromCLSID );	/* related path from CLSID */
-
-HRESULT QUARTZ_RegisterAMovieDLLServer(
-	const CLSID* pclsid,	/* [IN] CLSID */
-	LPCWSTR lpFriendlyName,	/* [IN] Friendly name */
-	LPCWSTR lpNameOfDLL,	/* [IN] name of the registered DLL */
-	BOOL fRegister );	/* [IN] TRUE = register, FALSE = unregister */
-
-HRESULT QUARTZ_RegisterCategory(
-	const CLSID* pguidFilterCategory,	/* [IN] Category */
-	LPCWSTR lpFriendlyName,	/* [IN] friendly name */
-	DWORD dwMerit,	/* [IN] merit */
-	BOOL fRegister );	/* [IN] TRUE = register, FALSE = unregister */
-
-HRESULT QUARTZ_RegisterAMovieFilter(
-	const CLSID* pguidFilterCategory,	/* [IN] Category */
-	const CLSID* pclsid,	/* [IN] CLSID of this filter */
-	const BYTE* pbFilterData,	/* [IN] filter data(no spec) */
-	DWORD cbFilterData,	/* [IN] size of the filter data */
-	LPCWSTR lpFriendlyName,	/* [IN] friendly name */
-	LPCWSTR lpInstance,	/* [IN] instance */
-	BOOL fRegister );	/* [IN] TRUE = register, FALSE = unregister */
-
-
-#endif	/* QUARTZ_REGSVR_H */
diff --git a/dlls/quartz/sample.c b/dlls/quartz/sample.c
deleted file mode 100644
index c46daa8..0000000
--- a/dlls/quartz/sample.c
+++ /dev/null
@@ -1,677 +0,0 @@
-/*
- * Implements IMediaSample2 for CMemMediaSample.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "vfwmsgs.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "sample.h"
-#include "mtype.h"
-
-
-/***************************************************************************
- *
- *	Helper functions
- *
- */
-
-HRESULT QUARTZ_IMediaSample_GetProperties(
-	IMediaSample* pSample,
-	AM_SAMPLE2_PROPERTIES* pProp )
-{
-#if 0 /* not yet */
-	HRESULT hr;
-	AM_SAMPLE2_PROPERTIES	prop;
-	IMediaSample2*	pSample2 = NULL;
-
-	ZeroMemory( &prop, sizeof(AM_SAMPLE2_PROPERTIES) );
-
-	hr = IMediaSample_QueryInterface( pSample, &IID_IMediaSample2, (void**)&pSample2 );
-	if ( hr == S_OK )
-	{
-		hr = IMediaSample2_GetProperties(pSample2,sizeof(AM_SAMPLE2_PROPERTIES),&prop);
-		IMediaSample2_Release(pSample2);
-		if ( hr == S_OK )
-		{
-			memcpy( pProp, &prop, sizeof(AM_SAMPLE2_PROPERTIES) );
-			pProp->pMediaType =
-				QUARTZ_MediaType_Duplicate( &prop.pMediaType );
-
-			return NOERROR;
-		}
-	}
-#endif
-
-	pProp->cbData = sizeof(AM_SAMPLE2_PROPERTIES);
-	pProp->dwTypeSpecificFlags = 0;
-	pProp->dwSampleFlags = 0;
-	if ( IMediaSample_IsSyncPoint(pSample) == S_OK )
-		pProp->dwSampleFlags |= AM_SAMPLE_SPLICEPOINT;
-	if ( IMediaSample_IsPreroll(pSample) == S_OK )
-		pProp->dwSampleFlags |= AM_SAMPLE_PREROLL;
-	if ( IMediaSample_IsDiscontinuity(pSample) == S_OK )
-		pProp->dwSampleFlags |= AM_SAMPLE_DATADISCONTINUITY;
-	pProp->lActual = (LONG)IMediaSample_GetActualDataLength(pSample);
-	if ( IMediaSample_GetTime(pSample,&pProp->tStart,&pProp->tStop) == S_OK )
-		pProp->dwSampleFlags |= AM_SAMPLE_TIMEVALID | AM_SAMPLE_STOPVALID;
-	pProp->dwStreamId = 0;
-	if ( IMediaSample_GetMediaType(pSample,&(pProp->pMediaType)) == S_OK )
-		pProp->dwSampleFlags |= AM_SAMPLE_TYPECHANGED;
-	IMediaSample_GetPointer(pSample,&(pProp->pbBuffer));
-	pProp->cbBuffer = (LONG)IMediaSample_GetSize(pSample);
-
-	return NOERROR;
-}
-
-HRESULT QUARTZ_IMediaSample_SetProperties(
-	IMediaSample* pSample,
-	const AM_SAMPLE2_PROPERTIES* pProp )
-{
-	HRESULT hr;
-	AM_SAMPLE2_PROPERTIES	prop;
-#if 0 /* not yet */
-	IMediaSample2*	pSample2 = NULL;
-#endif
-
-	memcpy( &prop, pProp, sizeof(AM_SAMPLE2_PROPERTIES) );
-	prop.cbData = sizeof(AM_SAMPLE2_PROPERTIES);
-	prop.pbBuffer = NULL;
-	prop.cbBuffer = 0;
-
-#if 0 /* not yet */
-	hr = IMediaSample_QueryInterface( pSample, &IID_IMediaSample2, (void**)&pSample2 );
-	if ( hr == S_OK )
-	{
-		hr = IMediaSample2_SetProperties(pSample2,sizeof(AM_SAMPLE2_PROPERTIES),&prop);
-		IMediaSample2_Release(pSample2);
-		if ( hr == S_OK )
-			return NOERROR;
-	}
-#endif
-
-	hr = S_OK;
-
-	if ( SUCCEEDED(hr) )
-		hr = IMediaSample_SetSyncPoint(pSample,
-			(prop.dwSampleFlags & AM_SAMPLE_SPLICEPOINT) ? TRUE : FALSE);
-	if ( SUCCEEDED(hr) )
-		hr = IMediaSample_SetPreroll(pSample,
-			(prop.dwSampleFlags & AM_SAMPLE_PREROLL) ? TRUE : FALSE);
-	if ( SUCCEEDED(hr) )
-		hr = IMediaSample_SetDiscontinuity(pSample,
-			(prop.dwSampleFlags & AM_SAMPLE_DATADISCONTINUITY) ? TRUE : FALSE);
-	if ( SUCCEEDED(hr) )
-	{
-		TRACE("length = %ld/%ld\n",prop.lActual,pProp->cbBuffer);
-		hr = IMediaSample_SetActualDataLength(pSample,prop.lActual);
-	}
-	if ( SUCCEEDED(hr) )
-	{
-		if ( ( prop.dwSampleFlags & AM_SAMPLE_TIMEVALID) &&
-		     ( prop.dwSampleFlags & AM_SAMPLE_STOPVALID) )
-			hr = IMediaSample_SetTime(pSample,&prop.tStart,&prop.tStop);
-		else
-			hr = IMediaSample_SetTime(pSample,NULL,NULL);
-	}
-	if ( SUCCEEDED(hr) )
-		hr = IMediaSample_SetMediaType(pSample,
-			(prop.dwSampleFlags & AM_SAMPLE_TYPECHANGED) ?
-				prop.pMediaType : NULL);
-
-	return hr;
-}
-
-HRESULT QUARTZ_IMediaSample_Copy(
-	IMediaSample* pDstSample,
-	IMediaSample* pSrcSample,
-	BOOL bCopyData )
-{
-	HRESULT hr;
-	AM_SAMPLE2_PROPERTIES	prop;
-	BYTE* pDataSrc = NULL;
-	BYTE* pDataDst = NULL;
-
-	hr = QUARTZ_IMediaSample_GetProperties( pSrcSample, &prop );
-	if ( FAILED(hr) )
-		return hr;
-	if ( !bCopyData )
-		prop.lActual = 0;
-	hr = QUARTZ_IMediaSample_SetProperties( pDstSample, &prop );
-	if ( prop.pMediaType != NULL )
-		QUARTZ_MediaType_Destroy( prop.pMediaType );
-
-	if ( SUCCEEDED(hr) && bCopyData )
-	{
-		hr = IMediaSample_GetPointer(pSrcSample,&pDataSrc);
-		if ( SUCCEEDED(hr) )
-			hr = IMediaSample_GetPointer(pDstSample,&pDataDst);
-		if ( SUCCEEDED(hr) )
-		{
-			if ( pDataSrc != NULL && pDataDst != NULL )
-				memcpy( pDataDst, pDataSrc, prop.lActual );
-			else
-				hr = E_FAIL;
-		}
-	}
-
-	return hr;
-}
-
-/***************************************************************************
- *
- *	CMemMediaSample::IMediaSample2
- *
- */
-
-static HRESULT WINAPI
-IMediaSample2_fnQueryInterface(IMediaSample2* iface,REFIID riid,void** ppobj)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
-
-	if ( ppobj == NULL )
-		return E_POINTER;
-
-	if ( IsEqualGUID( riid, &IID_IUnknown ) ||
-	     IsEqualGUID( riid, &IID_IMediaSample ) ||
-	     IsEqualGUID( riid, &IID_IMediaSample2 ) )
-	{
-		*ppobj = iface;
-		IMediaSample2_AddRef(iface);
-		return NOERROR;
-	}
-
-	return E_NOINTERFACE;
-}
-
-static ULONG WINAPI
-IMediaSample2_fnAddRef(IMediaSample2* iface)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return InterlockedExchangeAdd(&(This->ref),1) + 1;
-}
-
-static ULONG WINAPI
-IMediaSample2_fnRelease(IMediaSample2* iface)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-	LONG	ref;
-
-	TRACE("(%p)->()\n",This);
-
-	if ( This->ref == 0 )
-	{
-		ERR("(%p) - released sample!\n",This);
-		return 0;
-	}
-
-	ref = InterlockedExchangeAdd(&(This->ref),-1) - 1;
-	if ( ref > 0 )
-		return (ULONG)ref;
-
-	/* this class would be reused.. */
-	if ( This->prop.pMediaType != NULL )
-	{
-		QUARTZ_MediaType_Destroy( This->prop.pMediaType );
-		This->prop.pMediaType = NULL;
-	}
-	This->prop.dwTypeSpecificFlags = 0;
-	This->prop.dwSampleFlags = 0;
-	This->prop.lActual = This->prop.cbBuffer;
-
-	IMemAllocator_ReleaseBuffer(This->pOwner,(IMediaSample*)iface);
-
-	return 0;
-}
-
-
-
-static HRESULT WINAPI
-IMediaSample2_fnGetPointer(IMediaSample2* iface,BYTE** ppData)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	if ( This->ref == 0 )
-	{
-		ERR("(%p) - released sample!\n",This);
-		return E_UNEXPECTED;
-	}
-
-	if ( ppData == NULL )
-		return E_POINTER;
-
-	*ppData = This->prop.pbBuffer;
-	return NOERROR;
-}
-
-static long WINAPI
-IMediaSample2_fnGetSize(IMediaSample2* iface)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return This->prop.cbBuffer;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnGetTime(IMediaSample2* iface,REFERENCE_TIME* prtStart,REFERENCE_TIME* prtEnd)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->(%p,%p)\n",This,prtStart,prtEnd);
-
-	if ( This->ref == 0 )
-	{
-		ERR("(%p) - released sample!\n",This);
-		return E_UNEXPECTED;
-	}
-
-	if ( prtStart == NULL || prtEnd == NULL )
-		return E_POINTER;
-
-	if ( ( This->prop.dwSampleFlags & AM_SAMPLE_TIMEVALID ) &&
-		 ( This->prop.dwSampleFlags & AM_SAMPLE_STOPVALID ) )
-	{
-		*prtStart = This->prop.tStart;
-		*prtEnd = This->prop.tStop;
-		return NOERROR;
-	}
-
-	return VFW_E_MEDIA_TIME_NOT_SET;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnSetTime(IMediaSample2* iface,REFERENCE_TIME* prtStart,REFERENCE_TIME* prtEnd)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->(%p,%p) stub!\n",This,prtStart,prtEnd);
-
-	This->prop.dwSampleFlags &= ~(AM_SAMPLE_TIMEVALID|AM_SAMPLE_STOPVALID);
-	if ( prtStart != NULL )
-	{
-		This->prop.dwSampleFlags |= AM_SAMPLE_TIMEVALID;
-		This->prop.tStart = *prtStart;
-	}
-	if ( prtEnd != NULL )
-	{
-		This->prop.dwSampleFlags |= AM_SAMPLE_STOPVALID;
-		This->prop.tStop = *prtEnd;
-	}
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnIsSyncPoint(IMediaSample2* iface)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return ( This->prop.dwSampleFlags & AM_SAMPLE_SPLICEPOINT ) ?
-						S_OK : S_FALSE;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnSetSyncPoint(IMediaSample2* iface,BOOL bSync)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->(%d)\n",This,bSync);
-
-	if ( bSync )
-		This->prop.dwSampleFlags |= AM_SAMPLE_SPLICEPOINT;
-	else
-		This->prop.dwSampleFlags &= ~AM_SAMPLE_SPLICEPOINT;
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnIsPreroll(IMediaSample2* iface)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return ( This->prop.dwSampleFlags & AM_SAMPLE_PREROLL ) ?
-						S_OK : S_FALSE;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnSetPreroll(IMediaSample2* iface,BOOL bPreroll)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->(%d)\n",This,bPreroll);
-
-	if ( bPreroll )
-		This->prop.dwSampleFlags |= AM_SAMPLE_PREROLL;
-	else
-		This->prop.dwSampleFlags &= ~AM_SAMPLE_PREROLL;
-
-	return NOERROR;
-}
-
-static long WINAPI
-IMediaSample2_fnGetActualDataLength(IMediaSample2* iface)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return This->prop.lActual;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnSetActualDataLength(IMediaSample2* iface,long lLength)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->(%ld)\n",This,lLength);
-
-	if ( This->prop.cbBuffer < lLength )
-		return E_INVALIDARG;
-
-	This->prop.lActual = lLength;
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnGetMediaType(IMediaSample2* iface,AM_MEDIA_TYPE** ppmt)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->(%p)\n",This,ppmt);
-
-	if ( ppmt == NULL )
-		return E_POINTER;
-	*ppmt = NULL;
-	if ( !(This->prop.dwSampleFlags & AM_SAMPLE_TYPECHANGED) )
-		return S_FALSE;
-
-	*ppmt = QUARTZ_MediaType_Duplicate( This->prop.pMediaType );
-	if ( *ppmt == NULL )
-		return E_OUTOFMEMORY;
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnSetMediaType(IMediaSample2* iface,AM_MEDIA_TYPE* pmt)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-	AM_MEDIA_TYPE* pmtDup;
-
-	TRACE("(%p)->(%p)\n",This,pmt);
-
-	if ( pmt == NULL )
-	{
-		/* FIXME? */
-		if ( This->prop.pMediaType != NULL )
-		{
-			QUARTZ_MediaType_Destroy( This->prop.pMediaType );
-			This->prop.pMediaType = NULL;
-		}
-		This->prop.dwSampleFlags &= ~AM_SAMPLE_TYPECHANGED;
-		return NOERROR;
-	}
-
-	pmtDup = QUARTZ_MediaType_Duplicate( pmt );
-	if ( pmtDup == NULL )
-		return E_OUTOFMEMORY;
-
-	if ( This->prop.pMediaType != NULL )
-		QUARTZ_MediaType_Destroy( This->prop.pMediaType );
-	This->prop.dwSampleFlags |= AM_SAMPLE_TYPECHANGED;
-	This->prop.pMediaType = pmtDup;
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnIsDiscontinuity(IMediaSample2* iface)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->()\n",This);
-
-	return ( This->prop.dwSampleFlags & AM_SAMPLE_DATADISCONTINUITY ) ?
-						S_OK : S_FALSE;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnSetDiscontinuity(IMediaSample2* iface,BOOL bDiscontinuity)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->(%d)\n",This,bDiscontinuity);
-
-	if ( bDiscontinuity )
-		This->prop.dwSampleFlags |= AM_SAMPLE_DATADISCONTINUITY;
-	else
-		This->prop.dwSampleFlags &= ~AM_SAMPLE_DATADISCONTINUITY;
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnGetMediaTime(IMediaSample2* iface,LONGLONG* pTimeStart,LONGLONG* pTimeEnd)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->(%p,%p)\n",This,pTimeStart,pTimeEnd);
-
-	if ( pTimeStart == NULL || pTimeEnd == NULL )
-		return E_POINTER;
-
-	if ( !This->fMediaTimeIsValid )
-		return VFW_E_MEDIA_TIME_NOT_SET;
-
-	*pTimeStart = This->llMediaTimeStart;
-	*pTimeEnd = This->llMediaTimeEnd;
-
-	return NOERROR;
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnSetMediaTime(IMediaSample2* iface,LONGLONG* pTimeStart,LONGLONG* pTimeEnd)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->()\n",This);
-	if ( pTimeStart == NULL || pTimeEnd == NULL )
-	{
-		This->fMediaTimeIsValid = FALSE;
-	}
-	else
-	{
-		This->fMediaTimeIsValid = TRUE;
-		This->llMediaTimeStart = *pTimeStart;
-		This->llMediaTimeEnd = *pTimeEnd;
-	}
-
-	return NOERROR;
-}
-
-
-static HRESULT WINAPI
-IMediaSample2_fnGetProperties(IMediaSample2* iface,DWORD cbProp,BYTE* pbProp)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-
-	TRACE("(%p)->(%lu,%p)\n",This,cbProp,pbProp);
-
-	if ( cbProp < 0 || cbProp > sizeof(AM_SAMPLE2_PROPERTIES) )
-		return E_FAIL;
-	memcpy( pbProp, &This->prop, cbProp );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IMediaSample2_fnSetProperties(IMediaSample2* iface,DWORD cbProp,const BYTE* pbProp)
-{
-	ICOM_THIS(CMemMediaSample,iface);
-	const AM_SAMPLE2_PROPERTIES* pProp;
-	AM_SAMPLE2_PROPERTIES propNew;
-	AM_MEDIA_TYPE* pmtDup = NULL;
-	HRESULT hr = E_INVALIDARG;
-
-	TRACE("(%p)->(%lu,%p)\n",This,cbProp,pbProp);
-
-	if ( pbProp == NULL )
-		return E_POINTER;
-	pProp = (const AM_SAMPLE2_PROPERTIES*)pbProp;
-	if ( cbProp != sizeof(AM_SAMPLE2_PROPERTIES) )
-		goto err;
-
-	CopyMemory( &propNew, pProp, sizeof(AM_SAMPLE2_PROPERTIES) );
-	if ( propNew.cbData != sizeof(AM_SAMPLE2_PROPERTIES) )
-		goto err;
-
-	if ( This->prop.cbBuffer < propNew.lActual )
-		goto err;
-
-	if ( propNew.dwSampleFlags & AM_SAMPLE_TYPECHANGED )
-	{
-		pmtDup = QUARTZ_MediaType_Duplicate( propNew.pMediaType );
-		if ( pmtDup == NULL )
-		{
-			hr = E_OUTOFMEMORY;
-			goto err;
-		}
-	}
-
-	if ( propNew.pbBuffer != NULL && propNew.pbBuffer != This->prop.pbBuffer )
-		goto err;
-	if ( propNew.cbBuffer != 0 && propNew.cbBuffer != This->prop.cbBuffer )
-		goto err;
-
-	if ( This->prop.pMediaType != NULL )
-		QUARTZ_MediaType_Destroy( This->prop.pMediaType );
-	CopyMemory( &This->prop, &propNew, sizeof(AM_SAMPLE2_PROPERTIES) );
-	This->prop.pMediaType = pmtDup;
-	pmtDup = NULL;
-
-	hr= NOERROR;
-err:
-	if ( pmtDup != NULL )
-		QUARTZ_MediaType_Destroy( pmtDup );
-
-	return hr;
-}
-
-
-static ICOM_VTABLE(IMediaSample2) imediasample2 =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMediaSample2_fnQueryInterface,
-	IMediaSample2_fnAddRef,
-	IMediaSample2_fnRelease,
-	/* IMediaSample fields */
-	IMediaSample2_fnGetPointer,
-	IMediaSample2_fnGetSize,
-	IMediaSample2_fnGetTime,
-	IMediaSample2_fnSetTime,
-	IMediaSample2_fnIsSyncPoint,
-	IMediaSample2_fnSetSyncPoint,
-	IMediaSample2_fnIsPreroll,
-	IMediaSample2_fnSetPreroll,
-	IMediaSample2_fnGetActualDataLength,
-	IMediaSample2_fnSetActualDataLength,
-	IMediaSample2_fnGetMediaType,
-	IMediaSample2_fnSetMediaType,
-	IMediaSample2_fnIsDiscontinuity,
-	IMediaSample2_fnSetDiscontinuity,
-	IMediaSample2_fnGetMediaTime,
-	IMediaSample2_fnSetMediaTime,
-	/* IMediaSample2 fields */
-	IMediaSample2_fnGetProperties,
-	IMediaSample2_fnSetProperties,
-};
-
-
-/***************************************************************************
- *
- *	new/delete for CMemMediaSample
- *
- */
-
-HRESULT QUARTZ_CreateMemMediaSample(
-	BYTE* pbData, DWORD dwDataLength,
-	IMemAllocator* pOwner,
-	CMemMediaSample** ppSample )
-{
-	CMemMediaSample*	pms;
-
-	TRACE("(%p,%08lx,%p,%p)\n",pbData,dwDataLength,pOwner,ppSample);
-	pms = (CMemMediaSample*)QUARTZ_AllocObj( sizeof(CMemMediaSample) );
-	if ( pms == NULL )
-		return E_OUTOFMEMORY;
-
-	ICOM_VTBL(pms) = &imediasample2;
-	pms->ref = 0;
-	pms->pOwner = pOwner;
-	pms->fMediaTimeIsValid = FALSE;
-	pms->llMediaTimeStart = 0;
-	pms->llMediaTimeEnd = 0;
-	ZeroMemory( &(pms->prop), sizeof(pms->prop) );
-	pms->prop.cbData = sizeof(pms->prop);
-	pms->prop.dwTypeSpecificFlags = 0;
-	pms->prop.dwSampleFlags = 0;
-	pms->prop.pbBuffer = pbData;
-	pms->prop.cbBuffer = (LONG)dwDataLength;
-	pms->prop.lActual = (LONG)dwDataLength;
-
-	*ppSample = pms;
-
-	return S_OK;
-}
-
-void QUARTZ_DestroyMemMediaSample(
-	CMemMediaSample* pSample )
-{
-	TRACE("(%p)\n",pSample);
-
-	QUARTZ_FreeObj( pSample );
-}
-
diff --git a/dlls/quartz/sample.h b/dlls/quartz/sample.h
deleted file mode 100644
index 9d95cce..0000000
--- a/dlls/quartz/sample.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_SAMPLE_H
-#define	WINE_DSHOW_SAMPLE_H
-
-/*
-		implements CMemMediaSample.
-
-	- At least, the following interfaces should be implemented:
-
-	IUnknown - IMediaSample - IMediaSample2
- */
-
-typedef struct CMemMediaSample
-{
-	ICOM_VFIELD(IMediaSample2);
-
-	/* IUnknown fields */
-	ULONG	ref;
-	/* IMediaSample2 fields */
-	IMemAllocator*	pOwner; /* not addref-ed. */
-	BOOL	fMediaTimeIsValid;
-	LONGLONG	llMediaTimeStart;
-	LONGLONG	llMediaTimeEnd;
-	AM_SAMPLE2_PROPERTIES	prop;
-} CMemMediaSample;
-
-
-HRESULT QUARTZ_CreateMemMediaSample(
-	BYTE* pbData, DWORD dwDataLength,
-	IMemAllocator* pOwner,
-	CMemMediaSample** ppSample );
-void QUARTZ_DestroyMemMediaSample(
-	CMemMediaSample* pSample );
-
-
-HRESULT QUARTZ_IMediaSample_GetProperties(
-	IMediaSample* pSample,
-	AM_SAMPLE2_PROPERTIES* pProp );
-HRESULT QUARTZ_IMediaSample_SetProperties(
-	IMediaSample* pSample,
-	const AM_SAMPLE2_PROPERTIES* pProp );
-HRESULT QUARTZ_IMediaSample_Copy(
-	IMediaSample* pDstSample,
-	IMediaSample* pSrcSample,
-	BOOL bCopyData );
-
-
-
-#endif	/* WINE_DSHOW_SAMPLE_H */
diff --git a/dlls/quartz/seekpass.c b/dlls/quartz/seekpass.c
deleted file mode 100644
index ce30b26..0000000
--- a/dlls/quartz/seekpass.c
+++ /dev/null
@@ -1,862 +0,0 @@
-/*
- *	Implementation of CLSID_SeekingPassThru
- *
- *	FIXME - not tested yet.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "seekpass.h"
-
-
-/***************************************************************************
- *
- *	CSeekingPassThru::ISeekingPassThru
- *
- */
-
-static HRESULT WINAPI
-ISeekingPassThru_fnQueryInterface(ISeekingPassThru* iface,REFIID riid,void** ppobj)
-{
-	CSeekingPassThru_THIS(iface,seekpass);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-ISeekingPassThru_fnAddRef(ISeekingPassThru* iface)
-{
-	CSeekingPassThru_THIS(iface,seekpass);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-ISeekingPassThru_fnRelease(ISeekingPassThru* iface)
-{
-	CSeekingPassThru_THIS(iface,seekpass);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-ISeekingPassThru_fnInit(ISeekingPassThru* iface,BOOL bRendering,IPin* pPin)
-{
-	CSeekingPassThru_THIS(iface,seekpass);
-
-	TRACE("(%p)->(%d,%p)\n",This,bRendering,pPin);
-
-	if ( pPin == NULL )
-		return E_POINTER;
-	if ( bRendering )
-	{
-		WARN("bRendering != FALSE\n");
-	}
-
-	/* Why is 'bRendering' given as an argument?? */
-	EnterCriticalSection( &This->cs );
-
-	if ( This->passthru.pPin != NULL )
-		IPin_Release( This->passthru.pPin );
-	This->passthru.pPin = pPin; IPin_AddRef( pPin );
-
-	LeaveCriticalSection( &This->cs );
-
-	return NOERROR;
-}
-
-
-static ICOM_VTABLE(ISeekingPassThru) iseekingpassthru =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	ISeekingPassThru_fnQueryInterface,
-	ISeekingPassThru_fnAddRef,
-	ISeekingPassThru_fnRelease,
-	/* ISeekingPassThru fields */
-	ISeekingPassThru_fnInit,
-};
-
-static
-HRESULT CSeekingPassThru_InitISeekingPassThru(CSeekingPassThru* This)
-{
-	TRACE("(%p)\n",This);
-	ICOM_VTBL(&This->seekpass) = &iseekingpassthru;
-	This->passthru.punk = This->unk.punkControl;
-	This->passthru.pPin = NULL;
-	InitializeCriticalSection( &This->cs );
-
-	return NOERROR;
-}
-
-static
-void CSeekingPassThru_UninitISeekingPassThru(CSeekingPassThru* This)
-{
-	TRACE("(%p)\n",This);
-	if ( This->passthru.pPin != NULL )
-	{
-		IPin_Release( This->passthru.pPin );
-		This->passthru.pPin = NULL;
-	}
-	DeleteCriticalSection( &This->cs );
-}
-
-/***************************************************************************
- *
- *	new/delete for CLSID_SeekingPassThru.
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry IFEntries[] =
-{
-  { &IID_ISeekingPassThru, offsetof(CSeekingPassThru,seekpass)-offsetof(CSeekingPassThru,unk) },
-  { &IID_IMediaPosition, offsetof(CSeekingPassThru,passthru.mpos)-offsetof(CSeekingPassThru,unk) },
-  { &IID_IMediaSeeking, offsetof(CSeekingPassThru,passthru.mseek)-offsetof(CSeekingPassThru,unk) },
-};
-
-
-static void QUARTZ_DestroySeekingPassThru(IUnknown* punk)
-{
-	CSeekingPassThru_THIS(punk,unk);
-
-	TRACE("(%p)\n",This);
-
-	CPassThruImpl_UninitIMediaSeeking( &This->passthru );
-	CPassThruImpl_UninitIMediaPosition( &This->passthru );
-	CSeekingPassThru_UninitISeekingPassThru(This);
-}
-
-HRESULT QUARTZ_CreateSeekingPassThru(IUnknown* punkOuter,void** ppobj)
-{
-	HRESULT	hr;
-	CSeekingPassThru*	This;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	hr = QUARTZ_CreateSeekingPassThruInternal(punkOuter,&This,FALSE,NULL);
-	if ( hr != S_OK )
-		return hr;
-
-	ppobj = (void*)(&This->unk);
-
-	return NOERROR;
-}
-
-HRESULT QUARTZ_CreateSeekingPassThruInternal(IUnknown* punkOuter,CSeekingPassThru** ppobj,BOOL bRendering,IPin* pPin)
-{
-	CSeekingPassThru*	This;
-	HRESULT	hr;
-
-	TRACE("(%p,%p,%d,%p)\n",punkOuter,ppobj,(int)bRendering,pPin);
-
-	This = (CSeekingPassThru*)QUARTZ_AllocObj( sizeof(CSeekingPassThru) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &This->unk, punkOuter );
-	hr = CSeekingPassThru_InitISeekingPassThru(This);
-	if ( SUCCEEDED(hr) )
-	{
-		hr = CPassThruImpl_InitIMediaPosition( &This->passthru );
-		if ( SUCCEEDED(hr) )
-		{
-			hr = CPassThruImpl_InitIMediaSeeking( &This->passthru );
-			if ( FAILED(hr) )
-			{
-				CPassThruImpl_UninitIMediaPosition( &This->passthru );
-			}
-		}
-		else
-		{
-			CSeekingPassThru_UninitISeekingPassThru(This);
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj( This );
-		return hr;
-	}
-
-	This->unk.pEntries = IFEntries;
-	This->unk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroySeekingPassThru;
-
-	*ppobj = This;
-
-	if ( pPin != NULL )
-	{
-		hr = ISeekingPassThru_Init((ISeekingPassThru*)(&This->seekpass),bRendering,pPin);
-		if ( FAILED(hr) )
-		{
-			IUnknown_Release(This->unk.punkControl);
-			return hr;
-		}
-	}
-
-	return S_OK;
-}
-
-
-
-
-/***************************************************************************
- *
- *	CPassThruImpl Helper methods.
- *
- */
-
-static
-HRESULT CPassThruImpl_GetConnected( CPassThruImpl* pImpl, IPin** ppPin )
-{
-	return IPin_ConnectedTo( pImpl->pPin, ppPin );
-}
-
-HRESULT CPassThruImpl_QueryPosPass(
-	CPassThruImpl* pImpl, IMediaPosition** ppPosition )
-{
-	IPin*	pPin;
-	HRESULT	hr;
-
-	hr = CPassThruImpl_GetConnected( pImpl, &pPin );
-	if ( FAILED(hr) )
-		return hr;
-	hr = IPin_QueryInterface(pPin,&IID_IMediaPosition,(void**)ppPosition);
-	IPin_Release(pPin);
-
-	return hr;
-}
-
-HRESULT CPassThruImpl_QuerySeekPass(
-	CPassThruImpl* pImpl, IMediaSeeking** ppSeeking )
-{
-	IPin*	pPin;
-	HRESULT	hr;
-
-	hr = CPassThruImpl_GetConnected( pImpl, &pPin );
-	if ( FAILED(hr) )
-		return hr;
-	hr = IPin_QueryInterface(pPin,&IID_IMediaSeeking,(void**)ppSeeking);
-	IPin_Release(pPin);
-
-	return hr;
-}
-
-/***************************************************************************
- *
- *	An implementation for CPassThruImpl::IMediaPosition.
- *
- */
-
-
-#define QUERYPOSPASS \
-	IMediaPosition* pPos = NULL; \
-	HRESULT hr; \
-	hr = CPassThruImpl_QueryPosPass( This, &pPos ); \
-	if ( FAILED(hr) ) return hr;
-
-static HRESULT WINAPI
-IMediaPosition_fnQueryInterface(IMediaPosition* iface,REFIID riid,void** ppobj)
-{
-	CPassThruImpl_THIS(iface,mpos);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->punk,riid,ppobj);
-}
-
-static ULONG WINAPI
-IMediaPosition_fnAddRef(IMediaPosition* iface)
-{
-	CPassThruImpl_THIS(iface,mpos);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->punk);
-}
-
-static ULONG WINAPI
-IMediaPosition_fnRelease(IMediaPosition* iface)
-{
-	CPassThruImpl_THIS(iface,mpos);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->punk);
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnGetTypeInfoCount(IMediaPosition* iface,UINT* pcTypeInfo)
-{
-	CPassThruImpl_THIS(iface,mpos);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnGetTypeInfo(IMediaPosition* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
-{
-	CPassThruImpl_THIS(iface,mpos);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnGetIDsOfNames(IMediaPosition* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
-{
-	CPassThruImpl_THIS(iface,mpos);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnInvoke(IMediaPosition* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
-{
-	CPassThruImpl_THIS(iface,mpos);
-
-	FIXME("(%p)->() stub!\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-static HRESULT WINAPI
-IMediaPosition_fnget_Duration(IMediaPosition* iface,REFTIME* prefTime)
-{
-	CPassThruImpl_THIS(iface,mpos);
-	QUERYPOSPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaPosition_get_Duration(pPos,prefTime);
-	IMediaPosition_Release(pPos);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnput_CurrentPosition(IMediaPosition* iface,REFTIME refTime)
-{
-	CPassThruImpl_THIS(iface,mpos);
-	QUERYPOSPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaPosition_put_CurrentPosition(pPos,refTime);
-	IMediaPosition_Release(pPos);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnget_CurrentPosition(IMediaPosition* iface,REFTIME* prefTime)
-{
-	CPassThruImpl_THIS(iface,mpos);
-	QUERYPOSPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaPosition_get_CurrentPosition(pPos,prefTime);
-	IMediaPosition_Release(pPos);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnget_StopTime(IMediaPosition* iface,REFTIME* prefTime)
-{
-	CPassThruImpl_THIS(iface,mpos);
-	QUERYPOSPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaPosition_get_StopTime(pPos,prefTime);
-	IMediaPosition_Release(pPos);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnput_StopTime(IMediaPosition* iface,REFTIME refTime)
-{
-	CPassThruImpl_THIS(iface,mpos);
-	QUERYPOSPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaPosition_put_StopTime(pPos,refTime);
-	IMediaPosition_Release(pPos);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnget_PrerollTime(IMediaPosition* iface,REFTIME* prefTime)
-{
-	CPassThruImpl_THIS(iface,mpos);
-	QUERYPOSPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaPosition_get_PrerollTime(pPos,prefTime);
-	IMediaPosition_Release(pPos);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnput_PrerollTime(IMediaPosition* iface,REFTIME refTime)
-{
-	CPassThruImpl_THIS(iface,mpos);
-	QUERYPOSPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaPosition_put_PrerollTime(pPos,refTime);
-	IMediaPosition_Release(pPos);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnput_Rate(IMediaPosition* iface,double dblRate)
-{
-	CPassThruImpl_THIS(iface,mpos);
-	QUERYPOSPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaPosition_put_Rate(pPos,dblRate);
-	IMediaPosition_Release(pPos);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnget_Rate(IMediaPosition* iface,double* pdblRate)
-{
-	CPassThruImpl_THIS(iface,mpos);
-	QUERYPOSPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaPosition_get_Rate(pPos,pdblRate);
-	IMediaPosition_Release(pPos);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnCanSeekForward(IMediaPosition* iface,LONG* pCanSeek)
-{
-	CPassThruImpl_THIS(iface,mpos);
-	QUERYPOSPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaPosition_CanSeekForward(pPos,pCanSeek);
-	IMediaPosition_Release(pPos);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaPosition_fnCanSeekBackward(IMediaPosition* iface,LONG* pCanSeek)
-{
-	CPassThruImpl_THIS(iface,mpos);
-	QUERYPOSPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaPosition_CanSeekBackward(pPos,pCanSeek);
-	IMediaPosition_Release(pPos);
-	return hr;
-}
-
-
-static ICOM_VTABLE(IMediaPosition) impos =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMediaPosition_fnQueryInterface,
-	IMediaPosition_fnAddRef,
-	IMediaPosition_fnRelease,
-	/* IDispatch fields */
-	IMediaPosition_fnGetTypeInfoCount,
-	IMediaPosition_fnGetTypeInfo,
-	IMediaPosition_fnGetIDsOfNames,
-	IMediaPosition_fnInvoke,
-	/* IMediaPosition fields */
-	IMediaPosition_fnget_Duration,
-	IMediaPosition_fnput_CurrentPosition,
-	IMediaPosition_fnget_CurrentPosition,
-	IMediaPosition_fnget_StopTime,
-	IMediaPosition_fnput_StopTime,
-	IMediaPosition_fnget_PrerollTime,
-	IMediaPosition_fnput_PrerollTime,
-	IMediaPosition_fnput_Rate,
-	IMediaPosition_fnget_Rate,
-	IMediaPosition_fnCanSeekForward,
-	IMediaPosition_fnCanSeekBackward,
-};
-
-
-HRESULT CPassThruImpl_InitIMediaPosition( CPassThruImpl* pImpl )
-{
-	TRACE("(%p)\n",pImpl);
-	ICOM_VTBL(&pImpl->mpos) = &impos;
-
-	return NOERROR;
-}
-
-void CPassThruImpl_UninitIMediaPosition( CPassThruImpl* pImpl )
-{
-	TRACE("(%p)\n",pImpl);
-}
-
-#undef QUERYPOSPASS
-
-
-/***************************************************************************
- *
- *	An implementation for CPassThruImpl::IMediaSeeking.
- *
- */
-
-#define QUERYSEEKPASS \
-	IMediaSeeking* pSeek = NULL; \
-	HRESULT hr; \
-	hr = CPassThruImpl_QuerySeekPass( This, &pSeek ); \
-	if ( FAILED(hr) ) return hr;
-
-
-static HRESULT WINAPI
-IMediaSeeking_fnQueryInterface(IMediaSeeking* iface,REFIID riid,void** ppobj)
-{
-	CPassThruImpl_THIS(iface,mseek);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->punk,riid,ppobj);
-}
-
-static ULONG WINAPI
-IMediaSeeking_fnAddRef(IMediaSeeking* iface)
-{
-	CPassThruImpl_THIS(iface,mseek);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->punk);
-}
-
-static ULONG WINAPI
-IMediaSeeking_fnRelease(IMediaSeeking* iface)
-{
-	CPassThruImpl_THIS(iface,mseek);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->punk);
-}
-
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetCapabilities(IMediaSeeking* iface,DWORD* pdwCaps)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_GetCapabilities(pSeek,pdwCaps);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnCheckCapabilities(IMediaSeeking* iface,DWORD* pdwCaps)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_CheckCapabilities(pSeek,pdwCaps);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnIsFormatSupported(IMediaSeeking* iface,const GUID* pidFormat)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_IsFormatSupported(pSeek,pidFormat);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnQueryPreferredFormat(IMediaSeeking* iface,GUID* pidFormat)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_QueryPreferredFormat(pSeek,pidFormat);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetTimeFormat(IMediaSeeking* iface,GUID* pidFormat)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_GetTimeFormat(pSeek,pidFormat);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnIsUsingTimeFormat(IMediaSeeking* iface,const GUID* pidFormat)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_IsUsingTimeFormat(pSeek,pidFormat);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnSetTimeFormat(IMediaSeeking* iface,const GUID* pidFormat)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_SetTimeFormat(pSeek,pidFormat);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetDuration(IMediaSeeking* iface,LONGLONG* pllDuration)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_GetDuration(pSeek,pllDuration);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetStopPosition(IMediaSeeking* iface,LONGLONG* pllPos)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_GetStopPosition(pSeek,pllPos);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetCurrentPosition(IMediaSeeking* iface,LONGLONG* pllPos)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_GetCurrentPosition(pSeek,pllPos);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnConvertTimeFormat(IMediaSeeking* iface,LONGLONG* pllOut,const GUID* pidFmtOut,LONGLONG llIn,const GUID* pidFmtIn)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_ConvertTimeFormat(pSeek,pllOut,pidFmtOut,llIn,pidFmtIn);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnSetPositions(IMediaSeeking* iface,LONGLONG* pllCur,DWORD dwCurFlags,LONGLONG* pllStop,DWORD dwStopFlags)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_SetPositions(pSeek,pllCur,dwCurFlags,pllStop,dwStopFlags);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetPositions(IMediaSeeking* iface,LONGLONG* pllCur,LONGLONG* pllStop)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_GetPositions(pSeek,pllCur,pllStop);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetAvailable(IMediaSeeking* iface,LONGLONG* pllFirst,LONGLONG* pllLast)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_GetAvailable(pSeek,pllFirst,pllLast);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnSetRate(IMediaSeeking* iface,double dblRate)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_SetRate(pSeek,dblRate);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetRate(IMediaSeeking* iface,double* pdblRate)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_GetRate(pSeek,pdblRate);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-static HRESULT WINAPI
-IMediaSeeking_fnGetPreroll(IMediaSeeking* iface,LONGLONG* pllPreroll)
-{
-	CPassThruImpl_THIS(iface,mseek);
-	QUERYSEEKPASS
-
-	TRACE("(%p)->()\n",This);
-
-	hr = IMediaSeeking_GetPreroll(pSeek,pllPreroll);
-	IMediaSeeking_Release(pSeek);
-	return hr;
-}
-
-
-
-
-static ICOM_VTABLE(IMediaSeeking) imseek =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IMediaSeeking_fnQueryInterface,
-	IMediaSeeking_fnAddRef,
-	IMediaSeeking_fnRelease,
-	/* IMediaSeeking fields */
-	IMediaSeeking_fnGetCapabilities,
-	IMediaSeeking_fnCheckCapabilities,
-	IMediaSeeking_fnIsFormatSupported,
-	IMediaSeeking_fnQueryPreferredFormat,
-	IMediaSeeking_fnGetTimeFormat,
-	IMediaSeeking_fnIsUsingTimeFormat,
-	IMediaSeeking_fnSetTimeFormat,
-	IMediaSeeking_fnGetDuration,
-	IMediaSeeking_fnGetStopPosition,
-	IMediaSeeking_fnGetCurrentPosition,
-	IMediaSeeking_fnConvertTimeFormat,
-	IMediaSeeking_fnSetPositions,
-	IMediaSeeking_fnGetPositions,
-	IMediaSeeking_fnGetAvailable,
-	IMediaSeeking_fnSetRate,
-	IMediaSeeking_fnGetRate,
-	IMediaSeeking_fnGetPreroll,
-};
-
-
-
-HRESULT CPassThruImpl_InitIMediaSeeking( CPassThruImpl* pImpl )
-{
-	TRACE("(%p)\n",pImpl);
-	ICOM_VTBL(&pImpl->mseek) = &imseek;
-
-	return NOERROR;
-}
-
-void CPassThruImpl_UninitIMediaSeeking( CPassThruImpl* pImpl )
-{
-	TRACE("(%p)\n",pImpl);
-}
-
-#undef QUERYSEEKPASS
diff --git a/dlls/quartz/seekpass.h b/dlls/quartz/seekpass.h
deleted file mode 100644
index af7fc33..0000000
--- a/dlls/quartz/seekpass.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef WINE_DSHOW_SEEKPASS_H
-#define WINE_DSHOW_SEEKPASS_H
-
-/*
-		implements CLSID_SeekingPassThru.
-
-	- At least, the following interfaces should be implemented:
-
-	IUnknown
-		+ ISeekingPassThru
-
-*/
-
-#include "iunk.h"
-
-
-/****************************************************************************/
-
-typedef struct CPassThruImpl
-{
-	struct { ICOM_VFIELD(IMediaPosition); } mpos;
-	struct { ICOM_VFIELD(IMediaSeeking); } mseek;
-
-	IUnknown* punk;
-	IPin* pPin;
-} CPassThruImpl;
-
-#define	CPassThruImpl_THIS(iface,member)		CPassThruImpl*	This = ((CPassThruImpl*)(((char*)iface)-offsetof(CPassThruImpl,member)))
-
-HRESULT CPassThruImpl_InitIMediaPosition( CPassThruImpl* pImpl );
-void CPassThruImpl_UninitIMediaPosition( CPassThruImpl* pImpl );
-HRESULT CPassThruImpl_InitIMediaSeeking( CPassThruImpl* pImpl );
-void CPassThruImpl_UninitIMediaSeeking( CPassThruImpl* pImpl );
-
-HRESULT CPassThruImpl_QueryPosPass(
-	CPassThruImpl* pImpl, IMediaPosition** ppPosition );
-HRESULT CPassThruImpl_QuerySeekPass(
-	CPassThruImpl* pImpl, IMediaSeeking** ppSeeking );
-
-/****************************************************************************/
-
-typedef struct QUARTZ_ISeekingPassThruImpl
-{
-	ICOM_VFIELD(ISeekingPassThru);
-} QUARTZ_ISeekingPassThruImpl;
-
-typedef struct CSeekingPassThru
-{
-	QUARTZ_IUnkImpl	unk;
-	QUARTZ_ISeekingPassThruImpl	seekpass;
-
-	/* ISeekingPassThru fields. */
-	CRITICAL_SECTION	cs;
-	CPassThruImpl	passthru;
-} CSeekingPassThru;
-
-#define	CSeekingPassThru_THIS(iface,member)		CSeekingPassThru*	This = ((CSeekingPassThru*)(((char*)iface)-offsetof(CSeekingPassThru,member)))
-
-HRESULT QUARTZ_CreateSeekingPassThru(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateSeekingPassThruInternal(IUnknown* punkOuter,CSeekingPassThru** ppobj,BOOL bRendering,IPin* pPin);
-
-
-#endif  /* WINE_DSHOW_SEEKPASS_H */
diff --git a/dlls/quartz/sysclock.c b/dlls/quartz/sysclock.c
deleted file mode 100644
index e12b927..0000000
--- a/dlls/quartz/sysclock.c
+++ /dev/null
@@ -1,530 +0,0 @@
-/*
- * Implementation of CLSID_SystemClock.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "sysclock.h"
-
-
-/***************************************************************************
- *
- *	new/delete for CLSID_SystemClock
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry IFEntries[] =
-{
-  { &IID_IReferenceClock, offsetof(CSystemClock,refclk)-offsetof(CSystemClock,unk) },
-};
-
-
-static void QUARTZ_DestroySystemClock(IUnknown* punk)
-{
-	CSystemClock_THIS(punk,unk);
-
-	CSystemClock_UninitIReferenceClock( This );
-}
-
-HRESULT QUARTZ_CreateSystemClock(IUnknown* punkOuter,void** ppobj)
-{
-	CSystemClock*	psc;
-	HRESULT	hr;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	psc = (CSystemClock*)QUARTZ_AllocObj( sizeof(CSystemClock) );
-	if ( psc == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &psc->unk, punkOuter );
-	hr = CSystemClock_InitIReferenceClock( psc );
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj( psc );
-		return hr;
-	}
-
-	psc->unk.pEntries = IFEntries;
-	psc->unk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]);
-	psc->unk.pOnFinalRelease = QUARTZ_DestroySystemClock;
-
-	*ppobj = (void*)(&psc->unk);
-
-	return S_OK;
-}
-
-
-/***************************************************************************
- *
- *	CLSID_SystemClock::IReferenceClock
- *
- */
-
-#define	QUARTZ_MSG_ADDTIMER			(WM_APP+0)
-#define	QUARTZ_MSG_REMOVETIMER		(WM_APP+1)
-#define	QUARTZ_MSG_EXITTHREAD		(WM_APP+2)
-
-
-/****************************************************************************/
-
-static QUARTZ_TimerEntry* IReferenceClock_AllocTimerEntry(CSystemClock* This)
-{
-	QUARTZ_TimerEntry*	pEntry;
-	DWORD	dw;
-
-	pEntry = &This->m_timerEntries[0];
-	for ( dw = 0; dw < WINE_QUARTZ_SYSCLOCK_TIMER_MAX; dw++ )
-	{
-		if ( pEntry->hEvent == (HANDLE)NULL )
-			return pEntry;
-		pEntry ++;
-	}
-
-	return NULL;
-}
-
-static QUARTZ_TimerEntry* IReferenceClock_SearchTimer(CSystemClock* This, DWORD dwAdvCookie)
-{
-	QUARTZ_TimerEntry*	pEntry;
-	DWORD	dw;
-
-	pEntry = &This->m_timerEntries[0];
-	for ( dw = 0; dw < WINE_QUARTZ_SYSCLOCK_TIMER_MAX; dw++ )
-	{
-		if ( pEntry->hEvent != (HANDLE)NULL &&
-			 pEntry->dwAdvCookie == dwAdvCookie )
-			return pEntry;
-		pEntry ++;
-	}
-
-	return NULL;
-}
-
-static DWORD IReferenceClock_OnTimerUpdated(CSystemClock* This)
-{
-	QUARTZ_TimerEntry*	pEntry;
-	REFERENCE_TIME	rtCur;
-	REFERENCE_TIME	rtSignal;
-	REFERENCE_TIME	rtCount;
-	HRESULT	hr;
-	LONG	lCount;
-	DWORD	dw;
-	DWORD	dwTimeout = INFINITE;
-	DWORD	dwTimeoutCur;
-
-	hr = IReferenceClock_GetTime((IReferenceClock*)(&This->refclk),&rtCur);
-	if ( hr != NOERROR )
-		return INFINITE;
-
-	pEntry = &This->m_timerEntries[0];
-	for ( dw = 0; dw < WINE_QUARTZ_SYSCLOCK_TIMER_MAX; dw++ )
-	{
-		if ( pEntry->hEvent != (HANDLE)NULL )
-		{
-			rtSignal = pEntry->rtStart + pEntry->rtInterval;
-			if ( rtCur >= rtSignal )
-			{
-				if ( pEntry->fPeriodic )
-				{
-					rtCount = ((rtCur - pEntry->rtStart) / pEntry->rtInterval);
-					lCount = ( rtCount > (REFERENCE_TIME)0x7fffffff ) ?
-						(LONG)0x7fffffff : (LONG)rtCount;
-					if ( !ReleaseSemaphore( pEntry->hEvent, lCount, NULL ) )
-					{
-						while ( lCount > 0 )
-						{
-							if ( !ReleaseSemaphore( pEntry->hEvent, 1, NULL ) )
-								break;
-						}
-					}
-					dwTimeout = 0;
-				}
-				else
-				{
-					TRACE( "signal an event\n" );
-					SetEvent( pEntry->hEvent );
-					pEntry->hEvent = (HANDLE)NULL;
-				}
-			}
-			else
-			{
-				rtCount = rtSignal - rtCur;
-				/* [100ns] -> [ms] */
-				rtCount = (rtCount+(REFERENCE_TIME)9999)/(REFERENCE_TIME)10000;
-				dwTimeoutCur = (rtCount >= 0xfffffffe) ? (DWORD)0xfffffffe : (DWORD)rtCount;
-				if ( dwTimeout > dwTimeoutCur )
-					dwTimeout = dwTimeoutCur;
-			}
-		}
-		pEntry ++;
-	}
-
-	return dwTimeout;
-}
-
-static
-DWORD WINAPI IReferenceClock_TimerEntry( LPVOID lpvParam )
-{
-	CSystemClock*	This = (CSystemClock*)lpvParam;
-	MSG	msg;
-	DWORD	dwRes;
-	DWORD	dwTimeout;
-
-	/* initialize the message queue. */
-	PeekMessageA( &msg, (HWND)NULL, 0, 0, PM_NOREMOVE );
-	/* resume the owner thread. */
-	SetEvent( This->m_hEventInit );
-
-	TRACE( "Enter message loop.\n" );
-
-	/* message loop. */
-	dwTimeout = INFINITE;
-	while ( 1 )
-	{
-		if ( dwTimeout > 0 )
-		{
-			dwRes = MsgWaitForMultipleObjects(
-				0, NULL, FALSE,
-				dwTimeout,
-				QS_ALLEVENTS );
-		}
-
-		EnterCriticalSection( &This->m_csClock );
-		dwTimeout = IReferenceClock_OnTimerUpdated(This);
-		LeaveCriticalSection( &This->m_csClock );
-		TRACE( "catch an event / timeout %lu\n", dwTimeout );
-
-		while ( PeekMessageA( &msg, (HWND)NULL, 0, 0, PM_REMOVE ) )
-		{
-			if ( msg.message == WM_QUIT )
-				goto quitthread;
-
-			if ( msg.hwnd != (HWND)NULL )
-			{
-				TranslateMessage( &msg );
-				DispatchMessageA( &msg );
-			}
-			else
-			{
-				switch ( msg.message )
-				{
-				case QUARTZ_MSG_ADDTIMER:
-				case QUARTZ_MSG_REMOVETIMER:
-					dwTimeout = 0;
-					break;
-				case QUARTZ_MSG_EXITTHREAD:
-					PostQuitMessage(0);
-					break;
-				default:
-					FIXME( "invalid message %04u\n", (unsigned)msg.message );
-					break;
-				}
-			}
-		}
-	}
-
-quitthread:
-	TRACE( "quit thread\n" );
-	return 0;
-}
-
-/****************************************************************************/
-
-static HRESULT WINAPI
-IReferenceClock_fnQueryInterface(IReferenceClock* iface,REFIID riid,void** ppobj)
-{
-	CSystemClock_THIS(iface,refclk);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IReferenceClock_fnAddRef(IReferenceClock* iface)
-{
-	CSystemClock_THIS(iface,refclk);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IReferenceClock_fnRelease(IReferenceClock* iface)
-{
-	CSystemClock_THIS(iface,refclk);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IReferenceClock_fnGetTime(IReferenceClock* iface,REFERENCE_TIME* prtTime)
-{
-	CSystemClock_THIS(iface,refclk);
-	DWORD	dwTimeCur;
-
-	TRACE( "(%p)->(%p)\n", This, prtTime );
-
-	if ( prtTime == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection( &This->m_csClock );
-
-	dwTimeCur = GetTickCount();
-	This->m_rtLast += (REFERENCE_TIME)(DWORD)(dwTimeCur - This->m_dwTimeLast) * (REFERENCE_TIME)10000;
-
-	This->m_dwTimeLast = dwTimeCur;
-
-	*prtTime = This->m_rtLast;
-
-	LeaveCriticalSection( &This->m_csClock );
-
-	return NOERROR;
-}
-
-static HRESULT WINAPI
-IReferenceClock_fnAdviseTime(IReferenceClock* iface,REFERENCE_TIME rtBase,REFERENCE_TIME rtStream,HEVENT hEvent,DWORD_PTR* pdwAdvCookie)
-{
-	CSystemClock_THIS(iface,refclk);
-	QUARTZ_TimerEntry*	pEntry;
-	HRESULT	hr;
-	REFERENCE_TIME	rtCur;
-
-	TRACE( "(%p)->()\n", This );
-
-	if ( pdwAdvCookie == NULL )
-		return E_POINTER;
-	if ( hEvent == (HANDLE)NULL )
-		return E_INVALIDARG;
-
-	EnterCriticalSection( &This->m_csClock );
-
-	*pdwAdvCookie = (DWORD_PTR)(This->m_dwAdvCookieNext ++);
-
-	hr = IReferenceClock_GetTime(iface,&rtCur);
-	if ( hr != NOERROR )
-		goto err;
-	if ( rtCur >= (rtBase+rtStream) )
-	{
-		SetEvent(hEvent);
-		hr = NOERROR;
-		goto err;
-	}
-
-	pEntry = IReferenceClock_AllocTimerEntry(This);
-	if ( pEntry == NULL )
-	{
-		hr = E_FAIL;
-		goto err;
-	}
-
-        pEntry->dwAdvCookie = *pdwAdvCookie;
-        pEntry->fPeriodic = FALSE;
-        pEntry->hEvent = hEvent;
-        pEntry->rtStart = rtBase;
-        pEntry->rtInterval = rtStream;
-
-	if ( !PostThreadMessageA(
-			This->m_idThreadTimer,
-			QUARTZ_MSG_ADDTIMER,
-			0, 0 ) )
-	{
-		pEntry->hEvent = (HANDLE)NULL;
-		hr = E_FAIL;
-		goto err;
-	}
-
-	hr = NOERROR;
-err:
-	LeaveCriticalSection( &This->m_csClock );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IReferenceClock_fnAdvisePeriodic(IReferenceClock* iface,REFERENCE_TIME rtStart,REFERENCE_TIME rtPeriod,HSEMAPHORE hSemaphore,DWORD_PTR* pdwAdvCookie)
-{
-	CSystemClock_THIS(iface,refclk);
-	QUARTZ_TimerEntry*	pEntry;
-	HRESULT	hr;
-
-	TRACE( "(%p)->()\n", This );
-
-	if ( pdwAdvCookie == NULL )
-		return E_POINTER;
-	if ( hSemaphore == (HSEMAPHORE)NULL )
-		return E_INVALIDARG;
-
-	EnterCriticalSection( &This->m_csClock );
-
-	*pdwAdvCookie = (DWORD_PTR)(This->m_dwAdvCookieNext ++);
-
-	pEntry = IReferenceClock_AllocTimerEntry(This);
-	if ( pEntry == NULL )
-	{
-		hr = E_FAIL;
-		goto err;
-	}
-
-        pEntry->dwAdvCookie = *pdwAdvCookie;
-        pEntry->fPeriodic = TRUE;
-        pEntry->hEvent = (HANDLE)hSemaphore;
-        pEntry->rtStart = rtStart;
-        pEntry->rtInterval = rtPeriod;
-
-	if ( !PostThreadMessageA(
-			This->m_idThreadTimer,
-			QUARTZ_MSG_ADDTIMER,
-			0, 0 ) )
-	{
-		pEntry->hEvent = (HANDLE)NULL;
-		hr = E_FAIL;
-		goto err;
-	}
-
-	hr = NOERROR;
-err:
-	LeaveCriticalSection( &This->m_csClock );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IReferenceClock_fnUnadvise(IReferenceClock* iface,DWORD_PTR dwAdvCookie)
-{
-	CSystemClock_THIS(iface,refclk);
-	QUARTZ_TimerEntry*	pEntry;
-
-	TRACE( "(%p)->(%lu)\n", This, (DWORD)dwAdvCookie );
-
-	EnterCriticalSection( &This->m_csClock );
-
-	pEntry = IReferenceClock_SearchTimer(This,(DWORD)dwAdvCookie);
-	if ( pEntry != NULL )
-	{
-		pEntry->hEvent = (HANDLE)NULL;
-	}
-
-	LeaveCriticalSection( &This->m_csClock );
-
-	return NOERROR;
-}
-
-static ICOM_VTABLE(IReferenceClock) irefclk =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IReferenceClock_fnQueryInterface,
-	IReferenceClock_fnAddRef,
-	IReferenceClock_fnRelease,
-	/* IReferenceClock fields */
-	IReferenceClock_fnGetTime,
-	IReferenceClock_fnAdviseTime,
-	IReferenceClock_fnAdvisePeriodic,
-	IReferenceClock_fnUnadvise,
-};
-
-
-HRESULT CSystemClock_InitIReferenceClock( CSystemClock* psc )
-{
-	HANDLE	hEvents[2];
-
-	TRACE("(%p)\n",psc);
-	ICOM_VTBL(&psc->refclk) = &irefclk;
-
-	InitializeCriticalSection( &psc->m_csClock );
-	psc->m_dwTimeLast = GetTickCount();
-	psc->m_rtLast = (REFERENCE_TIME)0;
-	psc->m_hThreadTimer = (HANDLE)NULL;
-	psc->m_hEventInit = (HANDLE)NULL;
-	psc->m_idThreadTimer = 0;
-	psc->m_dwAdvCookieNext = 1;
-	ZeroMemory( psc->m_timerEntries, sizeof(psc->m_timerEntries) );
-
-	psc->m_hEventInit = CreateEventA( NULL, TRUE, FALSE, NULL );
-	if ( psc->m_hEventInit == (HANDLE)NULL )
-		goto err;
-
-	psc->m_hThreadTimer = CreateThread(
-		NULL, 0,
-		IReferenceClock_TimerEntry,
-		psc, 0, &psc->m_idThreadTimer );
-
-	if ( psc->m_hThreadTimer == (HANDLE)NULL )
-	{
-		CloseHandle( psc->m_hEventInit );
-		psc->m_hEventInit = (HANDLE)NULL;
-		goto err;
-	}
-
-	hEvents[0] = psc->m_hEventInit;
-	hEvents[1] = psc->m_hThreadTimer;
-	if ( WaitForMultipleObjects( 2, hEvents, FALSE, INFINITE )
-			!= WAIT_OBJECT_0 )
-	{
-		CloseHandle( psc->m_hEventInit );
-		psc->m_hEventInit = (HANDLE)NULL;
-		CloseHandle( psc->m_hThreadTimer );
-		psc->m_hThreadTimer = (HANDLE)NULL;
-		goto err;
-	}
-
-	return NOERROR;
-
-err:
-	DeleteCriticalSection( &psc->m_csClock );
-	return E_FAIL;
-}
-
-void CSystemClock_UninitIReferenceClock( CSystemClock* psc )
-{
-	TRACE("(%p)\n",psc);
-
-	if ( psc->m_hThreadTimer != (HANDLE)NULL )
-	{
-		if ( PostThreadMessageA(
-			psc->m_idThreadTimer,
-			QUARTZ_MSG_EXITTHREAD,
-			0, 0 ) )
-		{
-			WaitForSingleObject( psc->m_hThreadTimer, INFINITE );
-		}
-		CloseHandle( psc->m_hThreadTimer );
-		psc->m_hThreadTimer = (HANDLE)NULL;
-	}
-
-	DeleteCriticalSection( &psc->m_csClock );
-}
diff --git a/dlls/quartz/sysclock.h b/dlls/quartz/sysclock.h
deleted file mode 100644
index bfaa556..0000000
--- a/dlls/quartz/sysclock.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef WINE_DSHOW_SYSCLOCK_H
-#define WINE_DSHOW_SYSCLOCK_H
-
-/*
-		implements CLSID_SystemClock.
-
-	- At least, the following interfaces should be implemented:
-
-	IUnknown
-		+ IReferenceClock
-
-*/
-
-#include "iunk.h"
-
-typedef struct SC_IReferenceClockImpl
-{
-	ICOM_VFIELD(IReferenceClock);
-} SC_IReferenceClockImpl;
-
-
-/* implementation limit */
-#define	WINE_QUARTZ_SYSCLOCK_TIMER_MAX	64
-
-typedef struct QUARTZ_TimerEntry
-{
-	DWORD			dwAdvCookie;
-	BOOL			fPeriodic;
-	HANDLE			hEvent;
-	REFERENCE_TIME	rtStart;
-	REFERENCE_TIME	rtInterval;
-} QUARTZ_TimerEntry;
-
-typedef struct CSystemClock
-{
-	QUARTZ_IUnkImpl	unk;
-	SC_IReferenceClockImpl	refclk;
-
-	/* IReferenceClock fields. */
-	CRITICAL_SECTION	m_csClock;
-	DWORD	m_dwTimeLast;
-	REFERENCE_TIME	m_rtLast;
-	HANDLE	m_hThreadTimer;
-	HANDLE	m_hEventInit;
-	DWORD	m_idThreadTimer;
-
-	DWORD			m_dwAdvCookieNext;
-	QUARTZ_TimerEntry	m_timerEntries[WINE_QUARTZ_SYSCLOCK_TIMER_MAX];
-} CSystemClock;
-
-#define	CSystemClock_THIS(iface,member)		CSystemClock*	This = ((CSystemClock*)(((char*)iface)-offsetof(CSystemClock,member)))
-
-HRESULT QUARTZ_CreateSystemClock(IUnknown* punkOuter,void** ppobj);
-
-HRESULT CSystemClock_InitIReferenceClock( CSystemClock* psc );
-void CSystemClock_UninitIReferenceClock( CSystemClock* psc );
-
-
-#endif  /* WINE_DSHOW_SYSCLOCK_H */
diff --git a/dlls/quartz/videoblt.c b/dlls/quartz/videoblt.c
deleted file mode 100644
index 07a01d3..0000000
--- a/dlls/quartz/videoblt.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "wingdi.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "videoblt.h"
-
-
-#define QUARTZ_LOBYTE(pix)	((BYTE)((pix)&0xff))
-#define QUARTZ_HIBYTE(pix)	((BYTE)((pix)>>8))
-
-void VIDEOBLT_Blt_888_to_332(
-	BYTE* pDst, LONG pitchDst,
-	const BYTE* pSrc, LONG pitchSrc,
-	LONG width, LONG height,
-	const RGBQUAD* prgbSrc, LONG nClrUsed )
-{
-	LONG x,y;
-
-	for ( y = 0; y < height; y++ )
-	{
-		for ( x = 0; x < width; x++ )
-		{
-			*pDst++ = ((pSrc[2]&0xe0)   ) |
-					  ((pSrc[1]&0xe0)>>3) |
-					  ((pSrc[0]&0xc0)>>6);
-			pSrc += 3;
-		}
-		pDst += pitchDst - width;
-		pSrc += pitchSrc - width*3;
-	}
-}
-
-void VIDEOBLT_Blt_888_to_555(
-	BYTE* pDst, LONG pitchDst,
-	const BYTE* pSrc, LONG pitchSrc,
-	LONG width, LONG height,
-	const RGBQUAD* prgbSrc, LONG nClrUsed )
-{
-	LONG x,y;
-	unsigned pix;
-
-	for ( y = 0; y < height; y++ )
-	{
-		for ( x = 0; x < width; x++ )
-		{
-			pix = ((unsigned)(pSrc[2]&0xf8)<<7) |
-				  ((unsigned)(pSrc[1]&0xf8)<<2) |
-				  ((unsigned)(pSrc[0]&0xf8)>>3);
-			*pDst++ = QUARTZ_LOBYTE(pix);
-			*pDst++ = QUARTZ_HIBYTE(pix);
-			pSrc += 3;
-		}
-		pDst += pitchDst - width*2;
-		pSrc += pitchSrc - width*3;
-	}
-}
-
-void VIDEOBLT_Blt_888_to_565(
-	BYTE* pDst, LONG pitchDst,
-	const BYTE* pSrc, LONG pitchSrc,
-	LONG width, LONG height,
-	const RGBQUAD* prgbSrc, LONG nClrUsed )
-{
-	LONG x,y;
-	unsigned pix;
-
-	for ( y = 0; y < height; y++ )
-	{
-		for ( x = 0; x < width; x++ )
-		{
-			pix = ((unsigned)(pSrc[2]&0xf8)<<8) |
-				  ((unsigned)(pSrc[1]&0xfc)<<3) |
-				  ((unsigned)(pSrc[0]&0xf8)>>3);
-			*pDst++ = QUARTZ_LOBYTE(pix);
-			*pDst++ = QUARTZ_HIBYTE(pix);
-			pSrc += 3;
-		}
-		pDst += pitchDst - width*2;
-		pSrc += pitchSrc - width*3;
-	}
-}
-
-void VIDEOBLT_Blt_888_to_8888(
-	BYTE* pDst, LONG pitchDst,
-	const BYTE* pSrc, LONG pitchSrc,
-	LONG width, LONG height,
-	const RGBQUAD* prgbSrc, LONG nClrUsed )
-{
-	LONG x,y;
-
-	for ( y = 0; y < height; y++ )
-	{
-		for ( x = 0; x < width; x++ )
-		{
-			*pDst++ = *pSrc++;
-			*pDst++ = *pSrc++;
-			*pDst++ = *pSrc++;
-			*pDst++ = (BYTE)0xff;
-		}
-		pDst += pitchDst - width*4;
-		pSrc += pitchSrc - width*3;
-	}
-}
-
diff --git a/dlls/quartz/videoblt.h b/dlls/quartz/videoblt.h
deleted file mode 100644
index 9d4e9a4..0000000
--- a/dlls/quartz/videoblt.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) Hidenori TAKESHIMA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef QUARTZ_VIDEOBLT_H
-#define QUARTZ_VIDEOBLT_H
-
-typedef void (*pVIDEOBLT_Blt)(
-	BYTE* pDst, LONG pitchDst,
-	const BYTE* pSrc, LONG pitchSrc,
-	LONG width, LONG height,
-	const RGBQUAD* prgbSrc, LONG nClrUsed );
-
-
-void VIDEOBLT_Blt_888_to_332(
-	BYTE* pDst, LONG pitchDst,
-	const BYTE* pSrc, LONG pitchSrc,
-	LONG width, LONG height,
-	const RGBQUAD* prgbSrc, LONG nClrUsed );
-void VIDEOBLT_Blt_888_to_555(
-	BYTE* pDst, LONG pitchDst,
-	const BYTE* pSrc, LONG pitchSrc,
-	LONG width, LONG height,
-	const RGBQUAD* prgbSrc, LONG nClrUsed );
-void VIDEOBLT_Blt_888_to_565(
-	BYTE* pDst, LONG pitchDst,
-	const BYTE* pSrc, LONG pitchSrc,
-	LONG width, LONG height,
-	const RGBQUAD* prgbSrc, LONG nClrUsed );
-void VIDEOBLT_Blt_888_to_8888(
-	BYTE* pDst, LONG pitchDst,
-	const BYTE* pSrc, LONG pitchSrc,
-	LONG width, LONG height,
-	const RGBQUAD* prgbSrc, LONG nClrUsed );
-
-
-#endif  /* QUARTZ_VIDEOBLT_H */
diff --git a/dlls/quartz/vidren.c b/dlls/quartz/vidren.c
deleted file mode 100644
index 9826884..0000000
--- a/dlls/quartz/vidren.c
+++ /dev/null
@@ -1,2440 +0,0 @@
-/*
- * Implements CLSID_VideoRenderer.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * FIXME - use clock
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "mmsystem.h"
-#include "strmif.h"
-#include "control.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-#include "amvideo.h"
-#include "evcode.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "vidren.h"
-#include "seekpass.h"
-
-
-static const WCHAR QUARTZ_VideoRenderer_Name[] =
-{ 'V','i','d','e','o',' ','R','e','n','d','e','r','e','r',0 };
-static const WCHAR QUARTZ_VideoRendererPin_Name[] =
-{ 'I','n',0 };
-
-#define VIDRENMSG_UPDATE	(WM_APP+0)
-#define VIDRENMSG_ENDTHREAD	(WM_APP+1)
-
-static const CHAR VIDREN_szWndClass[] = "Wine_VideoRenderer";
-static const CHAR VIDREN_szWndName[] = "Wine Video Renderer";
-
-
-
-
-static void VIDREN_OnPaint( CVideoRendererImpl* This, HWND hwnd )
-{
-	PAINTSTRUCT ps;
-	const VIDEOINFOHEADER* pinfo;
-	const AM_MEDIA_TYPE* pmt;
-
-	TRACE("(%p,%08x)\n",This,hwnd);
-
-	if ( !BeginPaint( hwnd, &ps ) )
-		return;
-
-	pmt = This->pPin->pin.pmtConn;
-	if ( (!This->m_bSampleIsValid) || pmt == NULL )
-		goto err;
-
-	pinfo = (const VIDEOINFOHEADER*)pmt->pbFormat;
-
-	StretchDIBits(
-		ps.hdc,
-		0, 0,
-		abs(pinfo->bmiHeader.biWidth), abs(pinfo->bmiHeader.biHeight),
-		0, 0,
-		abs(pinfo->bmiHeader.biWidth), abs(pinfo->bmiHeader.biHeight),
-		This->m_pSampleData, (BITMAPINFO*)(&pinfo->bmiHeader),
-		DIB_RGB_COLORS, SRCCOPY );
-
-err:
-	EndPaint( hwnd, &ps );
-}
-
-static void VIDREN_OnQueryNewPalette( CVideoRendererImpl* This, HWND hwnd )
-{
-	FIXME("(%p,%08x)\n",This,hwnd);
-}
-
-static void VIDREN_OnUpdate( CVideoRendererImpl* This, HWND hwnd )
-{
-	MSG	msg;
-
-	TRACE("(%p,%08x)\n",This,hwnd);
-
-	InvalidateRect(hwnd,NULL,FALSE);
-	UpdateWindow(hwnd);
-
-	/* FIXME */
-	while ( PeekMessageA(&msg,hwnd,
-		VIDRENMSG_UPDATE,VIDRENMSG_UPDATE,
-		PM_REMOVE) != FALSE )
-	{
-		/* discard this message. */
-	}
-}
-
-
-static LRESULT CALLBACK
-VIDREN_WndProc(
-	HWND hwnd, UINT message,
-	WPARAM wParam, LPARAM lParam )
-{
-	CVideoRendererImpl*	This = (CVideoRendererImpl*)
-		GetWindowLongA( hwnd, 0L );
-
-	TRACE("(%p) - %u/%u/%ld\n",This,message,wParam,lParam);
-
-	if ( message == WM_NCCREATE )
-	{
-		This = (CVideoRendererImpl*)(((CREATESTRUCTA*)lParam)->lpCreateParams);
-		SetWindowLongA( hwnd, 0L, (LONG)This );
-		This->m_hwnd = hwnd;
-	}
-
-	if ( message == WM_NCDESTROY )
-	{
-		PostQuitMessage(0);
-		This->m_hwnd = (HWND)NULL;
-		SetWindowLongA( hwnd, 0L, (LONG)NULL );
-		This = NULL;
-	}
-
-	if ( This != NULL )
-	{
-		switch ( message )
-		{
-		case WM_PAINT:
-			TRACE("WM_PAINT begin\n");
-			EnterCriticalSection( &This->m_csReceive );
-			VIDREN_OnPaint( This, hwnd );
-			LeaveCriticalSection( &This->m_csReceive );
-			TRACE("WM_PAINT end\n");
-			return 0;
-		case WM_CLOSE:
-			ShowWindow( hwnd, SW_HIDE );
-			return 0;
-		case WM_PALETTECHANGED:
-			if ( hwnd == (HWND)wParam )
-				break;
-			/* fall through */
-		case WM_QUERYNEWPALETTE:
-			VIDREN_OnQueryNewPalette( This, hwnd );
-			break;
-		case VIDRENMSG_UPDATE:
-			VIDREN_OnUpdate( This, hwnd );
-			return 0;
-		case VIDRENMSG_ENDTHREAD:
-			DestroyWindow(hwnd);
-			return 0;
-		default:
-			break;
-		}
-	}
-
-	return DefWindowProcA( hwnd, message, wParam, lParam );
-}
-
-static BOOL VIDREN_Register( HINSTANCE hInst )
-{
-	WNDCLASSA	wc;
-	ATOM	atom;
-
-	wc.style = 0;
-	wc.lpfnWndProc = VIDREN_WndProc;
-	wc.cbClsExtra = 0;
-	wc.cbWndExtra = sizeof(LONG);
-	wc.hInstance = hInst;
-	wc.hIcon = LoadIconA((HINSTANCE)NULL,IDI_WINLOGOA);
-	wc.hCursor = LoadCursorA((HINSTANCE)NULL,IDC_ARROWA);
-	wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
-	wc.lpszMenuName = NULL;
-	wc.lpszClassName = VIDREN_szWndClass;
-
-	atom = RegisterClassA( &wc );
-	if ( atom != (ATOM)0 )
-		return TRUE;
-
-	/* FIXME */
-	return FALSE;
-}
-
-static HWND VIDREN_Create( HWND hwndOwner, CVideoRendererImpl* This )
-{
-	HINSTANCE hInst = (HINSTANCE)GetModuleHandleA(NULL);
-	const VIDEOINFOHEADER* pinfo;
-	DWORD	dwExStyle = 0;
-	DWORD	dwStyle = WS_POPUP|WS_CAPTION|WS_CLIPCHILDREN;
-	RECT	rcWnd;
-	HWND	hwnd;
-
-	if ( !VIDREN_Register( hInst ) )
-		return (HWND)NULL;
-
-	pinfo = (const VIDEOINFOHEADER*)This->pPin->pin.pmtConn->pbFormat;
-
-	TRACE("width %ld, height %ld\n", pinfo->bmiHeader.biWidth, pinfo->bmiHeader.biHeight);
-
-	rcWnd.left = 0;
-	rcWnd.top = 0;
-	rcWnd.right = pinfo->bmiHeader.biWidth;
-	rcWnd.bottom = abs(pinfo->bmiHeader.biHeight);
-	AdjustWindowRectEx( &rcWnd, dwStyle, FALSE, dwExStyle );
-
-	TRACE("window width %d,height %d\n",
-		rcWnd.right-rcWnd.left,rcWnd.bottom-rcWnd.top);
-
-	hwnd = CreateWindowExA(
-		dwExStyle,
-		VIDREN_szWndClass, VIDREN_szWndName,
-		dwStyle,
-		100,100, /* FIXME */
-		rcWnd.right-rcWnd.left, rcWnd.bottom-rcWnd.top,
-		hwndOwner, (HMENU)NULL,
-		hInst, (LPVOID)This );
-	if ( hwnd != (HWND)NULL )
-		ShowWindow(hwnd,SW_SHOW);
-
-	return hwnd;
-}
-
-static DWORD WINAPI VIDREN_ThreadEntry( LPVOID pv )
-{
-	CVideoRendererImpl*	This = (CVideoRendererImpl*)pv;
-	MSG	msg;
-
-	TRACE("(%p)\n",This);
-	if ( !VIDREN_Create( (HWND)NULL, This ) )
-		return 0;
-	TRACE("VIDREN_Create succeeded\n");
-
-	SetEvent( This->m_hEventInit );
-	TRACE("Enter message loop\n");
-
-	while ( GetMessageA(&msg,(HWND)NULL,0,0) )
-	{
-		TranslateMessage(&msg);
-		DispatchMessageA(&msg);
-	}
-
-	return 0;
-}
-
-static HRESULT VIDREN_StartThread( CVideoRendererImpl* This )
-{
-	DWORD dwRes;
-	DWORD dwThreadId;
-	HANDLE	hEvents[2];
-
-	if ( This->m_hEventInit != (HANDLE)NULL ||
-		 This->m_hwnd != (HWND)NULL ||
-		 This->m_hThread != (HANDLE)NULL ||
-		 This->pPin->pin.pmtConn == NULL )
-		return E_UNEXPECTED;
-
-	This->m_hEventInit = CreateEventA(NULL,TRUE,FALSE,NULL);
-	if ( This->m_hEventInit == (HANDLE)NULL )
-		return E_OUTOFMEMORY;
-
-	This->m_hThread = CreateThread(
-		NULL, 0,
-		VIDREN_ThreadEntry,
-		(LPVOID)This,
-		0, &dwThreadId );
-	if ( This->m_hThread == (HANDLE)NULL )
-		return E_FAIL;
-
-	hEvents[0] = This->m_hEventInit;
-	hEvents[1] = This->m_hThread;
-
-	dwRes = WaitForMultipleObjects(2,hEvents,FALSE,INFINITE);
-	if ( dwRes != WAIT_OBJECT_0 )
-		return E_FAIL;
-
-	return S_OK;
-}
-
-static void VIDREN_EndThread( CVideoRendererImpl* This )
-{
-	if ( This->m_hwnd != (HWND)NULL )
-		PostMessageA( This->m_hwnd, VIDRENMSG_ENDTHREAD, 0, 0 );
-
-	if ( This->m_hThread != (HANDLE)NULL )
-	{
-		WaitForSingleObject( This->m_hThread, INFINITE );
-		CloseHandle( This->m_hThread );
-		This->m_hThread = (HANDLE)NULL;
-	}
-	if ( This->m_hEventInit != (HANDLE)NULL )
-	{
-		CloseHandle( This->m_hEventInit );
-		This->m_hEventInit = (HANDLE)NULL;
-	}
-}
-
-
-
-/***************************************************************************
- *
- *	CVideoRendererImpl methods
- *
- */
-
-static HRESULT CVideoRendererImpl_OnActive( CBaseFilterImpl* pImpl )
-{
-	CVideoRendererImpl_THIS(pImpl,basefilter);
-
-	TRACE( "(%p)\n", This );
-
-	This->m_bSampleIsValid = FALSE;
-
-	return NOERROR;
-}
-
-static HRESULT CVideoRendererImpl_OnInactive( CBaseFilterImpl* pImpl )
-{
-	CVideoRendererImpl_THIS(pImpl,basefilter);
-
-	TRACE( "(%p)\n", This );
-
-	EnterCriticalSection( &This->m_csReceive );
-	This->m_bSampleIsValid = FALSE;
-	LeaveCriticalSection( &This->m_csReceive );
-
-	return NOERROR;
-}
-
-static const CBaseFilterHandlers filterhandlers =
-{
-	CVideoRendererImpl_OnActive, /* pOnActive */
-	CVideoRendererImpl_OnInactive, /* pOnInactive */
-	NULL, /* pOnStop */
-};
-
-/***************************************************************************
- *
- *	CVideoRendererPinImpl methods
- *
- */
-
-static HRESULT CVideoRendererPinImpl_OnPreConnect( CPinBaseImpl* pImpl, IPin* pPin )
-{
-	CVideoRendererPinImpl_THIS(pImpl,pin);
-
-	TRACE("(%p,%p)\n",This,pPin);
-
-	return NOERROR;
-}
-
-static HRESULT CVideoRendererPinImpl_OnPostConnect( CPinBaseImpl* pImpl, IPin* pPin )
-{
-	CVideoRendererPinImpl_THIS(pImpl,pin);
-	const VIDEOINFOHEADER* pinfo;
-	HRESULT hr;
-
-	TRACE("(%p,%p)\n",This,pPin);
-
-	if ( This->pRender->m_pSampleData != NULL )
-	{
-		QUARTZ_FreeMem(This->pRender->m_pSampleData);
-		This->pRender->m_pSampleData = NULL;
-	}
-	This->pRender->m_cbSampleData = 0;
-	This->pRender->m_bSampleIsValid = FALSE;
-
-	pinfo = (const VIDEOINFOHEADER*)This->pin.pmtConn->pbFormat;
-	if ( pinfo == NULL )
-		return E_FAIL;
-
-	This->pRender->m_bSampleIsValid = FALSE;
-	This->pRender->m_cbSampleData = DIBSIZE(pinfo->bmiHeader);
-	This->pRender->m_pSampleData = (BYTE*)QUARTZ_AllocMem(This->pRender->m_cbSampleData);
-	if ( This->pRender->m_pSampleData == NULL )
-		return E_OUTOFMEMORY;
-
-	hr = VIDREN_StartThread(This->pRender);
-	if ( FAILED(hr) )
-		return hr;
-
-	return NOERROR;
-}
-
-static HRESULT CVideoRendererPinImpl_OnDisconnect( CPinBaseImpl* pImpl )
-{
-	CVideoRendererPinImpl_THIS(pImpl,pin);
-
-	TRACE("(%p)\n",This);
-
-	VIDREN_EndThread(This->pRender);
-
-	if ( This->pRender->m_pSampleData != NULL )
-	{
-		QUARTZ_FreeMem(This->pRender->m_pSampleData);
-		This->pRender->m_pSampleData = NULL;
-	}
-	This->pRender->m_cbSampleData = 0;
-	This->pRender->m_bSampleIsValid = FALSE;
-
-	if ( This->meminput.pAllocator != NULL )
-	{
-		IMemAllocator_Decommit(This->meminput.pAllocator);
-		IMemAllocator_Release(This->meminput.pAllocator);
-		This->meminput.pAllocator = NULL;
-	}
-
-	return NOERROR;
-}
-
-static HRESULT CVideoRendererPinImpl_CheckMediaType( CPinBaseImpl* pImpl, const AM_MEDIA_TYPE* pmt )
-{
-	CVideoRendererPinImpl_THIS(pImpl,pin);
-	const VIDEOINFOHEADER* pinfo;
-
-	TRACE("(%p,%p)\n",This,pmt);
-
-	if ( !IsEqualGUID( &pmt->majortype, &MEDIATYPE_Video ) )
-		return E_FAIL;
-	if ( !IsEqualGUID( &pmt->formattype, &FORMAT_VideoInfo ) )
-		return E_FAIL;
-	/*
-	 * check subtype.
-	 */
-	if ( !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB555 ) &&
-	     !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB565 ) &&
-	     !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB24 ) &&
-	     !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB32 ) )
-		return E_FAIL;
-
-	/****
-	 *
-	 *
-	if ( !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB8 ) &&
-	     !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB555 ) &&
-	     !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB565 ) &&
-	     !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB24 ) &&
-	     !IsEqualGUID( &pmt->subtype, &MEDIASUBTYPE_RGB32 ) )
-		return E_FAIL;
-	 *
-	 ****/
-
-	pinfo = (const VIDEOINFOHEADER*)pmt->pbFormat;
-	if ( pinfo == NULL ||
-		 pinfo->bmiHeader.biSize < sizeof(BITMAPINFOHEADER) ||
-		 pinfo->bmiHeader.biWidth <= 0 ||
-		 pinfo->bmiHeader.biHeight == 0 ||
-		 pinfo->bmiHeader.biPlanes != 1 ||
-		 pinfo->bmiHeader.biCompression != 0 )
-		return E_FAIL;
-
-	return NOERROR;
-}
-
-static HRESULT CVideoRendererPinImpl_Receive( CPinBaseImpl* pImpl, IMediaSample* pSample )
-{
-	CVideoRendererPinImpl_THIS(pImpl,pin);
-	HWND hwnd;
-	BYTE*	pData = NULL;
-	LONG	lLength;
-	HRESULT hr;
-
-	TRACE( "(%p,%p)\n",This,pSample );
-
-	hwnd = This->pRender->m_hwnd;
-	if ( hwnd == (HWND)NULL ||
-		 This->pRender->m_hThread == (HWND)NULL )
-		return E_UNEXPECTED;
-	if ( This->pRender->m_fInFlush )
-		return S_FALSE;
-	if ( pSample == NULL )
-		return E_POINTER;
-
-	/* FIXME - wait/skip/qualitycontrol */
-	
-
-	/* duplicate this sample. */
-	hr = IMediaSample_GetPointer(pSample,&pData);
-	if ( FAILED(hr) )
-		return hr;
-	lLength = (LONG)IMediaSample_GetActualDataLength(pSample);
-	if ( lLength <= 0 || (lLength < (LONG)This->pRender->m_cbSampleData) )
-	{
-		ERR( "invalid length: %ld\n", lLength );
-		return NOERROR;
-	}
-
-	memcpy(This->pRender->m_pSampleData,pData,lLength);
-	This->pRender->m_bSampleIsValid = TRUE;
-	PostMessageA( hwnd, VIDRENMSG_UPDATE, 0, 0 );
-
-	return NOERROR;
-}
-
-static HRESULT CVideoRendererPinImpl_ReceiveCanBlock( CPinBaseImpl* pImpl )
-{
-	CVideoRendererPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	/* might block. */
-	return S_OK;
-}
-
-static HRESULT CVideoRendererPinImpl_EndOfStream( CPinBaseImpl* pImpl )
-{
-	CVideoRendererPinImpl_THIS(pImpl,pin);
-
-	FIXME( "(%p)\n", This );
-
-	This->pRender->m_fInFlush = FALSE;
-
-	/* FIXME - don't notify twice until stopped or seeked. */
-	return CBaseFilterImpl_MediaEventNotify(
-		&This->pRender->basefilter, EC_COMPLETE,
-		(LONG_PTR)S_OK, (LONG_PTR)(IBaseFilter*)(This->pRender) );
-}
-
-static HRESULT CVideoRendererPinImpl_BeginFlush( CPinBaseImpl* pImpl )
-{
-	CVideoRendererPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	This->pRender->m_fInFlush = TRUE;
-	EnterCriticalSection( &This->pRender->m_csReceive );
-	This->pRender->m_bSampleIsValid = FALSE;
-	LeaveCriticalSection( &This->pRender->m_csReceive );
-
-	return NOERROR;
-}
-
-static HRESULT CVideoRendererPinImpl_EndFlush( CPinBaseImpl* pImpl )
-{
-	CVideoRendererPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	This->pRender->m_fInFlush = FALSE;
-
-	return NOERROR;
-}
-
-static HRESULT CVideoRendererPinImpl_NewSegment( CPinBaseImpl* pImpl, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double rate )
-{
-	CVideoRendererPinImpl_THIS(pImpl,pin);
-
-	FIXME( "(%p)\n", This );
-
-	This->pRender->m_fInFlush = FALSE;
-
-	return NOERROR;
-}
-
-
-
-
-static const CBasePinHandlers pinhandlers =
-{
-	CVideoRendererPinImpl_OnPreConnect, /* pOnPreConnect */
-	CVideoRendererPinImpl_OnPostConnect, /* pOnPostConnect */
-	CVideoRendererPinImpl_OnDisconnect, /* pOnDisconnect */
-	CVideoRendererPinImpl_CheckMediaType, /* pCheckMediaType */
-	NULL, /* pQualityNotify */
-	CVideoRendererPinImpl_Receive, /* pReceive */
-	CVideoRendererPinImpl_ReceiveCanBlock, /* pReceiveCanBlock */
-	CVideoRendererPinImpl_EndOfStream, /* pEndOfStream */
-	CVideoRendererPinImpl_BeginFlush, /* pBeginFlush */
-	CVideoRendererPinImpl_EndFlush, /* pEndFlush */
-	CVideoRendererPinImpl_NewSegment, /* pNewSegment */
-};
-
-
-/***************************************************************************
- *
- *	new/delete CVideoRendererImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry FilterIFEntries[] =
-{
-  { &IID_IPersist, offsetof(CVideoRendererImpl,basefilter)-offsetof(CVideoRendererImpl,unk) },
-  { &IID_IMediaFilter, offsetof(CVideoRendererImpl,basefilter)-offsetof(CVideoRendererImpl,unk) },
-  { &IID_IBaseFilter, offsetof(CVideoRendererImpl,basefilter)-offsetof(CVideoRendererImpl,unk) },
-  { &IID_IBasicVideo, offsetof(CVideoRendererImpl,basvid)-offsetof(CVideoRendererImpl,unk) },
-  { &IID_IVideoWindow, offsetof(CVideoRendererImpl,vidwin)-offsetof(CVideoRendererImpl,unk) },
-};
-
-static HRESULT CVideoRendererImpl_OnQueryInterface(
-	IUnknown* punk, const IID* piid, void** ppobj )
-{
-	CVideoRendererImpl_THIS(punk,unk);
-
-	if ( This->pSeekPass == NULL )
-		return E_NOINTERFACE;
-
-	if ( IsEqualGUID( &IID_IMediaPosition, piid ) ||
-		 IsEqualGUID( &IID_IMediaSeeking, piid ) )
-	{
-		TRACE( "IMediaSeeking(or IMediaPosition) is queried\n" );
-		return IUnknown_QueryInterface( (IUnknown*)(&This->pSeekPass->unk), piid, ppobj );
-	}
-
-	return E_NOINTERFACE;
-}
-
-static void QUARTZ_DestroyVideoRenderer(IUnknown* punk)
-{
-	CVideoRendererImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-	CVideoRendererImpl_OnInactive(&This->basefilter);
-	VIDREN_EndThread(This);
-
-	if ( This->pPin != NULL )
-	{
-		IUnknown_Release(This->pPin->unk.punkControl);
-		This->pPin = NULL;
-	}
-	if ( This->pSeekPass != NULL )
-	{
-		IUnknown_Release((IUnknown*)&This->pSeekPass->unk);
-		This->pSeekPass = NULL;
-	}
-
-	CVideoRendererImpl_UninitIBasicVideo(This);
-	CVideoRendererImpl_UninitIVideoWindow(This);
-	CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
-
-	DeleteCriticalSection( &This->m_csReceive );
-}
-
-HRESULT QUARTZ_CreateVideoRenderer(IUnknown* punkOuter,void** ppobj)
-{
-	CVideoRendererImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	This = (CVideoRendererImpl*)
-		QUARTZ_AllocObj( sizeof(CVideoRendererImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	This->pSeekPass = NULL;
-	This->pPin = NULL;
-	This->m_fInFlush = FALSE;
-
-	This->m_hEventInit = (HANDLE)NULL;
-	This->m_hThread = (HANDLE)NULL;
-	This->m_hwnd = (HWND)NULL;
-	This->m_bSampleIsValid = FALSE;
-	This->m_pSampleData = NULL;
-	This->m_cbSampleData = 0;
-
-	QUARTZ_IUnkInit( &This->unk, punkOuter );
-	This->qiext.pNext = NULL;
-	This->qiext.pOnQueryInterface = &CVideoRendererImpl_OnQueryInterface;
-	QUARTZ_IUnkAddDelegation( &This->unk, &This->qiext );
-
-	hr = CBaseFilterImpl_InitIBaseFilter(
-		&This->basefilter,
-		This->unk.punkControl,
-		&CLSID_VideoRenderer,
-		QUARTZ_VideoRenderer_Name,
-		&filterhandlers );
-	if ( SUCCEEDED(hr) )
-	{
-		hr = CVideoRendererImpl_InitIBasicVideo(This);
-		if ( SUCCEEDED(hr) )
-		{
-			hr = CVideoRendererImpl_InitIVideoWindow(This);
-			if ( FAILED(hr) )
-			{
-				CVideoRendererImpl_UninitIBasicVideo(This);
-			}
-		}
-		if ( FAILED(hr) )
-		{
-			CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = FilterIFEntries;
-	This->unk.dwEntries = sizeof(FilterIFEntries)/sizeof(FilterIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyVideoRenderer;
-
-	InitializeCriticalSection( &This->m_csReceive );
-
-	hr = QUARTZ_CreateVideoRendererPin(
-		This,
-		&This->basefilter.csFilter,
-		&This->m_csReceive,
-		&This->pPin );
-	if ( SUCCEEDED(hr) )
-		hr = QUARTZ_CompList_AddComp(
-			This->basefilter.pInPins,
-			(IUnknown*)&This->pPin->pin,
-			NULL, 0 );
-	if ( SUCCEEDED(hr) )
-		hr = QUARTZ_CreateSeekingPassThruInternal(
-			(IUnknown*)&(This->unk), &This->pSeekPass,
-			TRUE, (IPin*)&(This->pPin->pin) );
-
-	if ( FAILED(hr) )
-	{
-		IUnknown_Release( This->unk.punkControl );
-		return hr;
-	}
-
-	*ppobj = (void*)&(This->unk);
-
-	return S_OK;
-}
-
-/***************************************************************************
- *
- *	new/delete CVideoRendererPinImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry PinIFEntries[] =
-{
-  { &IID_IPin, offsetof(CVideoRendererPinImpl,pin)-offsetof(CVideoRendererPinImpl,unk) },
-  { &IID_IMemInputPin, offsetof(CVideoRendererPinImpl,meminput)-offsetof(CVideoRendererPinImpl,unk) },
-};
-
-static void QUARTZ_DestroyVideoRendererPin(IUnknown* punk)
-{
-	CVideoRendererPinImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	CPinBaseImpl_UninitIPin( &This->pin );
-	CMemInputPinBaseImpl_UninitIMemInputPin( &This->meminput );
-}
-
-HRESULT QUARTZ_CreateVideoRendererPin(
-        CVideoRendererImpl* pFilter,
-        CRITICAL_SECTION* pcsPin,
-        CRITICAL_SECTION* pcsPinReceive,
-        CVideoRendererPinImpl** ppPin)
-{
-	CVideoRendererPinImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p,%p,%p)\n",pFilter,pcsPin,pcsPinReceive,ppPin);
-
-	This = (CVideoRendererPinImpl*)
-		QUARTZ_AllocObj( sizeof(CVideoRendererPinImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &This->unk, NULL );
-	This->pRender = pFilter;
-
-	hr = CPinBaseImpl_InitIPin(
-		&This->pin,
-		This->unk.punkControl,
-		pcsPin, pcsPinReceive,
-		&pFilter->basefilter,
-		QUARTZ_VideoRendererPin_Name,
-		FALSE,
-		&pinhandlers );
-
-	if ( SUCCEEDED(hr) )
-	{
-		hr = CMemInputPinBaseImpl_InitIMemInputPin(
-			&This->meminput,
-			This->unk.punkControl,
-			&This->pin );
-		if ( FAILED(hr) )
-		{
-			CPinBaseImpl_UninitIPin( &This->pin );
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = PinIFEntries;
-	This->unk.dwEntries = sizeof(PinIFEntries)/sizeof(PinIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyVideoRendererPin;
-
-	*ppPin = This;
-
-	TRACE("returned successfully.\n");
-
-	return S_OK;
-}
-
-/***************************************************************************
- *
- *	CVideoRendererImpl::IBasicVideo
- *
- */
-
-
-static HRESULT WINAPI
-IBasicVideo_fnQueryInterface(IBasicVideo* iface,REFIID riid,void** ppobj)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IBasicVideo_fnAddRef(IBasicVideo* iface)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IBasicVideo_fnRelease(IBasicVideo* iface)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetTypeInfoCount(IBasicVideo* iface,UINT* pcTypeInfo)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetTypeInfo(IBasicVideo* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetIDsOfNames(IBasicVideo* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnInvoke(IBasicVideo* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-static HRESULT WINAPI
-IBasicVideo_fnget_AvgTimePerFrame(IBasicVideo* iface,REFTIME* prefTime)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_BitRate(IBasicVideo* iface,long* plRate)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_BitErrorRate(IBasicVideo* iface,long* plRate)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_VideoWidth(IBasicVideo* iface,long* plWidth)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_VideoHeight(IBasicVideo* iface,long* plHeight)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_SourceLeft(IBasicVideo* iface,long lLeft)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_SourceLeft(IBasicVideo* iface,long* plLeft)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_SourceWidth(IBasicVideo* iface,long lWidth)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_SourceWidth(IBasicVideo* iface,long* plWidth)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_SourceTop(IBasicVideo* iface,long lTop)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_SourceTop(IBasicVideo* iface,long* plTop)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_SourceHeight(IBasicVideo* iface,long lHeight)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_SourceHeight(IBasicVideo* iface,long* plHeight)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_DestinationLeft(IBasicVideo* iface,long lLeft)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_DestinationLeft(IBasicVideo* iface,long* plLeft)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_DestinationWidth(IBasicVideo* iface,long lWidth)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_DestinationWidth(IBasicVideo* iface,long* plWidth)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_DestinationTop(IBasicVideo* iface,long lTop)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_DestinationTop(IBasicVideo* iface,long* plTop)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnput_DestinationHeight(IBasicVideo* iface,long lHeight)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnget_DestinationHeight(IBasicVideo* iface,long* plHeight)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnSetSourcePosition(IBasicVideo* iface,long lLeft,long lTop,long lWidth,long lHeight)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetSourcePosition(IBasicVideo* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnSetDefaultSourcePosition(IBasicVideo* iface)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnSetDestinationPosition(IBasicVideo* iface,long lLeft,long lTop,long lWidth,long lHeight)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetDestinationPosition(IBasicVideo* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnSetDefaultDestinationPosition(IBasicVideo* iface)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetVideoSize(IBasicVideo* iface,long* plWidth,long* plHeight)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetVideoPaletteEntries(IBasicVideo* iface,long lStart,long lCount,long* plRet,long* plPaletteEntry)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnGetCurrentImage(IBasicVideo* iface,long* plBufferSize,long* plDIBBuffer)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnIsUsingDefaultSource(IBasicVideo* iface)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IBasicVideo_fnIsUsingDefaultDestination(IBasicVideo* iface)
-{
-	CVideoRendererImpl_THIS(iface,basvid);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-
-
-static ICOM_VTABLE(IBasicVideo) ibasicvideo =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IBasicVideo_fnQueryInterface,
-	IBasicVideo_fnAddRef,
-	IBasicVideo_fnRelease,
-	/* IDispatch fields */
-	IBasicVideo_fnGetTypeInfoCount,
-	IBasicVideo_fnGetTypeInfo,
-	IBasicVideo_fnGetIDsOfNames,
-	IBasicVideo_fnInvoke,
-	/* IBasicVideo fields */
-	IBasicVideo_fnget_AvgTimePerFrame,
-	IBasicVideo_fnget_BitRate,
-	IBasicVideo_fnget_BitErrorRate,
-	IBasicVideo_fnget_VideoWidth,
-	IBasicVideo_fnget_VideoHeight,
-	IBasicVideo_fnput_SourceLeft,
-	IBasicVideo_fnget_SourceLeft,
-	IBasicVideo_fnput_SourceWidth,
-	IBasicVideo_fnget_SourceWidth,
-	IBasicVideo_fnput_SourceTop,
-	IBasicVideo_fnget_SourceTop,
-	IBasicVideo_fnput_SourceHeight,
-	IBasicVideo_fnget_SourceHeight,
-	IBasicVideo_fnput_DestinationLeft,
-	IBasicVideo_fnget_DestinationLeft,
-	IBasicVideo_fnput_DestinationWidth,
-	IBasicVideo_fnget_DestinationWidth,
-	IBasicVideo_fnput_DestinationTop,
-	IBasicVideo_fnget_DestinationTop,
-	IBasicVideo_fnput_DestinationHeight,
-	IBasicVideo_fnget_DestinationHeight,
-	IBasicVideo_fnSetSourcePosition,
-	IBasicVideo_fnGetSourcePosition,
-	IBasicVideo_fnSetDefaultSourcePosition,
-	IBasicVideo_fnSetDestinationPosition,
-	IBasicVideo_fnGetDestinationPosition,
-	IBasicVideo_fnSetDefaultDestinationPosition,
-	IBasicVideo_fnGetVideoSize,
-	IBasicVideo_fnGetVideoPaletteEntries,
-	IBasicVideo_fnGetCurrentImage,
-	IBasicVideo_fnIsUsingDefaultSource,
-	IBasicVideo_fnIsUsingDefaultDestination,
-};
-
-
-HRESULT CVideoRendererImpl_InitIBasicVideo( CVideoRendererImpl* This )
-{
-	TRACE("(%p)\n",This);
-	ICOM_VTBL(&This->basvid) = &ibasicvideo;
-
-	return NOERROR;
-}
-
-void CVideoRendererImpl_UninitIBasicVideo( CVideoRendererImpl* This )
-{
-	TRACE("(%p)\n",This);
-}
-
-/***************************************************************************
- *
- *	CVideoRendererImpl::IVideoWindow
- *
- */
-
-
-static HRESULT WINAPI
-IVideoWindow_fnQueryInterface(IVideoWindow* iface,REFIID riid,void** ppobj)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
-}
-
-static ULONG WINAPI
-IVideoWindow_fnAddRef(IVideoWindow* iface)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_AddRef(This->unk.punkControl);
-}
-
-static ULONG WINAPI
-IVideoWindow_fnRelease(IVideoWindow* iface)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-
-	TRACE("(%p)->()\n",This);
-
-	return IUnknown_Release(This->unk.punkControl);
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetTypeInfoCount(IVideoWindow* iface,UINT* pcTypeInfo)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetTypeInfo(IVideoWindow* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetIDsOfNames(IVideoWindow* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnInvoke(IVideoWindow* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-
-	FIXME("(%p)->()\n",This);
-
-	return E_NOTIMPL;
-}
-
-
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Caption(IVideoWindow* iface,BSTR strCaption)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Caption(IVideoWindow* iface,BSTR* pstrCaption)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_WindowStyle(IVideoWindow* iface,long lStyle)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	SetLastError(0);
-	if ( SetWindowLongA( This->m_hwnd, GWL_STYLE, (DWORD)lStyle ) == 0 &&
-		 GetLastError() != 0 )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_WindowStyle(IVideoWindow* iface,long* plStyle)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	*plStyle = (LONG)GetWindowLongA( This->m_hwnd, GWL_STYLE );
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_WindowStyleEx(IVideoWindow* iface,long lExStyle)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	SetLastError(0);
-	if ( SetWindowLongA( This->m_hwnd, GWL_EXSTYLE, (DWORD)lExStyle ) == 0 &&
-		 GetLastError() != 0 )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_WindowStyleEx(IVideoWindow* iface,long* plExStyle)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	if ( plExStyle == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	*plExStyle = (LONG)GetWindowLongA( This->m_hwnd, GWL_EXSTYLE );
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_AutoShow(IVideoWindow* iface,long lAutoShow)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_AutoShow(IVideoWindow* iface,long* plAutoShow)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_WindowState(IVideoWindow* iface,long lState)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_WindowState(IVideoWindow* iface,long* plState)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_BackgroundPalette(IVideoWindow* iface,long lBackPal)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_BackgroundPalette(IVideoWindow* iface,long* plBackPal)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Visible(IVideoWindow* iface,long lVisible)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Visible(IVideoWindow* iface,long* plVisible)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Left(IVideoWindow* iface,long lLeft)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-	RECT	rc;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	if ( ! GetWindowRect( This->m_hwnd, &rc ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	if ( ! MoveWindow( This->m_hwnd, lLeft, rc.top, rc.right-rc.left, rc.bottom-rc.top, TRUE ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Left(IVideoWindow* iface,long* plLeft)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-	RECT	rc;
-
-	FIXME("(%p)->()\n",This);
-
-	if ( plLeft == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	if ( ! GetWindowRect( This->m_hwnd, &rc ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	*plLeft = rc.left;
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Width(IVideoWindow* iface,long lWidth)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-	RECT	rc;
-
-	FIXME("(%p)->()\n",This);
-
-	if ( lWidth < 0 )
-		return E_INVALIDARG;
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	if ( ! GetWindowRect( This->m_hwnd, &rc ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	if ( ! MoveWindow( This->m_hwnd, rc.left, rc.top, lWidth, rc.bottom-rc.top, TRUE ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Width(IVideoWindow* iface,long* plWidth)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-	RECT	rc;
-
-	FIXME("(%p)->()\n",This);
-
-	if ( plWidth == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	if ( ! GetWindowRect( This->m_hwnd, &rc ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	*plWidth = rc.right-rc.left;
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Top(IVideoWindow* iface,long lTop)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-	RECT	rc;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	if ( ! GetWindowRect( This->m_hwnd, &rc ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	if ( ! MoveWindow( This->m_hwnd, rc.left, lTop, rc.right-rc.left, rc.bottom-rc.top, TRUE ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Top(IVideoWindow* iface,long* plTop)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-	RECT	rc;
-
-	FIXME("(%p)->()\n",This);
-
-	if ( plTop == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	if ( ! GetWindowRect( This->m_hwnd, &rc ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	*plTop = rc.top;
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Height(IVideoWindow* iface,long lHeight)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-	RECT	rc;
-
-	FIXME("(%p)->()\n",This);
-
-	if ( lHeight < 0 )
-		return E_INVALIDARG;
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	if ( ! GetWindowRect( This->m_hwnd, &rc ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	if ( ! MoveWindow( This->m_hwnd, rc.left, rc.top, rc.right-rc.left, lHeight, TRUE ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Height(IVideoWindow* iface,long* plHeight)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-	RECT	rc;
-
-	FIXME("(%p)->()\n",This);
-
-	if ( plHeight == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	if ( ! GetWindowRect( This->m_hwnd, &rc ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	*plHeight = rc.bottom-rc.top;
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_Owner(IVideoWindow* iface,OAHWND hwnd)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-	DWORD	dwStyle;
-	RECT	rc;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-	if ( ! GetWindowRect( This->m_hwnd, &rc ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-
-	dwStyle = (DWORD)GetWindowLongA( This->m_hwnd, GWL_STYLE );
-	if ( hwnd == (HWND)NULL )
-		SetWindowLongA( This->m_hwnd, GWL_STYLE, dwStyle & (~WS_CHILD) );
-	SetParent( This->m_hwnd, (HWND)hwnd );
-	if ( (HWND)hwnd != (HWND)NULL )
-	{
-		SetWindowLongA( This->m_hwnd, GWL_STYLE, dwStyle | WS_CHILD );
-		MoveWindow( This->m_hwnd, 0, 0, rc.right-rc.left, rc.bottom-rc.top, TRUE );
-	}
-
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_Owner(IVideoWindow* iface,OAHWND* phwnd)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	if ( phwnd == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	*phwnd = (OAHWND)GetParent( This->m_hwnd );
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_MessageDrain(IVideoWindow* iface,OAHWND hwnd)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_MessageDrain(IVideoWindow* iface,OAHWND* phwnd)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_BorderColor(IVideoWindow* iface,long* plColor)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_BorderColor(IVideoWindow* iface,long lColor)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnget_FullScreenMode(IVideoWindow* iface,long* plMode)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnput_FullScreenMode(IVideoWindow* iface,long lMode)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnSetWindowForeground(IVideoWindow* iface,long lFocus)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnNotifyOwnerMessage(IVideoWindow* iface,OAHWND hwnd,long message,LONG_PTR wParam,LONG_PTR lParam)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnSetWindowPosition(IVideoWindow* iface,long lLeft,long lTop,long lWidth,long lHeight)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	if ( ! MoveWindow( This->m_hwnd, lLeft, lTop, lWidth, lHeight, TRUE ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-	hr = S_OK;
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetWindowPosition(IVideoWindow* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-	RECT	rc;
-
-	FIXME("(%p)->()\n",This);
-
-	if ( plLeft == NULL || plTop == NULL ||
-		 plWidth == NULL || plHeight == NULL )
-		return E_POINTER;
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-	if ( ! GetWindowRect( This->m_hwnd, &rc ) )
-	{
-		hr = E_FAIL;
-		goto end;
-	}
-
-	*plLeft = rc.left;
-	*plTop = rc.top;
-	*plWidth = rc.right-rc.left;
-	*plHeight = rc.bottom-rc.top;
-	hr = S_OK;
-
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetMinIdealImageSize(IVideoWindow* iface,long* plWidth,long* plHeight)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetMaxIdealImageSize(IVideoWindow* iface,long* plWidth,long* plHeight)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnGetRestorePosition(IVideoWindow* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnHideCursor(IVideoWindow* iface,long lHide)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT WINAPI
-IVideoWindow_fnIsCursorHidden(IVideoWindow* iface,long* plHide)
-{
-	CVideoRendererImpl_THIS(iface,vidwin);
-	HRESULT hr = E_NOTIMPL;
-
-	FIXME("(%p)->()\n",This);
-
-	EnterCriticalSection ( &This->basefilter.csFilter );
-	if ( This->m_hwnd == (HWND)NULL )
-	{
-		hr = VFW_E_NOT_CONNECTED;
-		goto end;
-	}
-
-	/* FIXME */
-end:
-	LeaveCriticalSection ( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-
-
-
-static ICOM_VTABLE(IVideoWindow) ivideowindow =
-{
-	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
-	/* IUnknown fields */
-	IVideoWindow_fnQueryInterface,
-	IVideoWindow_fnAddRef,
-	IVideoWindow_fnRelease,
-	/* IDispatch fields */
-	IVideoWindow_fnGetTypeInfoCount,
-	IVideoWindow_fnGetTypeInfo,
-	IVideoWindow_fnGetIDsOfNames,
-	IVideoWindow_fnInvoke,
-	/* IVideoWindow fields */
-	IVideoWindow_fnput_Caption,
-	IVideoWindow_fnget_Caption,
-	IVideoWindow_fnput_WindowStyle,
-	IVideoWindow_fnget_WindowStyle,
-	IVideoWindow_fnput_WindowStyleEx,
-	IVideoWindow_fnget_WindowStyleEx,
-	IVideoWindow_fnput_AutoShow,
-	IVideoWindow_fnget_AutoShow,
-	IVideoWindow_fnput_WindowState,
-	IVideoWindow_fnget_WindowState,
-	IVideoWindow_fnput_BackgroundPalette,
-	IVideoWindow_fnget_BackgroundPalette,
-	IVideoWindow_fnput_Visible,
-	IVideoWindow_fnget_Visible,
-	IVideoWindow_fnput_Left,
-	IVideoWindow_fnget_Left,
-	IVideoWindow_fnput_Width,
-	IVideoWindow_fnget_Width,
-	IVideoWindow_fnput_Top,
-	IVideoWindow_fnget_Top,
-	IVideoWindow_fnput_Height,
-	IVideoWindow_fnget_Height,
-	IVideoWindow_fnput_Owner,
-	IVideoWindow_fnget_Owner,
-	IVideoWindow_fnput_MessageDrain,
-	IVideoWindow_fnget_MessageDrain,
-	IVideoWindow_fnget_BorderColor,
-	IVideoWindow_fnput_BorderColor,
-	IVideoWindow_fnget_FullScreenMode,
-	IVideoWindow_fnput_FullScreenMode,
-	IVideoWindow_fnSetWindowForeground,
-	IVideoWindow_fnNotifyOwnerMessage,
-	IVideoWindow_fnSetWindowPosition,
-	IVideoWindow_fnGetWindowPosition,
-	IVideoWindow_fnGetMinIdealImageSize,
-	IVideoWindow_fnGetMaxIdealImageSize,
-	IVideoWindow_fnGetRestorePosition,
-	IVideoWindow_fnHideCursor,
-	IVideoWindow_fnIsCursorHidden,
-
-};
-
-
-HRESULT CVideoRendererImpl_InitIVideoWindow( CVideoRendererImpl* This )
-{
-	TRACE("(%p)\n",This);
-	ICOM_VTBL(&This->vidwin) = &ivideowindow;
-
-	return NOERROR;
-}
-
-void CVideoRendererImpl_UninitIVideoWindow( CVideoRendererImpl* This )
-{
-	TRACE("(%p)\n",This);
-}
-
diff --git a/dlls/quartz/vidren.h b/dlls/quartz/vidren.h
deleted file mode 100644
index 1fe5924..0000000
--- a/dlls/quartz/vidren.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Implements CLSID_VideoRenderer.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_VIDREN_H
-#define	WINE_DSHOW_VIDREN_H
-
-#include "iunk.h"
-#include "basefilt.h"
-#include "seekpass.h"
-
-typedef struct CVideoRendererImpl CVideoRendererImpl;
-typedef struct CVideoRendererPinImpl CVideoRendererPinImpl;
-
-
-typedef struct VidRen_IBasicVideo
-{
-	ICOM_VFIELD(IBasicVideo);
-} VidRen_IBasicVideo;
-
-typedef struct VidRen_IVideoWindow
-{
-	ICOM_VFIELD(IVideoWindow);
-} VidRen_IVideoWindow;
-
-struct CVideoRendererImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CBaseFilterImpl	basefilter;
-	VidRen_IBasicVideo	basvid;
-	VidRen_IVideoWindow	vidwin;
-	QUARTZ_IFDelegation	qiext;
-
-	CSeekingPassThru*	pSeekPass;
-	CVideoRendererPinImpl*	pPin;
-
-	BOOL	m_fInFlush;
-
-	/* for rendering */
-	HANDLE	m_hEventInit;
-	HANDLE	m_hThread;
-	HWND	m_hwnd;
-	CRITICAL_SECTION	m_csReceive;
-	BOOL	m_bSampleIsValid;
-	BYTE*	m_pSampleData;
-	DWORD	m_cbSampleData;
-};
-
-struct CVideoRendererPinImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CPinBaseImpl	pin;
-	CMemInputPinBaseImpl	meminput;
-
-	CVideoRendererImpl* pRender;
-};
-
-
-
-#define	CVideoRendererImpl_THIS(iface,member)	CVideoRendererImpl*	This = ((CVideoRendererImpl*)(((char*)iface)-offsetof(CVideoRendererImpl,member)))
-#define	CVideoRendererPinImpl_THIS(iface,member)	CVideoRendererPinImpl*	This = ((CVideoRendererPinImpl*)(((char*)iface)-offsetof(CVideoRendererPinImpl,member)))
-
-HRESULT CVideoRendererImpl_InitIBasicVideo( CVideoRendererImpl* This );
-void CVideoRendererImpl_UninitIBasicVideo( CVideoRendererImpl* This );
-HRESULT CVideoRendererImpl_InitIVideoWindow( CVideoRendererImpl* This );
-void CVideoRendererImpl_UninitIVideoWindow( CVideoRendererImpl* This );
-
-HRESULT QUARTZ_CreateVideoRenderer(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateVideoRendererPin(
-        CVideoRendererImpl* pFilter,
-        CRITICAL_SECTION* pcsPin,
-	CRITICAL_SECTION* pcsPinReceive,
-        CVideoRendererPinImpl** ppPin);
-
-
-#endif	/* WINE_DSHOW_VIDREN_H */
diff --git a/dlls/quartz/wavparse.c b/dlls/quartz/wavparse.c
deleted file mode 100644
index 9c5dea6..0000000
--- a/dlls/quartz/wavparse.c
+++ /dev/null
@@ -1,746 +0,0 @@
-/*
- * Implements WAVE/AU/AIFF Parser.
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "mmsystem.h"
-#include "mmreg.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "audioutl.h"
-#include "parser.h"
-
-
-static const WCHAR QUARTZ_WaveParser_Name[] =
-{ 'W','a','v','e',' ','P','a','r','s','e','r',0 };
-static const WCHAR QUARTZ_WaveParserInPin_Name[] =
-{ 'I','n',0 };
-static const WCHAR QUARTZ_WaveParserOutPin_Name[] =
-{ 'O','u','t',0 };
-
-
-/****************************************************************************/
-
-/* S_OK = found, S_FALSE = not found */
-HRESULT RIFF_GetNext(
-	CParserImpl* pImpl, LONGLONG llOfs,
-	DWORD* pdwCode, DWORD* pdwLength )
-{
-	BYTE bTemp[8];
-	HRESULT hr;
-
-	hr = IAsyncReader_SyncRead( pImpl->m_pReader, llOfs, 8, bTemp );
-	if ( hr == S_OK )
-	{
-		*pdwCode = mmioFOURCC(bTemp[0],bTemp[1],bTemp[2],bTemp[3]);
-		*pdwLength = PARSER_LE_UINT32(&bTemp[4]);
-	}
-	else
-	{
-		*pdwCode = 0;
-		*pdwLength = 0;
-	}
-
-	return hr;
-}
-
-/* S_OK = found, S_FALSE = not found */
-HRESULT RIFF_SearchChunk(
-	CParserImpl* pImpl,
-	DWORD dwSearchLengthMax,
-	LONGLONG llOfs, DWORD dwChunk,
-	LONGLONG* pllOfs, DWORD* pdwChunkLength )
-{
-	HRESULT hr;
-	DWORD dwCurCode;
-	DWORD dwCurLen;
-	LONGLONG llCurLen;
-
-	while ( 1 )
-	{
-		hr = RIFF_GetNext( pImpl, llOfs, &dwCurCode, &dwCurLen );
-		if ( hr != S_OK )
-			break;
-		TRACE("%c%c%c%c len %lu\n",
-			(int)(dwCurCode>> 0)&0xff,
-			(int)(dwCurCode>> 8)&0xff,
-			(int)(dwCurCode>>16)&0xff,
-			(int)(dwCurCode>>24)&0xff,
-			(unsigned long)dwCurLen);
-		if ( dwChunk == dwCurCode )
-			break;
-		llCurLen = 8 + (LONGLONG)((dwCurLen+1)&(~1));
-		llOfs += llCurLen;
-		if ( (LONGLONG)dwSearchLengthMax <= llCurLen )
-			return S_FALSE;
-		if ( dwSearchLengthMax != (DWORD)0xffffffff )
-			dwSearchLengthMax -= (DWORD)llCurLen;
-	}
-
-	*pllOfs = llOfs + 8;
-	*pdwChunkLength = dwCurLen;
-
-	return hr;
-}
-
-/* S_OK = found, S_FALSE = not found */
-HRESULT RIFF_SearchList(
-	CParserImpl* pImpl,
-	DWORD dwSearchLengthMax,
-	LONGLONG llOfs, DWORD dwListChunk,
-	LONGLONG* pllOfs, DWORD* pdwChunkLength )
-{
-	HRESULT hr;
-	DWORD dwCurLen;
-	LONGLONG llCurLen;
-	BYTE bTemp[4];
-
-	while ( 1 )
-	{
-		hr = RIFF_SearchChunk(
-			pImpl, dwSearchLengthMax,
-			llOfs, PARSER_LIST,
-			&llOfs, &dwCurLen );
-		if ( hr != S_OK )
-			break;
-
-		hr = IAsyncReader_SyncRead( pImpl->m_pReader, llOfs, 4, bTemp );
-		if ( hr != S_OK )
-			break;
-
-		if ( mmioFOURCC(bTemp[0],bTemp[1],bTemp[2],bTemp[3]) == dwListChunk )
-			break;
-
-		llCurLen = (LONGLONG)((dwCurLen+1)&(~1));
-		llOfs += llCurLen;
-		if ( (LONGLONG)dwSearchLengthMax <= (llCurLen+8) )
-			return S_FALSE;
-		if ( dwSearchLengthMax != (DWORD)0xffffffff )
-			dwSearchLengthMax -= (DWORD)(llCurLen+8);
-	}
-
-	if ( dwCurLen < 12 )
-		return E_FAIL;
-
-	*pllOfs = llOfs+4;
-	*pdwChunkLength = dwCurLen-4;
-
-	return hr;
-}
-
-
-
-
-/****************************************************************************
- *
- *	CWavParseImpl
- */
-
-typedef enum WavParseFmtType
-{
-	WaveParse_Native,
-	WaveParse_Signed8,
-	WaveParse_Signed16BE,
-	WaveParse_Unsigned16LE,
-	WaveParse_Unsigned16BE,
-} WavParseFmtType;
-
-typedef struct CWavParseImpl
-{
-	DWORD	cbFmt;
-	WAVEFORMATEX*	pFmt;
-	DWORD	dwBlockSize;
-	LONGLONG	llDataStart;
-	LONGLONG	llBytesStop;
-	LONGLONG	llBytesTotal;
-	LONGLONG	llBytesProcessed;
-	BOOL	bDataDiscontinuity;
-	WavParseFmtType	iFmtType;
-} CWavParseImpl;
-
-
-static HRESULT CWavParseImpl_InitWAV( CParserImpl* pImpl, CWavParseImpl* This )
-{
-	HRESULT hr;
-	LONGLONG	llOfs;
-	DWORD	dwChunkLength;
-
-	hr = RIFF_SearchChunk(
-		pImpl, (DWORD)0xffffffff,
-		PARSER_RIFF_OfsFirst, PARSER_fmt,
-		&llOfs, &dwChunkLength );
-	if ( FAILED(hr) )
-		return hr;
-	if ( hr != S_OK || ( dwChunkLength < (sizeof(WAVEFORMATEX)-2) ) )
-		return E_FAIL;
-
-	This->cbFmt = dwChunkLength;
-	if ( dwChunkLength < sizeof(WAVEFORMATEX) )
-		This->cbFmt = sizeof(WAVEFORMATEX);
-	This->pFmt = (WAVEFORMATEX*)QUARTZ_AllocMem( dwChunkLength );
-	if ( This->pFmt == NULL )
-		return E_OUTOFMEMORY;
-	ZeroMemory( This->pFmt, This->cbFmt );
-
-	hr = IAsyncReader_SyncRead(
-		pImpl->m_pReader, llOfs, dwChunkLength, (BYTE*)This->pFmt );
-	if ( hr != S_OK )
-	{
-		if ( SUCCEEDED(hr) )
-			hr = E_FAIL;
-		return hr;
-	}
-
-
-	hr = RIFF_SearchChunk(
-		pImpl, (DWORD)0xffffffff,
-		PARSER_RIFF_OfsFirst, PARSER_data,
-		&llOfs, &dwChunkLength );
-	if ( FAILED(hr) )
-		return hr;
-	if ( hr != S_OK || dwChunkLength == 0 )
-		return E_FAIL;
-
-	This->llDataStart = llOfs;
-	This->llBytesTotal = (LONGLONG)dwChunkLength;
-
-	return NOERROR;
-}
-
-static HRESULT CWavParseImpl_InitAU( CParserImpl* pImpl, CWavParseImpl* This )
-{
-	BYTE	au_hdr[24];
-	DWORD	dataofs;
-	DWORD	datalen;
-	DWORD	datafmt;
-	DWORD	datarate;
-	DWORD	datachannels;
-	HRESULT hr;
-	WAVEFORMATEX	wfx;
-
-	hr = IAsyncReader_SyncRead( pImpl->m_pReader, 0, 24, au_hdr );
-	if ( FAILED(hr) )
-		return hr;
-
-	dataofs = PARSER_BE_UINT32(&au_hdr[4]);
-	datalen = PARSER_BE_UINT32(&au_hdr[8]);
-	datafmt = PARSER_BE_UINT32(&au_hdr[12]);
-	datarate = PARSER_BE_UINT32(&au_hdr[16]);
-	datachannels = PARSER_BE_UINT32(&au_hdr[20]);
-
-	if ( dataofs < 24U || datalen == 0U )
-		return E_FAIL;
-	if ( datachannels != 1 && datachannels != 2 )
-		return E_FAIL;
-
-	ZeroMemory( &wfx, sizeof(WAVEFORMATEX) );
-	wfx.nChannels = datachannels;
-	wfx.nSamplesPerSec = datarate;
-
-	switch ( datafmt )
-	{
-	case 1:
-		wfx.wFormatTag = WAVE_FORMAT_MULAW;
-		wfx.nBlockAlign = datachannels;
-		wfx.wBitsPerSample = 8;
-		break;
-	case 2:
-		wfx.wFormatTag = WAVE_FORMAT_PCM;
-		wfx.nBlockAlign = datachannels;
-		wfx.wBitsPerSample = 8;
-		This->iFmtType = WaveParse_Signed8;
-		break;
-	case 3:
-		wfx.wFormatTag = WAVE_FORMAT_PCM;
-		wfx.nBlockAlign = datachannels;
-		wfx.wBitsPerSample = 16;
-		This->iFmtType = WaveParse_Signed16BE;
-		break;
-	default:
-		FIXME("audio/basic - unknown format %lu\n", datafmt );
-		return E_FAIL;
-	}
-	wfx.nAvgBytesPerSec = (datarate * datachannels * (DWORD)wfx.wBitsPerSample) >> 3;
-
-	This->cbFmt = sizeof(WAVEFORMATEX);
-	This->pFmt = (WAVEFORMATEX*)QUARTZ_AllocMem( sizeof(WAVEFORMATEX) );
-	if ( This->pFmt == NULL )
-		return E_OUTOFMEMORY;
-	memcpy( This->pFmt, &wfx, sizeof(WAVEFORMATEX) );
-
-	This->llDataStart = dataofs;
-	This->llBytesTotal = datalen;
-
-	TRACE("offset %lu, length %lu\n",dataofs,datalen);
-
-	return NOERROR;
-}
-
-static HRESULT CWavParseImpl_InitAIFF( CParserImpl* pImpl, CWavParseImpl* This )
-{
-	FIXME( "AIFF is not supported now.\n" );
-	return E_FAIL;
-}
-
-static HRESULT CWavParseImpl_InitParser( CParserImpl* pImpl, ULONG* pcStreams )
-{
-	CWavParseImpl*	This = NULL;
-	HRESULT hr;
-	BYTE	header[12];
-
-	TRACE("(%p,%p)\n",pImpl,pcStreams);
-
-	if ( pImpl->m_pReader == NULL )
-		return E_UNEXPECTED;
-
-	This = (CWavParseImpl*)QUARTZ_AllocMem( sizeof(CWavParseImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-	pImpl->m_pUserData = This;
-
-	/* construct */
-	This->cbFmt = 0;
-	This->pFmt = NULL;
-	This->dwBlockSize = 0;
-	This->llDataStart = 0;
-	This->llBytesStop = 0;
-	This->llBytesTotal = 0;
-	This->llBytesProcessed = 0;
-	This->bDataDiscontinuity = TRUE;
-	This->iFmtType = WaveParse_Native;
-
-	hr = IAsyncReader_SyncRead( pImpl->m_pReader, 0, 12, header );
-	if ( FAILED(hr) )
-		return hr;
-	if ( hr != S_OK )
-		return E_FAIL;
-
-	if ( !memcmp( &header[0], "RIFF", 4 ) &&
-		 !memcmp( &header[8], "WAVE", 4 ) )
-	{
-		TRACE( "(%p) - it's audio/wav.\n", pImpl );
-		hr = CWavParseImpl_InitWAV( pImpl, This );
-	}
-	else
-	if ( !memcmp( &header[0], ".snd", 4 ) )
-	{
-		TRACE( "(%p) - it's audio/basic.\n", pImpl );
-		hr = CWavParseImpl_InitAU( pImpl, This );
-	}
-	else
-	if ( !memcmp( &header[0], "FORM", 4 ) &&
-		 !memcmp( &header[8], "AIFF", 4 ) )
-	{
-		TRACE( "(%p) - it's audio/aiff.\n", pImpl );
-		hr = CWavParseImpl_InitAIFF( pImpl, This );
-	}
-	else
-	{
-		FIXME( "(%p) - unknown format.\n", pImpl );
-		hr = E_FAIL;
-	}
-
-	if ( FAILED(hr) )
-	{
-		return hr;
-	}
-
-	This->llBytesStop = This->llBytesTotal;
-
-	/* initialized successfully. */
-	*pcStreams = 1;
-
-	This->dwBlockSize = (This->pFmt->nAvgBytesPerSec + (DWORD)This->pFmt->nBlockAlign - 1U) / (DWORD)This->pFmt->nBlockAlign;
-
-	TRACE( "(%p) returned successfully.\n", pImpl );
-
-	return NOERROR;
-}
-
-static HRESULT CWavParseImpl_UninitParser( CParserImpl* pImpl )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL )
-		return NOERROR;
-
-	/* destruct */
-	if ( This->pFmt != NULL ) QUARTZ_FreeMem(This->pFmt);
-
-	QUARTZ_FreeMem( This );
-	pImpl->m_pUserData = NULL;
-
-	return NOERROR;
-}
-
-static LPCWSTR CWavParseImpl_GetOutPinName( CParserImpl* pImpl, ULONG nStreamIndex )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	return QUARTZ_WaveParserOutPin_Name;
-}
-
-static HRESULT CWavParseImpl_GetStreamType( CParserImpl* pImpl, ULONG nStreamIndex, AM_MEDIA_TYPE* pmt )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL || This->pFmt == NULL )
-		return E_UNEXPECTED;
-
-	ZeroMemory( pmt, sizeof(AM_MEDIA_TYPE) );
-	memcpy( &pmt->majortype, &MEDIATYPE_Audio, sizeof(GUID) );
-	QUARTZ_MediaSubType_FromFourCC( &pmt->subtype, (DWORD)This->pFmt->wFormatTag );
-	pmt->bFixedSizeSamples = 1;
-	pmt->bTemporalCompression = 0;
-	pmt->lSampleSize = This->pFmt->nBlockAlign;
-	memcpy( &pmt->formattype, &FORMAT_WaveFormatEx, sizeof(GUID) );
-	pmt->pUnk = NULL;
-
-	pmt->pbFormat = (BYTE*)CoTaskMemAlloc( This->cbFmt );
-	if ( pmt->pbFormat == NULL )
-		return E_OUTOFMEMORY;
-	pmt->cbFormat = This->cbFmt;
-	memcpy( pmt->pbFormat, This->pFmt, This->cbFmt );
-
-	return NOERROR;
-}
-
-static HRESULT CWavParseImpl_CheckStreamType( CParserImpl* pImpl, ULONG nStreamIndex, const AM_MEDIA_TYPE* pmt )
-{
-	if ( !IsEqualGUID( &pmt->majortype, &MEDIATYPE_Audio ) ||
-		 !IsEqualGUID( &pmt->formattype, &FORMAT_WaveFormatEx ) )
-		return E_FAIL;
-	if ( pmt->pbFormat == NULL || pmt->cbFormat < sizeof(WAVEFORMATEX) )
-		return E_FAIL;
-
-	return NOERROR;
-}
-
-static HRESULT CWavParseImpl_GetAllocProp( CParserImpl* pImpl, ALLOCATOR_PROPERTIES* pReqProp )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL || This->pFmt == NULL )
-		return E_UNEXPECTED;
-
-	ZeroMemory( pReqProp, sizeof(ALLOCATOR_PROPERTIES) );
-	pReqProp->cBuffers = 1;
-	pReqProp->cbBuffer = This->dwBlockSize;
-
-	return NOERROR;
-}
-
-static HRESULT CWavParseImpl_GetNextRequest( CParserImpl* pImpl, ULONG* pnStreamIndex, LONGLONG* pllStart, LONG* plLength, REFERENCE_TIME* prtStart, REFERENCE_TIME* prtStop, DWORD* pdwSampleFlags )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-	LONGLONG	llAvail;
-	LONGLONG	llStart;
-	LONGLONG	llEnd;
-
-	TRACE("(%p)\n",This);
-
-	if ( This == NULL || This->pFmt == NULL )
-		return E_UNEXPECTED;
-	*pdwSampleFlags = AM_SAMPLE_SPLICEPOINT;
-	if ( This->bDataDiscontinuity )
-	{
-		*pdwSampleFlags |= AM_SAMPLE_DATADISCONTINUITY;
-		This->bDataDiscontinuity = FALSE;
-	}
-
-	llAvail = This->llBytesStop - This->llBytesProcessed;
-	if ( llAvail > (LONGLONG)This->dwBlockSize )
-		llAvail = (LONGLONG)This->dwBlockSize;
-	llStart = This->llDataStart + This->llBytesProcessed;
-	llEnd = llStart + llAvail;
-	This->llBytesProcessed = llEnd;
-
-	*pllStart = This->llBytesProcessed;
-	*plLength = (LONG)llAvail;
-	*prtStart = llStart * QUARTZ_TIMEUNITS / (LONGLONG)This->pFmt->nAvgBytesPerSec;
-	*prtStop = llEnd * QUARTZ_TIMEUNITS / (LONGLONG)This->pFmt->nAvgBytesPerSec;
-
-	return NOERROR;
-}
-
-static HRESULT CWavParseImpl_ProcessSample( CParserImpl* pImpl, ULONG nStreamIndex, LONGLONG llStart, LONG lLength, IMediaSample* pSample )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-	BYTE*	pData;
-	LONG	lActLen;
-	HRESULT hr;
-
-	TRACE("(%p)\n",This);
-
-	hr = IMediaSample_GetPointer(pSample,&pData);
-	if ( FAILED(hr) )
-		return hr;
-	lActLen = (LONG)IMediaSample_GetActualDataLength(pSample);
-	if ( lActLen != lLength )
-		return E_FAIL;
-
-	switch ( This->iFmtType )
-	{
-	case WaveParse_Native:
-		break;
-	case WaveParse_Signed8:
-		AUDIOUTL_ChangeSign8(pData,lActLen);
-		break;
-	case WaveParse_Signed16BE:
-		AUDIOUTL_ByteSwap(pData,lActLen);
-		break;
-	case WaveParse_Unsigned16LE:
-		AUDIOUTL_ChangeSign16LE(pData,lActLen);
-		break;
-	case WaveParse_Unsigned16BE:
-		AUDIOUTL_ChangeSign16BE(pData,lActLen);
-		AUDIOUTL_ByteSwap(pData,lActLen);
-		break;
-	default:
-		FIXME("(%p) - %d not implemented\n", This, This->iFmtType );
-		return E_FAIL;
-	}
-
-	return NOERROR;
-}
-
-/***************************************************************************/
-
-static HRESULT CWavParseImpl_GetSeekingCaps( CParserImpl* pImpl, DWORD* pdwCaps )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p,%p)\n",This,pdwCaps);
-
-	*pdwCaps =
-		AM_SEEKING_CanSeekAbsolute |
-		AM_SEEKING_CanSeekForwards |
-		AM_SEEKING_CanSeekBackwards |
-		AM_SEEKING_CanGetCurrentPos |
-		AM_SEEKING_CanGetStopPos |
-		AM_SEEKING_CanGetDuration;
-
-	return S_OK;
-}
-
-static HRESULT CWavParseImpl_IsTimeFormatSupported( CParserImpl* pImpl, const GUID* pTimeFormat )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p,%s)\n",This,debugstr_guid(pTimeFormat));
-
-	if ( IsEqualGUID(pTimeFormat,&TIME_FORMAT_MEDIA_TIME) )
-		return S_OK;
-
-	return S_FALSE;
-}
-
-static HRESULT CWavParseImpl_GetCurPos( CParserImpl* pImpl, const GUID* pTimeFormat, DWORD nStreamIndex, LONGLONG* pllPos )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p,%s,%lu,...)\n",This,debugstr_guid(pTimeFormat),nStreamIndex);
-
-	if ( This == NULL || This->pFmt == NULL )
-		return E_UNEXPECTED;
-
-	if ( IsEqualGUID(pTimeFormat,&TIME_FORMAT_MEDIA_TIME) )
-	{
-		if ( This->pFmt->nAvgBytesPerSec == 0 )
-			return E_FAIL;
-		*pllPos = This->llBytesProcessed * QUARTZ_TIMEUNITS / (LONGLONG)This->pFmt->nAvgBytesPerSec;
-		TRACE("curpos %f\n",(double)(*pllPos/QUARTZ_TIMEUNITS));
-		return S_OK;
-	}
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CWavParseImpl_SetCurPos( CParserImpl* pImpl, const GUID* pTimeFormat, DWORD nStreamIndex, LONGLONG llPos )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-	LONGLONG	llBytesCur;
-
-	TRACE("(%p,%s,%lu,...)\n",This,debugstr_guid(pTimeFormat),nStreamIndex);
-
-	if ( This == NULL || This->pFmt == NULL )
-		return E_UNEXPECTED;
-
-	if ( IsEqualGUID(pTimeFormat,&TIME_FORMAT_MEDIA_TIME) )
-	{
-		if ( This->pFmt->nAvgBytesPerSec == 0 )
-			return E_FAIL;
-		llBytesCur = llPos * This->pFmt->nAvgBytesPerSec / QUARTZ_TIMEUNITS;
-		if ( llBytesCur > This->llBytesTotal )
-			llBytesCur = This->llBytesTotal;
-		This->llBytesProcessed = llBytesCur;
-		This->bDataDiscontinuity = TRUE;
-
-		return S_OK;
-	}
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CWavParseImpl_GetDuration( CParserImpl* pImpl, const GUID* pTimeFormat, DWORD nStreamIndex, LONGLONG* pllDuration )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p,%s,%lu,...)\n",This,debugstr_guid(pTimeFormat),nStreamIndex);
-
-	if ( This == NULL || This->pFmt == NULL )
-		return E_UNEXPECTED;
-
-	if ( IsEqualGUID(pTimeFormat,&TIME_FORMAT_MEDIA_TIME) )
-	{
-		if ( This->pFmt->nAvgBytesPerSec == 0 )
-			return E_FAIL;
-		*pllDuration = This->llBytesTotal * QUARTZ_TIMEUNITS / (LONGLONG)This->pFmt->nAvgBytesPerSec;
-		TRACE("duration %f\n",(double)(*pllDuration/QUARTZ_TIMEUNITS));
-		return S_OK;
-	}
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CWavParseImpl_GetStopPos( CParserImpl* pImpl, const GUID* pTimeFormat, DWORD nStreamIndex, LONGLONG* pllPos )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p,%s,%lu,...)\n",This,debugstr_guid(pTimeFormat),nStreamIndex);
-
-	if ( This == NULL || This->pFmt == NULL )
-		return E_UNEXPECTED;
-
-	if ( IsEqualGUID(pTimeFormat,&TIME_FORMAT_MEDIA_TIME) )
-	{
-		if ( This->pFmt->nAvgBytesPerSec == 0 )
-			return E_FAIL;
-		*pllPos = This->llBytesStop * QUARTZ_TIMEUNITS / (LONGLONG)This->pFmt->nAvgBytesPerSec;
-		return S_OK;
-	}
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CWavParseImpl_SetStopPos( CParserImpl* pImpl, const GUID* pTimeFormat, DWORD nStreamIndex, LONGLONG llPos )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-	LONGLONG	llBytesStop;
-
-	TRACE("(%p,%s,%lu,...)\n",This,debugstr_guid(pTimeFormat),nStreamIndex);
-
-	if ( This == NULL || This->pFmt == NULL )
-		return E_UNEXPECTED;
-
-	if ( IsEqualGUID(pTimeFormat,&TIME_FORMAT_MEDIA_TIME) )
-	{
-		if ( This->pFmt->nAvgBytesPerSec == 0 )
-			return E_FAIL;
-		llBytesStop = llPos * This->pFmt->nAvgBytesPerSec / QUARTZ_TIMEUNITS;
-		if ( llBytesStop > This->llBytesTotal )
-			llBytesStop = This->llBytesTotal;
-		This->llBytesStop = llBytesStop;
-
-		return S_OK;
-	}
-
-	return E_NOTIMPL;
-}
-
-static HRESULT CWavParseImpl_GetPreroll( CParserImpl* pImpl, const GUID* pTimeFormat, DWORD nStreamIndex, LONGLONG* pllPreroll )
-{
-	CWavParseImpl*	This = (CWavParseImpl*)pImpl->m_pUserData;
-
-	TRACE("(%p,%s,%lu,...)\n",This,debugstr_guid(pTimeFormat),nStreamIndex);
-
-	if ( This == NULL || This->pFmt == NULL )
-		return E_UNEXPECTED;
-
-	if ( IsEqualGUID(pTimeFormat,&TIME_FORMAT_MEDIA_TIME) )
-	{
-		*pllPreroll = 0;
-		return S_OK;
-	}
-
-	return E_NOTIMPL;
-}
-
-
-
-
-/***************************************************************************/
-
-static const struct ParserHandlers CWavParseImpl_Handlers =
-{
-	CWavParseImpl_InitParser,
-	CWavParseImpl_UninitParser,
-	CWavParseImpl_GetOutPinName,
-	CWavParseImpl_GetStreamType,
-	CWavParseImpl_CheckStreamType,
-	CWavParseImpl_GetAllocProp,
-	CWavParseImpl_GetNextRequest,
-	CWavParseImpl_ProcessSample,
-
-	/* for IQualityControl */
-	NULL, /* pQualityNotify */
-
-	/* for seeking */
-	CWavParseImpl_GetSeekingCaps,
-	CWavParseImpl_IsTimeFormatSupported,
-	CWavParseImpl_GetCurPos,
-	CWavParseImpl_SetCurPos,
-	CWavParseImpl_GetDuration,
-	CWavParseImpl_GetStopPos,
-	CWavParseImpl_SetStopPos,
-	CWavParseImpl_GetPreroll,
-};
-
-HRESULT QUARTZ_CreateWaveParser(IUnknown* punkOuter,void** ppobj)
-{
-	return QUARTZ_CreateParser(
-		punkOuter,ppobj,
-		&CLSID_quartzWaveParser,
-		QUARTZ_WaveParser_Name,
-		QUARTZ_WaveParserInPin_Name,
-		&CWavParseImpl_Handlers );
-}
-
-
diff --git a/dlls/quartz/xform.c b/dlls/quartz/xform.c
deleted file mode 100644
index f4272c5..0000000
--- a/dlls/quartz/xform.c
+++ /dev/null
@@ -1,823 +0,0 @@
-/*
- * Implements IBaseFilter for transform filters. (internal)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#include "config.h"
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "strmif.h"
-#include "control.h"
-#include "vfwmsgs.h"
-#include "uuids.h"
-
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-#include "quartz_private.h"
-#include "xform.h"
-#include "sample.h"
-
-
-static const WCHAR XFORM_DefInName[] =
-{'X','F','o','r','m',' ','I','n',0};
-static const WCHAR XFORM_DefOutName[] =
-{'X','F','o','r','m',' ','O','u','t',0};
-
-/***************************************************************************
- *
- *	CTransformBaseImpl methods
- *
- */
-
-static HRESULT CTransformBaseImpl_OnActive( CBaseFilterImpl* pImpl )
-{
-	CTransformBaseImpl_THIS(pImpl,basefilter);
-
-	TRACE( "(%p)\n", This );
-
-	return NOERROR;
-}
-
-static HRESULT CTransformBaseImpl_OnInactive( CBaseFilterImpl* pImpl )
-{
-	CTransformBaseImpl_THIS(pImpl,basefilter);
-	HRESULT hr;
-	IMemAllocator* pAllocator;
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->pInPin->pin.pPinConnectedTo == NULL ||
-		 This->pOutPin->pin.pPinConnectedTo == NULL )
-		return NOERROR;
-
-	EnterCriticalSection( &This->basefilter.csFilter );
-
-	pAllocator = This->m_pOutPinAllocator;
-	if ( pAllocator != NULL &&
-		 This->pInPin->meminput.pAllocator != pAllocator )
-	{
-		hr = IMemAllocator_Commit( pAllocator );
-		if ( FAILED(hr) )
-			goto end;
-	}
-
-	if ( !This->m_bFiltering )
-	{
-		hr = This->m_pHandler->pBeginTransform( This, This->pInPin->pin.pmtConn, This->pOutPin->pin.pmtConn, This->m_bReuseSample );
-		if ( FAILED(hr) )
-			goto end;
-		This->m_bFiltering = TRUE;
-	}
-
-	hr = NOERROR;
-end:
-	LeaveCriticalSection( &This->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT CTransformBaseImpl_OnStop( CBaseFilterImpl* pImpl )
-{
-	CTransformBaseImpl_THIS(pImpl,basefilter);
-	IMemAllocator* pAllocator;
-
-	TRACE( "(%p)\n", This );
-
-	EnterCriticalSection( &This->basefilter.csFilter );
-
-	if ( This->m_bFiltering )
-	{
-		This->m_pHandler->pEndTransform( This );
-		This->m_bFiltering = FALSE;
-	}
-	if ( This->m_pSample != NULL )
-	{
-		IMediaSample_Release( This->m_pSample );
-		This->m_pSample = NULL;
-	}
-
-	pAllocator = This->m_pOutPinAllocator;
-	if ( pAllocator != NULL &&
-		 This->pInPin->meminput.pAllocator != pAllocator )
-	{
-		IMemAllocator_Decommit( pAllocator );
-	}
-
-	LeaveCriticalSection( &This->basefilter.csFilter );
-
-	return NOERROR;
-}
-
-static const CBaseFilterHandlers filterhandlers =
-{
-	CTransformBaseImpl_OnActive, /* pOnActive */
-	CTransformBaseImpl_OnInactive, /* pOnInactive */
-	CTransformBaseImpl_OnStop, /* pOnStop */
-};
-
-/***************************************************************************
- *
- *	CTransformBaseInPinImpl methods
- *
- */
-
-static HRESULT CTransformBaseInPinImpl_OnPostConnect( CPinBaseImpl* pImpl, IPin* pPin )
-{
-	CTransformBaseInPinImpl_THIS(pImpl,pin);
-	HRESULT hr;
-
-	TRACE( "(%p,%p)\n", This, pPin );
-
-	EnterCriticalSection( &This->pFilter->basefilter.csFilter );
-	hr = This->pFilter->m_pHandler->pGetOutputTypes( This->pFilter, This->pFilter->pInPin->pin.pmtConn, &This->pFilter->pOutPin->pin.pmtAcceptTypes, &This->pFilter->pOutPin->pin.cAcceptTypes );
-	if ( FAILED(hr) )
-		goto end;
-
-	hr = NOERROR;
-end:
-	LeaveCriticalSection( &This->pFilter->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT CTransformBaseInPinImpl_OnDisconnect( CPinBaseImpl* pImpl )
-{
-	CTransformBaseInPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->meminput.pAllocator != NULL )
-	{
-		IMemAllocator_Decommit(This->meminput.pAllocator);
-		IMemAllocator_Release(This->meminput.pAllocator);
-		This->meminput.pAllocator = NULL;
-	}
-
-	return NOERROR;
-}
-
-static HRESULT CTransformBaseInPinImpl_CheckMediaType( CPinBaseImpl* pImpl, const AM_MEDIA_TYPE* pmt )
-{
-	CTransformBaseInPinImpl_THIS(pImpl,pin);
-	HRESULT hr;
-
-	TRACE( "(%p,%p)\n", This, pmt );
-
-	EnterCriticalSection( &This->pFilter->basefilter.csFilter );
-	hr = This->pFilter->m_pHandler->pCheckMediaType( This->pFilter, pmt, (This->pFilter->pOutPin->pin.pPinConnectedTo != NULL) ? This->pFilter->pOutPin->pin.pmtConn : NULL );
-	LeaveCriticalSection( &This->pFilter->basefilter.csFilter );
-
-	return hr;
-}
-
-static HRESULT CTransformBaseInPinImpl_Receive( CPinBaseImpl* pImpl, IMediaSample* pSample )
-{
-	CTransformBaseInPinImpl_THIS(pImpl,pin);
-	HRESULT hr;
-
-	TRACE( "(%p,%p)\n", This, pSample );
-
-	if ( This->pin.pPinConnectedTo == NULL ||
-		 This->pFilter->pOutPin->pin.pPinConnectedTo == NULL )
-		return NOERROR;
-
-	if ( !This->pFilter->m_bFiltering )
-		return E_UNEXPECTED;
-
-	if ( This->pFilter->m_bInFlush )
-		return S_FALSE;
-
-	if ( This->pFilter->m_pHandler->pProcessReceive != NULL )
-	{
-		hr = This->pFilter->m_pHandler->pProcessReceive( This->pFilter, pSample );
-	}
-	else
-	{
-		if ( This->meminput.pAllocator != This->pFilter->m_pOutPinAllocator )
-		{
-			if ( This->pFilter->m_pSample == NULL )
-			{
-				hr = IMemAllocator_GetBuffer( This->pFilter->m_pOutPinAllocator, &This->pFilter->m_pSample, NULL, NULL, 0 );
-				if ( FAILED(hr) )
-					goto end;
-			}
-			hr = QUARTZ_IMediaSample_Copy(
-				This->pFilter->m_pSample, pSample, This->pFilter->m_bPreCopy );
-			if ( FAILED(hr) )
-				goto end;
-		}
-
-		if ( This->pFilter->m_bPreCopy )
-			hr = This->pFilter->m_pHandler->pTransform( This->pFilter, This->pFilter->m_pSample, NULL );
-		else
-			hr = This->pFilter->m_pHandler->pTransform( This->pFilter, pSample, This->pFilter->m_pSample );
-
-		if ( FAILED(hr) )
-			goto end;
-
-		if ( hr == NOERROR )
-		{
-			hr = CPinBaseImpl_SendSample(&This->pFilter->pOutPin->pin,This->pFilter->m_pSample);
-			if ( FAILED(hr) )
-				goto end;
-		}
-
-		hr = NOERROR;
-	end:
-		if ( !This->pFilter->m_bReuseSample )
-		{
-			if ( This->pFilter->m_pSample != NULL )
-			{
-				IMediaSample_Release( This->pFilter->m_pSample );
-				This->pFilter->m_pSample = NULL;
-			}
-		}
-
-		if ( FAILED(hr) )
-		{
-			/* Notify(ABORT) */
-		}
-	}
-
-	return hr;
-}
-
-static HRESULT CTransformBaseInPinImpl_ReceiveCanBlock( CPinBaseImpl* pImpl )
-{
-	CTransformBaseInPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->pin.pPinConnectedTo == NULL ||
-		 This->pFilter->pOutPin->pin.pPinConnectedTo == NULL )
-		return S_FALSE;
-
-	return CPinBaseImpl_SendReceiveCanBlock( &This->pFilter->pOutPin->pin );
-}
-
-static HRESULT CTransformBaseInPinImpl_EndOfStream( CPinBaseImpl* pImpl )
-{
-	CTransformBaseInPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->pin.pPinConnectedTo == NULL ||
-		 This->pFilter->pOutPin->pin.pPinConnectedTo == NULL )
-		return NOERROR;
-
-	return CPinBaseImpl_SendEndOfStream( &This->pFilter->pOutPin->pin );
-}
-
-static HRESULT CTransformBaseInPinImpl_BeginFlush( CPinBaseImpl* pImpl )
-{
-	CTransformBaseInPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->pin.pPinConnectedTo == NULL ||
-		 This->pFilter->pOutPin->pin.pPinConnectedTo == NULL )
-		return NOERROR;
-
-	This->pFilter->m_bInFlush = TRUE;
-
-	return CPinBaseImpl_SendBeginFlush( &This->pFilter->pOutPin->pin );
-}
-
-static HRESULT CTransformBaseInPinImpl_EndFlush( CPinBaseImpl* pImpl )
-{
-	CTransformBaseInPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->pin.pPinConnectedTo == NULL ||
-		 This->pFilter->pOutPin->pin.pPinConnectedTo == NULL )
-		return NOERROR;
-
-	This->pFilter->m_bInFlush = FALSE;
-
-	return CPinBaseImpl_SendEndFlush( &This->pFilter->pOutPin->pin );
-}
-
-static HRESULT CTransformBaseInPinImpl_NewSegment( CPinBaseImpl* pImpl, REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double rate )
-{
-	CTransformBaseInPinImpl_THIS(pImpl,pin);
-
-	FIXME( "(%p)\n", This );
-
-	if ( This->pin.pPinConnectedTo == NULL ||
-		 This->pFilter->pOutPin->pin.pPinConnectedTo == NULL )
-		return NOERROR;
-
-	return CPinBaseImpl_SendNewSegment( &This->pFilter->pOutPin->pin,
-		rtStart, rtStop, rate );
-}
-
-static const CBasePinHandlers inputpinhandlers =
-{
-	NULL, /* pOnPreConnect */
-	CTransformBaseInPinImpl_OnPostConnect, /* pOnPostConnect */
-	CTransformBaseInPinImpl_OnDisconnect, /* pOnDisconnect */
-	CTransformBaseInPinImpl_CheckMediaType, /* pCheckMediaType */
-	NULL, /* pQualityNotify */
-	CTransformBaseInPinImpl_Receive, /* pReceive */
-	CTransformBaseInPinImpl_ReceiveCanBlock, /* pReceiveCanBlock */
-	CTransformBaseInPinImpl_EndOfStream, /* pEndOfStream */
-	CTransformBaseInPinImpl_BeginFlush, /* pBeginFlush */
-	CTransformBaseInPinImpl_EndFlush, /* pEndFlush */
-	CTransformBaseInPinImpl_NewSegment, /* pNewSegment */
-};
-
-/***************************************************************************
- *
- *	CTransformBaseOutPinImpl methods
- *
- */
-
-static HRESULT CTransformBaseOutPinImpl_OnPostConnect( CPinBaseImpl* pImpl, IPin* pPin )
-{
-	CTransformBaseOutPinImpl_THIS(pImpl,pin);
-	HRESULT hr;
-	ALLOCATOR_PROPERTIES propReqThis;
-	ALLOCATOR_PROPERTIES propReqPeer;
-	ALLOCATOR_PROPERTIES propActual;
-	BOOL bTransInPlace = FALSE;
-	BOOL bTryToReUseSample = FALSE;
-	BOOL bOutReadonly = FALSE;
-	IMemAllocator*	pAllocator;
-
-	FIXME( "(%p,%p)\n", This, pPin );
-
-	if ( This->pFilter->pInPin->pin.pPinConnectedTo == NULL )
-		return E_FAIL;
-	if ( This->pin.pMemInputPinConnectedTo == NULL )
-		return E_UNEXPECTED;
-
-	ZeroMemory( &propReqThis, sizeof(ALLOCATOR_PROPERTIES) );
-	ZeroMemory( &propReqPeer, sizeof(ALLOCATOR_PROPERTIES) );
-	ZeroMemory( &propActual, sizeof(ALLOCATOR_PROPERTIES) );
-
-	hr = This->pFilter->m_pHandler->pGetAllocProp( This->pFilter, This->pFilter->pInPin->pin.pmtConn, This->pin.pmtConn, &propReqThis, &bTransInPlace, &bTryToReUseSample );
-	if ( FAILED(hr) )
-		goto end;
-
-	if ( propReqThis.cbAlign == 0 )
-		propReqThis.cbAlign = 1;
-
-	if ( bTransInPlace )
-	{
-		ZeroMemory( &propReqPeer, sizeof(ALLOCATOR_PROPERTIES) );
-		hr = IMemInputPin_GetAllocatorRequirements(
-			This->pin.pMemInputPinConnectedTo, &propReqPeer );
-		if ( propReqPeer.cbAlign != 0 && propReqPeer.cbAlign != 1 )
-			bTransInPlace = FALSE;
-		if ( propReqPeer.cbPrefix != 0 )
-			bTransInPlace = FALSE;
-
-		bOutReadonly = FALSE;
-		if ( bTransInPlace && This->pFilter->pInPin->meminput.bReadonly )
-			bOutReadonly = TRUE;
-
-		pAllocator = This->pFilter->pInPin->meminput.pAllocator;
-
-		hr = IMemInputPin_NotifyAllocator(
-			This->pin.pMemInputPinConnectedTo,
-			pAllocator, bOutReadonly );
-		if ( hr == NOERROR )
-		{
-			This->pFilter->m_pOutPinAllocator = pAllocator;
-			IMemAllocator_AddRef(pAllocator);
-			bTryToReUseSample = FALSE;
-			goto end;
-		}
-	}
-
-	hr = IMemInputPin_GetAllocator(
-			This->pin.pMemInputPinConnectedTo, &pAllocator );
-	if ( FAILED(hr) )
-		goto end;
-	hr = IMemAllocator_SetProperties( pAllocator, &propReqThis, &propActual );
-	if ( SUCCEEDED(hr) )
-	{
-		TRACE("cBuffers = %ld / cbBuffer = %ld\n",propActual.cBuffers,propActual.cbBuffer);
-		hr = IMemInputPin_NotifyAllocator(
-			This->pin.pMemInputPinConnectedTo, pAllocator,
-			bTryToReUseSample );
-	}
-	if ( FAILED(hr) )
-	{
-		IMemAllocator_Release(pAllocator);
-		goto end;
-	}
-	This->pFilter->m_pOutPinAllocator = pAllocator;
-
-	hr = NOERROR;
-end:
-	This->pFilter->m_bPreCopy = FALSE;
-	This->pFilter->m_bReuseSample = FALSE;
-	if ( hr == NOERROR )
-	{
-		This->pFilter->m_bPreCopy = bTransInPlace && (This->pFilter->pInPin->meminput.pAllocator != This->pFilter->m_pOutPinAllocator);
-		This->pFilter->m_bReuseSample = bTryToReUseSample;
-	}
-
-	return hr;
-}
-
-static HRESULT CTransformBaseOutPinImpl_OnDisconnect( CPinBaseImpl* pImpl )
-{
-	CTransformBaseOutPinImpl_THIS(pImpl,pin);
-
-	TRACE( "(%p)\n", This );
-
-	if ( This->pFilter->m_pOutPinAllocator != NULL )
-	{
-		IMemAllocator_Decommit(This->pFilter->m_pOutPinAllocator);
-		IMemAllocator_Release(This->pFilter->m_pOutPinAllocator);
-		This->pFilter->m_pOutPinAllocator = NULL;
-	}
-
-	return NOERROR;
-}
-
-static HRESULT CTransformBaseOutPinImpl_CheckMediaType( CPinBaseImpl* pImpl, const AM_MEDIA_TYPE* pmt )
-{
-	CTransformBaseOutPinImpl_THIS(pImpl,pin);
-	HRESULT hr;
-
-	TRACE( "(%p,%p)\n", This, pmt );
-
-	if ( This->pFilter->pInPin->pin.pPinConnectedTo == NULL )
-		return E_FAIL;
-
-	EnterCriticalSection( &This->pFilter->basefilter.csFilter );
-	hr = This->pFilter->m_pHandler->pCheckMediaType( This->pFilter, This->pFilter->pInPin->pin.pmtConn, pmt );
-	LeaveCriticalSection( &This->pFilter->basefilter.csFilter );
-
-	return hr;
-}
-
-static const CBasePinHandlers outputpinhandlers =
-{
-	NULL, /* pOnPreConnect */
-	CTransformBaseOutPinImpl_OnPostConnect, /* pOnPostConnect */
-	CTransformBaseOutPinImpl_OnDisconnect, /* pOnDisconnect */
-	CTransformBaseOutPinImpl_CheckMediaType, /* pCheckMediaType */
-	NULL, /* pQualityNotify */
-	OutputPinSync_Receive, /* pReceive */
-	OutputPinSync_ReceiveCanBlock, /* pReceiveCanBlock */
-	OutputPinSync_EndOfStream, /* pEndOfStream */
-	OutputPinSync_BeginFlush, /* pBeginFlush */
-	OutputPinSync_EndFlush, /* pEndFlush */
-	OutputPinSync_NewSegment, /* pNewSegment */
-};
-
-
-/***************************************************************************
- *
- *	new/delete CTransformBaseImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry FilterIFEntries[] =
-{
-  { &IID_IPersist, offsetof(CTransformBaseImpl,basefilter)-offsetof(CTransformBaseImpl,unk) },
-  { &IID_IMediaFilter, offsetof(CTransformBaseImpl,basefilter)-offsetof(CTransformBaseImpl,unk) },
-  { &IID_IBaseFilter, offsetof(CTransformBaseImpl,basefilter)-offsetof(CTransformBaseImpl,unk) },
-};
-
-static void QUARTZ_DestroyTransformBase(IUnknown* punk)
-{
-	CTransformBaseImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	This->m_pHandler->pCleanup(This);
-
-	if ( This->pInPin != NULL )
-	{
-		IUnknown_Release(This->pInPin->unk.punkControl);
-		This->pInPin = NULL;
-	}
-	if ( This->pOutPin != NULL )
-	{
-		IUnknown_Release(This->pOutPin->unk.punkControl);
-		This->pOutPin = NULL;
-	}
-	if ( This->pSeekPass != NULL )
-	{
-		IUnknown_Release((IUnknown*)&This->pSeekPass->unk);
-		This->pSeekPass = NULL;
-	}
-
-	CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
-
-	DeleteCriticalSection( &This->csReceive );
-}
-
-HRESULT QUARTZ_CreateTransformBase(
-	IUnknown* punkOuter,void** ppobj,
-	const CLSID* pclsidTransformBase,
-	LPCWSTR pwszTransformBaseName,
-	LPCWSTR pwszInPinName,
-	LPCWSTR pwszOutPinName,
-	const TransformBaseHandlers* pHandler )
-{
-	CTransformBaseImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p)\n",punkOuter,ppobj);
-
-	if ( pwszInPinName == NULL )
-		pwszInPinName = XFORM_DefInName;
-	if ( pwszOutPinName == NULL )
-		pwszOutPinName = XFORM_DefOutName;
-
-	This = (CTransformBaseImpl*)
-		QUARTZ_AllocObj( sizeof(CTransformBaseImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-
-	This->pInPin = NULL;
-	This->pOutPin = NULL;
-	This->pSeekPass = NULL;
-	This->m_pOutPinAllocator = NULL;
-	This->m_bPreCopy = FALSE; /* sample must be copied */
-	This->m_bReuseSample = FALSE; /* sample must be reused */
-	This->m_bInFlush = FALSE;
-	This->m_pSample = NULL;
-	This->m_bFiltering = FALSE;
-	This->m_pHandler = pHandler;
-	This->m_pUserData = NULL;
-
-	QUARTZ_IUnkInit( &This->unk, punkOuter );
-
-	hr = CBaseFilterImpl_InitIBaseFilter(
-		&This->basefilter,
-		This->unk.punkControl,
-		pclsidTransformBase,
-		pwszTransformBaseName,
-		&filterhandlers );
-	if ( SUCCEEDED(hr) )
-	{
-		/* construct this class. */
-		hr = This->m_pHandler->pInit( This );
-		if ( FAILED(hr) )
-		{
-			CBaseFilterImpl_UninitIBaseFilter(&This->basefilter);
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = FilterIFEntries;
-	This->unk.dwEntries = sizeof(FilterIFEntries)/sizeof(FilterIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyTransformBase;
-	InitializeCriticalSection( &This->csReceive );
-
-	/* create pins. */
-	hr = QUARTZ_CreateTransformBaseInPin(
-		This, &This->basefilter.csFilter, &This->csReceive,
-		&This->pInPin, pwszInPinName );
-	if ( SUCCEEDED(hr) )
-		hr = QUARTZ_CompList_AddComp(
-			This->basefilter.pInPins,
-			(IUnknown*)&(This->pInPin->pin),
-			NULL, 0 );
-	if ( SUCCEEDED(hr) )
-		hr = QUARTZ_CreateTransformBaseOutPin(
-			This, &This->basefilter.csFilter,
-			&This->pOutPin, pwszOutPinName );
-	if ( SUCCEEDED(hr) )
-		hr = QUARTZ_CompList_AddComp(
-			This->basefilter.pOutPins,
-			(IUnknown*)&(This->pOutPin->pin),
-			NULL, 0 );
-
-	if ( SUCCEEDED(hr) )
-	{
-		hr = QUARTZ_CreateSeekingPassThruInternal(
-			(IUnknown*)&(This->pOutPin->unk), &This->pSeekPass,
-			FALSE, (IPin*)&(This->pInPin->pin) );
-	}
-
-	if ( FAILED(hr) )
-	{
-		IUnknown_Release( This->unk.punkControl );
-		return hr;
-	}
-
-	*ppobj = (void*)&(This->unk);
-
-	return S_OK;
-}
-
-/***************************************************************************
- *
- *	new/delete CTransformBaseInPinImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry InPinIFEntries[] =
-{
-  { &IID_IPin, offsetof(CTransformBaseInPinImpl,pin)-offsetof(CTransformBaseInPinImpl,unk) },
-  { &IID_IMemInputPin, offsetof(CTransformBaseInPinImpl,meminput)-offsetof(CTransformBaseInPinImpl,unk) },
-};
-
-static void QUARTZ_DestroyTransformBaseInPin(IUnknown* punk)
-{
-	CTransformBaseInPinImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	CPinBaseImpl_UninitIPin( &This->pin );
-	CMemInputPinBaseImpl_UninitIMemInputPin( &This->meminput );
-}
-
-HRESULT QUARTZ_CreateTransformBaseInPin(
-	CTransformBaseImpl* pFilter,
-	CRITICAL_SECTION* pcsPin,
-	CRITICAL_SECTION* pcsPinReceive,
-	CTransformBaseInPinImpl** ppPin,
-	LPCWSTR pwszPinName )
-{
-	CTransformBaseInPinImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p,%p)\n",pFilter,pcsPin,ppPin);
-
-	This = (CTransformBaseInPinImpl*)
-		QUARTZ_AllocObj( sizeof(CTransformBaseInPinImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &This->unk, NULL );
-	This->pFilter = pFilter;
-
-	hr = CPinBaseImpl_InitIPin(
-		&This->pin,
-		This->unk.punkControl,
-		pcsPin, pcsPinReceive,
-		&pFilter->basefilter,
-		pwszPinName,
-		FALSE,
-		&inputpinhandlers );
-
-	if ( SUCCEEDED(hr) )
-	{
-		hr = CMemInputPinBaseImpl_InitIMemInputPin(
-			&This->meminput,
-			This->unk.punkControl,
-			&This->pin );
-		if ( FAILED(hr) )
-		{
-			CPinBaseImpl_UninitIPin( &This->pin );
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = InPinIFEntries;
-	This->unk.dwEntries = sizeof(InPinIFEntries)/sizeof(InPinIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyTransformBaseInPin;
-
-	*ppPin = This;
-
-	TRACE("returned successfully.\n");
-
-	return S_OK;
-}
-
-
-/***************************************************************************
- *
- *	new/delete CTransformBaseOutPinImpl
- *
- */
-
-/* can I use offsetof safely? - FIXME? */
-static QUARTZ_IFEntry OutPinIFEntries[] =
-{
-  { &IID_IPin, offsetof(CTransformBaseOutPinImpl,pin)-offsetof(CTransformBaseOutPinImpl,unk) },
-  { &IID_IQualityControl, offsetof(CTransformBaseOutPinImpl,qcontrol)-offsetof(CTransformBaseOutPinImpl,unk) },
-};
-
-static HRESULT CTransformBaseOutPinImpl_OnQueryInterface(
-	IUnknown* punk, const IID* piid, void** ppobj )
-{
-	CTransformBaseOutPinImpl_THIS(punk,unk);
-
-	if ( This->pFilter == NULL || This->pFilter->pSeekPass == NULL )
-		return E_NOINTERFACE;
-
-	if ( IsEqualGUID( &IID_IMediaPosition, piid ) ||
-		 IsEqualGUID( &IID_IMediaSeeking, piid ) )
-	{
-		TRACE( "IMediaSeeking(or IMediaPosition) is queried\n" );
-		return IUnknown_QueryInterface( (IUnknown*)(&This->pFilter->pSeekPass->unk), piid, ppobj );
-	}
-
-	return E_NOINTERFACE;
-}
-
-static void QUARTZ_DestroyTransformBaseOutPin(IUnknown* punk)
-{
-	CTransformBaseOutPinImpl_THIS(punk,unk);
-
-	TRACE( "(%p)\n", This );
-
-	CPinBaseImpl_UninitIPin( &This->pin );
-	CQualityControlPassThruImpl_UninitIQualityControl( &This->qcontrol );
-}
-
-HRESULT QUARTZ_CreateTransformBaseOutPin(
-	CTransformBaseImpl* pFilter,
-	CRITICAL_SECTION* pcsPin,
-	CTransformBaseOutPinImpl** ppPin,
-	LPCWSTR pwszPinName )
-{
-	CTransformBaseOutPinImpl*	This = NULL;
-	HRESULT hr;
-
-	TRACE("(%p,%p,%p)\n",pFilter,pcsPin,ppPin);
-
-	This = (CTransformBaseOutPinImpl*)
-		QUARTZ_AllocObj( sizeof(CTransformBaseOutPinImpl) );
-	if ( This == NULL )
-		return E_OUTOFMEMORY;
-
-	QUARTZ_IUnkInit( &This->unk, NULL );
-	This->qiext.pNext = NULL;
-	This->qiext.pOnQueryInterface = &CTransformBaseOutPinImpl_OnQueryInterface;
-	QUARTZ_IUnkAddDelegation( &This->unk, &This->qiext );
-
-	This->pFilter = pFilter;
-
-	hr = CPinBaseImpl_InitIPin(
-		&This->pin,
-		This->unk.punkControl,
-		pcsPin, NULL,
-		&pFilter->basefilter,
-		pwszPinName,
-		TRUE,
-		&outputpinhandlers );
-
-	if ( SUCCEEDED(hr) )
-	{
-		hr = CQualityControlPassThruImpl_InitIQualityControl(
-			&This->qcontrol,
-			This->unk.punkControl,
-			&This->pin );
-		if ( FAILED(hr) )
-		{
-			CPinBaseImpl_UninitIPin( &This->pin );
-		}
-	}
-
-	if ( FAILED(hr) )
-	{
-		QUARTZ_FreeObj(This);
-		return hr;
-	}
-
-	This->unk.pEntries = OutPinIFEntries;
-	This->unk.dwEntries = sizeof(OutPinIFEntries)/sizeof(OutPinIFEntries[0]);
-	This->unk.pOnFinalRelease = QUARTZ_DestroyTransformBaseOutPin;
-
-	*ppPin = This;
-
-	TRACE("returned successfully.\n");
-
-	return S_OK;
-}
-
diff --git a/dlls/quartz/xform.h b/dlls/quartz/xform.h
deleted file mode 100644
index 2bbc337..0000000
--- a/dlls/quartz/xform.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Implements IBaseFilter for transform filters. (internal)
- *
- * Copyright (C) Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_XFORM_H
-#define	WINE_DSHOW_XFORM_H
-
-#include "iunk.h"
-#include "basefilt.h"
-#include "seekpass.h"
-
-
-typedef struct CTransformBaseImpl CTransformBaseImpl;
-typedef struct CTransformBaseInPinImpl CTransformBaseInPinImpl;
-typedef struct CTransformBaseOutPinImpl CTransformBaseOutPinImpl;
-typedef struct TransformBaseHandlers	TransformBaseHandlers;
-
-/* {301056D0-6DFF-11D2-9EEB-006008039E37} */
-DEFINE_GUID(CLSID_quartzMJPGDecompressor,
-0x301056D0,0x6DFF,0x11D2,0x9E,0xEB,0x00,0x60,0x08,0x03,0x9E,0x37);
-/* {FDFE9681-74A3-11D0-AFA7-00AA00B67A42} */
-DEFINE_GUID(CLSID_quartzQuickTimeDecompressor,
-0xFDFE9681,0x74A3,0x11D0,0xAF,0xA7,0x00,0xAA,0x00,0xB6,0x7A,0x42);
-
-
-struct CTransformBaseImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CBaseFilterImpl	basefilter;
-
-	CTransformBaseInPinImpl*	pInPin;
-	CTransformBaseOutPinImpl*	pOutPin;
-	CSeekingPassThru*	pSeekPass;
-
-	CRITICAL_SECTION	csReceive;
-	IMemAllocator*	m_pOutPinAllocator;
-	BOOL	m_bPreCopy; /* sample must be copied */
-	BOOL	m_bReuseSample; /* sample must be reused */
-	BOOL	m_bInFlush;
-	IMediaSample*	m_pSample;
-
-	BOOL	m_bFiltering;
-	const TransformBaseHandlers*	m_pHandler;
-	void*	m_pUserData;
-};
-
-struct CTransformBaseInPinImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CPinBaseImpl	pin;
-	CMemInputPinBaseImpl	meminput;
-
-	CTransformBaseImpl*	pFilter;
-};
-
-struct CTransformBaseOutPinImpl
-{
-	QUARTZ_IUnkImpl	unk;
-	CPinBaseImpl	pin;
-	CQualityControlPassThruImpl	qcontrol;
-	QUARTZ_IFDelegation	qiext;
-
-	CTransformBaseImpl*	pFilter;
-};
-
-struct TransformBaseHandlers
-{
-	/* all methods must be implemented */
-
-	HRESULT (*pInit)( CTransformBaseImpl* pImpl );
-	HRESULT (*pCleanup)( CTransformBaseImpl* pImpl );
-
-	/* pmtOut may be NULL */
-	HRESULT (*pCheckMediaType)( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut );
-	/* get output types */
-	HRESULT (*pGetOutputTypes)( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE** ppmtAcceptTypes, ULONG* pcAcceptTypes );
-	/* get allocator properties */
-	HRESULT (*pGetAllocProp)( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, ALLOCATOR_PROPERTIES* pProp, BOOL* pbTransInPlace, BOOL* pbTryToReuseSample );
-
-	/* prepare the filter */
-	HRESULT (*pBeginTransform)( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, BOOL bReuseSample );
-	/* process a sample */
-	HRESULT (*pProcessReceive)( CTransformBaseImpl* pImpl, IMediaSample* pSampIn ); /* override Transform */
-	HRESULT (*pTransform)( CTransformBaseImpl* pImpl, IMediaSample* pSampIn, IMediaSample* pSampOut );
-	/* unprepare the filter */
-	HRESULT (*pEndTransform)( CTransformBaseImpl* pImpl );
-};
-
-#define	CTransformBaseImpl_THIS(iface,member)	CTransformBaseImpl*	This = ((CTransformBaseImpl*)(((char*)iface)-offsetof(CTransformBaseImpl,member)))
-#define	CTransformBaseInPinImpl_THIS(iface,member)	CTransformBaseInPinImpl*	This = ((CTransformBaseInPinImpl*)(((char*)iface)-offsetof(CTransformBaseInPinImpl,member)))
-#define	CTransformBaseOutPinImpl_THIS(iface,member)	CTransformBaseOutPinImpl*	This = ((CTransformBaseOutPinImpl*)(((char*)iface)-offsetof(CTransformBaseOutPinImpl,member)))
-
-
-HRESULT QUARTZ_CreateTransformBase(
-	IUnknown* punkOuter,void** ppobj,
-	const CLSID* pclsidTransformBase,
-	LPCWSTR pwszTransformBaseName,
-	LPCWSTR pwszInPinName,
-	LPCWSTR pwszOutPinName,
-	const TransformBaseHandlers* pHandler );
-HRESULT QUARTZ_CreateTransformBaseInPin(
-	CTransformBaseImpl* pFilter,
-	CRITICAL_SECTION* pcsPin,
-	CRITICAL_SECTION* pcsPinReceive,
-	CTransformBaseInPinImpl** ppPin,
-	LPCWSTR pwszPinName );
-HRESULT QUARTZ_CreateTransformBaseOutPin(
-	CTransformBaseImpl* pFilter,
-	CRITICAL_SECTION* pcsPin,
-	CTransformBaseOutPinImpl** ppPin,
-	LPCWSTR pwszPinName );
-
-
-HRESULT QUARTZ_CreateAVIDec(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateColour(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateACMWrapper(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateCMpegAudioCodec(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateCMpegVideoCodec(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateMJPGDecompressor(IUnknown* punkOuter,void** ppobj);
-HRESULT QUARTZ_CreateQuickTimeDecompressor(IUnknown* punkOuter,void** ppobj);
-
-
-#endif	/* WINE_DSHOW_XFORM_H */
diff --git a/include/Makefile.in b/include/Makefile.in
index e238ab2..502c0df 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -5,8 +5,6 @@
 MODULE	  = none
 
 INSTALLED_INCLUDES = \
-	amaudio.h \
-	amvideo.h \
 	audevcod.h \
 	basetsd.h \
 	cderr.h \
@@ -15,7 +13,6 @@
 	commctrl.h \
 	commdlg.h \
 	compobj.h \
-	control.h \
 	cpl.h \
 	d3d.h \
 	d3dcaps.h \
@@ -37,8 +34,6 @@
 	dshow.h \
 	dsound.h \
 	dvdmedia.h \
-	errors.h \
-	evcode.h \
 	guiddef.h \
 	imagehlp.h \
 	imm.h \
@@ -126,7 +121,6 @@
 	sqlext.h \
 	sqltypes.h \
 	storage.h \
-	strmif.h \
 	tapi.h \
 	tlhelp32.h \
 	unknwn.h \
diff --git a/include/amaudio.h b/include/amaudio.h
deleted file mode 100644
index 7125391..0000000
--- a/include/amaudio.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2001 Hidenori Takeshima
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_AMAUDIO_H_
-#define __WINE_AMAUDIO_H_
-
-#include "ole2.h"
-#include "mmsystem.h"
-#include "dsound.h"
-
-typedef struct IAMDirectSound IAMDirectSound;
-
-
-/**************************************************************************
- *
- * IAMDirectSound interface
- *
- */
-
-#define ICOM_INTERFACE IAMDirectSound
-#define IAMDirectSound_METHODS \
-    ICOM_METHOD1(HRESULT,GetDirectSoundInterface,LPDIRECTSOUND*,a1) \
-    ICOM_METHOD1(HRESULT,GetPrimaryBufferInterface,LPDIRECTSOUNDBUFFER*,a1) \
-    ICOM_METHOD1(HRESULT,GetSecondaryBufferInterface,LPDIRECTSOUNDBUFFER*,a1) \
-    ICOM_METHOD1(HRESULT,ReleaseDirectSoundInterface,LPDIRECTSOUND,a1) \
-    ICOM_METHOD1(HRESULT,ReleasePrimaryBufferInterface,LPDIRECTSOUNDBUFFER,a1) \
-    ICOM_METHOD1(HRESULT,ReleaseSecondaryBufferInterface,LPDIRECTSOUNDBUFFER,a1) \
-    ICOM_METHOD2(HRESULT,SetFocusWindow,HWND,a1,BOOL,a2) \
-    ICOM_METHOD2(HRESULT,GetFocusWindow,HWND*,a1,BOOL*,a2)
-
-#define IAMDirectSound_IMETHODS \
-    IUnknown_IMETHODS \
-    IAMDirectSound_METHODS
-
-ICOM_DEFINE(IAMDirectSound,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IAMDirectSound_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IAMDirectSound_AddRef(p) ICOM_CALL (AddRef,p)
-#define IAMDirectSound_Release(p) ICOM_CALL (Release,p)
-    /*** IAMDirectSound methods ***/
-#define IAMDirectSound_GetDirectSoundInterface(p,a1) ICOM_CALL1(GetDirectSoundInterface,p,a1)
-#define IAMDirectSound_GetPrimaryBufferInterface(p,a1) ICOM_CALL1(GetPrimaryBufferInterface,p,a1)
-#define IAMDirectSound_GetSecondaryBufferInterface(p,a1) ICOM_CALL1(GetSecondaryBufferInterface,p,a1)
-#define IAMDirectSound_ReleaseDirectSoundInterface(p,a1) ICOM_CALL1(ReleaseDirectSoundInterface,p,a1)
-#define IAMDirectSound_ReleasePrimaryBufferInterface(p,a1) ICOM_CALL1(ReleasePrimaryBufferInterface,p,a1)
-#define IAMDirectSound_ReleaseSecondaryBufferInterface(p,a1) ICOM_CALL1(ReleaseSecondaryBufferInterface,p,a1)
-#define IAMDirectSound_SetFocusWindow(p,a1,a2) ICOM_CALL2(SetFocusWindow,p,a1,a2)
-#define IAMDirectSound_GetFocusWindow(p,a1,a2) ICOM_CALL2(GetFocusWindow,p,a1,a2)
-
-#endif  /* __WINE_AMAUDIO_H_ */
diff --git a/include/amvideo.h b/include/amvideo.h
deleted file mode 100644
index 48600c7..0000000
--- a/include/amvideo.h
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * Copyright (C) 2001 Hidenori Takeshima
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_AMVIDEO_H_
-#define __WINE_AMVIDEO_H_
-
-#include "ddraw.h"
-
-
-typedef struct IBaseVideoMixer IBaseVideoMixer;
-typedef struct IDirectDrawVideo IDirectDrawVideo;
-typedef struct IFullScreenVideo IFullScreenVideo;
-typedef struct IFullScreenVideoEx IFullScreenVideoEx;
-typedef struct IQualProp IQualProp;
-
-
-#define	iEGA_COLORS	16
-#define	iPALETTE_COLORS	256
-#define	iMASK_COLORS	3
-#define	iRED	0
-#define	iGREEN	1
-#define	iBLUE	2
-
-#define WIDTHBYTES(bits)	((DWORD)((((DWORD)(bits)+31U)&(~31U))>>3))
-#define DIBWIDTHBYTES(bi)	((DWORD)WIDTHBYTES((bi).biWidth*(bi).biBitCount))
-#define DIBSIZE(bi)	(DIBWIDTHBYTES(bi)*(DWORD)abs((bi).biHeight))
-
-
-typedef struct
-{
-	DWORD	dwBitMasks[iMASK_COLORS];
-	RGBQUAD	bmiColors[iPALETTE_COLORS];
-} TRUECOLORINFO;
-
-typedef struct
-{
-	RECT	rcSource;
-	RECT	rcTarget;
-	DWORD	dwBitRate;
-	DWORD	dwBitErrorRate;
-	REFERENCE_TIME	AvgTimePerFrame;
-	BITMAPINFOHEADER	bmiHeader;
-} VIDEOINFOHEADER;
-
-typedef struct
-{
-	RECT	rcSource;
-	RECT	rcTarget;
-	DWORD	dwBitRate;
-	DWORD	dwBitErrorRate;
-	REFERENCE_TIME	AvgTimePerFrame;
-	BITMAPINFOHEADER	bmiHeader;
-
-    union {
-		RGBQUAD	bmiColors[iPALETTE_COLORS];
-		DWORD	dwBitMasks[iMASK_COLORS];
-		TRUECOLORINFO	TrueColorInfo;
-    } DUMMYUNIONNAME;
-} VIDEOINFO;
-
-typedef struct
-{
-	VIDEOINFOHEADER	hdr;
-	DWORD	dwStartTimeCode;
-	DWORD	cbSequenceHeader;
-	BYTE	bSequenceHeader[1];
-} MPEG1VIDEOINFO;
-
-typedef struct
-{
-	RECT	rcSource;
-	RECT	rcTarget;
-	DWORD	dwActiveWidth;
-	DWORD	dwActiveHeight;
-	REFERENCE_TIME	AvgTimePerFrame;
-} ANALOGVIDEOINFO;
-
-
-/**************************************************************************
- *
- * IBaseVideoMixer interface
- *
- */
-
-#define ICOM_INTERFACE IBaseVideoMixer
-#define IBaseVideoMixer_METHODS \
-    ICOM_METHOD1(HRESULT,SetLeadPin,int,a1) \
-    ICOM_METHOD1(HRESULT,GetLeadPin,int*,a1) \
-    ICOM_METHOD1(HRESULT,GetInputPinCount,int*,a1) \
-    ICOM_METHOD1(HRESULT,IsUsingClock,int*,a1) \
-    ICOM_METHOD1(HRESULT,SetUsingClock,int,a1) \
-    ICOM_METHOD1(HRESULT,GetClockPeriod,int*,a1) \
-    ICOM_METHOD1(HRESULT,SetClockPeriod,int,a1)
-
-#define IBaseVideoMixer_IMETHODS \
-    IUnknown_IMETHODS \
-    IBaseVideoMixer_METHODS
-
-ICOM_DEFINE(IBaseVideoMixer,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IBaseVideoMixer_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IBaseVideoMixer_AddRef(p) ICOM_CALL (AddRef,p)
-#define IBaseVideoMixer_Release(p) ICOM_CALL (Release,p)
-    /*** IBaseVideoMixer methods ***/
-#define IBaseVideoMixer_SetLeadPin(p,a1) ICOM_CALL1(SetLeadPin,p,a1)
-#define IBaseVideoMixer_GetLeadPin(p,a1) ICOM_CALL1(GetLeadPin,p,a1)
-#define IBaseVideoMixer_GetInputPinCount(p,a1) ICOM_CALL1(GetInputPinCount,p,a1)
-#define IBaseVideoMixer_IsUsingClock(p,a1) ICOM_CALL1(IsUsingClock,p,a1)
-#define IBaseVideoMixer_SetUsingClock(p,a1) ICOM_CALL1(SetUsingClock,p,a1)
-#define IBaseVideoMixer_GetClockPeriod(p,a1) ICOM_CALL1(GetClockPeriod,p,a1)
-#define IBaseVideoMixer_SetClockPeriod(p,a1) ICOM_CALL1(SetClockPeriod,p,a1)
-
-/**************************************************************************
- *
- * IDirectDrawVideo interface
- *
- */
-
-#define ICOM_INTERFACE IDirectDrawVideo
-#define IDirectDrawVideo_METHODS \
-    ICOM_METHOD1(HRESULT,GetSwitches,DWORD*,a1) \
-    ICOM_METHOD1(HRESULT,SetSwitches,DWORD,a1) \
-    ICOM_METHOD1(HRESULT,GetCaps,DDCAPS*,a1) \
-    ICOM_METHOD1(HRESULT,GetEmulatedCaps,DDCAPS*,a1) \
-    ICOM_METHOD1(HRESULT,GetSurfaceDesc,DDSURFACEDESC*,a1) \
-    ICOM_METHOD2(HRESULT,GetFourCCCodes,DWORD*,a1,DWORD*,a2) \
-    ICOM_METHOD1(HRESULT,SetDirectDraw,LPDIRECTDRAW,a1) \
-    ICOM_METHOD1(HRESULT,GetDirectDraw,LPDIRECTDRAW*,a1) \
-    ICOM_METHOD1(HRESULT,GetSurfaceType,DWORD*,a1) \
-    ICOM_METHOD(HRESULT,SetDefault) \
-    ICOM_METHOD1(HRESULT,UseScanLine,long,a1) \
-    ICOM_METHOD1(HRESULT,CanUseScanLine,long*,a1) \
-    ICOM_METHOD1(HRESULT,UseOverlayStretch,long,a1) \
-    ICOM_METHOD1(HRESULT,CanUseOverlayStretch,long*,a1) \
-    ICOM_METHOD1(HRESULT,UseWhenFullScreen,long,a1) \
-    ICOM_METHOD1(HRESULT,WillUseFullScreen,long*,a1)
-
-#define IDirectDrawVideo_IMETHODS \
-    IUnknown_IMETHODS \
-    IDirectDrawVideo_METHODS
-
-ICOM_DEFINE(IDirectDrawVideo,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IDirectDrawVideo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IDirectDrawVideo_AddRef(p) ICOM_CALL (AddRef,p)
-#define IDirectDrawVideo_Release(p) ICOM_CALL (Release,p)
-    /*** IDirectDrawVideo methods ***/
-#define IDirectDrawVideo_GetSwitches(p,a1) ICOM_CALL1(GetSwitches,p,a1)
-#define IDirectDrawVideo_SetSwitches(p,a1) ICOM_CALL1(SetSwitches,p,a1)
-#define IDirectDrawVideo_GetCaps(p,a1) ICOM_CALL1(GetCaps,p,a1)
-#define IDirectDrawVideo_GetEmulatedCaps(p,a1) ICOM_CALL1(GetEmulatedCaps,p,a1)
-#define IDirectDrawVideo_GetSurfaceDesc(p,a1) ICOM_CALL1(GetSurfaceDesc,p,a1)
-#define IDirectDrawVideo_GetFourCCCodes(p,a1,a2) ICOM_CALL2(GetFourCCCodes,p,a1,a2)
-#define IDirectDrawVideo_SetDirectDraw(p,a1) ICOM_CALL1(SetDirectDraw,p,a1)
-#define IDirectDrawVideo_GetDirectDraw(p,a1) ICOM_CALL1(GetDirectDraw,p,a1)
-#define IDirectDrawVideo_GetSurfaceType(p,a1) ICOM_CALL1(GetSurfaceType,p,a1)
-#define IDirectDrawVideo_SetDefault(p) ICOM_CALL (SetDefault,p)
-#define IDirectDrawVideo_UseScanLine(p,a1) ICOM_CALL1(UseScanLine,p,a1)
-#define IDirectDrawVideo_CanUseScanLine(p,a1) ICOM_CALL1(CanUseScanLine,p,a1)
-#define IDirectDrawVideo_UseOverlayStretch(p,a1) ICOM_CALL1(UseOverlayStretch,p,a1)
-#define IDirectDrawVideo_CanUseOverlayStretch(p,a1) ICOM_CALL1(CanUseOverlayStretch,p,a1)
-#define IDirectDrawVideo_UseWhenFullScreen(p,a1) ICOM_CALL1(UseWhenFullScreen,p,a1)
-#define IDirectDrawVideo_WillUseFullScreen(p,a1) ICOM_CALL1(WillUseFullScreen,p,a1)
-
-/**************************************************************************
- *
- * IFullScreenVideo interface
- *
- */
-
-#define ICOM_INTERFACE IFullScreenVideo
-#define IFullScreenVideo_METHODS \
-    ICOM_METHOD1(HRESULT,CountModes,long*,a1) \
-    ICOM_METHOD4(HRESULT,GetModeInfo,long,a1,long*,a2,long*,a3,long*,a4) \
-    ICOM_METHOD1(HRESULT,GetCurrentMode,long*,a1) \
-    ICOM_METHOD1(HRESULT,IsModeAvailable,long,a1) \
-    ICOM_METHOD1(HRESULT,IsModeEnabled,long,a1) \
-    ICOM_METHOD2(HRESULT,SetEnabled,long,a1,long,a2) \
-    ICOM_METHOD1(HRESULT,GetClipFactor,long*,a1) \
-    ICOM_METHOD1(HRESULT,SetClipFactor,long,a1) \
-    ICOM_METHOD1(HRESULT,SetMessageDrain,HWND,a1) \
-    ICOM_METHOD1(HRESULT,GetMessageDrain,HWND*,a1) \
-    ICOM_METHOD1(HRESULT,SetMonitor,long,a1) \
-    ICOM_METHOD1(HRESULT,GetMonitor,long*,a1) \
-    ICOM_METHOD1(HRESULT,HideOnDeactivate,long,a1) \
-    ICOM_METHOD(HRESULT,IsHideOnDeactivate) \
-    ICOM_METHOD1(HRESULT,SetCaption,BSTR,a1) \
-    ICOM_METHOD1(HRESULT,GetCaption,BSTR*,a1) \
-    ICOM_METHOD(HRESULT,SetDefault)
-
-#define IFullScreenVideo_IMETHODS \
-    IUnknown_IMETHODS \
-    IFullScreenVideo_METHODS
-
-ICOM_DEFINE(IFullScreenVideo,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IFullScreenVideo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IFullScreenVideo_AddRef(p) ICOM_CALL (AddRef,p)
-#define IFullScreenVideo_Release(p) ICOM_CALL (Release,p)
-    /*** IFullScreenVideo methods ***/
-#define IFullScreenVideo_CountModes(p,a1) ICOM_CALL1(CountModes,p,a1)
-#define IFullScreenVideo_GetModeInfo(p,a1,a2,a3,a4) ICOM_CALL4(GetModeInfo,p,a1,a2,a3,a4)
-#define IFullScreenVideo_GetCurrentMode(p,a1) ICOM_CALL1(GetCurrentMode,p,a1)
-#define IFullScreenVideo_IsModeAvailable(p,a1) ICOM_CALL1(IsModeAvailable,p,a1)
-#define IFullScreenVideo_IsModeEnabled(p,a1) ICOM_CALL1(IsModeEnabled,p,a1)
-#define IFullScreenVideo_SetEnabled(p,a1,a2) ICOM_CALL2(SetEnabled,p,a1,a2)
-#define IFullScreenVideo_GetClipFactor(p,a1) ICOM_CALL1(GetClipFactor,p,a1)
-#define IFullScreenVideo_SetClipFactor(p,a1) ICOM_CALL1(SetClipFactor,p,a1)
-#define IFullScreenVideo_SetMessageDrain(p,a1) ICOM_CALL1(SetMessageDrain,p,a1)
-#define IFullScreenVideo_GetMessageDrain(p,a1) ICOM_CALL1(GetMessageDrain,p,a1)
-#define IFullScreenVideo_SetMonitor(p,a1) ICOM_CALL1(SetMonitor,p,a1)
-#define IFullScreenVideo_GetMonitor(p,a1) ICOM_CALL1(GetMonitor,p,a1)
-#define IFullScreenVideo_HideOnDeactivate(p,a1) ICOM_CALL1(HideOnDeactivate,p,a1)
-#define IFullScreenVideo_IsHideOnDeactivate(p) ICOM_CALL (IsHideOnDeactivate,p)
-#define IFullScreenVideo_SetCaption(p,a1) ICOM_CALL1(SetCaption,p,a1)
-#define IFullScreenVideo_GetCaption(p,a1) ICOM_CALL1(GetCaption,p,a1)
-#define IFullScreenVideo_SetDefault(p) ICOM_CALL (SetDefault,p)
-
-/**************************************************************************
- *
- * IFullScreenVideoEx interface
- *
- */
-
-#define ICOM_INTERFACE IFullScreenVideoEx
-#define IFullScreenVideoEx_METHODS \
-    ICOM_METHOD2(HRESULT,SetAcceleratorTable,HWND,a1,HACCEL,a2) \
-    ICOM_METHOD2(HRESULT,GetAcceleratorTable,HWND*,a1,HACCEL*,a2) \
-    ICOM_METHOD1(HRESULT,KeepPixelAspectRatio,long,a1) \
-    ICOM_METHOD1(HRESULT,IsKeepPixelAspectRatio,long*,a1)
-
-#define IFullScreenVideoEx_IMETHODS \
-    IFullScreenVideo_IMETHODS \
-    IFullScreenVideoEx_METHODS
-
-ICOM_DEFINE(IFullScreenVideoEx,IFullScreenVideo)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IFullScreenVideoEx_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IFullScreenVideoEx_AddRef(p) ICOM_CALL (AddRef,p)
-#define IFullScreenVideoEx_Release(p) ICOM_CALL (Release,p)
-    /*** IFullScreenVideo methods ***/
-#define IFullScreenVideoEx_CountModes(p,a1) ICOM_CALL1(CountModes,p,a1)
-#define IFullScreenVideoEx_GetModeInfo(p,a1,a2,a3,a4) ICOM_CALL4(GetModeInfo,p,a1,a2,a3,a4)
-#define IFullScreenVideoEx_GetCurrentMode(p,a1) ICOM_CALL1(GetCurrentMode,p,a1)
-#define IFullScreenVideoEx_IsModeAvailable(p,a1) ICOM_CALL1(IsModeAvailable,p,a1)
-#define IFullScreenVideoEx_IsModeEnabled(p,a1) ICOM_CALL1(IsModeEnabled,p,a1)
-#define IFullScreenVideoEx_SetEnabled(p,a1,a2) ICOM_CALL2(SetEnabled,p,a1,a2)
-#define IFullScreenVideoEx_GetClipFactor(p,a1) ICOM_CALL1(GetClipFactor,p,a1)
-#define IFullScreenVideoEx_SetClipFactor(p,a1) ICOM_CALL1(SetClipFactor,p,a1)
-#define IFullScreenVideoEx_SetMessageDrain(p,a1) ICOM_CALL1(SetMessageDrain,p,a1)
-#define IFullScreenVideoEx_GetMessageDrain(p,a1) ICOM_CALL1(GetMessageDrain,p,a1)
-#define IFullScreenVideoEx_SetMonitor(p,a1) ICOM_CALL1(SetMonitor,p,a1)
-#define IFullScreenVideoEx_GetMonitor(p,a1) ICOM_CALL1(GetMonitor,p,a1)
-#define IFullScreenVideoEx_HideOnDeactivate(p,a1) ICOM_CALL1(HideOnDeactivate,p,a1)
-#define IFullScreenVideoEx_IsHideOnDeactivate(p) ICOM_CALL (IsHideOnDeactivate,p)
-#define IFullScreenVideoEx_SetCaption(p,a1) ICOM_CALL1(SetCaption,p,a1)
-#define IFullScreenVideoEx_GetCaption(p,a1) ICOM_CALL1(GetCaption,p,a1)
-#define IFullScreenVideoEx_SetDefault(p) ICOM_CALL (SetDefault,p)
-    /*** IFullScreenVideoEx methods ***/
-#define IFullScreenVideoEx_SetAcceleratorTable(p,a1,a2) ICOM_CALL2(SetAcceleratorTable,p,a1,a2)
-#define IFullScreenVideoEx_GetAcceleratorTable(p,a1,a2) ICOM_CALL2(GetAcceleratorTable,p,a1,a2)
-#define IFullScreenVideoEx_KeepPixelAspectRatio(p,a1) ICOM_CALL1(KeepPixelAspectRatio,p,a1)
-#define IFullScreenVideoEx_IsKeepPixelAspectRatio(p,a1) ICOM_CALL1(IsKeepPixelAspectRatio,p,a1)
-
-/**************************************************************************
- *
- * IQualProp interface
- *
- */
-
-#define ICOM_INTERFACE IQualProp
-#define IQualProp_METHODS \
-    ICOM_METHOD1(HRESULT,get_FramesDroppedInRenderer,int*,a1) \
-    ICOM_METHOD1(HRESULT,get_FramesDrawn,int*,a1) \
-    ICOM_METHOD1(HRESULT,get_AvgFrameRate,int*,a1) \
-    ICOM_METHOD1(HRESULT,get_Jitter,int*,a1) \
-    ICOM_METHOD1(HRESULT,get_AvgSyncOffset,int*,a1) \
-    ICOM_METHOD1(HRESULT,get_DevSyncOffset,int*,a1)
-
-#define IQualProp_IMETHODS \
-    IUnknown_IMETHODS \
-    IQualProp_METHODS
-
-ICOM_DEFINE(IQualProp,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IQualProp_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IQualProp_AddRef(p) ICOM_CALL (AddRef,p)
-#define IQualProp_Release(p) ICOM_CALL (Release,p)
-    /*** IQualProp methods ***/
-#define IQualProp_get_FramesDroppedInRenderer(p,a1) ICOM_CALL1(get_FramesDroppedInRenderer,p,a1)
-#define IQualProp_get_FramesDrawn(p,a1) ICOM_CALL1(get_FramesDrawn,p,a1)
-#define IQualProp_get_AvgFrameRate(p,a1) ICOM_CALL1(get_AvgFrameRate,p,a1)
-#define IQualProp_get_Jitter(p,a1) ICOM_CALL1(get_Jitter,p,a1)
-#define IQualProp_get_AvgSyncOffset(p,a1) ICOM_CALL1(get_AvgSyncOffset,p,a1)
-#define IQualProp_get_DevSyncOffset(p,a1) ICOM_CALL1(get_DevSyncOffset,p,a1)
-
-
-#endif  /* __WINE_AMVIDEO_H_ */
diff --git a/include/control.h b/include/control.h
deleted file mode 100644
index e000af4..0000000
--- a/include/control.h
+++ /dev/null
@@ -1,718 +0,0 @@
-/*
- * Copyright (C) 2001 Hidenori Takeshima
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_CONTROL_H_
-#define __WINE_CONTROL_H_
-
-/* forward decls. */
-
-typedef struct IAMCollection IAMCollection;
-typedef struct IBasicAudio IBasicAudio;
-typedef struct IBasicVideo IBasicVideo;
-typedef struct IDeferredCommand IDeferredCommand;
-typedef struct IFilterInfo IFilterInfo;
-typedef struct IMediaControl IMediaControl;
-typedef struct IMediaEvent IMediaEvent;
-typedef struct IMediaEventEx IMediaEventEx;
-typedef struct IMediaPosition IMediaPosition;
-typedef struct IMediaTypeInfo IMediaTypeInfo;
-typedef struct IPinInfo IPinInfo;
-typedef struct IQueueCommand IQueueCommand;
-typedef struct IRegFilterInfo IRegFilterInfo;
-typedef struct IVideoWindow IVideoWindow;
-
-/* GUIDs */
-
-DEFINE_GUID(IID_IAMCollection,0x56A868B9,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IBasicAudio,0x56A868B3,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IBasicVideo,0x56A868B5,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IDeferredCommand,0x56A868B8,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IFilterInfo,0x56A868BA,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IMediaControl,0x56A868B1,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IMediaEvent,0x56A868B6,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IMediaEventEx,0x56A868C0,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IMediaPosition,0x56A868B2,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IMediaTypeInfo,0x56A868BC,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IPinInfo,0x56A868BD,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IQueueCommand,0x56A868B7,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IRegFilterInfo,0x56A868BB,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IVideoWindow,0x56A868B4,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-
-#ifndef __WINE_REFTIME_DEFINED_
-#define __WINE_REFTIME_DEFINED_
-typedef double REFTIME;
-#endif  /* __WINE_REFTIME_DEFINED_ */
-
-typedef LONG_PTR OAEVENT;
-typedef LONG_PTR OAHWND;
-typedef long OAFilterState;
-
-
-
-/**************************************************************************
- *
- * IAMCollection interface
- *
- */
-
-#define ICOM_INTERFACE IAMCollection
-#define IAMCollection_METHODS \
-    ICOM_METHOD1(HRESULT,get_Count,LONG*,a1) \
-    ICOM_METHOD2(HRESULT,Item,long,a1,IUnknown**,a2) \
-    ICOM_METHOD1(HRESULT,get__NewEnum,IUnknown**,a1)
-
-#define IAMCollection_IMETHODS \
-    IDispatch_IMETHODS \
-    IAMCollection_METHODS
-
-ICOM_DEFINE(IAMCollection,IDispatch)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IAMCollection_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IAMCollection_AddRef(p) ICOM_CALL (AddRef,p)
-#define IAMCollection_Release(p) ICOM_CALL (Release,p)
-    /*** IDispatch methods ***/
-#define IAMCollection_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
-#define IAMCollection_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
-#define IAMCollection_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
-#define IAMCollection_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
-    /*** IAMCollection methods ***/
-#define IAMCollection_get_Count(p,a1) ICOM_CALL1(get_Count,p,a1)
-#define IAMCollection_Item(p,a1,a2) ICOM_CALL2(Item,p,a1,a2)
-#define IAMCollection_get__NewEnum(p,a1) ICOM_CALL1(get__NewEnum,p,a1)
-
-/**************************************************************************
- *
- * IBasicAudio interface
- *
- */
-
-#define ICOM_INTERFACE IBasicAudio
-#define IBasicAudio_METHODS \
-    ICOM_METHOD1(HRESULT,put_Volume,long,a1) \
-    ICOM_METHOD1(HRESULT,get_Volume,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_Balance,long,a1) \
-    ICOM_METHOD1(HRESULT,get_Balance,long*,a1)
-
-#define IBasicAudio_IMETHODS \
-    IDispatch_IMETHODS \
-    IBasicAudio_METHODS
-
-ICOM_DEFINE(IBasicAudio,IDispatch)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IBasicAudio_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IBasicAudio_AddRef(p) ICOM_CALL (AddRef,p)
-#define IBasicAudio_Release(p) ICOM_CALL (Release,p)
-    /*** IDispatch methods ***/
-#define IBasicAudio_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
-#define IBasicAudio_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
-#define IBasicAudio_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
-#define IBasicAudio_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
-    /*** IBasicAudio methods ***/
-#define IBasicAudio_put_Volume(p,a1) ICOM_CALL1(put_Volume,p,a1)
-#define IBasicAudio_get_Volume(p,a1) ICOM_CALL1(get_Volume,p,a1)
-#define IBasicAudio_put_Balance(p,a1) ICOM_CALL1(put_Balance,p,a1)
-#define IBasicAudio_get_Balance(p,a1) ICOM_CALL1(get_Balance,p,a1)
-
-/**************************************************************************
- *
- * IBasicVideo interface
- *
- */
-
-#define ICOM_INTERFACE IBasicVideo
-#define IBasicVideo_METHODS \
-    ICOM_METHOD1(HRESULT,get_AvgTimePerFrame,REFTIME*,a1) \
-    ICOM_METHOD1(HRESULT,get_BitRate,long*,a1) \
-    ICOM_METHOD1(HRESULT,get_BitErrorRate,long*,a1) \
-    ICOM_METHOD1(HRESULT,get_VideoWidth,long*,a1) \
-    ICOM_METHOD1(HRESULT,get_VideoHeight,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_SourceLeft,long,a1) \
-    ICOM_METHOD1(HRESULT,get_SourceLeft,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_SourceWidth,long,a1) \
-    ICOM_METHOD1(HRESULT,get_SourceWidth,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_SourceTop,long,a1) \
-    ICOM_METHOD1(HRESULT,get_SourceTop,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_SourceHeight,long,a1) \
-    ICOM_METHOD1(HRESULT,get_SourceHeight,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_DestinationLeft,long,a1) \
-    ICOM_METHOD1(HRESULT,get_DestinationLeft,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_DestinationWidth,long,a1) \
-    ICOM_METHOD1(HRESULT,get_DestinationWidth,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_DestinationTop,long,a1) \
-    ICOM_METHOD1(HRESULT,get_DestinationTop,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_DestinationHeight,long,a1) \
-    ICOM_METHOD1(HRESULT,get_DestinationHeight,long*,a1) \
-    ICOM_METHOD4(HRESULT,SetSourcePosition,long,a1,long,a2,long,a3,long,a4) \
-    ICOM_METHOD4(HRESULT,GetSourcePosition,long*,a1,long*,a2,long*,a3,long*,a4) \
-    ICOM_METHOD (HRESULT,SetDefaultSourcePosition) \
-    ICOM_METHOD4(HRESULT,SetDestinationPosition,long,a1,long,a2,long,a3,long,a4) \
-    ICOM_METHOD4(HRESULT,GetDestinationPosition,long*,a1,long*,a2,long*,a3,long*,a4) \
-    ICOM_METHOD (HRESULT,SetDefaultDestinationPosition) \
-    ICOM_METHOD2(HRESULT,GetVideoSize,long*,a1,long*,a2) \
-    ICOM_METHOD4(HRESULT,GetVideoPaletteEntries,long,a1,long,a2,long*,a3,long*,a4) \
-    ICOM_METHOD2(HRESULT,GetCurrentImage,long*,a1,long*,a2) \
-    ICOM_METHOD (HRESULT,IsUsingDefaultSource) \
-    ICOM_METHOD (HRESULT,IsUsingDefaultDestination)
-
-#define IBasicVideo_IMETHODS \
-    IDispatch_IMETHODS \
-    IBasicVideo_METHODS
-
-ICOM_DEFINE(IBasicVideo,IDispatch)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IBasicVideo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IBasicVideo_AddRef(p) ICOM_CALL (AddRef,p)
-#define IBasicVideo_Release(p) ICOM_CALL (Release,p)
-    /*** IDispatch methods ***/
-#define IBasicVideo_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
-#define IBasicVideo_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
-#define IBasicVideo_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
-#define IBasicVideo_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
-    /*** IBasicVideo methods ***/
-#define IBasicVideo_get_AvgTimePerFrame(p,a1) ICOM_CALL1(get_AvgTimePerFrame,p,a1)
-#define IBasicVideo_get_BitRate(p,a1) ICOM_CALL1(get_BitRate,p,a1)
-#define IBasicVideo_get_BitErrorRate(p,a1) ICOM_CALL1(get_BitErrorRate,p,a1)
-#define IBasicVideo_get_VideoWidth(p,a1) ICOM_CALL1(get_VideoWidth,p,a1)
-#define IBasicVideo_get_VideoHeight(p,a1) ICOM_CALL1(get_VideoHeight,p,a1)
-#define IBasicVideo_put_SourceLeft(p,a1) ICOM_CALL1(put_SourceLeft,p,a1)
-#define IBasicVideo_get_SourceLeft(p,a1) ICOM_CALL1(get_SourceLeft,p,a1)
-#define IBasicVideo_put_SourceWidth(p,a1) ICOM_CALL1(put_SourceWidth,p,a1)
-#define IBasicVideo_get_SourceWidth(p,a1) ICOM_CALL1(get_SourceWidth,p,a1)
-#define IBasicVideo_put_SourceTop(p,a1) ICOM_CALL1(put_SourceTop,p,a1)
-#define IBasicVideo_get_SourceTop(p,a1) ICOM_CALL1(get_SourceTop,p,a1)
-#define IBasicVideo_put_SourceHeight(p,a1) ICOM_CALL1(put_SourceHeight,p,a1)
-#define IBasicVideo_get_SourceHeight(p,a1) ICOM_CALL1(get_SourceHeight,p,a1)
-#define IBasicVideo_put_DestinationLeft(p,a1) ICOM_CALL1(put_DestinationLeft,p,a1)
-#define IBasicVideo_get_DestinationLeft(p,a1) ICOM_CALL1(get_DestinationLeft,p,a1)
-#define IBasicVideo_put_DestinationWidth(p,a1) ICOM_CALL1(put_DestinationWidth,p,a1)
-#define IBasicVideo_get_DestinationWidth(p,a1) ICOM_CALL1(get_DestinationWidth,p,a1)
-#define IBasicVideo_put_DestinationTop(p,a1) ICOM_CALL1(put_DestinationTop,p,a1)
-#define IBasicVideo_get_DestinationTop(p,a1) ICOM_CALL1(get_DestinationTop,p,a1)
-#define IBasicVideo_put_DestinationHeight(p,a1) ICOM_CALL1(put_DestinationHeight,p,a1)
-#define IBasicVideo_get_DestinationHeight(p,a1) ICOM_CALL1(get_DestinationHeight,p,a1)
-#define IBasicVideo_SetSourcePosition(p,a1,a2,a3,a4) ICOM_CALL4(SetSourcePosition,p,a1,a2,a3,a4)
-#define IBasicVideo_GetSourcePosition(p,a1,a2,a3,a4) ICOM_CALL4(GetSourcePosition,p,a1,a2,a3,a4)
-#define IBasicVideo_SetDefaultSourcePosition(p) ICOM_CALL (SetDefaultSourcePosition,p)
-#define IBasicVideo_SetDestinationPosition(p,a1,a2,a3,a4) ICOM_CALL4(SetDestinationPosition,p,a1,a2,a3,a4)
-#define IBasicVideo_GetDestinationPosition(p,a1,a2,a3,a4) ICOM_CALL4(GetDestinationPosition,p,a1,a2,a3,a4)
-#define IBasicVideo_SetDefaultDestinationPosition(p) ICOM_CALL (SetDefaultDestinationPosition,p)
-#define IBasicVideo_GetVideoSize(p,a1,a2) ICOM_CALL2(GetVideoSize,p,a1,a2)
-#define IBasicVideo_GetVideoPaletteEntries(p,a1,a2,a3,a4) ICOM_CALL4(GetVideoPaletteEntries,p,a1,a2,a3,a4)
-#define IBasicVideo_GetCurrentImage(p,a1,a2) ICOM_CALL2(GetCurrentImage,p,a1,a2)
-#define IBasicVideo_IsUsingDefaultSource(p) ICOM_CALL (IsUsingDefaultSource,p)
-#define IBasicVideo_IsUsingDefaultDestination(p) ICOM_CALL (IsUsingDefaultDestination,p)
-
-/**************************************************************************
- *
- * IDeferredCommand interface
- *
- */
-
-#define ICOM_INTERFACE IDeferredCommand
-#define IDeferredCommand_METHODS \
-    ICOM_METHOD (HRESULT,Cancel) \
-    ICOM_METHOD1(HRESULT,Confidence,LONG*,a1) \
-    ICOM_METHOD1(HRESULT,Postpone,REFTIME,a1) \
-    ICOM_METHOD1(HRESULT,GetHResult,HRESULT*,a1)
-
-#define IDeferredCommand_IMETHODS \
-    IUnknown_IMETHODS \
-    IDeferredCommand_METHODS
-
-ICOM_DEFINE(IDeferredCommand,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IDeferredCommand_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IDeferredCommand_AddRef(p) ICOM_CALL (AddRef,p)
-#define IDeferredCommand_Release(p) ICOM_CALL (Release,p)
-    /*** IDeferredCommand methods ***/
-#define IDeferredCommand_Cancel(p) ICOM_CALL1(Cancel,p)
-#define IDeferredCommand_Confidence(p,a1) ICOM_CALL1(Confidence,p,a1)
-#define IDeferredCommand_Postpone(p,a1) ICOM_CALL1(Postpone,p,a1)
-#define IDeferredCommand_GetHResult(p,a1) ICOM_CALL1(GetHResult,p,a1)
-
-/**************************************************************************
- *
- * IFilterInfo interface
- *
- */
-
-#define ICOM_INTERFACE IFilterInfo
-#define IFilterInfo_METHODS \
-    ICOM_METHOD2(HRESULT,FindPin,BSTR,a1,IDispatch**,a2) \
-    ICOM_METHOD1(HRESULT,get_Name,BSTR*,a1) \
-    ICOM_METHOD1(HRESULT,get_VendorInfo,BSTR*,a1) \
-    ICOM_METHOD1(HRESULT,get_Filter,IUnknown**,a1) \
-    ICOM_METHOD1(HRESULT,get_Pins,IDispatch**,a1) \
-    ICOM_METHOD1(HRESULT,get_IsFileSource,LONG*,a1) \
-    ICOM_METHOD1(HRESULT,get_Filename,BSTR*,a1) \
-    ICOM_METHOD1(HRESULT,put_Filename,BSTR,a1)
-
-#define IFilterInfo_IMETHODS \
-    IDispatch_IMETHODS \
-    IFilterInfo_METHODS
-
-ICOM_DEFINE(IFilterInfo,IDispatch)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IFilterInfo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IFilterInfo_AddRef(p) ICOM_CALL (AddRef,p)
-#define IFilterInfo_Release(p) ICOM_CALL (Release,p)
-    /*** IDispatch methods ***/
-#define IFilterInfo_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
-#define IFilterInfo_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
-#define IFilterInfo_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
-#define IFilterInfo_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
-    /*** IFilterInfo methods ***/
-#define IFilterInfo_FindPin(p,a1,a2) ICOM_CALL2(FindPin,p,a1,a2)
-#define IFilterInfo_get_Name(p,a1) ICOM_CALL1(get_Name,p,a1)
-#define IFilterInfo_get_VendorInfo(p,a1) ICOM_CALL1(get_VendorInfo,p,a1)
-#define IFilterInfo_get_Filter(p,a1) ICOM_CALL1(get_Filter,p,a1)
-#define IFilterInfo_get_Pins(p,a1) ICOM_CALL1(get_Pins,p,a1)
-#define IFilterInfo_get_IsFileSource(p,a1) ICOM_CALL1(get_IsFileSource,p,a1)
-#define IFilterInfo_get_Filename(p,a1) ICOM_CALL1(get_Filename,p,a1)
-#define IFilterInfo_put_Filename(p,a1) ICOM_CALL1(put_Filename,p,a1)
-
-/**************************************************************************
- *
- * IMediaControl interface
- *
- */
-
-#define ICOM_INTERFACE IMediaControl
-#define IMediaControl_METHODS \
-    ICOM_METHOD (HRESULT,Run) \
-    ICOM_METHOD (HRESULT,Pause) \
-    ICOM_METHOD (HRESULT,Stop) \
-    ICOM_METHOD2(HRESULT,GetState,LONG,a1,OAFilterState*,a2) \
-    ICOM_METHOD1(HRESULT,RenderFile,BSTR,a1) \
-    ICOM_METHOD2(HRESULT,AddSourceFilter,BSTR,a1,IDispatch**,a2) \
-    ICOM_METHOD1(HRESULT,get_FilterCollection,IDispatch**,a1) \
-    ICOM_METHOD1(HRESULT,get_RegFilterCollection,IDispatch**,a1) \
-    ICOM_METHOD (HRESULT,StopWhenReady)
-
-#define IMediaControl_IMETHODS \
-    IDispatch_IMETHODS \
-    IMediaControl_METHODS
-
-ICOM_DEFINE(IMediaControl,IDispatch)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMediaControl_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMediaControl_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMediaControl_Release(p) ICOM_CALL (Release,p)
-    /*** IDispatch methods ***/
-#define IMediaControl_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
-#define IMediaControl_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
-#define IMediaControl_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
-#define IMediaControl_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
-    /*** IMediaControl methods ***/
-#define IMediaControl_Run(p) ICOM_CALL (Run,p)
-#define IMediaControl_Pause(p) ICOM_CALL (Pause,p)
-#define IMediaControl_Stop(p) ICOM_CALL (Stop,p)
-#define IMediaControl_GetState(p,a1,a2) ICOM_CALL2(GetState,p,a1,a2)
-#define IMediaControl_RenderFile(p,a1) ICOM_CALL1(RenderFile,p,a1)
-#define IMediaControl_AddSourceFilter(p,a1,a2) ICOM_CALL2(AddSourceFilter,p,a1,a2)
-#define IMediaControl_get_FilterCollection(p,a1) ICOM_CALL1(get_FilterCollection,p,a1)
-#define IMediaControl_get_RegFilterCollection(p,a1) ICOM_CALL1(get_RegFilterCollection,p,a1)
-#define IMediaControl_StopWhenReady(p) ICOM_CALL (StopWhenReady,p)
-
-/**************************************************************************
- *
- * IMediaEvent interface
- *
- */
-
-#define ICOM_INTERFACE IMediaEvent
-#define IMediaEvent_METHODS \
-    ICOM_METHOD1(HRESULT,GetEventHandle,OAEVENT*,a1) \
-    ICOM_METHOD4(HRESULT,GetEvent,long*,a1,LONG_PTR*,a2,LONG_PTR*,a3,long,a4) \
-    ICOM_METHOD2(HRESULT,WaitForCompletion,long,a1,long*,a2) \
-    ICOM_METHOD1(HRESULT,CancelDefaultHandling,long,a1) \
-    ICOM_METHOD1(HRESULT,RestoreDefaultHandling,long,a1) \
-    ICOM_METHOD3(HRESULT,FreeEventParams,long,a1,LONG_PTR,a2,LONG_PTR,a3)
-
-#define IMediaEvent_IMETHODS \
-    IDispatch_IMETHODS \
-    IMediaEvent_METHODS
-
-ICOM_DEFINE(IMediaEvent,IDispatch)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMediaEvent_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMediaEvent_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMediaEvent_Release(p) ICOM_CALL (Release,p)
-    /*** IDispatch methods ***/
-#define IMediaEvent_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
-#define IMediaEvent_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
-#define IMediaEvent_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
-#define IMediaEvent_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
-    /*** IMediaEvent methods ***/
-#define IMediaEvent_GetEventHandle(p,a1) ICOM_CALL1(GetEventHandle,p,a1)
-#define IMediaEvent_GetEvent(p,a1,a2,a3,a4) ICOM_CALL4(GetEvent,p,a1,a2,a3,a4)
-#define IMediaEvent_WaitForCompletion(p,a1,a2) ICOM_CALL2(WaitForCompletion,p,a1,a2)
-#define IMediaEvent_CancelDefaultHandling(p,a1) ICOM_CALL1(CancelDefaultHandling,p,a1)
-#define IMediaEvent_RestoreDefaultHandling(p,a1) ICOM_CALL1(RestoreDefaultHandling,p,a1)
-#define IMediaEvent_FreeEventParams(p,a1,a2,a3) ICOM_CALL3(FreeEventParams,p,a1,a2,a3)
-
-/**************************************************************************
- *
- * IMediaEventEx interface
- *
- */
-
-#define ICOM_INTERFACE IMediaEventEx
-#define IMediaEventEx_METHODS \
-    ICOM_METHOD3(HRESULT,SetNotifyWindow,OAHWND,a1,long,a2,LONG_PTR,a3) \
-    ICOM_METHOD1(HRESULT,SetNotifyFlags,long,a1) \
-    ICOM_METHOD1(HRESULT,GetNotifyFlags,long*,a1)
-
-#define IMediaEventEx_IMETHODS \
-    IMediaEvent_IMETHODS \
-    IMediaEventEx_METHODS
-
-ICOM_DEFINE(IMediaEventEx,IMediaEvent)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMediaEventEx_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMediaEventEx_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMediaEventEx_Release(p) ICOM_CALL (Release,p)
-    /*** IDispatch methods ***/
-#define IMediaEventEx_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
-#define IMediaEventEx_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
-#define IMediaEventEx_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
-#define IMediaEventEx_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
-    /*** IMediaEvent methods ***/
-#define IMediaEventEx_GetEventHandle(p,a1) ICOM_CALL1(GetEventHandle,p,a1)
-#define IMediaEventEx_GetEvent(p,a1,a2,a3,a4) ICOM_CALL4(GetEvent,p,a1,a2,a3,a4)
-#define IMediaEventEx_WaitForCompletion(p,a1,a2) ICOM_CALL2(WaitForCompletion,p,a1,a2)
-#define IMediaEventEx_CancelDefaultHandling(p,a1) ICOM_CALL1(CancelDefaultHandling,p,a1)
-#define IMediaEventEx_RestoreDefaultHandling(p,a1) ICOM_CALL1(RestoreDefaultHandling,p,a1)
-#define IMediaEventEx_FreeEventParams(p,a1,a2,a3) ICOM_CALL3(FreeEventParams,p,a1,a2,a3)
-    /*** IMediaEventEx methods ***/
-#define IMediaEventEx_SetNotifyWindow(p,a1,a2,a3) ICOM_CALL3(SetNotifyWindow,p,a1,a2,a3)
-#define IMediaEventEx_SetNotifyFlags(p,a1) ICOM_CALL1(SetNotifyFlags,p,a1)
-#define IMediaEventEx_GetNotifyFlags(p,a1) ICOM_CALL1(GetNotifyFlags,p,a1)
-
-/**************************************************************************
- *
- * IMediaPosition interface
- *
- */
-
-#define ICOM_INTERFACE IMediaPosition
-#define IMediaPosition_METHODS \
-    ICOM_METHOD1(HRESULT,get_Duration,REFTIME*,a1) \
-    ICOM_METHOD1(HRESULT,put_CurrentPosition,REFTIME,a1) \
-    ICOM_METHOD1(HRESULT,get_CurrentPosition,REFTIME*,a1) \
-    ICOM_METHOD1(HRESULT,get_StopTime,REFTIME*,a1) \
-    ICOM_METHOD1(HRESULT,put_StopTime,REFTIME,a1) \
-    ICOM_METHOD1(HRESULT,get_PrerollTime,REFTIME*,a1) \
-    ICOM_METHOD1(HRESULT,put_PrerollTime,REFTIME,a1) \
-    ICOM_METHOD1(HRESULT,put_Rate,double,a1) \
-    ICOM_METHOD1(HRESULT,get_Rate,double*,a1) \
-    ICOM_METHOD1(HRESULT,CanSeekForward,LONG*,a1) \
-    ICOM_METHOD1(HRESULT,CanSeekBackward,LONG*,a1)
-
-#define IMediaPosition_IMETHODS \
-    IDispatch_IMETHODS \
-    IMediaPosition_METHODS
-
-ICOM_DEFINE(IMediaPosition,IDispatch)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMediaPosition_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMediaPosition_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMediaPosition_Release(p) ICOM_CALL (Release,p)
-    /*** IDispatch methods ***/
-#define IMediaPosition_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
-#define IMediaPosition_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
-#define IMediaPosition_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
-#define IMediaPosition_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
-    /*** IMediaPosition methods ***/
-#define IMediaPosition_get_Duration(p,a1) ICOM_CALL1(get_Duration,p,a1)
-#define IMediaPosition_put_CurrentPosition(p,a1) ICOM_CALL1(put_CurrentPosition,p,a1)
-#define IMediaPosition_get_CurrentPosition(p,a1) ICOM_CALL1(get_CurrentPosition,p,a1)
-#define IMediaPosition_get_StopTime(p,a1) ICOM_CALL1(get_StopTime,p,a1)
-#define IMediaPosition_put_StopTime(p,a1) ICOM_CALL1(put_StopTime,p,a1)
-#define IMediaPosition_get_PrerollTime(p,a1) ICOM_CALL1(get_PrerollTime,p,a1)
-#define IMediaPosition_put_PrerollTime(p,a1) ICOM_CALL1(put_PrerollTime,p,a1)
-#define IMediaPosition_put_Rate(p,a1) ICOM_CALL1(put_Rate,p,a1)
-#define IMediaPosition_get_Rate(p,a1) ICOM_CALL1(get_Rate,p,a1)
-#define IMediaPosition_CanSeekForward(p,a1) ICOM_CALL1(CanSeekForward,p,a1)
-#define IMediaPosition_CanSeekBackward(p,a1) ICOM_CALL1(CanSeekBackward,p,a1)
-
-/**************************************************************************
- *
- * IMediaTypeInfo interface
- *
- */
-
-#define ICOM_INTERFACE IMediaTypeInfo
-#define IMediaTypeInfo_METHODS \
-    ICOM_METHOD1(HRESULT,get_Type,BSTR*,a1) \
-    ICOM_METHOD1(HRESULT,get_Subtype,BSTR*,a1)
-
-#define IMediaTypeInfo_IMETHODS \
-    IDispatch_IMETHODS \
-    IMediaTypeInfo_METHODS
-
-ICOM_DEFINE(IMediaTypeInfo,IDispatch)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMediaTypeInfo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMediaTypeInfo_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMediaTypeInfo_Release(p) ICOM_CALL (Release,p)
-    /*** IDispatch methods ***/
-#define IMediaTypeInfo_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
-#define IMediaTypeInfo_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
-#define IMediaTypeInfo_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
-#define IMediaTypeInfo_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
-    /*** IMediaTypeInfo methods ***/
-#define IMediaTypeInfo_get_Type(p,a1) ICOM_CALL1(get_Type,p,a1)
-#define IMediaTypeInfo_get_Subtype(p,a1) ICOM_CALL1(get_Subtype,p,a1)
-
-/**************************************************************************
- *
- * IPinInfo interface
- *
- */
-
-#define ICOM_INTERFACE IPinInfo
-#define IPinInfo_METHODS \
-    ICOM_METHOD1(HRESULT,get_Pin,IUnknown**,a1) \
-    ICOM_METHOD1(HRESULT,get_ConnectedTo,IDispatch**,a1) \
-    ICOM_METHOD1(HRESULT,get_ConnectionMediaType,IDispatch**,a1) \
-    ICOM_METHOD1(HRESULT,get_FilterInfo,IDispatch**,a1) \
-    ICOM_METHOD1(HRESULT,get_Name,BSTR*,a1) \
-    ICOM_METHOD1(HRESULT,get_Direction,LONG*,a1) \
-    ICOM_METHOD1(HRESULT,get_PinID,BSTR*,a1) \
-    ICOM_METHOD1(HRESULT,get_MediaTypes,IDispatch**,a1) \
-    ICOM_METHOD1(HRESULT,Connect,IUnknown*,a1) \
-    ICOM_METHOD1(HRESULT,ConnectDirect,IUnknown*,a1) \
-    ICOM_METHOD2(HRESULT,ConnectWithType,IUnknown*,a1,IDispatch*,a2) \
-    ICOM_METHOD (HRESULT,Disconnect) \
-    ICOM_METHOD (HRESULT,Render)
-
-#define IPinInfo_IMETHODS \
-    IDispatch_IMETHODS \
-    IPinInfo_METHODS
-
-ICOM_DEFINE(IPinInfo,IDispatch)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IPinInfo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IPinInfo_AddRef(p) ICOM_CALL (AddRef,p)
-#define IPinInfo_Release(p) ICOM_CALL (Release,p)
-    /*** IDispatch methods ***/
-#define IPinInfo_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
-#define IPinInfo_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
-#define IPinInfo_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
-#define IPinInfo_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
-    /*** IPinInfo methods ***/
-#define IPinInfo_get_Pin(p,a1) ICOM_CALL1(get_Pin,p,a1)
-#define IPinInfo_get_ConnectedTo(p,a1) ICOM_CALL1(get_ConnectedTo,p,a1)
-#define IPinInfo_get_ConnectionMediaType(p,a1) ICOM_CALL1(get_ConnectionMediaType,p,a1)
-#define IPinInfo_get_FilterInfo(p,a1) ICOM_CALL1(get_FilterInfo,p,a1)
-#define IPinInfo_get_Name(p,a1) ICOM_CALL1(get_Name,p,a1)
-#define IPinInfo_get_Direction(p,a1) ICOM_CALL1(get_Direction,p,a1)
-#define IPinInfo_get_PinID(p,a1) ICOM_CALL1(get_PinID,p,a1)
-#define IPinInfo_get_MediaTypes(p,a1) ICOM_CALL1(get_MediaTypes,p,a1)
-#define IPinInfo_Connect(p,a1) ICOM_CALL1(Connect,p,a1)
-#define IPinInfo_ConnectDirect(p,a1) ICOM_CALL1(ConnectDirect,p,a1)
-#define IPinInfo_ConnectWithType(p,a1,a2) ICOM_CALL2(ConnectWithType,p,a1,a2)
-#define IPinInfo_Disconnect(p) ICOM_CALL (Disconnect,p)
-#define IPinInfo_Render(p) ICOM_CALL (Render,p)
-
-/**************************************************************************
- *
- * IQueueCommand interface
- *
- */
-
-#define ICOM_INTERFACE IQueueCommand
-#define IQueueCommand_METHODS \
-    ICOM_METHOD9(HRESULT,InvokeAtStreamTime,IDeferredCommand**,a1,REFTIME,a2,GUID*,a3,long,a4,short,a5,long,a6,VARIANT*,a7,VARIANT*,a8,short*,a9) \
-    ICOM_METHOD9(HRESULT,InvokeAtPresentationTime,IDeferredCommand**,a1,REFTIME,a2,GUID*,a3,long,a4,short,a5,long,a6,VARIANT*,a7,VARIANT*,a8,short*,a9)
-
-#define IQueueCommand_IMETHODS \
-    IUnknown_IMETHODS \
-    IQueueCommand_METHODS
-
-ICOM_DEFINE(IQueueCommand,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IQueueCommand_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IQueueCommand_AddRef(p) ICOM_CALL (AddRef,p)
-#define IQueueCommand_Release(p) ICOM_CALL (Release,p)
-    /*** IQueueCommand methods ***/
-#define IQueueCommand_InvokeAtStreamTime(p,a1,a2,a3,a4,a5,a6,a7,a8,a9) ICOM_CALL9(InvokeAtStreamTime,p,a1,a2,a3,a4,a5,a6,a7,a8,a9)
-#define IQueueCommand_InvokeAtPresentationTime(p,a1,a2,a3,a4,a5,a6,a7,a8,a9) ICOM_CALL9(InvokeAtPresentationTime,p,a1,a2,a3,a4,a5,a6,a7,a8,a9)
-
-/**************************************************************************
- *
- * IRegFilterInfo interface
- *
- */
-
-#define ICOM_INTERFACE IRegFilterInfo
-#define IRegFilterInfo_METHODS \
-    ICOM_METHOD1(HRESULT,get_Name,BSTR*,a1) \
-    ICOM_METHOD1(HRESULT,Filter,IDispatch**,a1)
-
-#define IRegFilterInfo_IMETHODS \
-    IDispatch_IMETHODS \
-    IRegFilterInfo_METHODS
-
-ICOM_DEFINE(IRegFilterInfo,IDispatch)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IRegFilterInfo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IRegFilterInfo_AddRef(p) ICOM_CALL (AddRef,p)
-#define IRegFilterInfo_Release(p) ICOM_CALL (Release,p)
-    /*** IDispatch methods ***/
-#define IRegFilterInfo_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
-#define IRegFilterInfo_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
-#define IRegFilterInfo_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
-#define IRegFilterInfo_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
-    /*** IRegFilterInfo methods ***/
-#define IRegFilterInfo_get_Name(p,a1) ICOM_CALL1(get_Name,p,a1)
-#define IRegFilterInfo_Filter(p,a1) ICOM_CALL1(Filter,p,a1)
-
-/**************************************************************************
- *
- * IVideoWindow interface
- *
- */
-
-#define ICOM_INTERFACE IVideoWindow
-#define IVideoWindow_METHODS \
-    ICOM_METHOD1(HRESULT,put_Caption,BSTR,a1) \
-    ICOM_METHOD1(HRESULT,get_Caption,BSTR*,a1) \
-    ICOM_METHOD1(HRESULT,put_WindowStyle,long,a1) \
-    ICOM_METHOD1(HRESULT,get_WindowStyle,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_WindowStyleEx,long,a1) \
-    ICOM_METHOD1(HRESULT,get_WindowStyleEx,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_AutoShow,long,a1) \
-    ICOM_METHOD1(HRESULT,get_AutoShow,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_WindowState,long,a1) \
-    ICOM_METHOD1(HRESULT,get_WindowState,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_BackgroundPalette,long,a1) \
-    ICOM_METHOD1(HRESULT,get_BackgroundPalette,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_Visible,long,a1) \
-    ICOM_METHOD1(HRESULT,get_Visible,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_Left,long,a1) \
-    ICOM_METHOD1(HRESULT,get_Left,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_Width,long,a1) \
-    ICOM_METHOD1(HRESULT,get_Width,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_Top,long,a1) \
-    ICOM_METHOD1(HRESULT,get_Top,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_Height,long,a1) \
-    ICOM_METHOD1(HRESULT,get_Height,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_Owner,OAHWND,a1) \
-    ICOM_METHOD1(HRESULT,get_Owner,OAHWND*,a1) \
-    ICOM_METHOD1(HRESULT,put_MessageDrain,OAHWND,a1) \
-    ICOM_METHOD1(HRESULT,get_MessageDrain,OAHWND*,a1) \
-    ICOM_METHOD1(HRESULT,get_BorderColor,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_BorderColor,long,a1) \
-    ICOM_METHOD1(HRESULT,get_FullScreenMode,long*,a1) \
-    ICOM_METHOD1(HRESULT,put_FullScreenMode,long,a1) \
-    ICOM_METHOD1(HRESULT,SetWindowForeground,long,a1) \
-    ICOM_METHOD4(HRESULT,NotifyOwnerMessage,OAHWND,a1,long,a2,LONG_PTR,a3,LONG_PTR,a4) \
-    ICOM_METHOD4(HRESULT,SetWindowPosition,long,a1,long,a2,long,a3,long,a4) \
-    ICOM_METHOD4(HRESULT,GetWindowPosition,long*,a1,long*,a2,long*,a3,long*,a4) \
-    ICOM_METHOD2(HRESULT,GetMinIdealImageSize,long*,a1,long*,a2) \
-    ICOM_METHOD2(HRESULT,GetMaxIdealImageSize,long*,a1,long*,a2) \
-    ICOM_METHOD4(HRESULT,GetRestorePosition,long*,a1,long*,a2,long*,a3,long*,a4) \
-    ICOM_METHOD1(HRESULT,HideCursor,long,a1) \
-    ICOM_METHOD1(HRESULT,IsCursorHidden,long*,a1)
-
-#define IVideoWindow_IMETHODS \
-    IDispatch_IMETHODS \
-    IVideoWindow_METHODS
-
-ICOM_DEFINE(IVideoWindow,IDispatch)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IVideoWindow_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IVideoWindow_AddRef(p) ICOM_CALL (AddRef,p)
-#define IVideoWindow_Release(p) ICOM_CALL (Release,p)
-    /*** IDispatch methods ***/
-#define IVideoWindow_GetTypeInfoCount(p,a1) ICOM_CALL1(GetTypeInfoCount,p,a1)
-#define IVideoWindow_GetTypeInfo(p,a1,a2,a3) ICOM_CALL3(GetTypeInfo,p,a1,a2,a3)
-#define IVideoWindow_GetIDsOfNames(p,a1,a2,a3,a4,a5) ICOM_CALL5(GetIDsOfNames,p,a1,a2,a3,a4,a5)
-#define IVideoWindow_Invoke(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(Invoke,p,a1,a2,a3,a4,a5,a6,a7,a8)
-    /*** IVideoWindow methods ***/
-#define IVideoWindow_put_Caption(p,a1) ICOM_CALL1(put_Caption,p,a1)
-#define IVideoWindow_get_Caption(p,a1) ICOM_CALL1(get_Caption,p,a1)
-#define IVideoWindow_put_WindowStyle(p,a1) ICOM_CALL1(put_WindowStyle,p,a1)
-#define IVideoWindow_get_WindowStyle(p,a1) ICOM_CALL1(get_WindowStyle,p,a1)
-#define IVideoWindow_put_WindowStyleEx(p,a1) ICOM_CALL1(put_WindowStyleEx,p,a1)
-#define IVideoWindow_get_WindowStyleEx(p,a1) ICOM_CALL1(get_WindowStyleEx,p,a1)
-#define IVideoWindow_put_AutoShow(p,a1) ICOM_CALL1(put_AutoShow,p,a1)
-#define IVideoWindow_get_AutoShow(p,a1) ICOM_CALL1(get_AutoShow,p,a1)
-#define IVideoWindow_put_WindowState(p,a1) ICOM_CALL1(put_WindowState,p,a1)
-#define IVideoWindow_get_WindowState(p,a1) ICOM_CALL1(get_WindowState,p,a1)
-#define IVideoWindow_put_BackgroundPalette(p,a1) ICOM_CALL1(put_BackgroundPalette,p,a1)
-#define IVideoWindow_get_BackgroundPalette(p,a1) ICOM_CALL1(get_BackgroundPalette,p,a1)
-#define IVideoWindow_put_Visible(p,a1) ICOM_CALL1(put_Visible,p,a1)
-#define IVideoWindow_get_Visible(p,a1) ICOM_CALL1(get_Visible,p,a1)
-#define IVideoWindow_put_Left(p,a1) ICOM_CALL1(put_Left,p,a1)
-#define IVideoWindow_get_Left(p,a1) ICOM_CALL1(get_Left,p,a1)
-#define IVideoWindow_put_Width(p,a1) ICOM_CALL1(put_Width,p,a1)
-#define IVideoWindow_get_Width(p,a1) ICOM_CALL1(get_Width,p,a1)
-#define IVideoWindow_put_Top(p,a1) ICOM_CALL1(put_Top,p,a1)
-#define IVideoWindow_get_Top(p,a1) ICOM_CALL1(get_Top,p,a1)
-#define IVideoWindow_put_Height(p,a1) ICOM_CALL1(put_Height,p,a1)
-#define IVideoWindow_get_Height(p,a1) ICOM_CALL1(get_Height,p,a1)
-#define IVideoWindow_put_Owner(p,a1) ICOM_CALL1(put_Owner,p,a1)
-#define IVideoWindow_get_Owner(p,a1) ICOM_CALL1(get_Owner,p,a1)
-#define IVideoWindow_put_MessageDrain(p,a1) ICOM_CALL1(put_MessageDrain,p,a1)
-#define IVideoWindow_get_MessageDrain(p,a1) ICOM_CALL1(get_MessageDrain,p,a1)
-#define IVideoWindow_get_BorderColor(p,a1) ICOM_CALL1(get_BorderColor,p,a1)
-#define IVideoWindow_put_BorderColor(p,a1) ICOM_CALL1(put_BorderColor,p,a1)
-#define IVideoWindow_get_FullScreenMode(p,a1) ICOM_CALL1(get_FullScreenMode,p,a1)
-#define IVideoWindow_put_FullScreenMode(p,a1) ICOM_CALL1(put_FullScreenMode,p,a1)
-#define IVideoWindow_SetWindowForeground(p,a1) ICOM_CALL1(SetWindowForeground,p,a1)
-#define IVideoWindow_NotifyOwnerMessage(p,a1,a2,a3,a4) ICOM_CALL4(NotifyOwnerMessage,p,a1,a2,a3,a4)
-#define IVideoWindow_SetWindowPosition(p,a1,a2,a3,a4) ICOM_CALL4(SetWindowPosition,p,a1,a2,a3,a4)
-#define IVideoWindow_GetWindowPosition(p,a1,a2,a3,a4) ICOM_CALL4(GetWindowPosition,p,a1,a2,a3,a4)
-#define IVideoWindow_GetMinIdealImageSize(p,a1,a2) ICOM_CALL2(GetMinIdealImageSize,p,a1,a2)
-#define IVideoWindow_GetMaxIdealImageSize(p,a1,a2) ICOM_CALL2(GetMaxIdealImageSize,p,a1,a2)
-#define IVideoWindow_GetRestorePosition(p,a1,a2,a3,a4) ICOM_CALL4(GetRestorePosition,p,a1,a2,a3,a4)
-#define IVideoWindow_HideCursor(p,a1) ICOM_CALL1(HideCursor,p,a1)
-#define IVideoWindow_IsCursorHidden(p,a1) ICOM_CALL1(IsCursorHidden,p,a1)
-
-#endif  /* __WINE_CONTROL_H_ */
diff --git a/include/errors.h b/include/errors.h
deleted file mode 100644
index 9efbc87..0000000
--- a/include/errors.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2001 Hidenori Takeshima
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef	WINE_DSHOW_ERRORS_H
-#define	WINE_DSHOW_ERRORS_H
-
-#include "vfwmsgs.h"
-
-#define MAX_ERROR_TEXT_LEN	160
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-DWORD WINAPI AMGetErrorTextA(HRESULT hr, LPSTR pszbuf, DWORD dwBufLen);
-DWORD WINAPI AMGetErrorTextW(HRESULT hr, LPWSTR pwszbuf, DWORD dwBufLen);
-#define AMGetErrorText	WINELIB_NAME_AW(AMGetErrorText)
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* __cplusplus */
-
-#endif	/* WINE_DSHOW_ERRORS_H */
diff --git a/include/evcode.h b/include/evcode.h
deleted file mode 100644
index da9480a..0000000
--- a/include/evcode.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2001 Hidenori Takeshima
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_EVCODE_H
-#define __WINE_EVCODE_H
-
-#define EC_SYSTEMBASE                       0x00
-#define EC_USER                             0x8000
-
-#define EC_COMPLETE                         0x01
-#define EC_USERABORT                        0x02
-#define EC_ERRORABORT                       0x03
-#define EC_TIME                             0x04
-#define EC_REPAINT                          0x05
-#define EC_STREAM_ERROR_STOPPED             0x06
-#define EC_STREAM_ERROR_STILLPLAYING        0x07
-#define EC_ERROR_STILLPLAYING               0x08
-#define EC_PALETTE_CHANGED                  0x09
-#define EC_VIDEO_SIZE_CHANGED               0x0A
-#define EC_QUALITY_CHANGE                   0x0B
-#define EC_SHUTTING_DOWN                    0x0C
-#define EC_CLOCK_CHANGED                    0x0D
-
-#define EC_OPENING_FILE                     0x10
-#define EC_BUFFERING_DATA                   0x11
-#define EC_FULLSCREEN_LOST                  0x12
-#define EC_ACTIVATE                         0x13
-#define EC_NEED_RESTART                     0x14
-#define EC_WINDOW_DESTROYED                 0x15
-#define EC_DISPLAY_CHANGED                  0x16
-#define EC_STARVATION                       0x17
-#define EC_OLE_EVENT                        0x18
-#define EC_NOTIFY_WINDOW                    0x19
-#define EC_STREAM_CONTROL_STOPPED           0x1A
-#define EC_STREAM_CONTROL_STARTED           0x1B
-#define EC_END_OF_SEGMENT                   0x1C
-#define EC_SEGMENT_STARTED                  0x1D
-#define EC_LENGTH_CHANGED                   0x1E
-
-
-#endif  /* __WINE_EVCODE_H */
diff --git a/include/strmif.h b/include/strmif.h
deleted file mode 100644
index 0f8f96a..0000000
--- a/include/strmif.h
+++ /dev/null
@@ -1,1521 +0,0 @@
-/*
- * Copyright (C) 2001 Hidenori Takeshima
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE__
-#include "rpc.h"
-#include "rpcndr.h"
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif
-#endif
-
-#ifndef __WINE_STRMIF_H_
-#define __WINE_STRMIF_H_
-
-#include "wine/obj_base.h"
-#include "wine/obj_misc.h"
-#include "wine/obj_storage.h"
-#include "wine/obj_moniker.h"
-#include "wine/obj_oleaut.h"
-#include "wine/obj_property.h"
-#include "wine/obj_ksproperty.h"
-
-/* undef GetTimeFormat - FIXME? */
-#undef GetTimeFormat
-
-/* FIXME - far from complete. */
-
-/* forward decls. */
-
-typedef struct IAMAnalogVideoDecoder IAMAnalogVideoDecoder;
-typedef struct IAMAnalogVideoEncoder IAMAnalogVideoEncoder;
-typedef struct IAMAudioInputMixer IAMAudioInputMixer;
-typedef struct IAMBufferNegotiation IAMBufferNegotiation;
-typedef struct IAMCameraControl IAMCameraControl;
-typedef struct IAMCopyCaptureFileProgress IAMCopyCaptureFileProgress;
-typedef struct IAMCrossbar IAMCrossbar;
-typedef struct IAMDevMemoryAllocator IAMDevMemoryAllocator;
-typedef struct IAMDevMemoryControl IAMDevMemoryControl;
-typedef struct IAMDroppedFrames IAMDroppedFrames;
-typedef struct IAMExtDevice IAMExtDevice;
-typedef struct IAMExtTransport IAMExtTransport;
-typedef struct IAMovie IAMovie;
-typedef struct IAMovieSetup IAMovieSetup;
-typedef struct IAMPhysicalPinInfo IAMPhysicalPinInfo;
-typedef struct IAMStreamConfig IAMStreamConfig;
-typedef struct IAMStreamControl IAMStreamControl;
-typedef struct IAMStreamSelect IAMStreamSelect;
-typedef struct IAMTimecodeDisplay IAMTimecodeDisplay;
-typedef struct IAMTimecodeGenerator IAMTimecodeGenerator;
-typedef struct IAMTimecodeReader IAMTimecodeReader;
-typedef struct IAMTuner IAMTuner;
-typedef struct IAMTunerNotification IAMTunerNotification;
-typedef struct IAMTVAudio IAMTVAudio;
-typedef struct IAMTVAudioNotification IAMTVAudioNotification;
-typedef struct IAMTVTuner IAMTVTuner;
-typedef struct IAMVfwCaptureDialogs IAMVfwCaptureDialogs;
-typedef struct IAMVfwCompressDialogs IAMVfwCompressDialogs;
-typedef struct IAMVideoCompression IAMVideoCompression;
-typedef struct IAMVideoProcAmp IAMVideoProcAmp;
-typedef struct IAsyncReader IAsyncReader;
-typedef struct IMediaFilter IMediaFilter;
-typedef struct IBaseFilter IBaseFilter;
-typedef struct IBPCSatelliteTuner IBPCSatelliteTuner;
-typedef struct ICaptureGraphBuilder ICaptureGraphBuilder;
-typedef struct IConfigAviMux IConfigAviMux;
-typedef struct IConfigInterleaving IConfigInterleaving;
-typedef struct ICreateDevEnum ICreateDevEnum;
-typedef struct IDistributorNotify IDistributorNotify;
-typedef struct IDvdControl IDvdControl;
-typedef struct IDvdGraphBuilder IDvdGraphBuilder;
-typedef struct IDvdInfo IDvdInfo;
-typedef struct IEnumFilters IEnumFilters;
-typedef struct IEnumMediaTypes IEnumMediaTypes;
-typedef struct IEnumPins IEnumPins;
-typedef struct IEnumRegFilters IEnumRegFilters;
-typedef struct IFileSinkFilter IFileSinkFilter;
-typedef struct IFileSinkFilter2 IFileSinkFilter2;
-typedef struct IFileSourceFilter IFileSourceFilter;
-typedef struct IFilterGraph IFilterGraph;
-typedef struct IFilterGraph2 IFilterGraph2;
-typedef struct IFilterMapper IFilterMapper;
-typedef struct IFilterMapper2 IFilterMapper2;
-typedef struct IGraphBuilder IGraphBuilder;
-typedef struct IGraphVersion IGraphVersion;
-typedef struct IMediaEventSink IMediaEventSink;
-typedef struct IMediaPropertyBag IMediaPropertyBag;
-typedef struct IMediaSample IMediaSample;
-typedef struct IMediaSample2 IMediaSample2;
-typedef struct IMediaSeeking IMediaSeeking;
-typedef struct IMemAllocator IMemAllocator;
-typedef struct IMemInputPin IMemInputPin;
-typedef struct IOverlay IOverlay;
-typedef struct IOverlayNotify IOverlayNotify;
-typedef struct IPersistMediaPropertyBag IPersistMediaPropertyBag;
-typedef struct IPin IPin;
-typedef struct IQualityControl IQualityControl;
-typedef struct IReferenceClock IReferenceClock;
-typedef struct IReferenceClock2 IReferenceClock2;
-typedef struct IResourceConsumer IResourceConsumer;
-typedef struct IResourceManager IResourceManager;
-typedef struct ISeekingPassThru ISeekingPassThru;
-typedef struct IStreamBuilder IStreamBuilder;
-
-/* GUIDs. */
-
-DEFINE_GUID(IID_IAMAnalogVideoDecoder,0xC6E13350,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
-DEFINE_GUID(IID_IAMAnalogVideoEncoder,0xC6E133B0,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
-DEFINE_GUID(IID_IAMAudioInputMixer,0x54C39221,0x8380,0x11D0,0xB3,0xF0,0x00,0xAA,0x00,0x37,0x61,0xC5);
-DEFINE_GUID(IID_IAMBufferNegotiation,0x56ED71A0,0xAF5F,0x11D0,0xB3,0xF0,0x00,0xAA,0x00,0x37,0x61,0xC5);
-DEFINE_GUID(IID_IAMCameraControl,0xC6E13370,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
-DEFINE_GUID(IID_IAMCopyCaptureFileProgress,0x670D1D20,0xA068,0x11D0,0xB3,0xF0,0x00,0xAA,0x00,0x37,0x61,0xC5);
-DEFINE_GUID(IID_IAMCrossbar,0xC6E13380,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
-DEFINE_GUID(IID_IAMDevMemoryAllocator,0xC6545BF0,0xE76B,0x11D0,0xBD,0x52,0x00,0xA0,0xC9,0x11,0xCE,0x86);
-DEFINE_GUID(IID_IAMDevMemoryControl,0xC6545BF1,0xE76B,0x11D0,0xBD,0x52,0x00,0xA0,0xC9,0x11,0xCE,0x86);
-DEFINE_GUID(IID_IAMDroppedFrames,0xC6E13344,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
-DEFINE_GUID(IID_IAMExtDevice,0xB5730A90,0x1A2C,0x11CF,0x8C,0x23,0x00,0xAA,0x00,0x6B,0x68,0x14);
-DEFINE_GUID(IID_IAMExtTransport,0xA03CD5F0,0x3045,0x11CF,0x8C,0x44,0x00,0xAA,0x00,0x6B,0x68,0x14);
-DEFINE_GUID(IID_IAMovie,0x359ACE10,0x7688,0x11CF,0x8B,0x23,0x00,0x80,0x5F,0x6C,0xEF,0x60);
-DEFINE_GUID(IID_IAMovieSetup,0xA3D8CEC0,0x7E5A,0x11CF,0xBB,0xC5,0x00,0x80,0x5F,0x6C,0xEF,0x20);
-DEFINE_GUID(IID_IAMPhysicalPinInfo,0xF938C991,0x3029,0x11CF,0x8C,0x44,0x00,0xAA,0x00,0x6B,0x68,0x14);
-DEFINE_GUID(IID_IAMStreamConfig,0xC6E13340,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
-DEFINE_GUID(IID_IAMStreamControl,0x36B73881,0xC2C8,0x11CF,0x8B,0x46,0x00,0x80,0x5F,0x6C,0xEF,0x60);
-DEFINE_GUID(IID_IAMStreamSelect,0xC1960960,0x17F5,0x11D1,0xAB,0xE1,0x00,0xA0,0xC9,0x05,0xF3,0x75);
-DEFINE_GUID(IID_IAMTimecodeDisplay,0x9B496CE2,0x811B,0x11CF,0x8C,0x77,0x00,0xAA,0x00,0x6B,0x68,0x14);
-DEFINE_GUID(IID_IAMTimecodeGenerator,0x9B496CE0,0x811B,0x11CF,0x8C,0x77,0x00,0xAA,0x00,0x6B,0x68,0x14);
-DEFINE_GUID(IID_IAMTimecodeReader,0x9B496CE1,0x811B,0x11CF,0x8C,0x77,0x00,0xAA,0x00,0x6B,0x68,0x14);
-DEFINE_GUID(IID_IAMTuner,0x211A8761,0x03AC,0x11D1,0x8D,0x13,0x00,0xAA,0x00,0xBD,0x83,0x39);
-DEFINE_GUID(IID_IAMTunerNotification,0x211A8760,0x03AC,0x11D1,0x8D,0x13,0x00,0xAA,0x00,0xBD,0x83,0x39);
-DEFINE_GUID(IID_IAMTVAudio,0x83EC1C30,0x23D1,0x11D1,0x99,0xE6,0x00,0xA0,0xC9,0x56,0x02,0x66);
-DEFINE_GUID(IID_IAMTVAudioNotification,0x83EC1C33,0x23D1,0x11D1,0x99,0xE6,0x00,0xA0,0xC9,0x56,0x02,0x66);
-DEFINE_GUID(IID_IAMTVTuner,0x211A8766,0x03AC,0x11D1,0x8D,0x13,0x00,0xAA,0x00,0xBD,0x83,0x39);
-DEFINE_GUID(IID_IAMVfwCaptureDialogs,0xD8D715A0,0x6E5E,0x11D0,0xB3,0xF0,0x00,0xAA,0x00,0x37,0x61,0xC5);
-DEFINE_GUID(IID_IAMVfwCompressDialogs,0xD8D715A3,0x6E5E,0x11D0,0xB3,0xF0,0x00,0xAA,0x00,0x37,0x61,0xC5);
-DEFINE_GUID(IID_IAMVideoCompression,0xC6E13343,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
-DEFINE_GUID(IID_IAMVideoProcAmp,0xC6E13360,0x30AC,0x11D0,0xA1,0x8C,0x00,0xA0,0xC9,0x11,0x89,0x56);
-DEFINE_GUID(IID_IAsyncReader,0x56A868AA,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IMediaFilter,0x56A86899,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IBaseFilter,0x56A86895,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IBPCSatelliteTuner,0x211A8765,0x03AC,0x11D1,0x8D,0x13,0x00,0xAA,0x00,0xBD,0x83,0x39);
-DEFINE_GUID(IID_ICaptureGraphBuilder,0xBF87B6E0,0x8C27,0x11D0,0xB3,0xF0,0x00,0xAA,0x00,0x37,0x61,0xC5);
-DEFINE_GUID(IID_IConfigAviMux,0x5ACD6AA0,0xF482,0x11CE,0x8B,0x67,0x00,0xAA,0x00,0xA3,0xF1,0xA6);
-DEFINE_GUID(IID_IConfigInterleaving,0xBEE3D220,0x157B,0x11D0,0xBD,0x23,0x00,0xA0,0xC9,0x11,0xCE,0x86);
-DEFINE_GUID(IID_ICreateDevEnum,0x29840822,0x5B84,0x11D0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86);
-DEFINE_GUID(IID_IDistributorNotify,0x56A868AF,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IDvdControl,0xA70EFE61,0xE2A3,0x11D0,0xA9,0xBE,0x00,0xAA,0x00,0x61,0xBE,0x93);
-DEFINE_GUID(IID_IDvdGraphBuilder,0xFCC152B6,0xF372,0x11D0,0x8E,0x00,0x00,0xC0,0x4F,0xD7,0xC0,0x8B);
-DEFINE_GUID(IID_IDvdInfo,0xA70EFE60,0xE2A3,0x11D0,0xA9,0xBE,0x00,0xAA,0x00,0x61,0xBE,0x93);
-DEFINE_GUID(IID_IEnumFilters,0x56A86893,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IEnumMediaTypes,0x89C31040,0x846B,0x11CE,0x97,0xD3,0x00,0xAA,0x00,0x55,0x59,0x5A);
-DEFINE_GUID(IID_IEnumPins,0x56A86892,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IEnumRegFilters,0x56A868A4,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IFileSinkFilter,0xA2104830,0x7C70,0x11CF,0x8B,0xCE,0x00,0xAA,0x00,0xA3,0xF1,0xA6);
-DEFINE_GUID(IID_IFileSinkFilter2,0x00855B90,0xCE1B,0x11D0,0xBD,0x4F,0x00,0xA0,0xC9,0x11,0xCE,0x86);
-DEFINE_GUID(IID_IFileSourceFilter,0x56A868A6,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IFilterGraph,0x56A8689F,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IFilterGraph2,0x36B73882,0xC2C8,0x11CF,0x8B,0x46,0x00,0x80,0x5F,0x6C,0xEF,0x60);
-DEFINE_GUID(IID_IFilterMapper,0x56A868A3,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IFilterMapper2,0xB79BB0B0,0x33C1,0x11D1,0xAB,0xE1,0x00,0xA0,0xC9,0x05,0xF3,0x75);
-DEFINE_GUID(IID_IGraphBuilder,0x56A868A9,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IGraphVersion,0x56A868AB,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IMediaEventSink,0x56A868A2,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IMediaPropertyBag,0x6025A880,0xC0D5,0x11D0,0xBD,0x4E,0x00,0xA0,0xC9,0x11,0xCE,0x86);
-DEFINE_GUID(IID_IMediaSample,0x56A8689A,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IMediaSample2,0x36B73884,0xC2C8,0x11CF,0x8B,0x46,0x00,0x80,0x5F,0x6C,0xEF,0x60);
-DEFINE_GUID(IID_IMediaSeeking,0x36B73880,0xC2C8,0x11CF,0x8B,0x46,0x00,0x80,0x5F,0x6C,0xEF,0x60);
-DEFINE_GUID(IID_IMemAllocator,0x56A8689C,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IMemInputPin,0x56A8689D,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IOverlay,0x56A868A1,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IOverlayNotify,0x56A868A0,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IPersistMediaPropertyBag,0x5738E040,0xB67F,0x11D0,0xBD,0x4D,0x00,0xA0,0xC9,0x11,0xCE,0x86);
-DEFINE_GUID(IID_IPin,0x56A86891,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IQualityControl,0x56A868A5,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IReferenceClock,0x56A86897,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IReferenceClock2,0x36B73885,0xC2C8,0x11CF,0x8B,0x46,0x00,0x80,0x5F,0x6C,0xEF,0x60);
-DEFINE_GUID(IID_IResourceConsumer,0x56A868AD,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_IResourceManager,0x56A868AC,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-DEFINE_GUID(IID_ISeekingPassThru,0x36B73883,0xC2C8,0x11CF,0x8B,0x46,0x00,0x80,0x5F,0x6C,0xEF,0x60);
-DEFINE_GUID(IID_IStreamBuilder,0x56A868BF,0x0AD4,0x11CE,0xB0,0x3A,0x00,0x20,0xAF,0x0B,0xA7,0x70);
-
-
-#ifndef __WINE_REFTIME_DEFINED_
-#define __WINE_REFTIME_DEFINED_
-typedef double REFTIME;
-#endif /* __WINE_REFTIME_DEFINED_ */
-
-typedef LONGLONG	REFERENCE_TIME;
-typedef DWORD_PTR	HSEMAPHORE;
-typedef DWORD_PTR	HEVENT;
-
-/* enums. */
-
-typedef enum
-{
-	PINDIR_INPUT = 0,
-	PINDIR_OUTPUT = 1,
-} PIN_DIRECTION;
-
-typedef enum
-{
-	State_Stopped = 0,
-	State_Paused = 1,
-	State_Running = 2,
-} FILTER_STATE;
-
-typedef enum
-{
-	Famine = 0,
-	Flood = 1,
-} QualityMessageType;
-
-typedef enum
-{
-	REG_PINFLAG_B_ZERO = 0x1,
-	REG_PINFLAG_B_RENDERER = 0x2,
-	REG_PINFLAG_B_MANY = 0x4,
-	REG_PINFLAG_B_OUTPUT = 0x8,
-} REG_PINFLAG;
-
-typedef enum
-{
-	AM_SAMPLE_SPLICEPOINT		= 0x1,
-	AM_SAMPLE_PREROLL		= 0x2,
-	AM_SAMPLE_DATADISCONTINUITY	= 0x4,
-	AM_SAMPLE_TYPECHANGED		= 0x8,
-	AM_SAMPLE_TIMEVALID		= 0x10,
-	AM_SAMPLE_TIMEDISCONTINUITY	= 0x40,
-	AM_SAMPLE_FLUSH_ON_PAUSE	= 0x80,
-	AM_SAMPLE_STOPVALID		= 0x100,
-	AM_SAMPLE_ENDOFSTREAM		= 0x200,
-
-	AM_STREAM_MEDIA			= 0,
-	AM_STREAM_CONTROL		= 1
-} AM_SAMPLE_PROPERTY_FLAGS;
-
-enum __MIDL_IFilterMapper_0001
-{
-	MERIT_PREFERRED	= 0x800000,
-	MERIT_NORMAL	= 0x600000,
-	MERIT_UNLIKELY	= 0x400000,
-	MERIT_DO_NOT_USE	= 0x200000,
-	MERIT_HW_COMPRESSOR	= 0x100050,
-	MERIT_SW_COMPRESSOR	= 0x100000,
-};
-
-typedef enum
-{
-	AM_FILE_OVERWRITE = 0x0001,
-} AM_FILESINK_FLAGS;
-
-typedef enum
-{
-	AM_SEEKING_NoPositioning		= 0x0000,
-	AM_SEEKING_AbsolutePositioning		= 0x0001,
-	AM_SEEKING_RelativePositioning		= 0x0002,
-	AM_SEEKING_IncrementalPositioning	= 0x0003,
-	AM_SEEKING_PositioningBitsMask		= 0x0003,
-
-	AM_SEEKING_SeekToKeyFrame		= 0x0004,
-	AM_SEEKING_ReturnTime			= 0x0008,
-	AM_SEEKING_Segment			= 0x0010,
-	AM_SEEKING_NoFlush			= 0x0020,
-} AM_SEEKING_SEEKING_FLAGS;
-
-typedef enum
-{
-	AM_SEEKING_CanSeekAbsolute	= 0x0001,
-	AM_SEEKING_CanSeekForwards	= 0x0002,
-	AM_SEEKING_CanSeekBackwards	= 0x0004,
-	AM_SEEKING_CanGetCurrentPos	= 0x0008,
-	AM_SEEKING_CanGetStopPos	= 0x0010,
-	AM_SEEKING_CanGetDuration	= 0x0020,
-	AM_SEEKING_CanPlayBackwards	= 0x0040,
-	AM_SEEKING_CanDoSegments	= 0x0080,
-	AM_SEEKING_Source		= 0x0100,
-} AM_SEEKING_SEEKING_CAPABILITIES;
-
-enum _AM_RENSDEREXFLAGS
-{
-	AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x0001,
-};
-
-
-
-/* structs. */
-
-typedef struct
-{
-	GUID	majortype;
-	GUID	subtype;
-	BOOL	bFixedSizeSamples;
-	BOOL	bTemporalCompression;
-	ULONG	lSampleSize;
-	GUID	formattype;
-	IUnknown*	pUnk;
-	ULONG	cbFormat;
-	BYTE*	pbFormat;
-} AM_MEDIA_TYPE;
-
-typedef struct
-{
-	long	cBuffers;
-	long	cbBuffer;
-	long	cbAlign;
-	long	cbPrefix;
-} ALLOCATOR_PROPERTIES;
-
-typedef struct
-{
-	IBaseFilter*	pFilter;
-	PIN_DIRECTION	dir;
-	WCHAR		achName[ 128 ];
-} PIN_INFO;
-
-typedef struct
-{
-	WCHAR		achName[ 128 ];
-	IFilterGraph*	pGraph;
-} FILTER_INFO;
-
-typedef struct
-{
-	REFERENCE_TIME	tStart;
-	REFERENCE_TIME	tStop;
-	DWORD		dwStartCookie;
-	DWORD		dwStopCookie;
-	DWORD		dwFlags;
-} AM_STREAM_INFO;
-
-typedef struct tagCOLORKEY
-{
-	DWORD		KeyType;
-	DWORD		PaletteIndex;
-	COLORREF	LowColorValue;
-	COLORREF	HighColorValue;
-} COLORKEY;
-
-typedef struct
-{
-	QualityMessageType	Type;
-	long			Proportion;
-	REFERENCE_TIME		Late;
-	REFERENCE_TIME		TimeStamp;
-} Quality;
-
-typedef struct
-{
-	const CLSID*	clsMajorType;
-	const CLSID*	clsMinorType;
-} REGPINTYPES;
-
-typedef struct
-{
-	LPWSTR	strName;
-	BOOL	bRendered;
-	BOOL	bOutput;
-	BOOL	bZero;
-	BOOL	bMany;
-	const CLSID*	clsConnectsToFilter;
-	const WCHAR*	strConnectsToPin;
-	UINT	nMediaTypes;
-	const REGPINTYPES*	lpMediaType;
-} REGFILTERPINS;
-
-typedef struct
-{
-	CLSID	clsMedium;
-	DWORD	dw1;
-	DWORD	dw2;
-} REGPINMEDIUM;
-
-typedef struct
-{
-	DWORD	dwFlags;
-	UINT	cInstances;
-	UINT	nMediaTypes;
-	const REGPINTYPES*	lpMediaType;
-	UINT	nMediums;
-	const REGPINMEDIUM*	lpMedium;
-	const CLSID*	clsPinCategory;
-} REGFILTERPINS2;
-
-typedef struct
-{
-	DWORD	dwVersion;
-	DWORD	dwMerit;
-	union {
-		struct {
-			ULONG	cPins;
-			const REGFILTERPINS*	rgPins;
-		} DUMMYSTRUCTNAME1;
-		struct {
-			ULONG	cPins2;
-			const REGFILTERPINS2*	rgPins2;
-		} DUMMYSTRUCTNAME2;
-	} DUMMYUNIONNAME;
-} REGFILTER2;
-
-typedef struct
-{
-	DWORD		cbData;
-	DWORD		dwTypeSpecificFlags;
-	DWORD		dwSampleFlags;
-	LONG		lActual;
-	REFERENCE_TIME	tStart;
-	REFERENCE_TIME	tStop;
-	DWORD		dwStreamId;
-	AM_MEDIA_TYPE*	pMediaType;
-	BYTE*		pbBuffer;
-	LONG		cbBuffer;
-} AM_SAMPLE2_PROPERTIES;
-
-
-
-/* defines. */
-
-#define CHARS_IN_GUID	39
-#define MAX_PIN_NAME	128
-#define MAX_FILTER_NAME	128
-
-#define AM_GBF_PREVFRAMESKIPPED		1
-#define AM_GBF_NOTASYNCPOINT		2
-#define AM_GBF_NOWAIT			4
-
-
-/* interfaces. */
-
-/**************************************************************************
- *
- * IAsyncReader interface
- *
- */
-
-#define ICOM_INTERFACE IAsyncReader
-#define IAsyncReader_METHODS \
-    ICOM_METHOD3(HRESULT,RequestAllocator,IMemAllocator*,a1,ALLOCATOR_PROPERTIES*,a2,IMemAllocator**,a3) \
-    ICOM_METHOD2(HRESULT,Request,IMediaSample*,a1,DWORD_PTR,a2) \
-    ICOM_METHOD3(HRESULT,WaitForNext,DWORD,a1,IMediaSample**,a2,DWORD_PTR*,a3) \
-    ICOM_METHOD1(HRESULT,SyncReadAligned,IMediaSample*,a1) \
-    ICOM_METHOD3(HRESULT,SyncRead,LONGLONG,a1,LONG,a2,BYTE*,a3) \
-    ICOM_METHOD2(HRESULT,Length,LONGLONG*,a1,LONGLONG*,a2) \
-    ICOM_METHOD (HRESULT,BeginFlush) \
-    ICOM_METHOD (HRESULT,EndFlush)
-
-#define IAsyncReader_IMETHODS \
-    IUnknown_IMETHODS \
-    IAsyncReader_METHODS
-
-ICOM_DEFINE(IAsyncReader,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IAsyncReader_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IAsyncReader_AddRef(p) ICOM_CALL (AddRef,p)
-#define IAsyncReader_Release(p) ICOM_CALL (Release,p)
-    /*** IAsyncReader methods ***/
-#define IAsyncReader_RequestAllocator(p,a1,a2,a3) ICOM_CALL3(RequestAllocator,p,a1,a2,a3)
-#define IAsyncReader_Request(p,a1,a2) ICOM_CALL2(Request,p,a1,a2)
-#define IAsyncReader_WaitForNext(p,a1,a2,a3) ICOM_CALL3(WaitForNext,p,a1,a2,a3)
-#define IAsyncReader_SyncReadAligned(p,a1) ICOM_CALL1(SyncReadAligned,p,a1)
-#define IAsyncReader_SyncRead(p,a1,a2,a3) ICOM_CALL3(SyncRead,p,a1,a2,a3)
-#define IAsyncReader_Length(p,a1,a2) ICOM_CALL2(Length,p,a1,a2)
-#define IAsyncReader_BeginFlush(p) ICOM_CALL (BeginFlush,p)
-#define IAsyncReader_EndFlush(p) ICOM_CALL (EndFlush,p)
-
-/**************************************************************************
- *
- * IMediaFilter interface
- *
- */
-
-#define ICOM_INTERFACE IMediaFilter
-#define IMediaFilter_METHODS \
-    ICOM_METHOD (HRESULT,Stop) \
-    ICOM_METHOD (HRESULT,Pause) \
-    ICOM_METHOD1(HRESULT,Run,REFERENCE_TIME,a1) \
-    ICOM_METHOD2(HRESULT,GetState,DWORD,a1,FILTER_STATE*,a2) \
-    ICOM_METHOD1(HRESULT,SetSyncSource,IReferenceClock*,a1) \
-    ICOM_METHOD1(HRESULT,GetSyncSource,IReferenceClock**,a1)
-
-#define IMediaFilter_IMETHODS \
-    IPersist_IMETHODS \
-    IMediaFilter_METHODS
-
-ICOM_DEFINE(IMediaFilter,IPersist)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMediaFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMediaFilter_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMediaFilter_Release(p) ICOM_CALL (Release,p)
-    /*** IPersist methods ***/
-#define IMediaFilter_GetClassID(p,a1) ICOM_CALL1(GetClassID,p,a1)
-    /*** IMediaFilter methods ***/
-#define IMediaFilter_Stop(p) ICOM_CALL (Stop,p)
-#define IMediaFilter_Pause(p) ICOM_CALL (Pause,p)
-#define IMediaFilter_Run(p,a1) ICOM_CALL1(Run,p,a1)
-#define IMediaFilter_GetState(p,a1,a2) ICOM_CALL2(GetState,p,a1,a2)
-#define IMediaFilter_SetSyncSource(p,a1) ICOM_CALL1(SetSyncSource,p,a1)
-#define IMediaFilter_GetSyncSource(p,a1) ICOM_CALL1(GetSyncSource,p,a1)
-
-/**************************************************************************
- *
- * IBaseFilter interface
- *
- */
-
-#define ICOM_INTERFACE IBaseFilter
-#define IBaseFilter_METHODS \
-    ICOM_METHOD1(HRESULT,EnumPins,IEnumPins**,a1) \
-    ICOM_METHOD2(HRESULT,FindPin,LPCWSTR,a1,IPin**,a2) \
-    ICOM_METHOD1(HRESULT,QueryFilterInfo,FILTER_INFO*,a1) \
-    ICOM_METHOD2(HRESULT,JoinFilterGraph,IFilterGraph*,a1,LPCWSTR,a2) \
-    ICOM_METHOD1(HRESULT,QueryVendorInfo,LPWSTR*,a1)
-
-#define IBaseFilter_IMETHODS \
-    IMediaFilter_IMETHODS \
-    IBaseFilter_METHODS
-
-ICOM_DEFINE(IBaseFilter,IMediaFilter)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IBaseFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IBaseFilter_AddRef(p) ICOM_CALL (AddRef,p)
-#define IBaseFilter_Release(p) ICOM_CALL (Release,p)
-    /*** IPersist methods ***/
-#define IBaseFilter_GetClassID(p,a1) ICOM_CALL1(GetClassID,p,a1)
-    /*** IMediaFilter methods ***/
-#define IBaseFilter_Stop(p) ICOM_CALL (Stop,p)
-#define IBaseFilter_Pause(p) ICOM_CALL (Pause,p)
-#define IBaseFilter_Run(p,a1) ICOM_CALL1(Run,p,a1)
-#define IBaseFilter_GetState(p,a1,a2) ICOM_CALL2(GetState,p,a1,a2)
-#define IBaseFilter_SetSyncSource(p,a1) ICOM_CALL1(SetSyncSource,p,a1)
-#define IBaseFilter_GetSyncSource(p,a1) ICOM_CALL1(GetSyncSource,p,a1)
-    /*** IBaseFilter methods ***/
-#define IBaseFilter_EnumPins(p,a1) ICOM_CALL1(EnumPins,p,a1)
-#define IBaseFilter_FindPin(p,a1,a2) ICOM_CALL2(FindPin,p,a1,a2)
-#define IBaseFilter_QueryFilterInfo(p,a1) ICOM_CALL1(QueryFilterInfo,p,a1)
-#define IBaseFilter_JoinFilterGraph(p,a1,a2) ICOM_CALL2(JoinFilterGraph,p,a1,a2)
-#define IBaseFilter_QueryVendorInfo(p,a1) ICOM_CALL1(QueryVendorInfo,p,a1)
-
-/**************************************************************************
- *
- * ICaptureGraphBuilder interface
- *
- */
-
-#define ICOM_INTERFACE ICaptureGraphBuilder
-#define ICaptureGraphBuilder_METHODS \
-    ICOM_METHOD1(HRESULT,SetFiltergraph,IGraphBuilder*,a1) \
-    ICOM_METHOD1(HRESULT,GetFiltergraph,IGraphBuilder**,a1) \
-    ICOM_METHOD4(HRESULT,SetOutputFileName,const GUID*,a1,LPCOLESTR,a2,IBaseFilter**,a3,IFileSinkFilter**,a4) \
-    ICOM_METHOD4(HRESULT,FindInterface,const GUID*,a1,IBaseFilter*,a2,REFIID,a3,void**,a4) \
-    ICOM_METHOD4(HRESULT,RenderStream,const GUID*,a1,IUnknown*,a2,IBaseFilter*,a3,IBaseFilter*,a4) \
-    ICOM_METHOD6(HRESULT,ControlStream,const GUID*,a1,IBaseFilter*,a2,REFERENCE_TIME*,a3,REFERENCE_TIME*,a4,WORD,a5,WORD,a6) \
-    ICOM_METHOD2(HRESULT,AllocCapFile,LPCOLESTR,a1,DWORDLONG,a2) \
-    ICOM_METHOD4(HRESULT,CopyCaptureFile,LPOLESTR,a1,LPOLESTR,a2,int,a3,IAMCopyCaptureFileProgress*,a4)
-
-#define ICaptureGraphBuilder_IMETHODS \
-    IUnknown_IMETHODS \
-    ICaptureGraphBuilder_METHODS
-
-ICOM_DEFINE(ICaptureGraphBuilder,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define ICaptureGraphBuilder_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define ICaptureGraphBuilder_AddRef(p) ICOM_CALL (AddRef,p)
-#define ICaptureGraphBuilder_Release(p) ICOM_CALL (Release,p)
-    /*** ICaptureGraphBuilder methods ***/
-#define ICaptureGraphBuilder_SetFiltergraph(p,a1) ICOM_CALL1(SetFiltergraph,p,a1)
-#define ICaptureGraphBuilder_GetFiltergraph(p,a1) ICOM_CALL1(GetFiltergraph,p,a1)
-#define ICaptureGraphBuilder_SetOutputFileName(p,a1,a2,a3,a4) ICOM_CALL4(SetOutputFileName,p,a1,a2,a3,a4)
-#define ICaptureGraphBuilder_FindInterface(p,a1,a2,a3,a4) ICOM_CALL4(FindInterface,p,a1,a2,a3,a4)
-#define ICaptureGraphBuilder_RenderStream(p,a1,a2,a3,a4) ICOM_CALL4(RenderStream,p,a1,a2,a3,a4)
-#define ICaptureGraphBuilder_ControlStream(p,a1,a2,a3,a4,a5,a6) ICOM_CALL6(ControlStream,p,a1,a2,a3,a4,a5,a6)
-#define ICaptureGraphBuilder_AllocCapFile(p,a1,a2) ICOM_CALL2(AllocCapFile,p,a1,a2)
-#define ICaptureGraphBuilder_CopyCaptureFile(p,a1,a2,a3,a4) ICOM_CALL4(CopyCaptureFile,p,a1,a2,a3,a4)
-
-/**************************************************************************
- *
- * ICreateDevEnum interface
- *
- */
-
-#define ICOM_INTERFACE ICreateDevEnum
-#define ICreateDevEnum_METHODS \
-    ICOM_METHOD3(HRESULT,CreateClassEnumerator,REFCLSID,a1,IEnumMoniker**,a2,DWORD,a3)
-
-#define ICreateDevEnum_IMETHODS \
-    IUnknown_IMETHODS \
-    ICreateDevEnum_METHODS
-
-ICOM_DEFINE(ICreateDevEnum,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define ICreateDevEnum_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define ICreateDevEnum_AddRef(p) ICOM_CALL (AddRef,p)
-#define ICreateDevEnum_Release(p) ICOM_CALL (Release,p)
-    /*** ICreateDevEnum methods ***/
-#define ICreateDevEnum_CreateClassEnumerator(p,a1,a2,a3) ICOM_CALL3(CreateClassEnumerator,p,a1,a2,a3)
-
-/**************************************************************************
- *
- * IDistributorNotify interface
- *
- */
-
-#define ICOM_INTERFACE IDistributorNotify
-#define IDistributorNotify_METHODS \
-    ICOM_METHOD (HRESULT,Stop) \
-    ICOM_METHOD (HRESULT,Pause) \
-    ICOM_METHOD1(HRESULT,Run,REFERENCE_TIME,a1) \
-    ICOM_METHOD1(HRESULT,SetSyncSource,IReferenceClock*,a1) \
-    ICOM_METHOD (HRESULT,NotifyGraphChange)
-
-#define IDistributorNotify_IMETHODS \
-    IUnknown_IMETHODS \
-    IDistributorNotify_METHODS
-
-ICOM_DEFINE(IDistributorNotify,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IDistributorNotify_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IDistributorNotify_AddRef(p) ICOM_CALL (AddRef,p)
-#define IDistributorNotify_Release(p) ICOM_CALL (Release,p)
-    /*** IDistributorNotify methods ***/
-#define IDistributorNotify_Stop(p) ICOM_CALL (Stop,p)
-#define IDistributorNotify_Pause(p) ICOM_CALL (Pause,p)
-#define IDistributorNotify_Run(p,a1) ICOM_CALL1(Run,p,a1)
-#define IDistributorNotify_SetSyncSource(p,a1) ICOM_CALL1(SetSyncSource,p,a1)
-#define IDistributorNotify_NotifyGraphChange(p) ICOM_CALL (NotifyGraphChange,p)
-
-/**************************************************************************
- *
- * IEnumFilters interface
- *
- */
-
-#define ICOM_INTERFACE IEnumFilters
-#define IEnumFilters_METHODS \
-    ICOM_METHOD3(HRESULT,Next,ULONG,a1,IBaseFilter**,a2,ULONG*,a3) \
-    ICOM_METHOD1(HRESULT,Skip,ULONG,a1) \
-    ICOM_METHOD (HRESULT,Reset) \
-    ICOM_METHOD1(HRESULT,Clone,IEnumFilters**,a1)
-
-#define IEnumFilters_IMETHODS \
-    IUnknown_IMETHODS \
-    IEnumFilters_METHODS
-
-ICOM_DEFINE(IEnumFilters,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IEnumFilters_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IEnumFilters_AddRef(p) ICOM_CALL (AddRef,p)
-#define IEnumFilters_Release(p) ICOM_CALL (Release,p)
-    /*** IEnumFilters methods ***/
-#define IEnumFilters_Next(p,a1,a2,a3) ICOM_CALL3(Next,p,a1,a2,a3)
-#define IEnumFilters_Skip(p,a1) ICOM_CALL1(Skip,p,a1)
-#define IEnumFilters_Reset(p) ICOM_CALL (Reset,p)
-#define IEnumFilters_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
-
-/**************************************************************************
- *
- * IEnumMediaTypes interface
- *
- */
-
-#define ICOM_INTERFACE IEnumMediaTypes
-#define IEnumMediaTypes_METHODS \
-    ICOM_METHOD3(HRESULT,Next,ULONG,a1,AM_MEDIA_TYPE**,a2,ULONG*,a3) \
-    ICOM_METHOD1(HRESULT,Skip,ULONG,a1) \
-    ICOM_METHOD (HRESULT,Reset) \
-    ICOM_METHOD1(HRESULT,Clone,IEnumMediaTypes**,a1)
-
-#define IEnumMediaTypes_IMETHODS \
-    IUnknown_IMETHODS \
-    IEnumMediaTypes_METHODS
-
-ICOM_DEFINE(IEnumMediaTypes,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IEnumMediaTypes_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IEnumMediaTypes_AddRef(p) ICOM_CALL (AddRef,p)
-#define IEnumMediaTypes_Release(p) ICOM_CALL (Release,p)
-    /*** IEnumMediaTypes methods ***/
-#define IEnumMediaTypes_Next(p,a1,a2,a3) ICOM_CALL3(Next,p,a1,a2,a3)
-#define IEnumMediaTypes_Skip(p,a1) ICOM_CALL1(Skip,p,a1)
-#define IEnumMediaTypes_Reset(p) ICOM_CALL (Reset,p)
-#define IEnumMediaTypes_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
-
-/**************************************************************************
- *
- * IEnumPins interface
- *
- */
-
-#define ICOM_INTERFACE IEnumPins
-#define IEnumPins_METHODS \
-    ICOM_METHOD3(HRESULT,Next,ULONG,a1,IPin**,a2,ULONG*,a3) \
-    ICOM_METHOD1(HRESULT,Skip,ULONG,a1) \
-    ICOM_METHOD (HRESULT,Reset) \
-    ICOM_METHOD1(HRESULT,Clone,IEnumPins**,a1)
-
-#define IEnumPins_IMETHODS \
-    IUnknown_IMETHODS \
-    IEnumPins_METHODS
-
-ICOM_DEFINE(IEnumPins,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IEnumPins_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IEnumPins_AddRef(p) ICOM_CALL (AddRef,p)
-#define IEnumPins_Release(p) ICOM_CALL (Release,p)
-    /*** IEnumPins methods ***/
-#define IEnumPins_Next(p,a1,a2,a3) ICOM_CALL3(Next,p,a1,a2,a3)
-#define IEnumPins_Skip(p,a1) ICOM_CALL1(Skip,p,a1)
-#define IEnumPins_Reset(p) ICOM_CALL (Reset,p)
-#define IEnumPins_Clone(p,a1) ICOM_CALL1(Clone,p,a1)
-
-/**************************************************************************
- *
- * IFileSinkFilter interface
- *
- */
-
-#define ICOM_INTERFACE IFileSinkFilter
-#define IFileSinkFilter_METHODS \
-    ICOM_METHOD2(HRESULT,SetFileName,LPCOLESTR,a1,const AM_MEDIA_TYPE*,a2) \
-    ICOM_METHOD2(HRESULT,GetCurFile,LPOLESTR*,a1,AM_MEDIA_TYPE*,a2)
-
-#define IFileSinkFilter_IMETHODS \
-    IUnknown_IMETHODS \
-    IFileSinkFilter_METHODS
-
-ICOM_DEFINE(IFileSinkFilter,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IFileSinkFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IFileSinkFilter_AddRef(p) ICOM_CALL (AddRef,p)
-#define IFileSinkFilter_Release(p) ICOM_CALL (Release,p)
-    /*** IFileSinkFilter methods ***/
-#define IFileSinkFilter_SetFileName(p,a1,a2) ICOM_CALL2(SetFileName,p,a1,a2)
-#define IFileSinkFilter_GetCurFile(p,a1,a2) ICOM_CALL2(GetCurFile,p,a1,a2)
-
-/**************************************************************************
- *
- * IFileSinkFilter2 interface
- *
- */
-
-#define ICOM_INTERFACE IFileSinkFilter2
-#define IFileSinkFilter2_METHODS \
-    ICOM_METHOD1(HRESULT,SetMode,DWORD,a1) \
-    ICOM_METHOD1(HRESULT,GetMode,DWORD*,a1)
-
-#define IFileSinkFilter2_IMETHODS \
-    IFileSinkFilter_IMETHODS \
-    IFileSinkFilter2_METHODS
-
-ICOM_DEFINE(IFileSinkFilter2,IFileSinkFilter)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IFileSinkFilter2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IFileSinkFilter2_AddRef(p) ICOM_CALL (AddRef,p)
-#define IFileSinkFilter2_Release(p) ICOM_CALL (Release,p)
-    /*** IFileSinkFilter methods ***/
-#define IFileSinkFilter2_SetFileName(p,a1,a2) ICOM_CALL2(SetFileName,p,a1,a2)
-#define IFileSinkFilter2_GetCurFile(p,a1,a2) ICOM_CALL2(GetCurFile,p,a1,a2)
-    /*** IFileSinkFilter2 methods ***/
-#define IFileSinkFilter2_SetMode(p,a1) ICOM_CALL1(SetMode,p,a1)
-#define IFileSinkFilter2_GetMode(p,a1) ICOM_CALL1(GetMode,p,a1)
-
-/**************************************************************************
- *
- * IFileSourceFilter interface
- *
- */
-
-#define ICOM_INTERFACE IFileSourceFilter
-#define IFileSourceFilter_METHODS \
-    ICOM_METHOD2(HRESULT,Load,LPCOLESTR,a1,const AM_MEDIA_TYPE*,a2) \
-    ICOM_METHOD2(HRESULT,GetCurFile,LPOLESTR*,a1,AM_MEDIA_TYPE*,a2)
-
-#define IFileSourceFilter_IMETHODS \
-    IUnknown_IMETHODS \
-    IFileSourceFilter_METHODS
-
-ICOM_DEFINE(IFileSourceFilter,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IFileSourceFilter_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IFileSourceFilter_AddRef(p) ICOM_CALL (AddRef,p)
-#define IFileSourceFilter_Release(p) ICOM_CALL (Release,p)
-    /*** IFileSourceFilter methods ***/
-#define IFileSourceFilter_Load(p,a1,a2) ICOM_CALL2(Load,p,a1,a2)
-#define IFileSourceFilter_GetCurFile(p,a1,a2) ICOM_CALL2(GetCurFile,p,a1,a2)
-
-/**************************************************************************
- *
- * IFilterMapper interface
- *
- */
-
-#define ICOM_INTERFACE IFilterMapper
-#define IFilterMapper_METHODS \
-    ICOM_METHOD3(HRESULT,RegisterFilter,CLSID,a1,LPCWSTR,a2,DWORD,a3) \
-    ICOM_METHOD3(HRESULT,RegisterFilterInstance,CLSID,a1,LPCWSTR,a2,CLSID*,a3) \
-    ICOM_METHOD8(HRESULT,RegisterPin,CLSID,a1,LPCWSTR,a2,BOOL,a3,BOOL,a4,BOOL,a5,BOOL,a6,CLSID,a7,LPCWSTR,a8) \
-    ICOM_METHOD4(HRESULT,RegisterPinType,CLSID,a1,LPCWSTR,a2,CLSID,a3,CLSID,a4) \
-    ICOM_METHOD1(HRESULT,UnregisterFilter,CLSID,a1) \
-    ICOM_METHOD1(HRESULT,UnregisterFilterInstance,CLSID,a1) \
-    ICOM_METHOD2(HRESULT,UnregisterPin,CLSID,a1,LPCWSTR,a2) \
-    ICOM_METHOD9(HRESULT,EnumMatchingFilters,IEnumRegFilters**,a1,DWORD,a2,BOOL,a3,CLSID,a4,CLSID,a5,BOOL,a6,BOOL,a7,CLSID,a8,CLSID,a9)
-
-#define IFilterMapper_IMETHODS \
-    IUnknown_IMETHODS \
-    IFilterMapper_METHODS
-
-ICOM_DEFINE(IFilterMapper,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IFilterMapper_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IFilterMapper_AddRef(p) ICOM_CALL (AddRef,p)
-#define IFilterMapper_Release(p) ICOM_CALL (Release,p)
-    /*** IFilterMapper methods ***/
-#define IFilterMapper_RegisterFilter(p,a1,a2,a3) ICOM_CALL3(RegisterFilter,p,a1,a2,a3)
-#define IFilterMapper_RegisterFilterInstance(p,a1,a2,a3) ICOM_CALL3(RegisterFilterInstance,p,a1,a2,a3)
-#define IFilterMapper_RegisterPin(p,a1,a2,a3,a4,a5,a6,a7,a8) ICOM_CALL8(RegisterPin,p,a1,a2,a3,a4,a5,a6,a7,a8)
-#define IFilterMapper_RegisterPinType(p,a1,a2,a3,a4) ICOM_CALL4(RegisterPinType,p,a1,a2,a3,a4)
-#define IFilterMapper_UnregisterFilter(p,a1) ICOM_CALL1(UnregisterFilter,p,a1)
-#define IFilterMapper_UnregisterFilterInstance(p,a1) ICOM_CALL1(UnregisterFilterInstance,p,a1)
-#define IFilterMapper_UnregisterPin(p,a1,a2) ICOM_CALL2(UnregisterPin,p,a1,a2)
-#define IFilterMapper_EnumMatchingFilters(p,a1,a2,a3,a4,a5,a6,a7,a8,a9) ICOM_CALL9(EnumMatchingFilters,p,a1,a2,a3,a4,a5,a6,a7,a8,a9)
-
-/**************************************************************************
- *
- * IFilterMapper2 interface
- *
- */
-
-#define ICOM_INTERFACE IFilterMapper2
-#define IFilterMapper2_METHODS \
-    ICOM_METHOD3(HRESULT,CreateCategory,REFCLSID,a1,DWORD,a2,LPCWSTR,a3) \
-    ICOM_METHOD3(HRESULT,UnregisterFilter,const CLSID*,a1,const OLECHAR*,a2,REFCLSID,a3) \
-    ICOM_METHOD6(HRESULT,RegisterFilter,REFCLSID,a1,LPCWSTR,a2,IMoniker**,a3,const CLSID*,a4,const OLECHAR*,a5,const REGFILTER2*,a6) \
-    ICOM_METHOD15(HRESULT,EnumMatchingFilters,IEnumMoniker**,a1,DWORD,a2,BOOL,a3,DWORD,a4,BOOL,a5,DWORD,a6,const GUID*,a7,const REGPINMEDIUM*,a8,const CLSID*,a9,BOOL,a10,BOOL,a11,DWORD,a12,const GUID*,a13,const REGPINMEDIUM*,a14,const CLSID*,a15)
-
-#define IFilterMapper2_IMETHODS \
-    IUnknown_IMETHODS \
-    IFilterMapper2_METHODS
-
-ICOM_DEFINE(IFilterMapper2,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IFilterMapper2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IFilterMapper2_AddRef(p) ICOM_CALL (AddRef,p)
-#define IFilterMapper2_Release(p) ICOM_CALL (Release,p)
-    /*** IFilterMapper2 methods ***/
-#define IFilterMapper2_CreateCategory(p,a1,a2,a3) ICOM_CALL3(CreateCategory,p,a1,a2,a3)
-#define IFilterMapper2_UnregisterFilter(p,a1,a2,a3) ICOM_CALL3(UnregisterFilter,p,a1,a2,a3)
-#define IFilterMapper2_RegisterFilter(p,a1,a2,a3,a4,a5,a6) ICOM_CALL6(RegisterFilter,p,a1,a2,a3,a4,a5,a6)
-#define IFilterMapper2_EnumMatchingFilters(p,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) ICOM_CALL15(EnumMatchingFilters,p,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)
-
-/**************************************************************************
- *
- * IFilterGraph interface
- *
- */
-
-#define ICOM_INTERFACE IFilterGraph
-#define IFilterGraph_METHODS \
-    ICOM_METHOD2(HRESULT,AddFilter,IBaseFilter*,a1,LPCWSTR,a2) \
-    ICOM_METHOD1(HRESULT,RemoveFilter,IBaseFilter*,a1) \
-    ICOM_METHOD1(HRESULT,EnumFilters,IEnumFilters**,a1) \
-    ICOM_METHOD2(HRESULT,FindFilterByName,LPCWSTR,a1,IBaseFilter**,a2) \
-    ICOM_METHOD3(HRESULT,ConnectDirect,IPin*,a1,IPin*,a2,const AM_MEDIA_TYPE*,a3) \
-    ICOM_METHOD1(HRESULT,Reconnect,IPin*,a1) \
-    ICOM_METHOD1(HRESULT,Disconnect,IPin*,a1) \
-    ICOM_METHOD (HRESULT,SetDefaultSyncSource)
-
-#define IFilterGraph_IMETHODS \
-    IUnknown_IMETHODS \
-    IFilterGraph_METHODS
-
-ICOM_DEFINE(IFilterGraph,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IFilterGraph_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IFilterGraph_AddRef(p) ICOM_CALL (AddRef,p)
-#define IFilterGraph_Release(p) ICOM_CALL (Release,p)
-    /*** IFilterGraph methods ***/
-#define IFilterGraph_AddFilter(p,a1,a2) ICOM_CALL2(AddFilter,p,a1,a2)
-#define IFilterGraph_RemoveFilter(p,a1) ICOM_CALL1(RemoveFilter,p,a1)
-#define IFilterGraph_EnumFilters(p,a1) ICOM_CALL1(EnumFilters,p,a1)
-#define IFilterGraph_FindFilterByName(p,a1,a2) ICOM_CALL2(FindFilterByName,p,a1,a2)
-#define IFilterGraph_ConnectDirect(p,a1,a2,a3) ICOM_CALL3(ConnectDirect,p,a1,a2,a3)
-#define IFilterGraph_Reconnect(p,a1) ICOM_CALL1(Reconnect,p,a1)
-#define IFilterGraph_Disconnect(p,a1) ICOM_CALL1(Disconnect,p,a1)
-#define IFilterGraph_SetDefaultSyncSource(p) ICOM_CALL (SetDefaultSyncSource,p)
-
-/**************************************************************************
- *
- * IGraphBuilder interface
- *
- */
-
-#define ICOM_INTERFACE IGraphBuilder
-#define IGraphBuilder_METHODS \
-    ICOM_METHOD2(HRESULT,Connect,IPin*,a1,IPin*,a2) \
-    ICOM_METHOD1(HRESULT,Render,IPin*,a1) \
-    ICOM_METHOD2(HRESULT,RenderFile,LPCWSTR,a1,LPCWSTR,a2) \
-    ICOM_METHOD3(HRESULT,AddSourceFilter,LPCWSTR,a1,LPCWSTR,a2,IBaseFilter**,a3) \
-    ICOM_METHOD1(HRESULT,SetLogFile,DWORD_PTR,a1) \
-    ICOM_METHOD (HRESULT,Abort) \
-    ICOM_METHOD (HRESULT,ShouldOperationContinue)
-
-#define IGraphBuilder_IMETHODS \
-    IFilterGraph_IMETHODS \
-    IGraphBuilder_METHODS
-
-ICOM_DEFINE(IGraphBuilder,IFilterGraph)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IGraphBuilder_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IGraphBuilder_AddRef(p) ICOM_CALL (AddRef,p)
-#define IGraphBuilder_Release(p) ICOM_CALL (Release,p)
-    /*** IFilterGraph methods ***/
-#define IGraphBuilder_AddFilter(p,a1,a2) ICOM_CALL2(AddFilter,p,a1,a2)
-#define IGraphBuilder_RemoveFilter(p,a1) ICOM_CALL1(RemoveFilter,p,a1)
-#define IGraphBuilder_EnumFilters(p,a1) ICOM_CALL1(EnumFilters,p,a1)
-#define IGraphBuilder_FindFilterByName(p,a1,a2) ICOM_CALL2(FindFilterByName,p,a1,a2)
-#define IGraphBuilder_ConnectDirect(p,a1,a2,a3) ICOM_CALL3(ConnectDirect,p,a1,a2,a3)
-#define IGraphBuilder_Reconnect(p,a1) ICOM_CALL1(Reconnect,p,a1)
-#define IGraphBuilder_Disconnect(p,a1) ICOM_CALL1(Disconnect,p,a1)
-#define IGraphBuilder_SetDefaultSyncSource(p,a1) ICOM_CALL1(SetDefaultSyncSource,p,a1)
-    /*** IGraphBuilder methods ***/
-#define IGraphBuilder_Connect(p,a1,a2) ICOM_CALL2(Connect,p,a1,a2)
-#define IGraphBuilder_Render(p,a1) ICOM_CALL1(Render,p,a1)
-#define IGraphBuilder_RenderFile(p,a1,a2) ICOM_CALL2(RenderFile,p,a1,a2)
-#define IGraphBuilder_AddSourceFilter(p,a1,a2,a3) ICOM_CALL3(AddSourceFilter,p,a1,a2,a3)
-#define IGraphBuilder_SetLogFile(p,a1) ICOM_CALL1(SetLogFile,p,a1)
-#define IGraphBuilder_Abort(p) ICOM_CALL (Abort,p)
-#define IGraphBuilder_ShouldOperationContinue(p) ICOM_CALL (ShouldOperationContinue,p)
-
-/**************************************************************************
- *
- * IFilterGraph2 interface
- *
- */
-
-#define ICOM_INTERFACE IFilterGraph2
-#define IFilterGraph2_METHODS \
-    ICOM_METHOD4(HRESULT,AddSourceFilterForMoniker,IMoniker*,a1,IBindCtx*,a2,LPCWSTR,a3,IBaseFilter**,a4) \
-    ICOM_METHOD2(HRESULT,ReconnectEx,IPin*,a1,const AM_MEDIA_TYPE*,a2) \
-    ICOM_METHOD3(HRESULT,RenderEx,IPin*,a1,DWORD,a2,DWORD*,a3)
-
-#define IFilterGraph2_IMETHODS \
-    IGraphBuilder_IMETHODS \
-    IFilterGraph2_METHODS
-
-ICOM_DEFINE(IFilterGraph2,IGraphBuilder)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IFilterGraph2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IFilterGraph2_AddRef(p) ICOM_CALL (AddRef,p)
-#define IFilterGraph2_Release(p) ICOM_CALL (Release,p)
-    /*** IFilterGraph methods ***/
-#define IFilterGraph2_AddFilter(p,a1,a2) ICOM_CALL2(AddFilter,p,a1,a2)
-#define IFilterGraph2_RemoveFilter(p,a1) ICOM_CALL1(RemoveFilter,p,a1)
-#define IFilterGraph2_EnumFilters(p,a1) ICOM_CALL1(EnumFilters,p,a1)
-#define IFilterGraph2_FindFilterByName(p,a1,a2) ICOM_CALL2(FindFilterByName,p,a1,a2)
-#define IFilterGraph2_ConnectDirect(p,a1,a2,a3) ICOM_CALL3(ConnectDirect,p,a1,a2,a3)
-#define IFilterGraph2_Reconnect(p,a1) ICOM_CALL1(Reconnect,p,a1)
-#define IFilterGraph2_Disconnect(p,a1) ICOM_CALL1(Disconnect,p,a1)
-#define IFilterGraph2_SetDefaultSyncSource(p,a1) ICOM_CALL1(SetDefaultSyncSource,p,a1)
-    /*** IGraphBuilder methods ***/
-#define IFilterGraph2_Connect(p,a1,a2) ICOM_CALL2(Connect,p,a1,a2)
-#define IFilterGraph2_Render(p,a1) ICOM_CALL1(Render,p,a1)
-#define IFilterGraph2_RenderFile(p,a1,a2) ICOM_CALL2(RenderFile,p,a1,a2)
-#define IFilterGraph2_AddSourceFilter(p,a1,a2,a3) ICOM_CALL3(AddSourceFilter,p,a1,a2,a3)
-#define IFilterGraph2_SetLogFile(p,a1) ICOM_CALL1(SetLogFile,p,a1)
-#define IFilterGraph2_Abort(p) ICOM_CALL (Abort,p)
-#define IFilterGraph2_ShouldOperationContinue(p) ICOM_CALL (ShouldOperationContinue,p)
-    /*** IFilterGraph2 methods ***/
-#define IFilterGraph2_AddSourceFilterForMoniker(p,a1,a2,a3,a4) ICOM_CALL4(AddSourceFilterForMoniker,p,a1,a2,a3,a4)
-#define IFilterGraph2_ReconnectEx(p,a1,a2) ICOM_CALL2(ReconnectEx,p,a1,a2)
-#define IFilterGraph2_RenderEx(p,a1,a2,a3) ICOM_CALL3(RenderEx,p,a1,a2,a3)
-
-/**************************************************************************
- *
- * IGraphVersion interface
- *
- */
-
-#define ICOM_INTERFACE IGraphVersion
-#define IGraphVersion_METHODS \
-    ICOM_METHOD1(HRESULT,QueryVersion,LONG*,a1)
-
-#define IGraphVersion_IMETHODS \
-    IUnknown_IMETHODS \
-    IGraphVersion_METHODS
-
-ICOM_DEFINE(IGraphVersion,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IGraphVersion_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IGraphVersion_AddRef(p) ICOM_CALL (AddRef,p)
-#define IGraphVersion_Release(p) ICOM_CALL (Release,p)
-    /*** IGraphVersion methods ***/
-#define IGraphVersion_QueryVersion(p,a1) ICOM_CALL1(QueryVersion,p,a1)
-
-
-/**************************************************************************
- *
- * IMediaEventSink interface
- *
- */
-
-#define ICOM_INTERFACE IMediaEventSink
-#define IMediaEventSink_METHODS \
-    ICOM_METHOD3(HRESULT,Notify,long,a1,LONG_PTR,a2,LONG_PTR,a3)
-
-#define IMediaEventSink_IMETHODS \
-    IUnknown_IMETHODS \
-    IMediaEventSink_METHODS
-
-ICOM_DEFINE(IMediaEventSink,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMediaEventSink_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMediaEventSink_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMediaEventSink_Release(p) ICOM_CALL (Release,p)
-    /*** IMediaEventSink methods ***/
-#define IMediaEventSink_Notify(p,a1,a2,a3) ICOM_CALL3(Notify,p,a1,a2,a3)
-
-/**************************************************************************
- *
- * IMediaPropertyBag interface
- *
- */
-
-#define ICOM_INTERFACE IMediaPropertyBag
-#define IMediaPropertyBag_METHODS \
-    ICOM_METHOD3(HRESULT,EnumProperty,ULONG,a1,VARIANT*,a2,VARIANT*,a3)
-
-#define IMediaPropertyBag_IMETHODS \
-    IPropertyBag_IMETHODS \
-    IMediaPropertyBag_METHODS
-
-ICOM_DEFINE(IMediaPropertyBag,IPropertyBag)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMediaPropertyBag_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMediaPropertyBag_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMediaPropertyBag_Release(p) ICOM_CALL (Release,p)
-    /*** IPropertyBag methods ***/
-#define IMediaPropertyBag_Read(p,a1,a2,a3) ICOM_CALL3(Read,p,a1,a2,a3)
-#define IMediaPropertyBag_Write(p,a1,a2) ICOM_CALL2(Write,p,a1,a2)
-    /*** IMediaPropertyBag methods ***/
-#define IMediaPropertyBag_EnumProperty(p,a1,a2,a3) ICOM_CALL3(EnumProperty,p,a1,a2,a3)
-
-/**************************************************************************
- *
- * IMediaSample interface
- *
- */
-
-#define ICOM_INTERFACE IMediaSample
-#define IMediaSample_METHODS \
-    ICOM_METHOD1(HRESULT,GetPointer,BYTE**,a1) \
-    ICOM_METHOD (long,GetSize) \
-    ICOM_METHOD2(HRESULT,GetTime,REFERENCE_TIME*,a1,REFERENCE_TIME*,a2) \
-    ICOM_METHOD2(HRESULT,SetTime,REFERENCE_TIME*,a1,REFERENCE_TIME*,a2) \
-    ICOM_METHOD (HRESULT,IsSyncPoint) \
-    ICOM_METHOD1(HRESULT,SetSyncPoint,BOOL,a1) \
-    ICOM_METHOD (HRESULT,IsPreroll) \
-    ICOM_METHOD1(HRESULT,SetPreroll,BOOL,a1) \
-    ICOM_METHOD (long,GetActualDataLength) \
-    ICOM_METHOD1(HRESULT,SetActualDataLength,long,a1) \
-    ICOM_METHOD1(HRESULT,GetMediaType,AM_MEDIA_TYPE**,a1) \
-    ICOM_METHOD1(HRESULT,SetMediaType,AM_MEDIA_TYPE*,a1) \
-    ICOM_METHOD (HRESULT,IsDiscontinuity) \
-    ICOM_METHOD1(HRESULT,SetDiscontinuity,BOOL,a1) \
-    ICOM_METHOD2(HRESULT,GetMediaTime,LONGLONG*,a1,LONGLONG*,a2) \
-    ICOM_METHOD2(HRESULT,SetMediaTime,LONGLONG*,a1,LONGLONG*,a2)
-
-#define IMediaSample_IMETHODS \
-    IUnknown_IMETHODS \
-    IMediaSample_METHODS
-
-ICOM_DEFINE(IMediaSample,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMediaSample_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMediaSample_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMediaSample_Release(p) ICOM_CALL (Release,p)
-    /*** IMediaSample methods ***/
-#define IMediaSample_GetPointer(p,a1) ICOM_CALL1(GetPointer,p,a1)
-#define IMediaSample_GetSize(p) ICOM_CALL (GetSize,p)
-#define IMediaSample_GetTime(p,a1,a2) ICOM_CALL2(GetTime,p,a1,a2)
-#define IMediaSample_SetTime(p,a1,a2) ICOM_CALL2(SetTime,p,a1,a2)
-#define IMediaSample_IsSyncPoint(p) ICOM_CALL (IsSyncPoint,p)
-#define IMediaSample_SetSyncPoint(p,a1) ICOM_CALL1(SetSyncPoint,p,a1)
-#define IMediaSample_IsPreroll(p) ICOM_CALL (IsPreroll,p)
-#define IMediaSample_SetPreroll(p,a1) ICOM_CALL1(SetPreroll,p,a1)
-#define IMediaSample_GetActualDataLength(p) ICOM_CALL (GetActualDataLength,p)
-#define IMediaSample_SetActualDataLength(p,a1) ICOM_CALL1(SetActualDataLength,p,a1)
-#define IMediaSample_GetMediaType(p,a1) ICOM_CALL1(GetMediaType,p,a1)
-#define IMediaSample_SetMediaType(p,a1) ICOM_CALL1(SetMediaType,p,a1)
-#define IMediaSample_IsDiscontinuity(p) ICOM_CALL (IsDiscontinuity,p)
-#define IMediaSample_SetDiscontinuity(p,a1) ICOM_CALL1(SetDiscontinuity,p,a1)
-#define IMediaSample_GetMediaTime(p,a1,a2) ICOM_CALL2(GetMediaTime,p,a1,a2)
-#define IMediaSample_SetMediaTime(p,a1,a2) ICOM_CALL2(SetMediaTime,p,a1,a2)
-
-/**************************************************************************
- *
- * IMediaSample2 interface
- *
- */
-
-#define ICOM_INTERFACE IMediaSample2
-#define IMediaSample2_METHODS \
-    ICOM_METHOD2(HRESULT,GetProperties,DWORD,a1,BYTE*,a2) \
-    ICOM_METHOD2(HRESULT,SetProperties,DWORD,a1,const BYTE*,a2)
-
-#define IMediaSample2_IMETHODS \
-    IMediaSample_IMETHODS \
-    IMediaSample2_METHODS
-
-ICOM_DEFINE(IMediaSample2,IMediaSample)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMediaSample2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMediaSample2_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMediaSample2_Release(p) ICOM_CALL (Release,p)
-    /*** IMediaSample methods ***/
-#define IMediaSample2_GetPointer(p,a1) ICOM_CALL1(GetPointer,p,a1)
-#define IMediaSample2_GetSize(p,a1) ICOM_CALL1(GetSize,p,a1)
-#define IMediaSample2_GetTime(p,a1,a2) ICOM_CALL2(GetTime,p,a1,a2)
-#define IMediaSample2_SetTime(p,a1,a2) ICOM_CALL2(SetTime,p,a1,a2)
-#define IMediaSample2_IsSyncPoint(p,a1) ICOM_CALL1(IsSyncPoint,p,a1)
-#define IMediaSample2_SetSyncPoint(p,a1) ICOM_CALL1(SetSyncPoint,p,a1)
-#define IMediaSample2_IsPreroll(p,a1) ICOM_CALL1(IsPreroll,p,a1)
-#define IMediaSample2_SetPreroll(p,a1) ICOM_CALL1(SetPreroll,p,a1)
-#define IMediaSample2_GetActualDataLength(p,a1) ICOM_CALL1(GetActualDataLength,p,a1)
-#define IMediaSample2_SetActualDataLength(p,a1) ICOM_CALL1(SetActualDataLength,p,a1)
-#define IMediaSample2_GetMediaType(p,a1) ICOM_CALL1(GetMediaType,p,a1)
-#define IMediaSample2_SetMediaType(p,a1) ICOM_CALL1(SetMediaType,p,a1)
-#define IMediaSample2_IsDiscontinuity(p,a1) ICOM_CALL1(IsDiscontinuity,p,a1)
-#define IMediaSample2_SetDiscontinuity(p,a1) ICOM_CALL1(SetDiscontinuity,p,a1)
-#define IMediaSample2_GetMediaTime(p,a1,a2) ICOM_CALL2(GetMediaTime,p,a1,a2)
-#define IMediaSample2_SetMediaTime(p,a1,a2) ICOM_CALL2(SetMediaTime,p,a1,a2)
-    /*** IMediaSample2 methods ***/
-#define IMediaSample2_GetProperties(p,a1,a2) ICOM_CALL2(GetProperties,p,a1,a2)
-#define IMediaSample2_SetProperties(p,a1,a2) ICOM_CALL2(SetProperties,p,a1,a2)
-
-/**************************************************************************
- *
- * IMediaSeeking interface
- *
- */
-
-#define ICOM_INTERFACE IMediaSeeking
-#define IMediaSeeking_METHODS \
-    ICOM_METHOD1(HRESULT,GetCapabilities,DWORD*,a1) \
-    ICOM_METHOD1(HRESULT,CheckCapabilities,DWORD*,a1) \
-    ICOM_METHOD1(HRESULT,IsFormatSupported,const GUID*,a1) \
-    ICOM_METHOD1(HRESULT,QueryPreferredFormat,GUID*,a1) \
-    ICOM_METHOD1(HRESULT,GetTimeFormat,GUID*,a1) \
-    ICOM_METHOD1(HRESULT,IsUsingTimeFormat,const GUID*,a1) \
-    ICOM_METHOD1(HRESULT,SetTimeFormat,const GUID*,a1) \
-    ICOM_METHOD1(HRESULT,GetDuration,LONGLONG*,a1) \
-    ICOM_METHOD1(HRESULT,GetStopPosition,LONGLONG*,a1) \
-    ICOM_METHOD1(HRESULT,GetCurrentPosition,LONGLONG*,a1) \
-    ICOM_METHOD4(HRESULT,ConvertTimeFormat,LONGLONG*,a1,const GUID*,a2,LONGLONG,a3,const GUID*,a4) \
-    ICOM_METHOD4(HRESULT,SetPositions,LONGLONG*,a1,DWORD,a2,LONGLONG*,a3,DWORD,a4) \
-    ICOM_METHOD2(HRESULT,GetPositions,LONGLONG*,a1,LONGLONG*,a2) \
-    ICOM_METHOD2(HRESULT,GetAvailable,LONGLONG*,a1,LONGLONG*,a2) \
-    ICOM_METHOD1(HRESULT,SetRate,double,a1) \
-    ICOM_METHOD1(HRESULT,GetRate,double*,a1) \
-    ICOM_METHOD1(HRESULT,GetPreroll,LONGLONG*,a1)
-
-#define IMediaSeeking_IMETHODS \
-    IUnknown_IMETHODS \
-    IMediaSeeking_METHODS
-
-ICOM_DEFINE(IMediaSeeking,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMediaSeeking_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMediaSeeking_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMediaSeeking_Release(p) ICOM_CALL (Release,p)
-    /*** IMediaSeeking methods ***/
-#define IMediaSeeking_GetCapabilities(p,a1) ICOM_CALL1(GetCapabilities,p,a1)
-#define IMediaSeeking_CheckCapabilities(p,a1) ICOM_CALL1(CheckCapabilities,p,a1)
-#define IMediaSeeking_IsFormatSupported(p,a1) ICOM_CALL1(IsFormatSupported,p,a1)
-#define IMediaSeeking_QueryPreferredFormat(p,a1) ICOM_CALL1(QueryPreferredFormat,p,a1)
-#define IMediaSeeking_GetTimeFormat(p,a1) ICOM_CALL1(GetTimeFormat,p,a1)
-#define IMediaSeeking_IsUsingTimeFormat(p,a1) ICOM_CALL1(IsUsingTimeFormat,p,a1)
-#define IMediaSeeking_SetTimeFormat(p,a1) ICOM_CALL1(SetTimeFormat,p,a1)
-#define IMediaSeeking_GetDuration(p,a1) ICOM_CALL1(GetDuration,p,a1)
-#define IMediaSeeking_GetStopPosition(p,a1) ICOM_CALL1(GetStopPosition,p,a1)
-#define IMediaSeeking_GetCurrentPosition(p,a1) ICOM_CALL1(GetCurrentPosition,p,a1)
-#define IMediaSeeking_ConvertTimeFormat(p,a1,a2,a3,a4) ICOM_CALL4(ConvertTimeFormat,p,a1,a2,a3,a4)
-#define IMediaSeeking_SetPositions(p,a1,a2,a3,a4) ICOM_CALL4(SetPositions,p,a1,a2,a3,a4)
-#define IMediaSeeking_GetPositions(p,a1,a2) ICOM_CALL2(GetPositions,p,a1,a2)
-#define IMediaSeeking_GetAvailable(p,a1,a2) ICOM_CALL2(GetAvailable,p,a1,a2)
-#define IMediaSeeking_SetRate(p,a1) ICOM_CALL1(SetRate,p,a1)
-#define IMediaSeeking_GetRate(p,a1) ICOM_CALL1(GetRate,p,a1)
-#define IMediaSeeking_GetPreroll(p,a1) ICOM_CALL1(GetPreroll,p,a1)
-
-/**************************************************************************
- *
- * IMemAllocator interface
- *
- */
-
-#define ICOM_INTERFACE IMemAllocator
-#define IMemAllocator_METHODS \
-    ICOM_METHOD2(HRESULT,SetProperties,ALLOCATOR_PROPERTIES*,a1,ALLOCATOR_PROPERTIES*,a2) \
-    ICOM_METHOD1(HRESULT,GetProperties,ALLOCATOR_PROPERTIES*,a1) \
-    ICOM_METHOD (HRESULT,Commit) \
-    ICOM_METHOD (HRESULT,Decommit) \
-    ICOM_METHOD4(HRESULT,GetBuffer,IMediaSample**,a1,REFERENCE_TIME*,a2,REFERENCE_TIME*,a3,DWORD,a4) \
-    ICOM_METHOD1(HRESULT,ReleaseBuffer,IMediaSample*,a1)
-
-#define IMemAllocator_IMETHODS \
-    IUnknown_IMETHODS \
-    IMemAllocator_METHODS
-
-ICOM_DEFINE(IMemAllocator,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMemAllocator_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMemAllocator_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMemAllocator_Release(p) ICOM_CALL (Release,p)
-    /*** IMemAllocator methods ***/
-#define IMemAllocator_SetProperties(p,a1,a2) ICOM_CALL2(SetProperties,p,a1,a2)
-#define IMemAllocator_GetProperties(p,a1) ICOM_CALL1(GetProperties,p,a1)
-#define IMemAllocator_Commit(p) ICOM_CALL (Commit,p)
-#define IMemAllocator_Decommit(p) ICOM_CALL (Decommit,p)
-#define IMemAllocator_GetBuffer(p,a1,a2,a3,a4) ICOM_CALL4(GetBuffer,p,a1,a2,a3,a4)
-#define IMemAllocator_ReleaseBuffer(p,a1) ICOM_CALL1(ReleaseBuffer,p,a1)
-
-
-/**************************************************************************
- *
- * IMemInputPin interface
- *
- */
-
-#define ICOM_INTERFACE IMemInputPin
-#define IMemInputPin_METHODS \
-    ICOM_METHOD1(HRESULT,GetAllocator,IMemAllocator**,a1) \
-    ICOM_METHOD2(HRESULT,NotifyAllocator,IMemAllocator*,a1,BOOL,a2) \
-    ICOM_METHOD1(HRESULT,GetAllocatorRequirements,ALLOCATOR_PROPERTIES*,a1) \
-    ICOM_METHOD1(HRESULT,Receive,IMediaSample*,a1) \
-    ICOM_METHOD3(HRESULT,ReceiveMultiple,IMediaSample**,a1,long,a2,long*,a3) \
-    ICOM_METHOD (HRESULT,ReceiveCanBlock)
-
-#define IMemInputPin_IMETHODS \
-    IUnknown_IMETHODS \
-    IMemInputPin_METHODS
-
-ICOM_DEFINE(IMemInputPin,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IMemInputPin_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IMemInputPin_AddRef(p) ICOM_CALL (AddRef,p)
-#define IMemInputPin_Release(p) ICOM_CALL (Release,p)
-    /*** IMemInputPin methods ***/
-#define IMemInputPin_GetAllocator(p,a1) ICOM_CALL1(GetAllocator,p,a1)
-#define IMemInputPin_NotifyAllocator(p,a1,a2) ICOM_CALL2(NotifyAllocator,p,a1,a2)
-#define IMemInputPin_GetAllocatorRequirements(p,a1) ICOM_CALL1(GetAllocatorRequirements,p,a1)
-#define IMemInputPin_Receive(p,a1) ICOM_CALL1(Receive,p,a1)
-#define IMemInputPin_ReceiveMultiple(p,a1,a2,a3) ICOM_CALL3(ReceiveMultiple,p,a1,a2,a3)
-#define IMemInputPin_ReceiveCanBlock(p) ICOM_CALL (ReceiveCanBlock,p)
-
-/**************************************************************************
- *
- * IOverlay interface
- *
- */
-
-#define ICOM_INTERFACE IOverlay
-#define IOverlay_METHODS \
-    ICOM_METHOD2(HRESULT,GetPalette,DWORD*,a1,PALETTEENTRY**,a2) \
-    ICOM_METHOD2(HRESULT,SetPalette,DWORD,a1,PALETTEENTRY*,a2) \
-    ICOM_METHOD1(HRESULT,GetDefaultColorKey,COLORKEY*,a1) \
-    ICOM_METHOD1(HRESULT,GetColorKey,COLORKEY*,a1) \
-    ICOM_METHOD1(HRESULT,SetColorKey,COLORKEY*,a1) \
-    ICOM_METHOD1(HRESULT,GetWindowHandle,HWND*,a1) \
-    ICOM_METHOD3(HRESULT,GetClipList,RECT*,a1,RECT*,a2,RGNDATA**,a3) \
-    ICOM_METHOD2(HRESULT,GetVideoPosition,RECT*,a1,RECT*,a2) \
-    ICOM_METHOD2(HRESULT,Advise,IOverlayNotify*,a1,DWORD,a2) \
-    ICOM_METHOD (HRESULT,Unadvise)
-
-#define IOverlay_IMETHODS \
-    IUnknown_IMETHODS \
-    IOverlay_METHODS
-
-ICOM_DEFINE(IOverlay,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IOverlay_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IOverlay_AddRef(p) ICOM_CALL (AddRef,p)
-#define IOverlay_Release(p) ICOM_CALL (Release,p)
-    /*** IOverlay methods ***/
-#define IOverlay_GetPalette(p,a1,a2) ICOM_CALL2(GetPalette,p,a1,a2)
-#define IOverlay_SetPalette(p,a1,a2) ICOM_CALL2(SetPalette,p,a1,a2)
-#define IOverlay_GetDefaultColorKey(p,a1) ICOM_CALL1(GetDefaultColorKey,p,a1)
-#define IOverlay_GetColorKey(p,a1) ICOM_CALL1(GetColorKey,p,a1)
-#define IOverlay_SetColorKey(p,a1) ICOM_CALL1(SetColorKey,p,a1)
-#define IOverlay_GetWindowHandle(p,a1) ICOM_CALL1(GetWindowHandle,p,a1)
-#define IOverlay_GetClipList(p,a1,a2,a3) ICOM_CALL3(GetClipList,p,a1,a2,a3)
-#define IOverlay_GetVideoPosition(p,a1,a2) ICOM_CALL2(GetVideoPosition,p,a1,a2)
-#define IOverlay_Advise(p,a1,a2) ICOM_CALL2(Advise,p,a1,a2)
-#define IOverlay_Unadvise(p) ICOM_CALL1(Unadvise,p)
-
-/**************************************************************************
- *
- * IPin interface
- *
- */
-
-#define ICOM_INTERFACE IPin
-#define IPin_METHODS \
-    ICOM_METHOD2(HRESULT,Connect,IPin*,a1,const AM_MEDIA_TYPE*,a2) \
-    ICOM_METHOD2(HRESULT,ReceiveConnection,IPin*,a1,const AM_MEDIA_TYPE*,a2) \
-    ICOM_METHOD (HRESULT,Disconnect) \
-    ICOM_METHOD1(HRESULT,ConnectedTo,IPin**,a1) \
-    ICOM_METHOD1(HRESULT,ConnectionMediaType,AM_MEDIA_TYPE*,a1) \
-    ICOM_METHOD1(HRESULT,QueryPinInfo,PIN_INFO*,a1) \
-    ICOM_METHOD1(HRESULT,QueryDirection,PIN_DIRECTION*,a1) \
-    ICOM_METHOD1(HRESULT,QueryId,LPWSTR*,a1) \
-    ICOM_METHOD1(HRESULT,QueryAccept,const AM_MEDIA_TYPE*,a1) \
-    ICOM_METHOD1(HRESULT,EnumMediaTypes,IEnumMediaTypes**,a1) \
-    ICOM_METHOD2(HRESULT,QueryInternalConnections,IPin**,a1,ULONG*,a2) \
-    ICOM_METHOD (HRESULT,EndOfStream) \
-    ICOM_METHOD (HRESULT,BeginFlush) \
-    ICOM_METHOD (HRESULT,EndFlush) \
-    ICOM_METHOD3(HRESULT,NewSegment,REFERENCE_TIME,a1,REFERENCE_TIME,a2,double,a3)
-
-#define IPin_IMETHODS \
-    IUnknown_IMETHODS \
-    IPin_METHODS
-
-ICOM_DEFINE(IPin,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IPin_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IPin_AddRef(p) ICOM_CALL (AddRef,p)
-#define IPin_Release(p) ICOM_CALL (Release,p)
-    /*** IPin methods ***/
-#define IPin_Connect(p,a1,a2) ICOM_CALL2(Connect,p,a1,a2)
-#define IPin_ReceiveConnection(p,a1,a2) ICOM_CALL2(ReceiveConnection,p,a1,a2)
-#define IPin_Disconnect(p) ICOM_CALL (Disconnect,p)
-#define IPin_ConnectedTo(p,a1) ICOM_CALL1(ConnectedTo,p,a1)
-#define IPin_ConnectionMediaType(p,a1) ICOM_CALL1(ConnectionMediaType,p,a1)
-#define IPin_QueryPinInfo(p,a1) ICOM_CALL1(QueryPinInfo,p,a1)
-#define IPin_QueryDirection(p,a1) ICOM_CALL1(QueryDirection,p,a1)
-#define IPin_QueryId(p,a1) ICOM_CALL1(QueryId,p,a1)
-#define IPin_QueryAccept(p,a1) ICOM_CALL1(QueryAccept,p,a1)
-#define IPin_EnumMediaTypes(p,a1) ICOM_CALL1(EnumMediaTypes,p,a1)
-#define IPin_QueryInternalConnections(p,a1,a2) ICOM_CALL2(QueryInternalConnections,p,a1,a2)
-#define IPin_EndOfStream(p) ICOM_CALL (EndOfStream,p)
-#define IPin_BeginFlush(p) ICOM_CALL (BeginFlush,p)
-#define IPin_EndFlush(p) ICOM_CALL (EndFlush,p)
-#define IPin_NewSegment(p,a1,a2,a3) ICOM_CALL3(NewSegment,p,a1,a2,a3)
-
-/**************************************************************************
- *
- * IQualityControl interface
- *
- */
-
-#define ICOM_INTERFACE IQualityControl
-#define IQualityControl_METHODS \
-    ICOM_METHOD2(HRESULT,Notify,IBaseFilter*,a1,Quality,a2) \
-    ICOM_METHOD1(HRESULT,SetSink,IQualityControl*,a1)
-
-#define IQualityControl_IMETHODS \
-    IUnknown_IMETHODS \
-    IQualityControl_METHODS
-
-ICOM_DEFINE(IQualityControl,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IQualityControl_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IQualityControl_AddRef(p) ICOM_CALL (AddRef,p)
-#define IQualityControl_Release(p) ICOM_CALL (Release,p)
-    /*** IQualityControl methods ***/
-#define IQualityControl_Notify(p,a1,a2) ICOM_CALL2(Notify,p,a1,a2)
-#define IQualityControl_SetSink(p,a1) ICOM_CALL1(SetSink,p,a1)
-
-/**************************************************************************
- *
- * IReferenceClock interface
- *
- */
-
-#define ICOM_INTERFACE IReferenceClock
-#define IReferenceClock_METHODS \
-    ICOM_METHOD1(HRESULT,GetTime,REFERENCE_TIME*,a1) \
-    ICOM_METHOD4(HRESULT,AdviseTime,REFERENCE_TIME,a1,REFERENCE_TIME,a2,HEVENT,a3,DWORD_PTR*,a4) \
-    ICOM_METHOD4(HRESULT,AdvisePeriodic,REFERENCE_TIME,a1,REFERENCE_TIME,a2,HSEMAPHORE,a3,DWORD_PTR*,a4) \
-    ICOM_METHOD1(HRESULT,Unadvise,DWORD_PTR,a1)
-
-#define IReferenceClock_IMETHODS \
-    IUnknown_IMETHODS \
-    IReferenceClock_METHODS
-
-ICOM_DEFINE(IReferenceClock,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IReferenceClock_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IReferenceClock_AddRef(p) ICOM_CALL (AddRef,p)
-#define IReferenceClock_Release(p) ICOM_CALL (Release,p)
-    /*** IReferenceClock methods ***/
-#define IReferenceClock_GetTime(p,a1) ICOM_CALL1(GetTime,p,a1)
-#define IReferenceClock_AdviseTime(p,a1,a2,a3,a4) ICOM_CALL4(AdviseTime,p,a1,a2,a3,a4)
-#define IReferenceClock_AdvisePeriodic(p,a1,a2,a3,a4) ICOM_CALL4(AdvisePeriodic,p,a1,a2,a3,a4)
-#define IReferenceClock_Unadvise(p,a1) ICOM_CALL1(Unadvise,p,a1)
-
-/**************************************************************************
- *
- * IReferenceClock2 interface
- *
- */
-
-#define ICOM_INTERFACE IReferenceClock2
-#define IReferenceClock2_METHODS
-
-#define IReferenceClock2_IMETHODS \
-    IReferenceClock_IMETHODS \
-    IReferenceClock2_METHODS
-
-ICOM_DEFINE(IReferenceClock2,IReferenceClock)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define IReferenceClock2_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define IReferenceClock2_AddRef(p) ICOM_CALL (AddRef,p)
-#define IReferenceClock2_Release(p) ICOM_CALL (Release,p)
-    /*** IReferenceClock methods ***/
-#define IReferenceClock2_GetTime(p,a1) ICOM_CALL1(GetTime,p,a1)
-#define IReferenceClock2_AdviseTime(p,a1,a2,a3,a4) ICOM_CALL4(AdviseTime,p,a1,a2,a3,a4)
-#define IReferenceClock2_AdvisePeriodic(p,a1,a2,a3,a4) ICOM_CALL4(AdvisePeriodic,p,a1,a2,a3,a4)
-#define IReferenceClock2_Unadvise(p,a1) ICOM_CALL1(Unadvise,p,a1)
-    /*** IReferenceClock2 methods ***/
-
-/**************************************************************************
- *
- * ISeekingPassThru interface
- *
- */
-
-#define ICOM_INTERFACE ISeekingPassThru
-#define ISeekingPassThru_METHODS \
-    ICOM_METHOD2(HRESULT,Init,BOOL,a1,IPin*,a2)
-
-#define ISeekingPassThru_IMETHODS \
-    IUnknown_IMETHODS \
-    ISeekingPassThru_METHODS
-
-ICOM_DEFINE(ISeekingPassThru,IUnknown)
-#undef ICOM_INTERFACE
-
-    /*** IUnknown methods ***/
-#define ISeekingPassThru_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
-#define ISeekingPassThru_AddRef(p) ICOM_CALL (AddRef,p)
-#define ISeekingPassThru_Release(p) ICOM_CALL (Release,p)
-    /*** ISeekingPassThru methods ***/
-#define ISeekingPassThru_Init(p,a1,a2) ICOM_CALL2(Init,p,a1,a2)
-
-
-
-
-#endif  /* __WINE_STRMIF_H_ */
diff --git a/ole/uuid.c b/ole/uuid.c
index 84cbef5..249371c 100644
--- a/ole/uuid.c
+++ b/ole/uuid.c
@@ -69,8 +69,8 @@
 #include "vfw.h"
 
 /* for dshow */
-#include "strmif.h"
-#include "control.h"
+/*#include "strmif.h"*/
+/*#include "control.h"*/
 #include "uuids.h"
 
 /* GUIDs not declared in an exported header file */
diff --git a/winedefault.reg b/winedefault.reg
index 7b1cfb9..630d925 100644
--- a/winedefault.reg
+++ b/winedefault.reg
@@ -298,500 +298,6 @@
 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{8856f961-340a-11d0-a96b-00c04fd705a2}\shellex\MayChangeDefaultMenu]
 @=""
 
-#
-# Entries for quartz.dll
-#
-
-# CLSID_FilterGraph
-[HKEY_CLASSES_ROOT\CLSID\{E436EBB3-524F-11CE-9F53-0020AF0BA770}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-# CLSID_FilterGraphNoThread
-[HKEY_CLASSES_ROOT\CLSID\{E436EBB8-524F-11CE-9F53-0020AF0BA770}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-# CLSID_SystemClock
-[HKEY_CLASSES_ROOT\CLSID\{E436EBB1-524F-11CE-9F53-0020AF0BA770}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-# CLSID_MemoryAllocator
-[HKEY_CLASSES_ROOT\CLSID\{1E651CC0-B199-11D0-8212-00C04FC32C45}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-# CLSID_SystemDeviceEnum
-[HKEY_CLASSES_ROOT\CLSID\{62BE5D10-60EB-11D0-BD3B-00A0C911CE86}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-# CLSID_FilterMapper
-[HKEY_CLASSES_ROOT\CLSID\{E436EBB2-524f-11CE-9F53-0020AF0BA770}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-# CLSID_FilterMapper2
-[HKEY_CLASSES_ROOT\CLSID\{CDA42200-BD88-11D0-BD4E-00A0C911CE86}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-# CLSID_SeekingPassThru
-[HKEY_CLASSES_ROOT\CLSID\{060AF76C-68DD-11D0-8FC1-00C04FD9189D}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-# CLSID_CaptureGraphBuilder
-[HKEY_CLASSES_ROOT\CLSID\{BF87B6E0-8C27-11D0-B3F0-00AA003761C5}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-
-
-
-# DirectShow filter categories
-[HKEY_CLASSES_ROOT\CLSID\{DA4E3DA0-D07D-11D0-BD50-00A0C911CE86}]
-@="ActiveMovie Filter Categories"
-
-[HKEY_CLASSES_ROOT\CLSID\{DA4E3DA0-D07D-11D0-BD50-00A0C911CE86}\Instance\{083863F1-70DE-11D0-BD40-00A0C911CE86}]
-"CLSID"="{083863F1-70DE-11D0-BD40-00A0C911CE86}"
-"FriendlyName"="DirectShow Filters"
-"Merit"=dword:00600000
-
-[HKEY_CLASSES_ROOT\CLSID\{DA4E3DA0-D07D-11D0-BD50-00A0C911CE86}\Instance\{33D9A760-90C8-11D0-BD43-00A0C911CE86}]
-"CLSID"="{33D9A760-90C8-11D0-BD43-00A0C911CE86}"
-"FriendlyName"="Video Compressors"
-
-[HKEY_CLASSES_ROOT\CLSID\{DA4E3DA0-D07D-11D0-BD50-00A0C911CE86}\Instance\{33D9A761-90C8-11D0-BD43-00A0C911CE86}"]
-"CLSID"="{33D9A761-90C8-11D0-BD43-00A0C911CE86}"
-"FriendlyName"="Audio Compressors"
-
-[HKEY_CLASSES_ROOT\CLSID\{DA4E3DA0-D07D-11D0-BD50-00A0C911CE86}\Instance\{33D9A762-90C8-11D0-BD43-00A0C911CE86}]
-"CLSID"="{33D9A762-90C8-11D0-BD43-00A0C911CE86}"
-"FriendlyName"="Audio Capture Sources"
-
-[HKEY_CLASSES_ROOT\CLSID\{DA4E3DA0-D07D-11D0-BD50-00A0C911CE86}\Instance\{4EFE2452-168A-11D1-BC76-00C04FB9453B}]
-"CLSID"="{4EFE2452-168A-11D1-BC76-00C04FB9453B}"
-"FriendlyName"="Midi Renderers"
-"Merit"=dword:00600000
-
-[HKEY_CLASSES_ROOT\CLSID\{DA4E3DA0-D07D-11D0-BD50-00A0C911CE86}\Instance\{860BB310-5D01-11D0-BD3B-00A0C911CE86}]
-"CLSID"="{860BB310-5D01-11D0-BD3B-00A0C911CE86}"
-"FriendlyName"="Video Capture Sources"
-
-[HKEY_CLASSES_ROOT\CLSID\{DA4E3DA0-D07D-11D0-BD50-00A0C911CE86}\Instance\{CC7BFB41-F175-11D1-A392-00E0291F3959}]
-"CLSID"="{CC7BFB41-F175-11D1-A392-00E0291F3959}"
-"FriendlyName"="External Renderers"
-
-[HKEY_CLASSES_ROOT\CLSID\{DA4E3DA0-D07D-11D0-BD50-00A0C911CE86}\Instance\{CC7BFB46-F175-11D1-A392-00E0291F3959}]
-"CLSID"="{CC7BFB46-F175-11D1-A392-00E0291F3959}"
-"FriendlyName"="Device Control Filters"
-
-[HKEY_CLASSES_ROOT\CLSID\{DA4E3DA0-D07D-11D0-BD50-00A0C911CE86}\Instance\{E0F158E1-CB04-11D0-BD4E-00A0C911CE86}]
-"CLSID"="{E0F158E1-CB04-11D0-BD4E-00A0C911CE86}"
-"FriendlyName"="Audio Renderers"
-"Merit"=dword:00600000
-
-# CLSID_AudioRender
-
-[HKEY_CLASSES_ROOT\CLSID\{e30629d1-27e5-11ce-875d-00608cb78066}]
-@="Audio Renderer"
-[HKEY_CLASSES_ROOT\CLSID\{e30629d1-27e5-11ce-875d-00608cb78066}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{E0F158E1-CB04-11D0-BD4E-00A0C911CE86}\Instance\{e30629d1-27e5-11ce-875d-00608cb78066}]
-"CLSID"="{e30629d1-27e5-11ce-875d-00608cb78066}"
-# FriendlyName seems to be the driver name and to be generated dynamically.
-"FriendlyName"="Waveout audio renderer"
-# FilterData of generic renderer.
-"FilterData"=hex:02,00,00,00,00,00,60,00,01,00,00,00,00,00,00,00,\
-  30,70,69,33,02,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,38,00,00,00,38,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# CLSID_VideoRenderer
-
-[HKEY_CLASSES_ROOT\CLSID\{70e102b0-5556-11ce-97c0-00aa0055595a}]
-@="Video Renderer"
-[HKEY_CLASSES_ROOT\CLSID\{70e102b0-5556-11ce-97c0-00aa0055595a}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{70e102b0-5556-11ce-97c0-00aa0055595a}]
-"CLSID"="{70e102b0-5556-11ce-97c0-00aa0055595a}"
-"FriendlyName"="Video Renderer"
-# FilterData of generic renderer.
-"FilterData"=hex:02,00,00,00,00,00,60,00,01,00,00,00,00,00,00,00,\
-  30,70,69,33,02,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,38,00,00,00,38,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# CLSID_FileWriter
-
-[HKEY_CLASSES_ROOT\CLSID\{8596e5f0-0da5-11d0-bd21-00a0c911ce86}]
-@="File Writer"
-[HKEY_CLASSES_ROOT\CLSID\{8596e5f0-0da5-11d0-bd21-00a0c911ce86}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{8596e5f0-0da5-11d0-bd21-00a0c911ce86}]
-"CLSID"="{8596e5f0-0da5-11d0-bd21-00a0c911ce86}"
-"FriendlyName"="File Writer"
-# FilterData of generic renderer.
-"FilterData"=hex:02,00,00,00,00,00,20,00,01,00,00,00,00,00,00,00,\
-  30,70,69,33,02,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,38,00,00,00,38,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# Wave Parser
-
-[HKEY_CLASSES_ROOT\CLSID\{D51BD5A1-7548-11CF-A520-0080C77EF58A}]
-@="Wave Parser"
-[HKEY_CLASSES_ROOT\CLSID\{D51BD5A1-7548-11CF-A520-0080C77EF58A}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{D51BD5A1-7548-11CF-A520-0080C77EF58A}]
-"CLSID"="{D51BD5A1-7548-11CF-A520-0080C77EF58A}"
-"FriendlyName"="Wave Parser"
-# FilterData of generic transform filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,02,00,00,00,00,00,00,00,\
-  30,70,69,33,00,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  31,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# CLSID_AVIDec(AVI Decompressor)
-
-[HKEY_CLASSES_ROOT\CLSID\{CF49D4E0-1115-11CE-B03A-0020AF0BA770}]
-@="AVI Decompressor"
-[HKEY_CLASSES_ROOT\CLSID\{CF49D4E0-1115-11CE-B03A-0020AF0BA770}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{CF49D4E0-1115-11CE-B03A-0020AF0BA770}]
-"CLSID"="{CF49D4E0-1115-11CE-B03A-0020AF0BA770}"
-"FriendlyName"="AVI Decompressor"
-# FilterData of generic transform filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,02,00,00,00,00,00,00,00,\
-  30,70,69,33,00,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  31,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# CLSID_AsyncReader
-
-[HKEY_CLASSES_ROOT\CLSID\{E436EBB5-524F-11CE-9F53-0020AF0BA770}]
-@="File Source (Async.)"
-[HKEY_CLASSES_ROOT\CLSID\{E436EBB5-524F-11CE-9F53-0020AF0BA770}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{E436EBB5-524F-11CE-9F53-0020AF0BA770}]
-"CLSID"="{E436EBB5-524F-11CE-9F53-0020AF0BA770}"
-"FriendlyName"="File Source (Async.)"
-# FilterData of generic source filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,01,00,00,00,00,00,00,00,\
-  30,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,38,00,00,00,38,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# CLSID_URLReader (not implemented yet)
-
-[HKEY_CLASSES_ROOT\CLSID\{E436EBB6-524F-11CE-9F53-0020AF0BA770}]
-@="File Source (URL)"
-[HKEY_CLASSES_ROOT\CLSID\{E436EBB6-524F-11CE-9F53-0020AF0BA770}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{E436EBB6-524F-11CE-9F53-0020AF0BA770}]
-"CLSID"="{E436EBB6-524F-11CE-9F53-0020AF0BA770}"
-"FriendlyName"="File Source (URL)"
-# FilterData of generic source filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,01,00,00,00,00,00,00,00,\
-  30,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,38,00,00,00,38,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# CLSID_AviSplitter
-
-[HKEY_CLASSES_ROOT\CLSID\{1B544C20-FD0B-11CE-8C63-00AA0044B51E}]
-@="AVI Splitter"
-[HKEY_CLASSES_ROOT\CLSID\{1B544C20-FD0B-11CE-8C63-00AA0044B51E}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{1B544C20-FD0B-11CE-8C63-00AA0044B51E}]
-"CLSID"="{1B544C20-FD0B-11CE-8C63-00AA0044B51E}"
-"FriendlyName"="AVI Splitter"
-# FilterData of generic transform filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,02,00,00,00,00,00,00,00,\
-  30,70,69,33,00,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  31,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# QuickTime Parser
-
-[HKEY_CLASSES_ROOT\CLSID\{D51BD5A0-7548-11CF-A520-0080C77EF58A}]
-@="QuickTime Movie Parser"
-[HKEY_CLASSES_ROOT\CLSID\{D51BD5A0-7548-11CF-A520-0080C77EF58A}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{D51BD5A0-7548-11CF-A520-0080C77EF58A}]
-"CLSID"="{D51BD5A0-7548-11CF-A520-0080C77EF58A}"
-"FriendlyName"="QuickTime Movie Parser"
-# FilterData of generic transform filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,02,00,00,00,00,00,00,00,\
-  30,70,69,33,00,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  31,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# MIDI Parser
-
-[HKEY_CLASSES_ROOT\CLSID\{D51BD5A2-7548-11CF-A520-0080C77EF58A}]
-@="MIDI Parser"
-[HKEY_CLASSES_ROOT\CLSID\{D51BD5A2-7548-11CF-A520-0080C77EF58A}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{D51BD5A2-7548-11CF-A520-0080C77EF58A}]
-"CLSID"="{D51BD5A2-7548-11CF-A520-0080C77EF58A}"
-"FriendlyName"="MIDI Parser"
-# FilterData of generic transform filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,02,00,00,00,00,00,00,00,\
-  30,70,69,33,00,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  31,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-
-
-
-# CLSID_Colour(Color space converter)
-
-[HKEY_CLASSES_ROOT\CLSID\{1643E180-90F5-11CE-97D5-00AA0055595A}]
-@="Color Space Converter"
-[HKEY_CLASSES_ROOT\CLSID\{1643E180-90F5-11CE-97D5-00AA0055595A}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{1643E180-90F5-11CE-97D5-00AA0055595A}]
-"CLSID"="{1643E180-90F5-11CE-97D5-00AA0055595A}"
-"FriendlyName"="Color Space Converter"
-# FilterData of generic transform filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,02,00,00,00,00,00,00,00,\
-  30,70,69,33,00,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  31,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# CLSID_MPEG1Splitter
-[HKEY_CLASSES_ROOT\CLSID\{336475D0-942A-11CE-A870-00AA002FEAB5}]
-@="MPEG1 Splitter"
-[HKEY_CLASSES_ROOT\CLSID\{336475D0-942A-11CE-A870-00AA002FEAB5}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{336475D0-942A-11CE-A870-00AA002FEAB5}]
-"CLSID"="{336475D0-942A-11CE-A870-00AA002FEAB5}"
-"FriendlyName"="MPEG1 Splitter"
-# FilterData of generic transform filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,02,00,00,00,00,00,00,00,\
-  30,70,69,33,00,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  31,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# CLSID_ACMWrapper
-[HKEY_CLASSES_ROOT\CLSID\{6A08CF80-0E18-11CF-A24D-0020AFD79767}]
-@="ACM Wrapper"
-[HKEY_CLASSES_ROOT\CLSID\{6A08CF80-0E18-11CF-A24D-0020AFD79767}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{6A08CF80-0E18-11CF-A24D-0020AFD79767}]
-"CLSID"="{6A08CF80-0E18-11CF-A24D-0020AFD79767}"
-"FriendlyName"="ACM Wrapper"
-# FilterData of generic transform filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,02,00,00,00,00,00,00,00,\
-  30,70,69,33,00,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  31,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# CLSID_CMpegVideoCodec
-[HKEY_CLASSES_ROOT\CLSID\{feb50740-7bef-11ce-9bd9-0000e202599c}]
-@="MPEG Video Decoder"
-[HKEY_CLASSES_ROOT\CLSID\{feb50740-7bef-11ce-9bd9-0000e202599c}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{feb50740-7bef-11ce-9bd9-0000e202599c}]
-"CLSID"="{feb50740-7bef-11ce-9bd9-0000e202599c}"
-"FriendlyName"="MPEG Video Decoder"
-# FilterData of generic transform filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,02,00,00,00,00,00,00,00,\
-  30,70,69,33,00,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  31,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# CLSID_CMpegAudioCodec
-[HKEY_CLASSES_ROOT\CLSID\{4a2286e0-7bef-11ce-9bd9-0000e202599c}]
-@="MPEG Audio Decoder"
-[HKEY_CLASSES_ROOT\CLSID\{4a2286e0-7bef-11ce-9bd9-0000e202599c}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{4a2286e0-7bef-11ce-9bd9-0000e202599c}]
-"CLSID"="{4a2286e0-7bef-11ce-9bd9-0000e202599c}"
-"FriendlyName"="MPEG Audio Decoder"
-# FilterData of generic transform filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,02,00,00,00,00,00,00,00,\
-  30,70,69,33,00,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  31,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# MJPG Decompressor
-[HKEY_CLASSES_ROOT\CLSID\{301056D0-6DFF-11D2-9EEB-006008039E37}]
-@="MJPG Decompressor"
-[HKEY_CLASSES_ROOT\CLSID\{301056D0-6DFF-11D2-9EEB-006008039E37}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{301056D0-6DFF-11D2-9EEB-006008039E37}]
-"CLSID"="{301056D0-6DFF-11D2-9EEB-006008039E37}"
-"FriendlyName"="MJPG Decompressor"
-# FilterData of generic transform filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,02,00,00,00,00,00,00,00,\
-  30,70,69,33,00,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  31,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-# QuickTime Decompressor
-[HKEY_CLASSES_ROOT\CLSID\{FDFE9681-74A3-11D0-AFA7-00AA00B67A42}]
-@="QuickTime Decompressor"
-[HKEY_CLASSES_ROOT\CLSID\{FDFE9681-74A3-11D0-AFA7-00AA00B67A42}\InprocServer32]
-@="quartz.dll"
-"ThreadingModel"="Both"
-
-[HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{FDFE9681-74A3-11D0-AFA7-00AA00B67A42}]
-"CLSID"="{FDFE9681-74A3-11D0-AFA7-00AA00B67A42}"
-"FriendlyName"="QuickTime Decompressor"
-# FilterData of generic transform filter.
-"FilterData"=hex:02,00,00,00,00,00,60,00,02,00,00,00,00,00,00,00,\
-  30,70,69,33,00,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  31,70,69,33,08,00,00,00,00,00,00,00,\
-  01,00,00,00,00,00,00,00,00,00,00,00,\
-  30,74,79,33,00,00,00,00,60,00,00,00,60,00,00,00,\
-  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
-
-
-
-
-
-#
-# quartz Media Types.
-#
-
-# audio/wav
-# RIFF****WAVE
-[HKEY_CLASSES_ROOT\Media Type\{E436EB83-524F-11CE-9F53-0020AF0BA770}\{E436EB8B-524F-11CE-9F53-0020AF0BA770}]
-"0"="0,4,,52494646, 8,4,,57415645"
-"Source Filter"="{E436EBB5-524F-11CE-9F53-0020AF0BA770}"
-
-# audio/basic
-# .snd
-[HKEY_CLASSES_ROOT\Media Type\{E436EB83-524F-11CE-9F53-0020AF0BA770}\{E436EB8C-524F-11CE-9F53-0020AF0BA770}]
-"0"="0,4,,2E736E64"
-"Source Filter"="{E436EBB5-524F-11CE-9F53-0020AF0BA770}"
-
-# audio/aiff
-# FORM****AIFF
-[HKEY_CLASSES_ROOT\Media Type\{E436EB83-524F-11CE-9F53-0020AF0BA770}\{E436EB8D-524F-11CE-9F53-0020AF0BA770}]
-"0"="0,4,,464F524D, 8,4,,41494646"
-"Source Filter"="{E436EBB5-524F-11CE-9F53-0020AF0BA770}"
-
-# video/x-msvideo
-# RIFF****AVI 
-[HKEY_CLASSES_ROOT\Media Type\{E436EB83-524F-11CE-9F53-0020AF0BA770}\{E436EB88-524F-11CE-9F53-0020AF0BA770}]
-"0"="0,4,,52494646, 8,4,,41564920"
-"Source Filter"="{E436EBB5-524F-11CE-9F53-0020AF0BA770}"
-
-# video/quicktime
-# ****mdat / ****moov
-[HKEY_CLASSES_ROOT\Media Type\{E436EB83-524F-11CE-9F53-0020AF0BA770}\{E436EB89-524F-11CE-9F53-0020AF0BA770}]
-"0"="4,4,,6D646174"
-"1"="4,4,,6D6F6F76"
-"Source Filter"="{E436EBB5-524F-11CE-9F53-0020AF0BA770}"
-
-# video/mpeg (MPEG-1/System)
-# 0x00 0x00 0x01 0xba
-[HKEY_CLASSES_ROOT\Media Type\{E436EB83-524F-11CE-9F53-0020AF0BA770}\{E436EB84-524F-11CE-9F53-0020AF0BA770}]
-"0"="0,4,,000001BA"
-"Source Filter"="{E436EBB5-524F-11CE-9F53-0020AF0BA770}"
-
-# video/mpeg (MPEG-1/Video)
-# 0x00 0x00 0x01 0xb3
-[HKEY_CLASSES_ROOT\Media Type\{E436EB83-524F-11CE-9F53-0020AF0BA770}\{E436EB86-524F-11CE-9F53-0020AF0BA770}]
-"0"="0,4,,000001B3"
-"Source Filter"="{E436EBB5-524F-11CE-9F53-0020AF0BA770}"
-
-# audio/mpeg
-# 12bit 0xFFF + 1bit 0 + 2bit Layer(non-zero) + 1bit flag
-[HKEY_CLASSES_ROOT\Media Type\{E436EB83-524F-11CE-9F53-0020AF0BA770}\{E436EB87-524F-11CE-9F53-0020AF0BA770}]
-"0"="0,2,FFF8,FFF8"
-"Source Filter"="{E436EBB5-524F-11CE-9F53-0020AF0BA770}"
-
-
-
 
 #
 # Entries for Mozilla ActiveX control support