Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/qedit/mediadet.c | 13 ++++++++++--- dlls/qedit/tests/mediadet.c | 8 +++----- 2 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/dlls/qedit/mediadet.c b/dlls/qedit/mediadet.c index 5eb6aef..6a9b000 100644 --- a/dlls/qedit/mediadet.c +++ b/dlls/qedit/mediadet.c @@ -729,9 +729,16 @@ static HRESULT WINAPI MediaDet_get_StreamMediaType(IMediaDet* iface, static HRESULT WINAPI MediaDet_GetSampleGrabber(IMediaDet* iface, ISampleGrabber **ppVal) { - MediaDetImpl *This = impl_from_IMediaDet(iface); - FIXME("(%p)->(%p): not implemented!\n", This, ppVal); - return E_NOTIMPL; + MediaDetImpl *detector = impl_from_IMediaDet(iface); + + TRACE("(%p)->(%p)\n", detector, ppVal); + + if (!detector->grabber) + return E_NOINTERFACE; + + *ppVal = detector->grabber; + ISampleGrabber_AddRef(*ppVal); + return S_OK; }
static HRESULT WINAPI MediaDet_get_FrameRate(IMediaDet* iface, double *pVal) diff --git a/dlls/qedit/tests/mediadet.c b/dlls/qedit/tests/mediadet.c index 71d4a4b..18a4412 100644 --- a/dlls/qedit/tests/mediadet.c +++ b/dlls/qedit/tests/mediadet.c @@ -1328,7 +1328,7 @@ static void test_bitmap_grab_mode(void) hr = IMediaDet_EnterBitmapGrabMode(detector, 0.0); ok(hr == E_INVALIDARG, "Got hr %#x.\n", hr); hr = IMediaDet_GetSampleGrabber(detector, &sg); - todo_wine ok(hr == E_NOINTERFACE, "Got hr %#x.\n", hr); + ok(hr == E_NOINTERFACE, "Got hr %#x.\n", hr);
/* EnterBitmapGrabMode only works with Video major type */ testfilter_init(&testfilter); @@ -1442,8 +1442,7 @@ static void test_bitmap_grab_mode(void)
/* Check the SampleGrabber */ hr = IMediaDet_GetSampleGrabber(detector, &sg); - todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr); - if (hr != S_OK) goto no_grabber; + ok(hr == S_OK, "Got hr %#x.\n", hr); hr = ISampleGrabber_GetConnectedMediaType(sg, &mt); ok(hr == S_OK, "Got hr %#x.\n", hr); ok(IsEqualGUID(&mt.majortype, &MEDIATYPE_Video), "Got major type %s.\n", debugstr_guid(&mt.majortype)); @@ -1494,13 +1493,12 @@ static void test_bitmap_grab_mode(void) ok(clock == NULL, "Got non-NULL clock.\n"); IMediaFilter_Release(mf);
-no_grabber: /* Changing filter resets bitmap grab mode */ testfilter.bitmap_grab_mode = FALSE; hr = IMediaDet_put_Filter(detector, &testfilter.filter.IUnknown_inner); ok(hr == S_OK, "Got hr %#x.\n", hr); hr = IMediaDet_GetSampleGrabber(detector, &sg); - todo_wine ok(hr == E_NOINTERFACE, "Got hr %#x.\n", hr); + ok(hr == E_NOINTERFACE, "Got hr %#x.\n", hr); hr = IMediaDet_get_OutputStreams(detector, &count); ok(hr == S_OK, "Got hr %#x.\n", hr); ok(count == 1, "Got %d streams.\n", count);