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);
const GUID IID_IBaseFilter
#define VFW_S_NO_MORE_ITEMS
static HRESULT WINAPI AsyncReader_Pause(IBaseFilter *iface)
HRESULT WINAPI BaseFilterImpl_SetSyncSource(IBaseFilter *iface, IReferenceClock *pClock)
#define HRESULT_FROM_WIN32(x)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
HRESULT AsyncReader_create(IUnknown *pUnkOuter, LPVOID *ppv)
static IPin *WINAPI AsyncReader_GetPin(BaseFilter *iface, int pos)
static HRESULT WINAPI FileAsyncReaderPin_AttemptConnection(BasePin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
static HRESULT WINAPI FileAsyncReader_Length(IAsyncReader *iface, LONGLONG *pTotal, LONGLONG *pAvailable)
BOOL WINAPI GetOverlappedResult(IN HANDLE hFile, IN LPOVERLAPPED lpOverlapped, OUT LPDWORD lpNumberOfBytesTransferred, IN BOOL bWait)
static ULONG WINAPI AMFilterMiscFlags_Release(IAMFilterMiscFlags *iface)
static AsyncReader * impl_from_IAMFilterMiscFlags(IAMFilterMiscFlags *iface)
WINE_UNICODE_INLINE WCHAR * strchrW(const WCHAR *str, WCHAR ch)
const char * qzdebugstr_guid(const GUID *id)
HRESULT WINAPI BaseFilterImpl_GetState(IBaseFilter *iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState)
static ULONG WINAPI FileSource_AddRef(IFileSourceFilter *iface)
static HRESULT WINAPI FileAsyncReaderPin_GetMediaType(BasePin *iface, int iPosition, AM_MEDIA_TYPE *pmt)
static HRESULT FileAsyncReader_Construct(HANDLE hFile, IBaseFilter *pBaseFilter, LPCRITICAL_SECTION pCritSec, IPin **ppPin)
VOID WINAPI BaseFilterImpl_IncrementPinVersion(BaseFilter *This)
#define INVALID_HANDLE_VALUE
static ULONG WINAPI FileAsyncReader_AddRef(IAsyncReader *iface)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
DWORD WINAPI GetLastError(VOID)
HRESULT WINAPI BaseOutputPinImpl_EndOfStream(IPin *iface)
GLint GLint GLint GLint GLint x
static AsyncReader * impl_from_BaseFilter(BaseFilter *iface)
static const IAsyncReaderVtbl FileAsyncReader_Vtbl
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static HRESULT process_extensions(HKEY hkeyExtensions, LPCOLESTR pszFileName, GUID *majorType, GUID *minorType, GUID *sourceFilter)
static ULONG WINAPI FileSource_Release(IFileSourceFilter *iface)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
HRESULT WINAPI BaseOutputPinImpl_BreakConnect(BaseOutputPin *This)
_In_ PVOID _Out_ BOOLEAN * Stop
static HRESULT WINAPI FileAsyncReader_RequestAllocator(IAsyncReader *iface, IMemAllocator *pPreferred, ALLOCATOR_PROPERTIES *pProps, IMemAllocator **ppActual)
HRESULT WINAPI BaseOutputPin_Destroy(BaseOutputPin *This)
static ULONG WINAPI AMFilterMiscFlags_GetMiscFlags(IAMFilterMiscFlags *iface)
IAsyncReader IAsyncReader_iface
static HRESULT WINAPI FileSource_GetCurFile(IFileSourceFilter *iface, LPOLESTR *ppszFileName, AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseFilterImpl_GetClassID(IBaseFilter *iface, CLSID *pClsid)
static void FreeMediaType(AM_MEDIA_TYPE *pMediaType)
HRESULT WINAPI BaseOutputPinImpl_EndFlush(IPin *iface)
WORD WORD PSZ PSZ pszFileName
HRESULT WINAPI BasePinImpl_Disconnect(IPin *iface)
HRESULT WINAPI BasePinImpl_QueryAccept(IPin *iface, const AM_MEDIA_TYPE *pmt)
static const WCHAR subtype_name[]
static HRESULT WINAPI FileAsyncReader_Request(IAsyncReader *iface, IMediaSample *pSample, DWORD_PTR dwUser)
BOOL WINAPI CancelIo(IN HANDLE hFile)
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)
struct FileAsyncReader FileAsyncReader
static HRESULT WINAPI AsyncReader_Run(IBaseFilter *iface, REFERENCE_TIME tStart)
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
static const WCHAR mediatype_name[]
HRESULT WINAPI BasePinImpl_QueryDirection(IPin *iface, PIN_DIRECTION *pPinDir)
HRESULT WINAPI BasePinImpl_ConnectedTo(IPin *iface, IPin **ppPin)
HRESULT WINAPI BasePinImpl_EnumMediaTypes(IPin *iface, IEnumMediaTypes **ppEnum)
DATAREQUEST * sample_list
static ULONG WINAPI FileAsyncReaderPin_Release(IPin *iface)
static HRESULT WINAPI FileSource_Load(IFileSourceFilter *iface, LPCOLESTR pszFileName, const AM_MEDIA_TYPE *pmt)
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
static const WCHAR wszOutputPinName[]
static LONG WINAPI AsyncReader_GetPinCount(BaseFilter *iface)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
HRESULT WINAPI BaseOutputPinImpl_DecideAllocator(BaseOutputPin *This, IMemInputPin *pPin, IMemAllocator **pAlloc)
static const IBaseFilterVtbl AsyncReader_Vtbl
static const BaseOutputPinFuncTable output_BaseOutputFuncTable
static HRESULT WINAPI FileAsyncReader_BeginFlush(IAsyncReader *iface)
HRESULT WINAPI BaseFilter_Destroy(BaseFilter *This)
static HRESULT WINAPI AMFilterMiscFlags_QueryInterface(IAMFilterMiscFlags *iface, REFIID riid, void **ppv)
HRESULT WINAPI BaseFilterImpl_QueryVendorInfo(IBaseFilter *iface, LPWSTR *pVendorInfo)
HRESULT WINAPI BasePinImpl_NewSegment(IPin *iface, REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
HRESULT WINAPI BaseOutputPinImpl_BeginFlush(IPin *iface)
static DWORD DWORD * dwLength
static FileAsyncReader * impl_from_BasePin(BasePin *iface)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
DWORD WINAPI WaitForMultipleObjectsEx(IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds, IN BOOL bAlertable)
static FileAsyncReader * impl_from_IAsyncReader(IAsyncReader *iface)
static unsigned char byte_from_hex_char(WCHAR wHex)
static HRESULT WINAPI FileAsyncReaderPin_CheckMediaType(BasePin *pin, const AM_MEDIA_TYPE *pmt)
static HRESULT WINAPI FileSource_QueryInterface(IFileSourceFilter *iface, REFIID riid, LPVOID *ppv)
WINE_UNICODE_INLINE WCHAR tolowerW(WCHAR ch)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
HRESULT GetClassMediaFile(IAsyncReader *pReader, LPCOLESTR pszFileName, GUID *majorType, GUID *minorType, GUID *sourceFilter)
static FileAsyncReader * impl_from_IPin(IPin *iface)
static HRESULT WINAPI AsyncReader_FindPin(IBaseFilter *iface, LPCWSTR Id, IPin **ppPin)
#define MEDIASUBTYPE_NULL
static HRESULT CopyMediaType(AM_MEDIA_TYPE *pDest, const AM_MEDIA_TYPE *pSrc)
PCRITICAL_SECTION_DEBUG DebugInfo
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)
#define BYTES_FROM_MEDIATIME(time)
static HRESULT WINAPI FileAsyncReader_WaitForNext(IAsyncReader *iface, DWORD dwTimeout, IMediaSample **ppSample, DWORD_PTR *pdwUser)
WINE_UNICODE_INLINE int isxdigitW(WCHAR wc)
HRESULT WINAPI BasePinImpl_QueryPinInfo(IPin *iface, PIN_INFO *pInfo)
static AsyncReader * impl_from_IFileSourceFilter(IFileSourceFilter *iface)
static HRESULT WINAPI AsyncReader_QueryInterface(IBaseFilter *iface, REFIID riid, LPVOID *ppv)
#define InterlockedDecrement
HRESULT WINAPI BasePinImpl_QueryId(IPin *iface, LPWSTR *Id)
static ULONG WINAPI FileAsyncReader_Release(IAsyncReader *iface)
HRESULT WINAPI BasePinImpl_QueryInternalConnections(IPin *iface, IPin **apPin, ULONG *cPin)
#define CLASS_E_NOAGGREGATION
HRESULT WINAPI BaseFilterImpl_EnumPins(IBaseFilter *iface, IEnumPins **ppEnum)
static const WCHAR source_filter_name[]
IFileSourceFilter IFileSourceFilter_iface
HRESULT WINAPI BaseOutputPinImpl_Connect(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
static ULONG WINAPI AMFilterMiscFlags_AddRef(IAMFilterMiscFlags *iface)
static HRESULT WINAPI FileAsyncReader_EndFlush(IAsyncReader *iface)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD dwTimeout
static const BaseFilterFuncTable BaseFuncTable
ALLOCATOR_PROPERTIES allocProps
HRESULT WINAPI BaseOutputPinImpl_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
static FileAsyncReader * impl_from_BaseOutputPin(BaseOutputPin *iface)
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
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
IAMFilterMiscFlags IAMFilterMiscFlags_iface
WINE_DEFAULT_DEBUG_CHANNEL(quartz)
const GUID IID_IAsyncReader
#define ReadFile(a, b, c, d, e)
HRESULT WINAPI BaseFilterImpl_QueryFilterInfo(IBaseFilter *iface, FILTER_INFO *pInfo)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
static HRESULT WINAPI FileAsyncReader_SyncReadAligned(IAsyncReader *iface, IMediaSample *pSample)
static HRESULT WINAPI FileAsyncReaderPin_DecideBufferSize(BaseOutputPin *iface, IMemAllocator *pAlloc, ALLOCATOR_PROPERTIES *ppropInputRequest)
ULONG WINAPI BaseFilterImpl_AddRef(IBaseFilter *iface)
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent(IN HANDLE hEvent)
HRESULT WINAPI BaseFilterImpl_GetSyncSource(IBaseFilter *iface, IReferenceClock **ppClock)
static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl
static HRESULT process_pattern_string(LPCWSTR wszPatternString, IAsyncReader *pReader)
WINE_UNICODE_INLINE int strcmpW(const WCHAR *str1, const WCHAR *str2)
HRESULT WINAPI BaseFilterImpl_JoinFilterGraph(IBaseFilter *iface, IFilterGraph *pGraph, LPCWSTR pName)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
HRESULT WINAPI BaseOutputPin_Construct(const IPinVtbl *OutputPin_Vtbl, LONG outputpin_size, const PIN_INFO *pPinInfo, const BaseOutputPinFuncTable *pBaseOutputFuncsTable, LPCRITICAL_SECTION pCritSec, IPin **ppPin)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
static HRESULT WINAPI FileAsyncReader_SyncRead(IAsyncReader *iface, LONGLONG llPosition, LONG lLength, BYTE *pBuffer)
struct AsyncReader AsyncReader
HRESULT WINAPI BaseFilter_Init(BaseFilter *This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable *pBaseFuncsTable)
static ULONG WINAPI AsyncReader_Release(IBaseFilter *iface)
static const IPinVtbl FileAsyncReaderPin_Vtbl
#define HKEY_CLASSES_ROOT
ULONG WINAPI BasePinImpl_AddRef(IPin *iface)
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)
static BaseOutputPin * impl_BaseOutputPin_from_BasePin(BasePin *iface)
#define MEDIATIME_FROM_BYTES(x)
static HRESULT WINAPI AsyncReader_Stop(IBaseFilter *iface)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define VFW_E_WRONG_STATE
HRESULT WINAPI BasePinImpl_ConnectionMediaType(IPin *iface, AM_MEDIA_TYPE *pmt)
static HRESULT WINAPI FileAsyncReaderPin_QueryInterface(IPin *iface, REFIID riid, LPVOID *ppv)
#define FILE_FLAG_OVERLAPPED
static HRESULT WINAPI FileAsyncReader_QueryInterface(IAsyncReader *iface, REFIID riid, LPVOID *ppv)
LONG WINAPI BasePinImpl_GetMediaTypeVersion(BasePin *This)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
#define HeapFree(x, y, z)
#define RegCloseKey(hKey)
#define IsEqualIID(riid1, riid2)
static AsyncReader * impl_from_IBaseFilter(IBaseFilter *iface)
struct DATAREQUEST DATAREQUEST
DWORD_PTR Spare[8/sizeof(DWORD_PTR)]
static const IFileSourceFilterVtbl FileSource_Vtbl