Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/tests/filtergraph.c | 143 ++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+)
diff --git a/dlls/quartz/tests/filtergraph.c b/dlls/quartz/tests/filtergraph.c index 79841e6802..0842029131 100644 --- a/dlls/quartz/tests/filtergraph.c +++ b/dlls/quartz/tests/filtergraph.c @@ -1171,6 +1171,8 @@ struct testfilter BOOL support_testguid; LONGLONG seek_duration, seek_current, seek_stop; double seek_rate; + + IReferenceClock IReferenceClock_iface; };
static inline struct testfilter *impl_from_IEnumPins(IEnumPins *iface) @@ -1278,6 +1280,12 @@ static HRESULT WINAPI testfilter_QueryInterface(IBaseFilter *iface, REFIID iid, IMediaSeeking_AddRef(*out); return S_OK; } + else if (IsEqualGUID(iid, &IID_IReferenceClock) && filter->IReferenceClock_iface.lpVtbl) + { + *out = &filter->IReferenceClock_iface; + IMediaSeeking_AddRef(*out); + return S_OK; + }
*out = NULL; return E_NOINTERFACE; @@ -1672,6 +1680,66 @@ static const IMediaSeekingVtbl testseek_vtbl = testseek_GetPreroll, };
+static struct testfilter *impl_from_IReferenceClock(IReferenceClock *iface) +{ + return CONTAINING_RECORD(iface, struct testfilter, IReferenceClock_iface); +} + +static HRESULT WINAPI testclock_QueryInterface(IReferenceClock *iface, REFIID iid, void **out) +{ + struct testfilter *filter = impl_from_IReferenceClock(iface); + return IBaseFilter_QueryInterface(&filter->IBaseFilter_iface, iid, out); +} + +static ULONG WINAPI testclock_AddRef(IReferenceClock *iface) +{ + struct testfilter *filter = impl_from_IReferenceClock(iface); + return InterlockedIncrement(&filter->ref); +} + +static ULONG WINAPI testclock_Release(IReferenceClock *iface) +{ + struct testfilter *filter = impl_from_IReferenceClock(iface); + return InterlockedDecrement(&filter->ref); +} + +static HRESULT WINAPI testclock_GetTime(IReferenceClock *iface, REFERENCE_TIME *time) +{ + ok(0, "Unexpected call.\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI testclock_AdviseTime(IReferenceClock *iface, + REFERENCE_TIME base, REFERENCE_TIME offset, HEVENT event, DWORD_PTR *cookie) +{ + ok(0, "Unexpected call.\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI testclock_AdvisePeriodic(IReferenceClock *iface, + REFERENCE_TIME start, REFERENCE_TIME period, HSEMAPHORE semaphore, DWORD_PTR *cookie) +{ + ok(0, "Unexpected call.\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI testclock_Unadvise(IReferenceClock *iface, DWORD_PTR cookie) +{ + ok(0, "Unexpected call.\n"); + return E_NOTIMPL; +} + +static const IReferenceClockVtbl testclock_vtbl = +{ + testclock_QueryInterface, + testclock_AddRef, + testclock_Release, + testclock_GetTime, + testclock_AdviseTime, + testclock_AdvisePeriodic, + testclock_Unadvise, +}; + struct testfilter_cf { IClassFactory IClassFactory_iface; @@ -3629,6 +3697,80 @@ static void test_graph_seeking(void) ok(filter2.ref == 1, "Got outstanding refcount %d.\n", filter2.ref); }
+static void test_default_sync_source(void) +{ + struct testpin source_pin, sink1_pin, sink2_pin; + struct testfilter source, sink1, sink2; + + IFilterGraph2 *graph = create_graph(); + IReferenceClock *clock; + IMediaFilter *filter; + HRESULT hr; + ULONG ref; + + testsink_init(&sink1_pin); + testsink_init(&sink2_pin); + testsource_init(&source_pin, NULL, 0); + testfilter_init(&source, &source_pin, 1); + testfilter_init(&sink1, &sink1_pin, 1); + testfilter_init(&sink2, &sink2_pin, 1); + + IFilterGraph2_AddFilter(graph, &sink1.IBaseFilter_iface, NULL); + IFilterGraph2_AddFilter(graph, &sink2.IBaseFilter_iface, NULL); + IFilterGraph2_AddFilter(graph, &source.IBaseFilter_iface, NULL); + IFilterGraph2_ConnectDirect(graph, &source_pin.IPin_iface, &sink1_pin.IPin_iface, NULL); + + IFilterGraph2_QueryInterface(graph, &IID_IMediaFilter, (void **)&filter); + + hr = IFilterGraph2_SetDefaultSyncSource(graph); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IMediaFilter_GetSyncSource(filter, &clock); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(!!clock, "Reference clock not set.\n"); + IReferenceClock_Release(clock); + + source.IReferenceClock_iface.lpVtbl = &testclock_vtbl; + + hr = IFilterGraph2_SetDefaultSyncSource(graph); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IMediaFilter_GetSyncSource(filter, &clock); + ok(hr == S_OK, "Got hr %#x.\n", hr); + todo_wine ok(clock == &source.IReferenceClock_iface, "Got unexpected clock.\n"); + IReferenceClock_Release(clock); + + /* The documentation says that connected filters are preferred, but this + * does not in fact seem to be the case. */ + + sink2.IReferenceClock_iface.lpVtbl = &testclock_vtbl; + + hr = IFilterGraph2_SetDefaultSyncSource(graph); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IMediaFilter_GetSyncSource(filter, &clock); + ok(hr == S_OK, "Got hr %#x.\n", hr); + todo_wine ok(clock == &sink2.IReferenceClock_iface, "Got unexpected clock.\n"); + IReferenceClock_Release(clock); + + sink1.IReferenceClock_iface.lpVtbl = &testclock_vtbl; + + hr = IFilterGraph2_SetDefaultSyncSource(graph); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IMediaFilter_GetSyncSource(filter, &clock); + ok(hr == S_OK, "Got hr %#x.\n", hr); + todo_wine ok(clock == &sink1.IReferenceClock_iface, "Got unexpected clock.\n"); + IReferenceClock_Release(clock); + + IMediaFilter_Release(filter); + ref = IFilterGraph2_Release(graph); + ok(!ref, "Got outstanding refcount %d.\n", ref); + ok(sink1.ref == 1, "Got outstanding refcount %d.\n", sink1.ref); + ok(sink2.ref == 1, "Got outstanding refcount %d.\n", sink2.ref); + ok(source.ref == 1, "Got outstanding refcount %d.\n", source.ref); +} + START_TEST(filtergraph) { CoInitializeEx(NULL, COINIT_MULTITHREADED); @@ -3649,6 +3791,7 @@ START_TEST(filtergraph) test_filter_state(); test_ec_complete(); test_graph_seeking(); + test_default_sync_source();
CoUninitialize(); test_render_with_multithread();
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/filtergraph.c | 11 +---------- dlls/quartz/tests/filtergraph.c | 2 +- 2 files changed, 2 insertions(+), 11 deletions(-)
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c index 60cc368784..9606a4961d 100644 --- a/dlls/quartz/filtergraph.c +++ b/dlls/quartz/filtergraph.c @@ -918,16 +918,7 @@ static HRESULT WINAPI FilterGraph2_SetDefaultSyncSource(IFilterGraph2 *iface)
LIST_FOR_EACH_ENTRY(filter, &This->filters, struct filter, entry) { - DWORD miscflags; - IAMFilterMiscFlags *flags = NULL; - IBaseFilter_QueryInterface(filter->filter, &IID_IAMFilterMiscFlags, (void **)&flags); - if (!flags) - continue; - miscflags = IAMFilterMiscFlags_GetMiscFlags(flags); - IAMFilterMiscFlags_Release(flags); - if (miscflags == AM_FILTER_MISC_FLAGS_IS_RENDERER) - IBaseFilter_QueryInterface(filter->filter, &IID_IReferenceClock, (void **)&pClock); - if (pClock) + if (IBaseFilter_QueryInterface(filter->filter, &IID_IReferenceClock, (void **)&pClock) == S_OK) break; }
diff --git a/dlls/quartz/tests/filtergraph.c b/dlls/quartz/tests/filtergraph.c index 0842029131..e6f2afa970 100644 --- a/dlls/quartz/tests/filtergraph.c +++ b/dlls/quartz/tests/filtergraph.c @@ -3737,7 +3737,7 @@ static void test_default_sync_source(void)
hr = IMediaFilter_GetSyncSource(filter, &clock); ok(hr == S_OK, "Got hr %#x.\n", hr); - todo_wine ok(clock == &source.IReferenceClock_iface, "Got unexpected clock.\n"); + ok(clock == &source.IReferenceClock_iface, "Got unexpected clock.\n"); IReferenceClock_Release(clock);
/* The documentation says that connected filters are preferred, but this
Hi,
While running your changed tests, 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=52569
Your paranoid android.
=== w1064v1507 (32 bit report) ===
quartz: filtergraph.c:434: Test failed: GetState() failed: 40237
=== w1064v1507 (64 bit report) ===
quartz: filtergraph.c:779: Test failed: wait failed
This reverts 822c3fe9eab143c0213a0e5a95d9ecdf77c93b38.
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/tests/videorenderer.c | 2 +- dlls/quartz/videorenderer.c | 40 ------------------------------- 2 files changed, 1 insertion(+), 41 deletions(-)
diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c index 93ce8d19cd..fdd4dfb954 100644 --- a/dlls/quartz/tests/videorenderer.c +++ b/dlls/quartz/tests/videorenderer.c @@ -74,7 +74,7 @@ static void test_interfaces(void) check_interface(filter, &IID_IUnknown, TRUE); check_interface(filter, &IID_IVideoWindow, TRUE);
- todo_wine check_interface(filter, &IID_IAMFilterMiscFlags, FALSE); + check_interface(filter, &IID_IAMFilterMiscFlags, FALSE); check_interface(filter, &IID_IBasicAudio, FALSE); check_interface(filter, &IID_IDispatch, FALSE); check_interface(filter, &IID_IOverlay, FALSE); diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c index f3d817b90c..3a84aba3de 100644 --- a/dlls/quartz/videorenderer.c +++ b/dlls/quartz/videorenderer.c @@ -47,7 +47,6 @@ typedef struct VideoRendererImpl BaseControlVideo baseControlVideo;
IUnknown IUnknown_inner; - IAMFilterMiscFlags IAMFilterMiscFlags_iface; IUnknown *outer_unk;
BOOL init; @@ -659,8 +658,6 @@ static HRESULT WINAPI VideoRendererInner_QueryInterface(IUnknown *iface, REFIID *ppv = &This->baseControlVideo.IBasicVideo_iface; else if (IsEqualIID(riid, &IID_IVideoWindow)) *ppv = &This->baseControlWindow.IVideoWindow_iface; - else if (IsEqualIID(riid, &IID_IAMFilterMiscFlags)) - *ppv = &This->IAMFilterMiscFlags_iface; else { HRESULT hr; @@ -980,42 +977,6 @@ static const IVideoWindowVtbl IVideoWindow_VTable = BaseControlWindowImpl_IsCursorHidden };
-static VideoRendererImpl *impl_from_IAMFilterMiscFlags(IAMFilterMiscFlags *iface) -{ - return CONTAINING_RECORD(iface, VideoRendererImpl, IAMFilterMiscFlags_iface); -} - -static HRESULT WINAPI AMFilterMiscFlags_QueryInterface(IAMFilterMiscFlags *iface, REFIID riid, - void **ppv) -{ - VideoRendererImpl *This = impl_from_IAMFilterMiscFlags(iface); - return IUnknown_QueryInterface(This->outer_unk, riid, ppv); -} - -static ULONG WINAPI AMFilterMiscFlags_AddRef(IAMFilterMiscFlags *iface) -{ - VideoRendererImpl *This = impl_from_IAMFilterMiscFlags(iface); - return IUnknown_AddRef(This->outer_unk); -} - -static ULONG WINAPI AMFilterMiscFlags_Release(IAMFilterMiscFlags *iface) -{ - VideoRendererImpl *This = impl_from_IAMFilterMiscFlags(iface); - return IUnknown_Release(This->outer_unk); -} - -static ULONG WINAPI AMFilterMiscFlags_GetMiscFlags(IAMFilterMiscFlags *iface) -{ - return AM_FILTER_MISC_FLAGS_IS_RENDERER; -} - -static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl = { - AMFilterMiscFlags_QueryInterface, - AMFilterMiscFlags_AddRef, - AMFilterMiscFlags_Release, - AMFilterMiscFlags_GetMiscFlags -}; - HRESULT VideoRenderer_create(IUnknown *pUnkOuter, void **ppv) { static const WCHAR sink_name[] = {'I','n',0}; @@ -1028,7 +989,6 @@ HRESULT VideoRenderer_create(IUnknown *pUnkOuter, void **ppv)
pVideoRenderer = CoTaskMemAlloc(sizeof(VideoRendererImpl)); pVideoRenderer->IUnknown_inner.lpVtbl = &IInner_VTable; - pVideoRenderer->IAMFilterMiscFlags_iface.lpVtbl = &IAMFilterMiscFlags_Vtbl;
pVideoRenderer->init = FALSE; ZeroMemory(&pVideoRenderer->SourceRect, sizeof(RECT));
This reverts 0196da9b4d2a9689a0a5bc219bb393ac590ad088.
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/dsoundrender.c | 36 -------------------------------- dlls/quartz/tests/dsoundrender.c | 2 +- 2 files changed, 1 insertion(+), 37 deletions(-)
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c index 31862d23b3..844085a473 100644 --- a/dlls/quartz/dsoundrender.c +++ b/dlls/quartz/dsoundrender.c @@ -47,7 +47,6 @@ static const IBaseFilterVtbl DSoundRender_Vtbl; static const IBasicAudioVtbl IBasicAudio_Vtbl; static const IReferenceClockVtbl IReferenceClock_Vtbl; static const IAMDirectSoundVtbl IAMDirectSound_Vtbl; -static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl;
typedef struct DSoundRenderImpl { @@ -56,7 +55,6 @@ typedef struct DSoundRenderImpl
IReferenceClock IReferenceClock_iface; IAMDirectSound IAMDirectSound_iface; - IAMFilterMiscFlags IAMFilterMiscFlags_iface;
IDirectSound8 *dsound; LPDIRECTSOUNDBUFFER dsbuffer; @@ -100,11 +98,6 @@ static inline DSoundRenderImpl *impl_from_IAMDirectSound(IAMDirectSound *iface) return CONTAINING_RECORD(iface, DSoundRenderImpl, IAMDirectSound_iface); }
-static inline DSoundRenderImpl *impl_from_IAMFilterMiscFlags(IAMFilterMiscFlags *iface) -{ - return CONTAINING_RECORD(iface, DSoundRenderImpl, IAMFilterMiscFlags_iface); -} - static REFERENCE_TIME time_from_pos(DSoundRenderImpl *This, DWORD pos) { WAVEFORMATEX *wfx = (WAVEFORMATEX*)This->renderer.pInputPin->pin.mtCurrent.pbFormat; REFERENCE_TIME ret = 10000000; @@ -642,7 +635,6 @@ HRESULT DSoundRender_create(IUnknown * pUnkOuter, LPVOID * ppv) BasicAudio_Init(&pDSoundRender->basicAudio,&IBasicAudio_Vtbl); pDSoundRender->IReferenceClock_iface.lpVtbl = &IReferenceClock_Vtbl; pDSoundRender->IAMDirectSound_iface.lpVtbl = &IAMDirectSound_Vtbl; - pDSoundRender->IAMFilterMiscFlags_iface.lpVtbl = &IAMFilterMiscFlags_Vtbl;
if (SUCCEEDED(hr)) { @@ -700,8 +692,6 @@ static HRESULT WINAPI DSoundRender_QueryInterface(IBaseFilter * iface, REFIID ri *ppv = &This->IReferenceClock_iface; else if (IsEqualIID(riid, &IID_IAMDirectSound)) *ppv = &This->IAMDirectSound_iface; - else if (IsEqualIID(riid, &IID_IAMFilterMiscFlags)) - *ppv = &This->IAMFilterMiscFlags_iface; else { HRESULT hr; @@ -1284,29 +1274,3 @@ static const IAMDirectSoundVtbl IAMDirectSound_Vtbl = AMDirectSound_SetFocusWindow, AMDirectSound_GetFocusWindow }; - -static HRESULT WINAPI AMFilterMiscFlags_QueryInterface(IAMFilterMiscFlags *iface, REFIID riid, void **ppv) { - DSoundRenderImpl *This = impl_from_IAMFilterMiscFlags(iface); - return IBaseFilter_QueryInterface(&This->renderer.filter.IBaseFilter_iface, riid, ppv); -} - -static ULONG WINAPI AMFilterMiscFlags_AddRef(IAMFilterMiscFlags *iface) { - DSoundRenderImpl *This = impl_from_IAMFilterMiscFlags(iface); - return IBaseFilter_AddRef(&This->renderer.filter.IBaseFilter_iface); -} - -static ULONG WINAPI AMFilterMiscFlags_Release(IAMFilterMiscFlags *iface) { - DSoundRenderImpl *This = impl_from_IAMFilterMiscFlags(iface); - return IBaseFilter_Release(&This->renderer.filter.IBaseFilter_iface); -} - -static ULONG WINAPI AMFilterMiscFlags_GetMiscFlags(IAMFilterMiscFlags *iface) { - return AM_FILTER_MISC_FLAGS_IS_RENDERER; -} - -static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl = { - AMFilterMiscFlags_QueryInterface, - AMFilterMiscFlags_AddRef, - AMFilterMiscFlags_Release, - AMFilterMiscFlags_GetMiscFlags -}; diff --git a/dlls/quartz/tests/dsoundrender.c b/dlls/quartz/tests/dsoundrender.c index 09bd473d84..9e01aecd03 100644 --- a/dlls/quartz/tests/dsoundrender.c +++ b/dlls/quartz/tests/dsoundrender.c @@ -144,7 +144,7 @@ static void test_interfaces(void) check_interface(filter, &IID_IReferenceClock, TRUE); check_interface(filter, &IID_IUnknown, TRUE);
- todo_wine check_interface(filter, &IID_IAMFilterMiscFlags, FALSE); + check_interface(filter, &IID_IAMFilterMiscFlags, FALSE); check_interface(filter, &IID_IBasicVideo, FALSE); check_interface(filter, &IID_IDispatch, FALSE); check_interface(filter, &IID_IKsPropertySet, FALSE);
This reverts 443e24fe887f6c0233b159fd6e034f2dfb09fdf2.
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/qedit/nullrenderer.c | 40 --------------------------------- dlls/qedit/tests/nullrenderer.c | 2 +- 2 files changed, 1 insertion(+), 41 deletions(-)
diff --git a/dlls/qedit/nullrenderer.c b/dlls/qedit/nullrenderer.c index 6ba70cb369..c9319fb3dc 100644 --- a/dlls/qedit/nullrenderer.c +++ b/dlls/qedit/nullrenderer.c @@ -30,7 +30,6 @@ typedef struct NullRendererImpl { BaseRenderer renderer; IUnknown IUnknown_inner; - IAMFilterMiscFlags IAMFilterMiscFlags_iface; IUnknown *outer_unk; } NullRendererImpl;
@@ -82,8 +81,6 @@ static HRESULT WINAPI NullRendererInner_QueryInterface(IUnknown *iface, REFIID r
if (IsEqualIID(riid, &IID_IUnknown)) *ppv = &This->IUnknown_inner; - else if (IsEqualIID(riid, &IID_IAMFilterMiscFlags)) - *ppv = &This->IAMFilterMiscFlags_iface; else { HRESULT hr; @@ -174,42 +171,6 @@ static const IBaseFilterVtbl NullRenderer_Vtbl = BaseFilterImpl_QueryVendorInfo };
-static NullRendererImpl *impl_from_IAMFilterMiscFlags(IAMFilterMiscFlags *iface) -{ - return CONTAINING_RECORD(iface, NullRendererImpl, IAMFilterMiscFlags_iface); -} - -static HRESULT WINAPI AMFilterMiscFlags_QueryInterface(IAMFilterMiscFlags *iface, REFIID riid, - void **ppv) -{ - NullRendererImpl *This = impl_from_IAMFilterMiscFlags(iface); - return IUnknown_QueryInterface(This->outer_unk, riid, ppv); -} - -static ULONG WINAPI AMFilterMiscFlags_AddRef(IAMFilterMiscFlags *iface) -{ - NullRendererImpl *This = impl_from_IAMFilterMiscFlags(iface); - return IUnknown_AddRef(This->outer_unk); -} - -static ULONG WINAPI AMFilterMiscFlags_Release(IAMFilterMiscFlags *iface) -{ - NullRendererImpl *This = impl_from_IAMFilterMiscFlags(iface); - return IUnknown_Release(This->outer_unk); -} - -static ULONG WINAPI AMFilterMiscFlags_GetMiscFlags(IAMFilterMiscFlags *iface) -{ - return AM_FILTER_MISC_FLAGS_IS_RENDERER; -} - -static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl = { - AMFilterMiscFlags_QueryInterface, - AMFilterMiscFlags_AddRef, - AMFilterMiscFlags_Release, - AMFilterMiscFlags_GetMiscFlags -}; - HRESULT NullRenderer_create(IUnknown *pUnkOuter, void **ppv) { static const WCHAR sink_name[] = {'I','n',0}; @@ -223,7 +184,6 @@ HRESULT NullRenderer_create(IUnknown *pUnkOuter, void **ppv)
pNullRenderer = CoTaskMemAlloc(sizeof(NullRendererImpl)); pNullRenderer->IUnknown_inner.lpVtbl = &IInner_VTable; - pNullRenderer->IAMFilterMiscFlags_iface.lpVtbl = &IAMFilterMiscFlags_Vtbl;
if (pUnkOuter) pNullRenderer->outer_unk = pUnkOuter; diff --git a/dlls/qedit/tests/nullrenderer.c b/dlls/qedit/tests/nullrenderer.c index 0ae17b17b6..a45f30a309 100644 --- a/dlls/qedit/tests/nullrenderer.c +++ b/dlls/qedit/tests/nullrenderer.c @@ -68,7 +68,7 @@ static void test_interfaces(void) check_interface(filter, &IID_IPersist, TRUE); check_interface(filter, &IID_IUnknown, TRUE);
- todo_wine check_interface(filter, &IID_IAMFilterMiscFlags, FALSE); + check_interface(filter, &IID_IAMFilterMiscFlags, FALSE); check_interface(filter, &IID_IBasicAudio, FALSE); check_interface(filter, &IID_IBasicVideo, FALSE); check_interface(filter, &IID_IKsPropertySet, FALSE);
Hi,
While running your changed tests, 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=52568
Your paranoid android.
=== w1064v1507 (32 bit report) ===
quartz: filtergraph.c:523: Test failed: didn't get EOS filtergraph.c:528: Test failed: expected 2ccdba, got 0 filtergraph.c:779: Test failed: wait failed
=== w1064v1507 (64 bit report) ===
quartz: filtergraph.c:434: Test failed: GetState() failed: 40237 filtergraph.c:440: Test failed: GetState() failed: 40237 filtergraph.c:523: Test failed: didn't get EOS filtergraph.c:528: Test failed: expected 48e, got 0 filtergraph.c:523: Test failed: didn't get EOS filtergraph.c:528: Test failed: expected 2ccdba, got 0