21#define NONAMELESSUNION
22#define NONAMELESSSTRUCT
27#include "wine/unicode.h"
79 'M',
'e',
'd',
'i',
'a',
' ',
'T',
'y',
'p',
'e', 0 };
81 'S',
'u',
'b',
't',
'y',
'p',
'e', 0 };
83 'S',
'o',
'u',
'r',
'c',
'e',
' ',
'F',
'i',
'l',
't',
'e',
'r',0};
98 if (*extension !=
'.')
107 size =
sizeof(keying);
115 size =
sizeof(keying);
124 size =
sizeof(keying);
152 return (wHex -
'0') & 0xf;
159 return (wHex -
'a' + 10) & 0xf;
181 if (!(wszPatternString =
strchrW(wszPatternString,
',')))
193 memset(pbMask, 0xFF, ulBytes);
195 if (!(wszPatternString =
strchrW(wszPatternString,
',')))
201 while (!
isxdigitW(*wszPatternString) && (*wszPatternString !=
',')) wszPatternString++;
203 for (strpos = 0;
isxdigitW(*wszPatternString) && (strpos/2 < ulBytes); wszPatternString++, strpos++)
205 if ((strpos % 2) == 1)
211 if (!(wszPatternString =
strchrW(wszPatternString,
',')))
219 for ( ; !
isxdigitW(*wszPatternString) && (*wszPatternString !=
','); wszPatternString++)
222 for (strpos = 0;
isxdigitW(*wszPatternString) && (strpos/2 < ulBytes); wszPatternString++, strpos++)
224 if ((strpos % 2) == 1)
232 hr = IAsyncReader_SyncRead(pReader, ulOffset, ulBytes, pbFile);
237 for (
i = 0;
i < ulBytes;
i++)
238 if ((pbFile[
i] & pbMask[
i]) != pbValue[
i])
251 if ((
hr ==
S_OK) && (wszPatternString =
strchrW(wszPatternString,
',')))
263 static const WCHAR wszMediaType[] = {
'M',
'e',
'd',
'i',
'a',
' ',
'T',
'y',
'p',
'e',0};
281 for (indexMajor = 0; !bFound; indexMajor++)
285 DWORD dwKeyNameLength =
sizeof(wszMajorKeyName) /
sizeof(wszMajorKeyName[0]);
286 static const WCHAR wszExtensions[] = {
'E',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
's',0};
293 if (!
strcmpW(wszExtensions, wszMajorKeyName))
303 for (indexMinor = 0; !bFound; indexMinor++)
307 DWORD dwMinorKeyNameLen =
sizeof(wszMinorKeyName) /
sizeof(wszMinorKeyName[0]);
309 DWORD dwSourceFilterKeyNameLen =
sizeof(wszSourceFilterKeyName);
321 if (
RegQueryInfoKeyW(hkeyMinor,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL, &maxValueLen,
NULL,
NULL) !=
ERROR_SUCCESS)
324 for (indexValue = 0; !bFound; indexValue++)
327 WCHAR wszValueName[14];
329 DWORD dwValueNameLen =
sizeof(wszValueName) /
sizeof(wszValueName[0]);
330 DWORD dwDataLen = maxValueLen;
373 ERR(
"Media class not found\n");
378 TRACE(
"Found file's class:\n");
396 if (
pos >= 1 || !
This->pOutputPin)
399 IPin_AddRef(
This->pOutputPin);
400 return This->pOutputPin;
409 if (!
This->pOutputPin)
443 TRACE(
"-- created at %p\n", pAsyncRead);
459 *
ppv = &
This->filter.IBaseFilter_iface;
461 *
ppv = &
This->filter.IBaseFilter_iface;
463 *
ppv = &
This->filter.IBaseFilter_iface;
465 *
ppv = &
This->filter.IBaseFilter_iface;
467 *
ppv = &
This->IFileSourceFilter_iface;
469 *
ppv = &
This->IAMFilterMiscFlags_iface;
489 TRACE(
"%p->() Release from %d\n",
This, refCount + 1);
493 if (
This->pOutputPin)
496 if(
SUCCEEDED(IPin_ConnectedTo(
This->pOutputPin, &pConnectedTo)))
498 IPin_Disconnect(pConnectedTo);
499 IPin_Release(pConnectedTo);
501 IPin_Disconnect(
This->pOutputPin);
502 IPin_Release(
This->pOutputPin);
523 This->filter.state = State_Stopped;
534 This->filter.state = State_Paused;
545 This->filter.state = State_Running;
566 *ppPin =
This->pOutputPin;
594 return IBaseFilter_QueryInterface(&
This->filter.IBaseFilter_iface,
riid,
ppv);
601 return IBaseFilter_AddRef(&
This->filter.IBaseFilter_iface);
608 return IBaseFilter_Release(&
This->filter.IBaseFilter_iface);
652 This->pmt->bFixedSizeSamples =
TRUE;
654 This->pmt->cbFormat = 0;
657 This->pmt->lSampleSize = 0;
658 This->pmt->formattype = FORMAT_None;
662 This->pmt->majortype = MEDIATYPE_Stream;
672 IAsyncReader_Release(pReader);
676 if (
This->pOutputPin)
678 IPin_Release(
This->pOutputPin);
699 TRACE(
"%p->(%p, %p)\n",
This, ppszFileName, pmt);
705 if (
This->pszFileName)
711 *ppszFileName =
NULL;
792 if (
IsEqualGUID(&pmt->majortype, &pmt_filter->majortype) &&
793 IsEqualGUID(&pmt->subtype, &pmt_filter->subtype) &&
821 *
ppv = &
This->pin.pin.IPin_iface;
823 *
ppv = &
This->IAsyncReader_iface;
843 TRACE(
"(%p)->() Release from %d\n",
This, refCount + 1);
848 if (
This->handle_list)
850 for (
x = 0;
x <=
This->samples; ++
x)
855 This->csList.DebugInfo->Spare[0] = 0;
894 TRACE(
"%p->(%p, %p)\n",
This, pReceivePin, pmt);
899 This->pin.pConnectedTo = pReceivePin;
900 IPin_AddRef(pReceivePin);
903 hr = IPin_ReceiveConnection(pReceivePin, &iface->
IPin_iface, pmt);
907 IPin_Release(
This->pin.pConnectedTo);
921 if (ppropInputRequest->
cbAlign && ppropInputRequest->
cbAlign !=
This->allocProps.cbAlign)
922 FIXME(
"Requested Buffer cbAlign mismatch %i,%i\n",
This->allocProps.cbAlign, ppropInputRequest->
cbAlign);
924 FIXME(
"Requested Buffer cbPrefix mismatch %i,%i\n",
This->allocProps.cbPrefix, ppropInputRequest->
cbPrefix);
926 FIXME(
"Requested Buffer cbBuffer mismatch %i,%i\n",
This->allocProps.cbBuffer, ppropInputRequest->
cbBuffer);
928 FIXME(
"Requested Buffer cBuffers mismatch %i,%i\n",
This->allocProps.cBuffers, ppropInputRequest->
cBuffers);
930 return IMemAllocator_SetProperties(pAlloc, &
This->allocProps, &actual);
952 piOutput.pFilter = pBaseFilter;
977 return IPin_QueryInterface(&
This->pin.pin.IPin_iface,
riid,
ppv);
984 return IPin_AddRef(&
This->pin.pin.IPin_iface);
991 return IPin_Release(&
This->pin.pin.IPin_iface);
994#define DEF_ALIGNMENT 1
1002 TRACE(
"%p->(%p, %p, %p)\n",
This, pPreferred, pProps, ppActual);
1009 hr = IMemAllocator_SetProperties(pPreferred, pProps, pProps);
1013 IMemAllocator_AddRef(pPreferred);
1014 *ppActual = pPreferred;
1015 TRACE(
"FileAsyncReader_RequestAllocator -- %x\n",
hr);
1026 hr = IMemAllocator_SetProperties(pPreferred, pProps, pProps);
1030 *ppActual = pPreferred;
1031 TRACE(
"FileAsyncReader_RequestAllocator -- %x\n",
hr);
1039 if (
This->handle_list)
1042 for (
x = 0;
x <=
This->samples; ++
x)
1048 This->oldest_sample = 0;
1053 if (
This->sample_list &&
This->handle_list)
1057 for (
x = 0;
x <
This->samples; ++
x)
1060 if (
x + 1 <
This->samples)
1064 This->allocProps = *pProps;
1081 IMemAllocator_Release(pPreferred);
1098 TRACE(
"%p->(%p, %lx)\n",
This, pSample, dwUser);
1105 hr = IMediaSample_GetTime(pSample, &
Start, &
Stop);
1108 hr = IMediaSample_GetPointer(pSample, &
pBuffer);
1111 if (
This->bFlushing)
1126 if (!
This->sample_list[
x].pSample)
1130 if (
x >=
This->samples)
1131 for (
x = 0;
x <
This->oldest_sample; ++
x)
1133 if (!
This->sample_list[
x].pSample)
1139 ++
This->queued_number;
1141 pDataRq =
This->sample_list +
x;
1182 if (!
This->bFlushing)
1186 if (!
This->queued_number)
1189 WARN(
"Called without samples in queue and not flushing!!\n");
1220 --
This->queued_number;
1240 --
This->queued_number;
1260 if (
This->bFlushing)
1267 IMediaSample_SetActualDataLength(pDataRq->
pSample, dwBytes);
1273 IMediaSample_GetTime(pDataRq->
pSample, &rtSampleStart, &rtSampleStop);
1274 assert(rtStart == rtSampleStart);
1275 assert(rtStop <= rtSampleStop);
1277 IMediaSample_SetTime(pDataRq->
pSample, &rtStart, &rtStop);
1278 assert(rtStart == rtSampleStart);
1280 assert(rtStop == rtSampleStop);
1282 assert(rtStop == rtStart);
1291 if (
This->sample_list[
x].pSample)
1293 if (
x >=
This->samples)
1294 for (
x = 0;
x <
This->oldest_sample; ++
x)
1295 if (
This->sample_list[
x].pSample)
1297 if (
This->oldest_sample ==
x)
1300 This->oldest_sample =
x;
1318 TRACE(
"(%p)\n", pSample);
1320 hr = IMediaSample_GetTime(pSample, &tStart, &tStop);
1323 hr = IMediaSample_GetPointer(pSample, &
pBuffer);
1376 TRACE(
"%p->(%p, %p)\n",
This, pTotal, pAvailable);
1384 *pAvailable = *pTotal;
1414 for (
x = 0;
x <
This->samples; ++
x)
1440 return IBaseFilter_QueryInterface(&
This->filter.IBaseFilter_iface,
riid,
ppv);
1445 return IBaseFilter_AddRef(&
This->filter.IBaseFilter_iface);
1450 return IBaseFilter_Release(&
This->filter.IBaseFilter_iface);
#define InterlockedDecrement
@ AM_FILTER_MISC_FLAGS_IS_SOURCE
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define RegCloseKey(hKey)
const GUID IID_IBaseFilter
const GUID IID_IAsyncReader
BOOL WINAPI CancelIo(IN HANDLE hFile)
const char * qzdebugstr_guid(const GUID *id)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
#define HeapFree(x, y, z)
static DWORD DWORD * dwLength
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
static const IAsyncReaderVtbl FileAsyncReader_Vtbl
static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl
static HRESULT process_pattern_string(LPCWSTR wszPatternString, IAsyncReader *pReader)
static const IBaseFilterVtbl AsyncReader_Vtbl
static HRESULT WINAPI AsyncReader_FindPin(IBaseFilter *iface, LPCWSTR Id, IPin **ppPin)
static AsyncReader * impl_from_IFileSourceFilter(IFileSourceFilter *iface)
static HRESULT WINAPI FileAsyncReader_Request(IAsyncReader *iface, IMediaSample *pSample, DWORD_PTR dwUser)
static HRESULT WINAPI FileAsyncReaderPin_QueryInterface(IPin *iface, REFIID riid, LPVOID *ppv)
static const IFileSourceFilterVtbl FileSource_Vtbl
static ULONG WINAPI FileSource_AddRef(IFileSourceFilter *iface)
static HRESULT WINAPI FileSource_GetCurFile(IFileSourceFilter *iface, LPOLESTR *ppszFileName, AM_MEDIA_TYPE *pmt)
static ULONG WINAPI AsyncReader_Release(IBaseFilter *iface)
static const WCHAR subtype_name[]
static const WCHAR source_filter_name[]
static HRESULT FileAsyncReader_Construct(HANDLE hFile, IBaseFilter *pBaseFilter, LPCRITICAL_SECTION pCritSec, IPin **ppPin)
HRESULT GetClassMediaFile(IAsyncReader *pReader, LPCOLESTR pszFileName, GUID *majorType, GUID *minorType, GUID *sourceFilter)
static AsyncReader * impl_from_IAMFilterMiscFlags(IAMFilterMiscFlags *iface)
static ULONG WINAPI FileSource_Release(IFileSourceFilter *iface)
static const BaseOutputPinFuncTable output_BaseOutputFuncTable
static HRESULT WINAPI FileAsyncReaderPin_AttemptConnection(BasePin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
static AsyncReader * impl_from_BaseFilter(BaseFilter *iface)
static ULONG WINAPI AMFilterMiscFlags_Release(IAMFilterMiscFlags *iface)
static HRESULT WINAPI FileSource_QueryInterface(IFileSourceFilter *iface, REFIID riid, LPVOID *ppv)
static ULONG WINAPI FileAsyncReader_Release(IAsyncReader *iface)
struct AsyncReader AsyncReader
static const IPinVtbl FileAsyncReaderPin_Vtbl
static HRESULT WINAPI FileAsyncReader_QueryInterface(IAsyncReader *iface, REFIID riid, LPVOID *ppv)
static const WCHAR wszOutputPinName[]
static HRESULT WINAPI FileAsyncReader_SyncRead(IAsyncReader *iface, LONGLONG llPosition, LONG lLength, BYTE *pBuffer)
static HRESULT process_extensions(HKEY hkeyExtensions, LPCOLESTR pszFileName, GUID *majorType, GUID *minorType, GUID *sourceFilter)
static HRESULT WINAPI FileAsyncReader_Length(IAsyncReader *iface, LONGLONG *pTotal, LONGLONG *pAvailable)
static HRESULT WINAPI FileAsyncReaderPin_DecideBufferSize(BaseOutputPin *iface, IMemAllocator *pAlloc, ALLOCATOR_PROPERTIES *ppropInputRequest)
static HRESULT WINAPI FileAsyncReader_BeginFlush(IAsyncReader *iface)
static HRESULT WINAPI FileAsyncReader_WaitForNext(IAsyncReader *iface, DWORD dwTimeout, IMediaSample **ppSample, DWORD_PTR *pdwUser)
HRESULT AsyncReader_create(IUnknown *pUnkOuter, LPVOID *ppv)
static const WCHAR mediatype_name[]
static HRESULT WINAPI AsyncReader_QueryInterface(IBaseFilter *iface, REFIID riid, LPVOID *ppv)
static FileAsyncReader * impl_from_BasePin(BasePin *iface)
static IPin *WINAPI AsyncReader_GetPin(BaseFilter *iface, int pos)
static const BaseFilterFuncTable BaseFuncTable
static unsigned char byte_from_hex_char(WCHAR wHex)
static HRESULT WINAPI FileAsyncReader_EndFlush(IAsyncReader *iface)
static BaseOutputPin * impl_BaseOutputPin_from_BasePin(BasePin *iface)
static AsyncReader * impl_from_IBaseFilter(IBaseFilter *iface)
static HRESULT WINAPI FileAsyncReaderPin_GetMediaType(BasePin *iface, int iPosition, AM_MEDIA_TYPE *pmt)
static LONG WINAPI AsyncReader_GetPinCount(BaseFilter *iface)
static HRESULT WINAPI AMFilterMiscFlags_QueryInterface(IAMFilterMiscFlags *iface, REFIID riid, void **ppv)
static HRESULT WINAPI AsyncReader_Pause(IBaseFilter *iface)
static HRESULT WINAPI AsyncReader_Run(IBaseFilter *iface, REFERENCE_TIME tStart)
static HRESULT WINAPI FileSource_Load(IFileSourceFilter *iface, LPCOLESTR pszFileName, const AM_MEDIA_TYPE *pmt)
static HRESULT WINAPI FileAsyncReader_RequestAllocator(IAsyncReader *iface, IMemAllocator *pPreferred, ALLOCATOR_PROPERTIES *pProps, IMemAllocator **ppActual)
static ULONG WINAPI AMFilterMiscFlags_GetMiscFlags(IAMFilterMiscFlags *iface)
static HRESULT WINAPI FileAsyncReaderPin_CheckMediaType(BasePin *pin, const AM_MEDIA_TYPE *pmt)
static FileAsyncReader * impl_from_BaseOutputPin(BaseOutputPin *iface)
static FileAsyncReader * impl_from_IPin(IPin *iface)
static ULONG WINAPI AMFilterMiscFlags_AddRef(IAMFilterMiscFlags *iface)
static HRESULT WINAPI FileAsyncReader_SyncReadAligned(IAsyncReader *iface, IMediaSample *pSample)
static HRESULT WINAPI AsyncReader_Stop(IBaseFilter *iface)
static ULONG WINAPI FileAsyncReaderPin_Release(IPin *iface)
static ULONG WINAPI FileAsyncReader_AddRef(IAsyncReader *iface)
static FileAsyncReader * impl_from_IAsyncReader(IAsyncReader *iface)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
BOOL WINAPI GetOverlappedResult(IN HANDLE hFile, IN LPOVERLAPPED lpOverlapped, OUT LPDWORD lpNumberOfBytesTransferred, IN BOOL bWait)
_In_opt_ PVOID _Out_ BOOLEAN * Stop
#define FILE_FLAG_OVERLAPPED
static void FreeMediaType(AM_MEDIA_TYPE *pMediaType)
static HRESULT CopyMediaType(AM_MEDIA_TYPE *pDest, const AM_MEDIA_TYPE *pSrc)
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
#define MEDIATIME_FROM_BYTES(x)
#define BYTES_FROM_MEDIATIME(time)
HRESULT WINAPI BasePinImpl_ConnectionMediaType(IPin *iface, AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseFilterImpl_SetSyncSource(IBaseFilter *iface, IReferenceClock *pClock)
HRESULT WINAPI BasePinImpl_QueryInternalConnections(IPin *iface, IPin **apPin, ULONG *cPin)
HRESULT WINAPI BaseOutputPinImpl_EndFlush(IPin *iface)
HRESULT WINAPI BasePinImpl_ConnectedTo(IPin *iface, IPin **ppPin)
HRESULT WINAPI BasePinImpl_NewSegment(IPin *iface, REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
HRESULT WINAPI BaseFilterImpl_GetClassID(IBaseFilter *iface, CLSID *pClsid)
HRESULT WINAPI BaseFilterImpl_QueryFilterInfo(IBaseFilter *iface, FILTER_INFO *pInfo)
HRESULT WINAPI BasePinImpl_QueryId(IPin *iface, LPWSTR *Id)
HRESULT WINAPI BasePinImpl_QueryPinInfo(IPin *iface, PIN_INFO *pInfo)
HRESULT WINAPI BaseOutputPinImpl_EndOfStream(IPin *iface)
ULONG WINAPI BaseFilterImpl_AddRef(IBaseFilter *iface)
HRESULT WINAPI BaseFilter_Destroy(BaseFilter *This)
HRESULT WINAPI BaseOutputPinImpl_BeginFlush(IPin *iface)
HRESULT WINAPI BaseOutputPinImpl_DecideAllocator(BaseOutputPin *This, IMemInputPin *pPin, IMemAllocator **pAlloc)
HRESULT WINAPI BaseOutputPin_Destroy(BaseOutputPin *This)
HRESULT WINAPI BaseFilterImpl_GetState(IBaseFilter *iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState)
HRESULT WINAPI BaseOutputPin_Construct(const IPinVtbl *OutputPin_Vtbl, LONG outputpin_size, const PIN_INFO *pPinInfo, const BaseOutputPinFuncTable *pBaseOutputFuncsTable, LPCRITICAL_SECTION pCritSec, IPin **ppPin)
HRESULT WINAPI BasePinImpl_EnumMediaTypes(IPin *iface, IEnumMediaTypes **ppEnum)
HRESULT WINAPI BaseFilterImpl_JoinFilterGraph(IBaseFilter *iface, IFilterGraph *pGraph, LPCWSTR pName)
LONG WINAPI BasePinImpl_GetMediaTypeVersion(BasePin *This)
HRESULT WINAPI BaseOutputPinImpl_BreakConnect(BaseOutputPin *This)
HRESULT WINAPI BaseOutputPinImpl_Connect(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseFilterImpl_QueryVendorInfo(IBaseFilter *iface, LPWSTR *pVendorInfo)
HRESULT WINAPI BaseFilterImpl_GetSyncSource(IBaseFilter *iface, IReferenceClock **ppClock)
HRESULT WINAPI BasePinImpl_Disconnect(IPin *iface)
HRESULT WINAPI BasePinImpl_QueryDirection(IPin *iface, PIN_DIRECTION *pPinDir)
HRESULT WINAPI BasePinImpl_QueryAccept(IPin *iface, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseOutputPinImpl_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
VOID WINAPI BaseFilterImpl_IncrementPinVersion(BaseFilter *This)
HRESULT WINAPI BaseFilterImpl_EnumPins(IBaseFilter *iface, IEnumPins **ppEnum)
HRESULT WINAPI BaseFilter_Init(BaseFilter *This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable *pBaseFuncsTable)
ULONG WINAPI BasePinImpl_AddRef(IPin *iface)
IFileSourceFilter IFileSourceFilter_iface
IAMFilterMiscFlags IAMFilterMiscFlags_iface
IAsyncReader IAsyncReader_iface
ALLOCATOR_PROPERTIES allocProps
DATAREQUEST * sample_list
DWORD_PTR Spare[8/sizeof(DWORD_PTR)]
PCRITICAL_SECTION_DEBUG DebugInfo
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent(IN HANDLE hEvent)
DWORD WINAPI WaitForMultipleObjectsEx(IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds, IN BOOL bAlertable)
#define CONTAINING_RECORD(address, type, field)
#define MEDIASUBTYPE_NULL
WORD WORD PSZ PSZ pszFileName
#define VFW_E_WRONG_STATE
#define VFW_S_NO_MORE_ITEMS
DWORD WINAPI GetLastError(void)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD dwTimeout
#define CLASS_E_NOAGGREGATION
#define HRESULT_FROM_WIN32(x)
#define HKEY_CLASSES_ROOT