Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/tests/filesource.c | 160 +++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+)
diff --git a/dlls/quartz/tests/filesource.c b/dlls/quartz/tests/filesource.c index b9040e26d6..9781a83792 100644 --- a/dlls/quartz/tests/filesource.c +++ b/dlls/quartz/tests/filesource.c @@ -23,6 +23,8 @@ #include "dshow.h" #include "wine/test.h"
+static const WCHAR avifile[] = {'t','e','s','t','.','a','v','i',0}; + static IBaseFilter *create_file_source(void) { IBaseFilter *filter = NULL; @@ -32,6 +34,50 @@ static IBaseFilter *create_file_source(void) return filter; }
+static WCHAR *load_resource(const WCHAR *name) +{ + static WCHAR pathW[MAX_PATH]; + DWORD written; + HANDLE file; + HRSRC res; + void *ptr; + + GetTempPathW(ARRAY_SIZE(pathW), pathW); + lstrcatW(pathW, name); + + file = CreateFileW(pathW, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0); + ok(file != INVALID_HANDLE_VALUE, "Failed to create file %s, error %u.\n", + wine_dbgstr_w(pathW), GetLastError()); + + res = FindResourceW(NULL, name, (LPCWSTR)RT_RCDATA); + ok(!!res, "Failed to load resource, error %u.\n", GetLastError()); + ptr = LockResource(LoadResource(GetModuleHandleA(NULL), res)); + WriteFile(file, ptr, SizeofResource( GetModuleHandleA(NULL), res), &written, NULL); + ok(written == SizeofResource(GetModuleHandleA(NULL), res), "Failed to write resource.\n"); + CloseHandle(file); + + return pathW; +} + +static void load_file(IBaseFilter *filter, const WCHAR *filename) +{ + IFileSourceFilter *filesource; + HRESULT hr; + + hr = IBaseFilter_QueryInterface(filter, &IID_IFileSourceFilter, (void **)&filesource); + ok(hr == S_OK, "Got hr %#x.\n", hr); + hr = IFileSourceFilter_Load(filesource, filename, NULL); + ok(hr == S_OK, "Got hr %#x.\n", hr); + IFileSourceFilter_Release(filesource); +} + +static ULONG get_refcount(void *iface) +{ + IUnknown *unknown = iface; + IUnknown_AddRef(unknown); + return IUnknown_Release(unknown); +} + #define check_interface(a, b, c) check_interface_(__LINE__, a, b, c) static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOOL supported) { @@ -192,11 +238,125 @@ static void test_file_source_filter(void) } }
+static void test_enum_pins(void) +{ + const WCHAR *filename = load_resource(avifile); + IBaseFilter *filter = create_file_source(); + IEnumPins *enum1, *enum2; + IPin *pins[2]; + ULONG count; + HRESULT hr; + ULONG ref; + BOOL ret; + + ref = get_refcount(filter); + ok(ref == 1, "Got unexpected refcount %d.\n", ref); + + hr = IBaseFilter_EnumPins(filter, NULL); + ok(hr == E_POINTER, "Got hr %#x.\n", hr); + + hr = IBaseFilter_EnumPins(filter, &enum1); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + ref = get_refcount(filter); + ok(ref == 2, "Got unexpected refcount %d.\n", ref); + ref = get_refcount(enum1); + ok(ref == 1, "Got unexpected refcount %d.\n", ref); + + hr = IEnumPins_Next(enum1, 1, NULL, NULL); + ok(hr == E_POINTER, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum1, 1, pins, NULL); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + hr = IEnumPins_Skip(enum1, 1); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + load_file(filter, filename); + + hr = IEnumPins_Next(enum1, 1, pins, NULL); +todo_wine + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + hr = IEnumPins_Reset(enum1); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum1, 1, pins, NULL); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ref = get_refcount(filter); +todo_wine + ok(ref == 3, "Got unexpected refcount %d.\n", ref); + ref = get_refcount(pins[0]); +todo_wine + ok(ref == 3, "Got unexpected refcount %d.\n", ref); + ref = get_refcount(enum1); + ok(ref == 1, "Got unexpected refcount %d.\n", ref); + IPin_Release(pins[0]); + ref = get_refcount(filter); + ok(ref == 2, "Got unexpected refcount %d.\n", ref); + + hr = IEnumPins_Next(enum1, 1, pins, NULL); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + hr = IEnumPins_Reset(enum1); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum1, 1, pins, &count); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(count == 1, "Got count %u.\n", count); + IPin_Release(pins[0]); + + hr = IEnumPins_Next(enum1, 1, pins, &count); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + ok(!count, "Got count %u.\n", count); + + hr = IEnumPins_Reset(enum1); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum1, 2, pins, NULL); + ok(hr == E_INVALIDARG, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum1, 2, pins, &count); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + ok(count == 1, "Got count %u.\n", count); + IPin_Release(pins[0]); + + hr = IEnumPins_Reset(enum1); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumPins_Clone(enum1, &enum2); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumPins_Skip(enum1, 2); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + hr = IEnumPins_Skip(enum1, 1); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumPins_Skip(enum1, 1); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum1, 1, pins, NULL); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enum2, 1, pins, NULL); + ok(hr == S_OK, "Got hr %#x.\n", hr); + IPin_Release(pins[0]); + + IEnumPins_Release(enum2); + IEnumPins_Release(enum1); + ref = IBaseFilter_Release(filter); + ok(!ref, "Got outstanding refcount %d.\n", ref); + ret = DeleteFileW(filename); + ok(ret, "Failed to delete file, error %u.\n", GetLastError()); +} + START_TEST(filesource) { CoInitialize(NULL);
test_interfaces(); + test_enum_pins(); test_file_source_filter();
CoUninitialize();
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/tests/filesource.c | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+)
diff --git a/dlls/quartz/tests/filesource.c b/dlls/quartz/tests/filesource.c index 9781a83792..6578cbef1e 100644 --- a/dlls/quartz/tests/filesource.c +++ b/dlls/quartz/tests/filesource.c @@ -25,6 +25,8 @@
static const WCHAR avifile[] = {'t','e','s','t','.','a','v','i',0};
+static const WCHAR source_id[] = {'O','u','t','p','u','t',0}; + static IBaseFilter *create_file_source(void) { IBaseFilter *filter = NULL; @@ -351,12 +353,52 @@ todo_wine ok(ret, "Failed to delete file, error %u.\n", GetLastError()); }
+static void test_find_pin(void) +{ + const WCHAR *filename = load_resource(avifile); + IBaseFilter *filter = create_file_source(); + IEnumPins *enumpins; + IPin *pin, *pin2; + HRESULT hr; + ULONG ref; + BOOL ret; + + hr = IBaseFilter_FindPin(filter, source_id, &pin); + ok(hr == VFW_E_NOT_FOUND, "Got hr %#x.\n", hr); + + load_file(filter, filename); + + hr = IBaseFilter_FindPin(filter, source_id, &pin); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ref = get_refcount(filter); +todo_wine + ok(ref == 2, "Got unexpected refcount %d.\n", ref); + ref = get_refcount(pin); + ok(ref == 2, "Got unexpected refcount %d.\n", ref); + + hr = IBaseFilter_EnumPins(filter, &enumpins); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumPins_Next(enumpins, 1, &pin2, NULL); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(pin == pin2, "Expected pin %p, got %p.\n", pin, pin2); + + IPin_Release(pin2); + IPin_Release(pin); + IEnumPins_Release(enumpins); + ref = IBaseFilter_Release(filter); + ok(!ref, "Got outstanding refcount %d.\n", ref); + ret = DeleteFileW(filename); + ok(ret, "Failed to delete file, error %u.\n", GetLastError()); +} + START_TEST(filesource) { CoInitialize(NULL);
test_interfaces(); test_enum_pins(); + test_find_pin(); test_file_source_filter();
CoUninitialize();
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/tests/filesource.c | 52 ++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+)
diff --git a/dlls/quartz/tests/filesource.c b/dlls/quartz/tests/filesource.c index 6578cbef1e..765c23b875 100644 --- a/dlls/quartz/tests/filesource.c +++ b/dlls/quartz/tests/filesource.c @@ -392,6 +392,57 @@ todo_wine ok(ret, "Failed to delete file, error %u.\n", GetLastError()); }
+static void test_pin_info(void) +{ + const WCHAR *filename = load_resource(avifile); + IBaseFilter *filter = create_file_source(); + PIN_DIRECTION dir; + PIN_INFO info; + HRESULT hr; + WCHAR *id; + ULONG ref; + IPin *pin; + BOOL ret; + + load_file(filter, filename); + + hr = IBaseFilter_FindPin(filter, source_id, &pin); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ref = get_refcount(filter); +todo_wine + ok(ref == 2, "Got unexpected refcount %d.\n", ref); + ref = get_refcount(pin); + ok(ref == 2, "Got unexpected refcount %d.\n", ref); + + hr = IPin_QueryPinInfo(pin, &info); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(info.pFilter == filter, "Expected filter %p, got %p.\n", filter, info.pFilter); + ok(info.dir == PINDIR_OUTPUT, "Got direction %d.\n", info.dir); + ok(!lstrcmpW(info.achName, source_id), "Got name %s.\n", wine_dbgstr_w(info.achName)); + ref = get_refcount(filter); +todo_wine + ok(ref == 3, "Got unexpected refcount %d.\n", ref); + ref = get_refcount(pin); +todo_wine + ok(ref == 3, "Got unexpected refcount %d.\n", ref); + IBaseFilter_Release(info.pFilter); + + hr = IPin_QueryDirection(pin, &dir); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(dir == PINDIR_OUTPUT, "Got direction %d.\n", dir); + + hr = IPin_QueryId(pin, &id); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(!lstrcmpW(id, source_id), "Got id %s.\n", wine_dbgstr_w(id)); + CoTaskMemFree(id); + + IPin_Release(pin); + ref = IBaseFilter_Release(filter); + ok(!ref, "Got outstanding refcount %d.\n", ref); + ret = DeleteFileW(filename); + ok(ret, "Failed to delete file, error %u.\n", GetLastError()); +} + START_TEST(filesource) { CoInitialize(NULL); @@ -399,6 +450,7 @@ START_TEST(filesource) test_interfaces(); test_enum_pins(); test_find_pin(); + test_pin_info(); test_file_source_filter();
CoUninitialize();
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/tests/filesource.c | 178 +++++++++++++++++++++++++++++++-- 1 file changed, 167 insertions(+), 11 deletions(-)
diff --git a/dlls/quartz/tests/filesource.c b/dlls/quartz/tests/filesource.c index 765c23b875..9c94f619ed 100644 --- a/dlls/quartz/tests/filesource.c +++ b/dlls/quartz/tests/filesource.c @@ -170,17 +170,20 @@ static void test_file_source_filter(void) "unknown format", "Hello World", 11, - NULL, /* FIXME: should be &MEDIASUBTYPE_NULL */ + &MEDIASUBTYPE_NULL, }, }; - WCHAR path[MAX_PATH], temp[MAX_PATH]; + WCHAR path[MAX_PATH], temp[MAX_PATH], *filename; + AM_MEDIA_TYPE mt, file_mt, *pmt; IFileSourceFilter *filesource; + IEnumMediaTypes *enum_mt; IBaseFilter *filter; - AM_MEDIA_TYPE mt; OLECHAR *olepath; DWORD written; HANDLE file; HRESULT hr; + ULONG ref; + IPin *pin; BOOL ret; int i;
@@ -220,24 +223,177 @@ static void test_file_source_filter(void) CoTaskMemFree(olepath);
olepath = NULL; - memset(&mt, 0x11, sizeof(mt)); - hr = IFileSourceFilter_GetCurFile(filesource, &olepath, &mt); + memset(&file_mt, 0x11, sizeof(file_mt)); + hr = IFileSourceFilter_GetCurFile(filesource, &olepath, &file_mt); ok(hr == S_OK, "Got hr %#x.\n", hr); ok(!lstrcmpW(olepath, path), "Expected path %s, got %s.\n", wine_dbgstr_w(path), wine_dbgstr_w(olepath)); - ok(IsEqualGUID(&mt.majortype, &MEDIATYPE_Stream), "Got major type %s.\n", - wine_dbgstr_guid(&mt.majortype)); - if (tests[i].subtype) - ok(IsEqualGUID(&mt.subtype, tests[i].subtype), "Expected subtype %s, got %s.\n", - wine_dbgstr_guid(tests[i].subtype), wine_dbgstr_guid(&mt.subtype)); + ok(IsEqualGUID(&file_mt.majortype, &MEDIATYPE_Stream), "Got major type %s.\n", + wine_dbgstr_guid(&file_mt.majortype)); + /* winegstreamer hijacks format type detection. */ + if (!IsEqualGUID(tests[i].subtype, &MEDIASUBTYPE_NULL)) + ok(IsEqualGUID(&file_mt.subtype, tests[i].subtype), "Expected subtype %s, got %s.\n", + wine_dbgstr_guid(tests[i].subtype), wine_dbgstr_guid(&file_mt.subtype)); + ok(file_mt.bFixedSizeSamples == TRUE, "Got fixed size %d.\n", file_mt.bFixedSizeSamples); + ok(file_mt.bTemporalCompression == FALSE, "Got temporal compression %d.\n", + file_mt.bTemporalCompression); +todo_wine { + ok(file_mt.lSampleSize == 1, "Got sample size %u.\n", file_mt.lSampleSize); + ok(IsEqualGUID(&file_mt.formattype, &GUID_NULL), "Got format type %s.\n", + wine_dbgstr_guid(&file_mt.formattype)); +} + ok(!file_mt.pUnk, "Got pUnk %p.\n", file_mt.pUnk); + ok(!file_mt.cbFormat, "Got format size %#x.\n", file_mt.cbFormat); + ok(!file_mt.pbFormat, "Got format %p.\n", file_mt.pbFormat); CoTaskMemFree(olepath);
+ hr = IBaseFilter_FindPin(filter, source_id, &pin); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IPin_EnumMediaTypes(pin, &enum_mt); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumMediaTypes_Next(enum_mt, 1, &pmt, NULL); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(!memcmp(pmt, &file_mt, sizeof(*pmt)), "Media types did not match.\n"); + CoTaskMemFree(pmt); + + hr = IEnumMediaTypes_Next(enum_mt, 1, &pmt, NULL); +todo_wine + ok(hr == S_OK, "Got hr %#x.\n", hr); + if (hr == S_OK) + { + mt = file_mt; + mt.subtype = GUID_NULL; + ok(!memcmp(pmt, &mt, sizeof(*pmt)), "Media types did not match.\n"); + CoTaskMemFree(pmt); + } + + hr = IEnumMediaTypes_Next(enum_mt, 1, &pmt, NULL); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + IEnumMediaTypes_Release(enum_mt); + + mt = file_mt; + hr = IPin_QueryAccept(pin, &mt); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + mt.bFixedSizeSamples = FALSE; + mt.bTemporalCompression = TRUE; + mt.lSampleSize = 123; + mt.formattype = FORMAT_VideoInfo; + hr = IPin_QueryAccept(pin, &mt); +todo_wine + ok(hr == S_OK, "Got hr %#x.\n", hr); + + mt.majortype = MEDIATYPE_Video; + hr = IPin_QueryAccept(pin, &mt); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + mt.majortype = MEDIATYPE_Stream; + + if (!IsEqualGUID(tests[i].subtype, &GUID_NULL)) + { + mt.subtype = GUID_NULL; + hr = IPin_QueryAccept(pin, &mt); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + } + + IPin_Release(pin); IFileSourceFilter_Release(filesource); - IBaseFilter_Release(filter); + ref = IBaseFilter_Release(filter); + ok(!ref, "Got outstanding refcount %d.\n", ref);
ret = DeleteFileW(path); ok(ret, "Failed to delete file, error %u\n", GetLastError()); } + + /* test prescribed format */ + filter = create_file_source(); + hr = IBaseFilter_QueryInterface(filter, &IID_IFileSourceFilter, (void **)&filesource); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + mt.majortype = MEDIATYPE_Video; + mt.subtype = MEDIASUBTYPE_RGB8; + mt.bFixedSizeSamples = FALSE; + mt.bTemporalCompression = TRUE; + mt.lSampleSize = 123; + mt.formattype = FORMAT_None; + mt.pUnk = NULL; + mt.cbFormat = 0; + mt.pbFormat = NULL; + filename = load_resource(avifile); + hr = IFileSourceFilter_Load(filesource, filename, &mt); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IFileSourceFilter_GetCurFile(filesource, &olepath, &file_mt); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(!memcmp(&file_mt, &mt, sizeof(mt)), "Media types did not match.\n"); + CoTaskMemFree(olepath); + + hr = IBaseFilter_FindPin(filter, source_id, &pin); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IPin_EnumMediaTypes(pin, &enum_mt); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IEnumMediaTypes_Next(enum_mt, 1, &pmt, NULL); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(!memcmp(pmt, &file_mt, sizeof(*pmt)), "Media types did not match.\n"); + CoTaskMemFree(pmt); + + hr = IEnumMediaTypes_Next(enum_mt, 1, &pmt, NULL); +todo_wine + ok(hr == S_OK, "Got hr %#x.\n", hr); + if (hr == S_OK) + { + ok(IsEqualGUID(&pmt->majortype, &MEDIATYPE_Stream), "Got major type %s.\n", + wine_dbgstr_guid(&pmt->majortype)); + ok(IsEqualGUID(&pmt->subtype, &GUID_NULL), "Got subtype %s.\n", + wine_dbgstr_guid(&pmt->subtype)); + ok(pmt->bFixedSizeSamples == TRUE, "Got fixed size %d.\n", pmt->bFixedSizeSamples); + ok(!pmt->bTemporalCompression, "Got temporal compression %d.\n", pmt->bTemporalCompression); + ok(pmt->lSampleSize == 1, "Got sample size %u.\n", pmt->lSampleSize); + ok(IsEqualGUID(&pmt->formattype, &GUID_NULL), "Got format type %s.\n", + wine_dbgstr_guid(&pmt->formattype)); + ok(!pmt->pUnk, "Got pUnk %p.\n", pmt->pUnk); + ok(!pmt->cbFormat, "Got format size %#x.\n", pmt->cbFormat); + ok(!pmt->pbFormat, "Got format %p.\n", pmt->pbFormat); + + hr = IPin_QueryAccept(pin, pmt); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + } + + hr = IEnumMediaTypes_Next(enum_mt, 1, &pmt, NULL); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + IEnumMediaTypes_Release(enum_mt); + + hr = IPin_QueryAccept(pin, &mt); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + mt.bFixedSizeSamples = TRUE; + mt.bTemporalCompression = FALSE; + mt.lSampleSize = 456; + mt.formattype = FORMAT_VideoInfo; + hr = IPin_QueryAccept(pin, &mt); +todo_wine + ok(hr == S_OK, "Got hr %#x.\n", hr); + + mt.majortype = MEDIATYPE_Stream; + hr = IPin_QueryAccept(pin, &mt); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + mt.majortype = MEDIATYPE_Video; + + mt.subtype = MEDIASUBTYPE_NULL; + hr = IPin_QueryAccept(pin, &mt); + ok(hr == S_FALSE, "Got hr %#x.\n", hr); + + IPin_Release(pin); + IFileSourceFilter_Release(filesource); + ref = IBaseFilter_Release(filter); + ok(!ref, "Got outstanding refcount %d.\n", ref); + ret = DeleteFileW(filename); + ok(ret, "Failed to delete file, error %u.\n", GetLastError()); }
static void test_enum_pins(void)
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/filesource.c | 5 +---- dlls/quartz/tests/filesource.c | 3 +-- 2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/dlls/quartz/filesource.c b/dlls/quartz/filesource.c index df444ae40d..ab8d645d40 100644 --- a/dlls/quartz/filesource.c +++ b/dlls/quartz/filesource.c @@ -756,11 +756,8 @@ static HRESULT WINAPI FileAsyncReaderPin_CheckMediaType(BasePin *pin, const AM_M { AM_MEDIA_TYPE *pmt_filter = impl_from_IBaseFilter(pin->pinInfo.pFilter)->pmt;
- FIXME("(%p, %p)\n", pin, pmt); - if (IsEqualGUID(&pmt->majortype, &pmt_filter->majortype) && - IsEqualGUID(&pmt->subtype, &pmt_filter->subtype) && - IsEqualGUID(&pmt->formattype, &FORMAT_None)) + IsEqualGUID(&pmt->subtype, &pmt_filter->subtype)) return S_OK;
return S_FALSE; diff --git a/dlls/quartz/tests/filesource.c b/dlls/quartz/tests/filesource.c index 9c94f619ed..cccab44efb 100644 --- a/dlls/quartz/tests/filesource.c +++ b/dlls/quartz/tests/filesource.c @@ -283,7 +283,7 @@ todo_wine mt.lSampleSize = 123; mt.formattype = FORMAT_VideoInfo; hr = IPin_QueryAccept(pin, &mt); -todo_wine +todo_wine_if(IsEqualGUID(tests[i].subtype, &GUID_NULL)) ok(hr == S_OK, "Got hr %#x.\n", hr);
mt.majortype = MEDIATYPE_Video; @@ -376,7 +376,6 @@ todo_wine mt.lSampleSize = 456; mt.formattype = FORMAT_VideoInfo; hr = IPin_QueryAccept(pin, &mt); -todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
mt.majortype = MEDIATYPE_Stream;
Hi,
While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=48036
Your paranoid android.
=== debian9 (32 bit report) ===
quartz: filesource.c:287: Test succeeded inside todo block: Got hr 0.
=== debian9 (32 bit French report) ===
quartz: filesource.c:287: Test succeeded inside todo block: Got hr 0.
=== debian9 (32 bit Japanese:Japan report) ===
quartz: filesource.c:287: Test succeeded inside todo block: Got hr 0.
=== debian9 (32 bit Chinese:China report) ===
quartz: filesource.c:287: Test succeeded inside todo block: Got hr 0.
=== debian9 (32 bit WoW report) ===
quartz: filesource.c:287: Test succeeded inside todo block: Got hr 0.
=== debian9 (64 bit WoW report) ===
quartz: filesource.c:287: Test succeeded inside todo block: Got hr 0.