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