39 && !
memcmp(
a->pbFormat,
b->pbFormat,
a->cbFormat);
72 hr = IBaseFilter_QueryInterface(
filter, &IID_IFileSourceFilter, (
void **)&filesource);
76 IFileSourceFilter_Release(filesource);
83 return IUnknown_Release(
unknown);
86#define check_interface(a, b, c) check_interface_(__LINE__, a, b, c)
95 hr = IUnknown_QueryInterface(iface, iid, (
void **)&unk);
98 IUnknown_Release(unk);
124 IBaseFilter_FindPin(
filter,
L"Output", &pin);
136 IBaseFilter_Release(
filter);
191 ok(unk != &
test_outer,
"Returned IUnknown should not be outer IUnknown.\n");
193 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
195 ref = IUnknown_AddRef(unk);
196 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
199 ref = IUnknown_Release(unk);
200 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
205 ok(unk2 == unk,
"Got unexpected IUnknown %p.\n", unk2);
206 IUnknown_Release(unk2);
213 ok(unk2 == (
IUnknown *)0xdeadbeef,
"Got unexpected IUnknown %p.\n", unk2);
217 ok(filter2 == (
IBaseFilter *)0xdeadbeef,
"Got unexpected IBaseFilter %p.\n", filter2);
219 hr = IUnknown_QueryInterface(unk, &
test_iid, (
void **)&unk2);
221 ok(!unk2,
"Got unexpected IUnknown %p.\n", unk2);
225 ok(unk2 == (
IUnknown *)0xdeadbeef,
"Got unexpected IUnknown %p.\n", unk2);
227 IBaseFilter_Release(
filter);
228 ref = IUnknown_Release(unk);
229 ok(!
ref,
"Got unexpected refcount %ld.\n",
ref);
246 "\x52\x49\x46\x46xxxx\x41\x56\x49\x20",
252 "\x00\x00\x01\xBA\x21\x00\x01\x00\x01\x80\x00\x01\x00\x00\x01\xBB",
254 &MEDIASUBTYPE_MPEG1System,
260 &MEDIASUBTYPE_MPEG1Video,
266 &MEDIASUBTYPE_MPEG1Audio,
270 "\x00\x00\x01\xBA\x40",
272 &MEDIASUBTYPE_MPEG2_PROGRAM,
276 "\x52\x49\x46\x46xxxx\x57\x41\x56\x45",
315 IBaseFilter_QueryInterface(
filter, &IID_IFileSourceFilter, (
void **)&filesource);
317 olepath = (
void *)0xdeadbeef;
318 hr = IFileSourceFilter_GetCurFile(filesource, &olepath,
NULL);
322 hr = IFileSourceFilter_Load(filesource,
NULL,
NULL);
325 hr = IFileSourceFilter_Load(filesource,
path,
NULL);
328 hr = IFileSourceFilter_GetCurFile(filesource,
NULL, &mt);
332 hr = IFileSourceFilter_GetCurFile(filesource, &olepath,
NULL);
337 memset(&file_mt, 0x11,
sizeof(file_mt));
338 hr = IFileSourceFilter_GetCurFile(filesource, &olepath, &file_mt);
340 ok(!
wcscmp(olepath,
path),
"Expected path %s, got %s.\n",
342 ok(
IsEqualGUID(&file_mt.majortype, &MEDIATYPE_Stream),
"Got major type %s.\n",
348 ok(file_mt.bFixedSizeSamples ==
TRUE,
"Got fixed size %d.\n", file_mt.bFixedSizeSamples);
349 ok(file_mt.bTemporalCompression ==
FALSE,
"Got temporal compression %d.\n",
350 file_mt.bTemporalCompression);
351 ok(file_mt.lSampleSize == 1,
"Got sample size %lu.\n", file_mt.lSampleSize);
354 ok(!file_mt.pUnk,
"Got pUnk %p.\n", file_mt.pUnk);
355 ok(!file_mt.cbFormat,
"Got format size %#lx.\n", file_mt.cbFormat);
356 ok(!file_mt.pbFormat,
"Got format %p.\n", file_mt.pbFormat);
359 hr = IBaseFilter_FindPin(
filter,
L"Output", &pin);
362 hr = IPin_EnumMediaTypes(pin, &enum_mt);
365 hr = IEnumMediaTypes_Next(enum_mt, 1, &pmt,
NULL);
367 ok(!
memcmp(pmt, &file_mt,
sizeof(*pmt)),
"Media types did not match.\n");
370 hr = IEnumMediaTypes_Next(enum_mt, 1, &pmt,
NULL);
374 ok(!
memcmp(pmt, &mt,
sizeof(*pmt)),
"Media types did not match.\n");
377 hr = IEnumMediaTypes_Next(enum_mt, 1, &pmt,
NULL);
380 IEnumMediaTypes_Release(enum_mt);
383 hr = IPin_QueryAccept(pin, &mt);
386 mt.bFixedSizeSamples =
FALSE;
387 mt.bTemporalCompression =
TRUE;
388 mt.lSampleSize = 123;
389 mt.formattype = FORMAT_VideoInfo;
390 mt.subtype = MEDIASUBTYPE_RGB32;
391 hr = IPin_QueryAccept(pin, &mt);
394 mt.majortype = MEDIATYPE_Video;
395 hr = IPin_QueryAccept(pin, &mt);
397 mt.majortype = MEDIATYPE_Stream;
402 hr = IPin_QueryAccept(pin, &mt);
407 IFileSourceFilter_Release(filesource);
409 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
417 hr = IBaseFilter_QueryInterface(
filter, &IID_IFileSourceFilter, (
void **)&filesource);
420 mt.majortype = MEDIATYPE_Video;
421 mt.subtype = MEDIASUBTYPE_RGB8;
422 mt.bFixedSizeSamples =
FALSE;
423 mt.bTemporalCompression =
TRUE;
424 mt.lSampleSize = 123;
425 mt.formattype = FORMAT_None;
430 hr = IFileSourceFilter_Load(filesource,
filename, &mt);
433 hr = IFileSourceFilter_GetCurFile(filesource, &olepath, &file_mt);
435 ok(!
memcmp(&file_mt, &mt,
sizeof(mt)),
"Media types did not match.\n");
438 hr = IBaseFilter_FindPin(
filter,
L"Output", &pin);
441 hr = IPin_EnumMediaTypes(pin, &enum_mt);
444 hr = IEnumMediaTypes_Next(enum_mt, 1, &pmt,
NULL);
446 ok(!
memcmp(pmt, &file_mt,
sizeof(*pmt)),
"Media types did not match.\n");
449 hr = IEnumMediaTypes_Next(enum_mt, 1, &pmt,
NULL);
451 ok(
IsEqualGUID(&pmt->majortype, &MEDIATYPE_Stream),
"Got major type %s.\n",
455 ok(pmt->bFixedSizeSamples ==
TRUE,
"Got fixed size %d.\n", pmt->bFixedSizeSamples);
456 ok(!pmt->bTemporalCompression,
"Got temporal compression %d.\n", pmt->bTemporalCompression);
457 ok(pmt->lSampleSize == 1,
"Got sample size %lu.\n", pmt->lSampleSize);
460 ok(!pmt->pUnk,
"Got pUnk %p.\n", pmt->pUnk);
461 ok(!pmt->cbFormat,
"Got format size %#lx.\n", pmt->cbFormat);
462 ok(!pmt->pbFormat,
"Got format %p.\n", pmt->pbFormat);
464 hr = IPin_QueryAccept(pin, pmt);
468 hr = IEnumMediaTypes_Next(enum_mt, 1, &pmt,
NULL);
471 IEnumMediaTypes_Release(enum_mt);
473 hr = IPin_QueryAccept(pin, &mt);
476 mt.bFixedSizeSamples =
TRUE;
477 mt.bTemporalCompression =
FALSE;
478 mt.lSampleSize = 456;
479 mt.formattype = FORMAT_VideoInfo;
480 hr = IPin_QueryAccept(pin, &mt);
483 mt.majortype = MEDIATYPE_Stream;
484 hr = IPin_QueryAccept(pin, &mt);
486 mt.majortype = MEDIATYPE_Video;
489 hr = IPin_QueryAccept(pin, &mt);
493 IFileSourceFilter_Release(filesource);
495 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
512 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
517 hr = IBaseFilter_EnumPins(
filter, &enum1);
521 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
523 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
528 hr = IEnumPins_Next(enum1, 1, pins,
NULL);
531 hr = IEnumPins_Skip(enum1, 1);
536 hr = IEnumPins_Next(enum1, 1, pins,
NULL);
539 hr = IEnumPins_Reset(enum1);
542 hr = IEnumPins_Next(enum1, 1, pins,
NULL);
545 ok(
ref == 3,
"Got unexpected refcount %ld.\n",
ref);
547 ok(
ref == 3,
"Got unexpected refcount %ld.\n",
ref);
549 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
550 IPin_Release(pins[0]);
552 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
554 hr = IEnumPins_Next(enum1, 1, pins,
NULL);
557 hr = IEnumPins_Reset(enum1);
560 hr = IEnumPins_Next(enum1, 1, pins, &
count);
563 IPin_Release(pins[0]);
565 hr = IEnumPins_Next(enum1, 1, pins, &
count);
569 hr = IEnumPins_Reset(enum1);
572 hr = IEnumPins_Next(enum1, 2, pins,
NULL);
575 hr = IEnumPins_Next(enum1, 2, pins, &
count);
578 IPin_Release(pins[0]);
580 hr = IEnumPins_Reset(enum1);
583 hr = IEnumPins_Clone(enum1, &enum2);
586 hr = IEnumPins_Skip(enum1, 2);
589 hr = IEnumPins_Skip(enum1, 1);
592 hr = IEnumPins_Skip(enum1, 1);
595 hr = IEnumPins_Next(enum1, 1, pins,
NULL);
598 hr = IEnumPins_Next(enum2, 1, pins,
NULL);
600 IPin_Release(pins[0]);
602 IEnumPins_Release(enum2);
603 IEnumPins_Release(enum1);
605 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
620 hr = IBaseFilter_FindPin(
filter,
L"Output", &pin);
625 hr = IBaseFilter_FindPin(
filter,
L"Output", &pin);
628 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
630 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
632 hr = IBaseFilter_EnumPins(
filter, &enumpins);
635 hr = IEnumPins_Next(enumpins, 1, &pin2,
NULL);
637 ok(pin == pin2,
"Expected pin %p, got %p.\n", pin, pin2);
641 IEnumPins_Release(enumpins);
643 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
662 hr = IBaseFilter_FindPin(
filter,
L"Output", &pin);
665 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
667 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
669 hr = IPin_QueryPinInfo(pin, &
info);
675 ok(
ref == 3,
"Got unexpected refcount %ld.\n",
ref);
677 ok(
ref == 3,
"Got unexpected refcount %ld.\n",
ref);
678 IBaseFilter_Release(
info.pFilter);
680 hr = IPin_QueryDirection(pin, &
dir);
684 hr = IPin_QueryId(pin, &
id);
691 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
750 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
766 end_time = 512 * (
LONGLONG)10000000;
767 hr = IMediaSample_SetTime(
sample, &start_time, &end_time);
773 len = IMediaSample_GetActualDataLength(
sample);
774 ok(
len == 512,
"Got length %ld.\n",
len);
776 for (
i = 0;
i < 512;
i++)
777 ok(
data[
i] ==
i % 111,
"Got wrong byte %02x at %u.\n",
data[
i],
i);
779 start_time = 512 * (
LONGLONG)10000000;
780 end_time = 1024 * (
LONGLONG)10000000;
781 hr = IMediaSample_SetTime(
sample, &start_time, &end_time);
787 len = IMediaSample_GetActualDataLength(
sample);
788 ok(
len == 88,
"Got length %ld.\n",
len);
790 for (
i = 0;
i < 88;
i++)
791 ok(
data[
i] == (512 +
i) % 111,
"Got wrong byte %02x at %u.\n",
data[
i],
i);
793 start_time = 1024 * (
LONGLONG)10000000;
794 end_time = 1536 * (
LONGLONG)10000000;
795 hr = IMediaSample_SetTime(
sample, &start_time, &end_time);
801 len = IMediaSample_GetActualDataLength(
sample);
802 ok(
len == 0,
"Got length %ld.\n",
len);
804 IMediaSample_Release(
sample);
836 IMediaSample_GetPointer(sample2, &
data2);
842 end_time = 512 * (
LONGLONG)10000000;
843 hr = IMediaSample_SetTime(
sample, &start_time, &end_time);
849 hr = IAsyncReader_WaitForNext(
reader, 1000, &ret_sample, &
cookie);
851 ok(ret_sample ==
sample,
"Expected sample %p, got %p.\n",
sample, ret_sample);
854 len = IMediaSample_GetActualDataLength(
sample);
855 ok(
len == 512,
"Got length %ld.\n",
len);
857 for (
i = 0;
i < 512;
i++)
858 ok(
data[
i] ==
i % 111,
"Got wrong byte %02x at %u.\n",
data[
i],
i);
860 start_time = 1024 * (
LONGLONG)10000000;
861 end_time = 1536 * (
LONGLONG)10000000;
862 hr = IMediaSample_SetTime(
sample, &start_time, &end_time);
869 end_time = 512 * (
LONGLONG)10000000;
870 hr = IMediaSample_SetTime(
sample, &start_time, &end_time);
876 start_time = 512 * (
LONGLONG)10000000;
877 end_time = 1024 * (
LONGLONG)10000000;
878 hr = IMediaSample_SetTime(sample2, &start_time, &end_time);
881 hr = IAsyncReader_Request(
reader, sample2, 456);
884 hr = IAsyncReader_WaitForNext(
reader, 1000, &ret_sample, &
cookie);
888 ok(ret_sample ==
sample,
"Expected sample %p, got %p.\n",
sample, ret_sample);
890 hr = IAsyncReader_WaitForNext(
reader, 1000, &ret_sample, &
cookie);
892 ok(ret_sample == sample2,
"Expected sample %p, got %p.\n", sample2, ret_sample);
898 ok(ret_sample == sample2,
"Expected sample %p, got %p.\n", sample2, ret_sample);
900 hr = IAsyncReader_WaitForNext(
reader, 1000, &ret_sample, &
cookie);
902 ok(ret_sample ==
sample,
"Expected sample %p, got %p.\n",
sample, ret_sample);
906 for (
i = 0;
i < 512;
i++)
907 ok(
data[
i] ==
i % 111,
"Got wrong byte %02x at %u.\n",
data[
i],
i);
909 for (
i = 0;
i < 88;
i++)
910 ok(
data2[
i] == (512 +
i) % 111,
"Got wrong byte %02x at %u.\n",
data2[
i],
i);
918 hr = IAsyncReader_WaitForNext(
reader, 1000, &ret_sample, &
cookie);
920 ok(ret_sample ==
sample,
"Samples didn't match.\n");
923 IMediaSample_Release(
sample);
924 IMediaSample_Release(sample2);
951 end_time = 512 * (
LONGLONG)10000000;
952 hr = IMediaSample_SetTime(
sample, &start_time, &end_time);
955 hr = IAsyncReader_BeginFlush(
reader);
960 for (
i = 0;
i < 20;
i++)
964 end_time = 512 * (
LONGLONG)10000000;
965 hr = IMediaSample_SetTime(
sample, &start_time, &end_time);
970 for (
i = 0;
i < 512;
i++)
971 ok(
data[
i] ==
i % 111,
"Got wrong byte %02x at %u.\n",
data[
i],
i);
983 end_time = 512 * (
LONGLONG)10000000;
987 hr = IAsyncReader_WaitForNext(
reader, 1000, &ret_sample, &
cookie);
989 ok(ret_sample ==
sample,
"Expected sample %p, got %p.\n",
sample, ret_sample);
992 for (
i = 0;
i < 512;
i++)
993 ok(
data[
i] ==
i % 111,
"Got wrong byte %02x at %u.\n",
data[
i],
i);
998 hr = IAsyncReader_BeginFlush(
reader);
1003 hr = IAsyncReader_EndFlush(
reader);
1006 IMediaSample_Release(
sample);
1031 for (
i = 0;
i < 600;
i++)
1038 IBaseFilter_QueryInterface(
filter, &IID_IFileSourceFilter, (
void **)&filesource);
1040 IBaseFilter_FindPin(
filter,
L"Output", &pin);
1053 for (
i = 0;
i < 10;
i++)
1058 for (
i = 0;
i < 10;
i++)
1063 for (
i = 0;
i < 10;
i++)
1068 for (
i = 0;
i < 10;
i++)
1078 ret_props = req_props;
1081 ok(ret_props.cBuffers == 100,
"Got %ld buffers.\n", ret_props.cBuffers);
1082 ok(ret_props.cbBuffer == 1024,
"Got size %ld.\n", ret_props.cbBuffer);
1083 ok(ret_props.cbAlign == 512,
"Got alignment %ld.\n", ret_props.cbAlign);
1084 ok(ret_props.cbPrefix == 0,
"Got prefix %ld.\n", ret_props.cbPrefix);
1093 IAsyncReader_Release(
reader);
1095 IFileSourceFilter_Release(filesource);
1097 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1115 IBaseFilter_FindPin(
filter,
L"Output", &pin);
1117 hr = IPin_EnumMediaTypes(pin, &enum1);
1120 hr = IEnumMediaTypes_Next(enum1, 1, mts,
NULL);
1124 hr = IEnumMediaTypes_Next(enum1, 1, mts,
NULL);
1128 hr = IEnumMediaTypes_Next(enum1, 1, mts,
NULL);
1131 hr = IEnumMediaTypes_Reset(enum1);
1134 hr = IEnumMediaTypes_Next(enum1, 1, mts, &
count);
1139 hr = IEnumMediaTypes_Next(enum1, 1, mts, &
count);
1144 hr = IEnumMediaTypes_Next(enum1, 1, mts, &
count);
1148 hr = IEnumMediaTypes_Reset(enum1);
1151 hr = IEnumMediaTypes_Next(enum1, 2, mts, &
count);
1157 hr = IEnumMediaTypes_Next(enum1, 2, mts, &
count);
1161 hr = IEnumMediaTypes_Reset(enum1);
1164 hr = IEnumMediaTypes_Next(enum1, 3, mts, &
count);
1170 hr = IEnumMediaTypes_Reset(enum1);
1173 hr = IEnumMediaTypes_Clone(enum1, &enum2);
1176 hr = IEnumMediaTypes_Skip(enum1, 3);
1179 hr = IEnumMediaTypes_Skip(enum1, 1);
1182 hr = IEnumMediaTypes_Reset(enum1);
1185 hr = IEnumMediaTypes_Skip(enum1, 2);
1188 hr = IEnumMediaTypes_Skip(enum1, 1);
1191 hr = IEnumMediaTypes_Next(enum1, 1, mts,
NULL);
1194 hr = IEnumMediaTypes_Next(enum2, 1, mts,
NULL);
1198 IEnumMediaTypes_Release(enum1);
1199 IEnumMediaTypes_Release(enum2);
1203 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1266 IAsyncReader_Release(
filter->reader);
1289 .majortype = MEDIATYPE_Stream,
1290 .subtype = MEDIASUBTYPE_Avi,
1291 .formattype = FORMAT_None,
1309 &IID_IFilterGraph2, (
void **)&
graph);
1311 IFilterGraph2_AddFilter(
graph,
filter,
L"file source");
1312 IFilterGraph2_QueryInterface(
graph, &IID_IMediaControl, (
void **)&
control);
1316 IPin_EnumMediaTypes(
source, &enummt);
1317 IEnumMediaTypes_Next(enummt, 1, &source_mt,
NULL);
1318 IEnumMediaTypes_Release(enummt);
1320 peer = (
IPin *)0xdeadbeef;
1321 hr = IPin_ConnectedTo(
source, &peer);
1323 ok(!peer,
"Got peer %p.\n", peer);
1340 hr = IPin_ConnectedTo(
source, &peer);
1342 ok(peer == &
testsink.
pin.pin.IPin_iface,
"Got peer %p.\n", peer);
1364 req_mt.pbFormat = &my_format;
1365 req_mt.cbFormat =
sizeof(my_format);
1371 req_mt.pbFormat =
NULL;
1372 req_mt.cbFormat = 0;
1374 req_mt.majortype = MEDIATYPE_Video;
1377 req_mt.majortype = MEDIATYPE_Stream;
1379 req_mt.subtype = MEDIASUBTYPE_RGB8;
1388 req_mt.subtype = MEDIASUBTYPE_Avi;
1405 req_mt.formattype = FORMAT_None;
1417 req_mt.subtype = MEDIASUBTYPE_RGB8;
1428 req_mt.majortype = MEDIATYPE_Stream;
1429 req_mt.subtype = MEDIASUBTYPE_RGB8;
1440 req_mt.majortype = MEDIATYPE_Video;
1453 mt.majortype = MEDIATYPE_Video;
1454 mt.subtype = MEDIASUBTYPE_RGB8;
1455 mt.formattype = FORMAT_None;
1459 mt.majortype = MEDIATYPE_Stream;
1468 IMediaControl_Release(
control);
1469 ref = IFilterGraph2_Release(
graph);
1470 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1472 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1474 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
1493 ok(!
ref,
"Got outstanding refcount %ld.\n",
ref);
#define InterlockedIncrement
#define InterlockedDecrement
enum _PinDirection PIN_DIRECTION
const GUID IID_IKsPropertySet
const GUID IID_IBaseFilter
const GUID IID_IAsyncReader
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
void WINAPI CoTaskMemFree(void *ptr)
static WCHAR available[MAX_STRING_RESOURCE_LEN]
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
#define INVALID_HANDLE_VALUE
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI WriteFile(_In_ HANDLE hFile, _In_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD lpNumberOfBytesWritten, _Inout_opt_ LPOVERLAPPED lpOverlapped)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI GetTempPathW(IN DWORD count, OUT LPWSTR path)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
UINT WINAPI GetTempFileNameW(IN LPCWSTR lpPathName, IN LPCWSTR lpPrefixString, IN UINT uUnique, OUT LPWSTR lpTempFileName)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLboolean GLboolean GLboolean b
GLenum const GLfloat * params
GLuint GLsizei GLsizei * length
GLboolean GLboolean GLboolean GLboolean a
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
static struct test_info tests[]
static const WCHAR label[]
#define load_resource(a, b, c)
static const WCHAR pathW[]
static const struct strmbase_sink_ops testsink_pin_ops
static void testsink_init(struct testsink *filter)
static BOOL compare_media_types(const AM_MEDIA_TYPE *a, const AM_MEDIA_TYPE *b)
static void test_async_reader(void)
static const IUnknownVtbl outer_vtbl
static void test_aggregation(void)
static HRESULT testsink_connect(struct strmbase_sink *iface, IPin *peer, const AM_MEDIA_TYPE *mt)
static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOOL supported)
static ULONG WINAPI outer_AddRef(IUnknown *iface)
static HRESULT WINAPI outer_QueryInterface(IUnknown *iface, REFIID iid, void **out)
static DWORD CALLBACK request_thread(void *arg)
static ULONG get_refcount(void *iface)
static void test_pin_info(void)
static IUnknown test_outer
static void test_sync_read_aligned(IAsyncReader *reader, IMemAllocator *allocator)
static void testsink_destroy(struct strmbase_filter *iface)
static void test_find_pin(void)
static void test_enum_media_types(void)
static void test_interfaces(void)
static void test_connect_pin(void)
static DWORD CALLBACK wait_thread(void *arg)
static const struct strmbase_filter_ops testsink_ops
static IBaseFilter * create_file_source(void)
static void test_enum_pins(void)
static void test_file_share_delete(void)
static struct strmbase_pin * testsink_get_pin(struct strmbase_filter *iface, unsigned int index)
#define check_interface(a, b, c)
static struct testsink * impl_sink_from_strmbase_filter(struct strmbase_filter *iface)
static void test_unconnected_filter_state(void)
static const GUID test_iid
static HRESULT testsink_get_media_type(struct strmbase_pin *iface, unsigned int index, AM_MEDIA_TYPE *mt)
static void test_file_source_filter(void)
static void testsink_disconnect(struct strmbase_sink *iface)
static void load_file(IBaseFilter *filter, const WCHAR *filename)
static ULONG WINAPI outer_Release(IUnknown *iface)
static void test_flush(void)
const GUID IID_IPersistPropertyBag
#define IsEqualGUID(rguid1, rguid2)
#define offsetof(TYPE, MEMBER)
static __inline const char * wine_dbgstr_guid(const GUID *id)
HRESULT WINAPI CopyMediaType(AM_MEDIA_TYPE *pDest, const AM_MEDIA_TYPE *pSrc)
void strmbase_sink_cleanup(struct strmbase_sink *pin)
void strmbase_sink_init(struct strmbase_sink *pin, struct strmbase_filter *filter, const WCHAR *name, const struct strmbase_sink_ops *ops, IMemAllocator *allocator)
void strmbase_filter_cleanup(struct strmbase_filter *filter)
void strmbase_filter_init(struct strmbase_filter *filter, IUnknown *outer, const CLSID *clsid, const struct strmbase_filter_ops *func_table)
struct strmbase_filter * filter
struct strmbase_filter filter
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
#define CONTAINING_RECORD(address, type, field)
#define MEDIASUBTYPE_NULL
#define VFW_E_TYPE_NOT_ACCEPTED
#define VFW_E_NOT_STOPPED
#define VFW_E_NO_ACCEPTABLE_TYPES
#define VFW_E_WRONG_STATE
#define VFW_S_NO_MORE_ITEMS
#define VFW_E_NOT_CONNECTED
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
DWORD WINAPI GetLastError(void)
static HRESULT HRESULT_FROM_WIN32(unsigned int x)