Only the video renderer uses this, but we'd like to deduplicate the wait-on-preroll behaviour.
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/videorenderer.c | 9 ++------- dlls/strmbase/renderer.c | 4 ++++ include/wine/strmbase.h | 2 ++ 3 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c index a925340a676..ed5774bf484 100644 --- a/dlls/quartz/videorenderer.c +++ b/dlls/quartz/videorenderer.c @@ -50,7 +50,6 @@ struct video_renderer DWORD saved_style;
HANDLE run_event; - IMediaSample *current_sample; };
static inline struct video_renderer *impl_from_video_window(struct video_window *iface) @@ -109,14 +108,10 @@ static HRESULT WINAPI VideoRenderer_DoRenderSample(struct strmbase_renderer *ifa { const HANDLE events[2] = {filter->run_event, filter->renderer.flush_event};
- filter->current_sample = pSample; - SetEvent(filter->renderer.state_event); LeaveCriticalSection(&filter->renderer.filter.stream_cs); WaitForMultipleObjects(2, events, FALSE, INFINITE); EnterCriticalSection(&filter->renderer.filter.stream_cs); - - filter->current_sample = NULL; }
return S_OK; @@ -276,7 +271,7 @@ static HRESULT video_renderer_get_current_image(struct video_window *iface, LONG return VFW_E_NOT_PAUSED; }
- if (!filter->current_sample) + if (!filter->renderer.current_sample) { LeaveCriticalSection(&filter->renderer.filter.stream_cs); return E_UNEXPECTED; @@ -289,7 +284,7 @@ static HRESULT video_renderer_get_current_image(struct video_window *iface, LONG }
memcpy(image, bih, sizeof(BITMAPINFOHEADER)); - IMediaSample_GetPointer(filter->current_sample, &sample_data); + IMediaSample_GetPointer(filter->renderer.current_sample, &sample_data); memcpy((char *)image + sizeof(BITMAPINFOHEADER), sample_data, image_size);
LeaveCriticalSection(&filter->renderer.filter.stream_cs); diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index 47017f5ced5..b384ea991d9 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -353,7 +353,11 @@ static HRESULT WINAPI BaseRenderer_Receive(struct strmbase_sink *pin, IMediaSamp }
if (state == State_Paused) + { + filter->current_sample = sample; hr = filter->pFuncsTable->pfnDoRenderSample(filter, sample); + filter->current_sample = NULL; + }
if (need_wait) { diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h index 4b5ecc86721..e902790ecb1 100644 --- a/include/wine/strmbase.h +++ b/include/wine/strmbase.h @@ -291,6 +291,8 @@ struct strmbase_renderer HANDLE flush_event; REFERENCE_TIME stream_start;
+ IMediaSample *current_sample; + IQualityControl *qc_sink; REFERENCE_TIME last_left, avg_duration, avg_pt; double avg_rate;
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/qedit/nullrenderer.c | 9 +++------ dlls/quartz/videorenderer.c | 11 +++-------- dlls/quartz/vmr9.c | 11 +++-------- dlls/strmbase/renderer.c | 2 ++ include/wine/strmbase.h | 3 +++ 5 files changed, 14 insertions(+), 22 deletions(-)
diff --git a/dlls/qedit/nullrenderer.c b/dlls/qedit/nullrenderer.c index 97e3cdbb202..85493da02f1 100644 --- a/dlls/qedit/nullrenderer.c +++ b/dlls/qedit/nullrenderer.c @@ -29,7 +29,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(qedit); struct null_renderer { struct strmbase_renderer renderer; - HANDLE run_event; };
static struct null_renderer *impl_from_strmbase_renderer(struct strmbase_renderer *iface) @@ -43,7 +42,7 @@ static HRESULT WINAPI NullRenderer_DoRenderSample(struct strmbase_renderer *ifac
if (filter->renderer.filter.state == State_Paused) { - const HANDLE events[2] = {filter->run_event, filter->renderer.flush_event}; + const HANDLE events[2] = {filter->renderer.run_event, filter->renderer.flush_event};
SetEvent(filter->renderer.state_event); WaitForMultipleObjects(2, events, FALSE, INFINITE); @@ -62,7 +61,6 @@ static void null_renderer_destroy(struct strmbase_renderer *iface) { struct null_renderer *filter = impl_from_strmbase_renderer(iface);
- CloseHandle(filter->run_event); strmbase_renderer_cleanup(&filter->renderer); free(filter); } @@ -70,13 +68,13 @@ static void null_renderer_destroy(struct strmbase_renderer *iface) static void null_renderer_start_stream(struct strmbase_renderer *iface) { struct null_renderer *filter = impl_from_strmbase_renderer(iface); - SetEvent(filter->run_event); + SetEvent(filter->renderer.run_event); }
static void null_renderer_stop_stream(struct strmbase_renderer *iface) { struct null_renderer *filter = impl_from_strmbase_renderer(iface); - ResetEvent(filter->run_event); + ResetEvent(filter->renderer.run_event); }
static const struct strmbase_renderer_ops renderer_ops = @@ -96,7 +94,6 @@ HRESULT null_renderer_create(IUnknown *outer, IUnknown **out) return E_OUTOFMEMORY;
strmbase_renderer_init(&object->renderer, outer, &CLSID_NullRenderer, L"In", &renderer_ops); - object->run_event = CreateEventW(NULL, TRUE, FALSE, NULL);
TRACE("Created null renderer %p.\n", object); *out = &object->renderer.filter.IUnknown_inner; diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c index ed5774bf484..1da5ad02d7a 100644 --- a/dlls/quartz/videorenderer.c +++ b/dlls/quartz/videorenderer.c @@ -48,8 +48,6 @@ struct video_renderer LONG FullScreenMode;
DWORD saved_style; - - HANDLE run_event; };
static inline struct video_renderer *impl_from_video_window(struct video_window *iface) @@ -106,7 +104,7 @@ static HRESULT WINAPI VideoRenderer_DoRenderSample(struct strmbase_renderer *ifa
if (filter->renderer.filter.state == State_Paused) { - const HANDLE events[2] = {filter->run_event, filter->renderer.flush_event}; + const HANDLE events[2] = {filter->renderer.run_event, filter->renderer.flush_event};
SetEvent(filter->renderer.state_event); LeaveCriticalSection(&filter->renderer.filter.stream_cs); @@ -140,7 +138,6 @@ static void video_renderer_destroy(struct strmbase_renderer *iface) struct video_renderer *filter = impl_from_strmbase_renderer(iface);
video_window_cleanup(&filter->window); - CloseHandle(filter->run_event); strmbase_renderer_cleanup(&filter->renderer); free(filter);
@@ -179,7 +176,7 @@ static void video_renderer_start_stream(struct strmbase_renderer *iface) { struct video_renderer *filter = impl_from_strmbase_renderer(iface);
- SetEvent(filter->run_event); + SetEvent(filter->renderer.run_event); }
static void video_renderer_stop_stream(struct strmbase_renderer *iface) @@ -192,7 +189,7 @@ static void video_renderer_stop_stream(struct strmbase_renderer *iface) /* Black it out */ RedrawWindow(This->window.hwnd, NULL, NULL, RDW_INVALIDATE | RDW_ERASE);
- ResetEvent(This->run_event); + ResetEvent(This->renderer.run_event); }
static void video_renderer_init_stream(struct strmbase_renderer *iface) @@ -519,8 +516,6 @@ HRESULT video_renderer_create(IUnknown *outer, IUnknown **out) return hr; }
- object->run_event = CreateEventW(NULL, TRUE, FALSE, NULL); - TRACE("Created video renderer %p.\n", object); *out = &object->renderer.filter.IUnknown_inner; return S_OK; diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c index c748e674081..7e0edc57f61 100644 --- a/dlls/quartz/vmr9.c +++ b/dlls/quartz/vmr9.c @@ -108,8 +108,6 @@ struct quartz_vmr LONG VideoWidth; LONG VideoHeight; VMR9AspectRatioMode aspect_mode; - - HANDLE run_event; };
static inline BOOL is_vmr9(const struct quartz_vmr *filter) @@ -211,7 +209,7 @@ static inline struct quartz_vmr *impl_from_IBaseFilter(IBaseFilter *iface) static HRESULT WINAPI VMR9_DoRenderSample(struct strmbase_renderer *iface, IMediaSample *sample) { struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface); - const HANDLE events[2] = {filter->run_event, filter->renderer.flush_event}; + const HANDLE events[2] = {filter->renderer.run_event, filter->renderer.flush_event}; unsigned int data_size, width, depth, src_pitch; const BITMAPINFOHEADER *bitmap_header; REFERENCE_TIME start_time, end_time; @@ -486,7 +484,7 @@ static void vmr_start_stream(struct strmbase_renderer *iface) struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
IVMRImagePresenter9_StartPresenting(filter->presenter, filter->cookie); - SetEvent(filter->run_event); + SetEvent(filter->renderer.run_event); }
static void vmr_stop_stream(struct strmbase_renderer *iface) @@ -497,7 +495,7 @@ static void vmr_stop_stream(struct strmbase_renderer *iface)
if (This->renderer.filter.state == State_Running) IVMRImagePresenter9_StopPresenting(This->presenter, This->cookie); - ResetEvent(This->run_event); + ResetEvent(This->renderer.run_event); }
static HRESULT vmr_connect(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt) @@ -585,7 +583,6 @@ static void vmr_destroy(struct strmbase_renderer *iface) filter->allocator_d3d9_dev = NULL; }
- CloseHandle(filter->run_event); FreeLibrary(filter->hD3d9); strmbase_renderer_cleanup(&filter->renderer); if (!filter->IVMRSurfaceAllocatorNotify9_refcount) @@ -2610,8 +2607,6 @@ static HRESULT vmr_create(IUnknown *outer, IUnknown **out, const CLSID *clsid) return hr; }
- object->run_event = CreateEventW(NULL, TRUE, FALSE, NULL); - object->mixing_prefs = MixerPref9_NoDecimation | MixerPref9_ARAdjustXorY | MixerPref9_BiLinearFiltering | MixerPref9_RenderTargetRGB;
diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index b384ea991d9..0978f7305c8 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -554,6 +554,7 @@ void strmbase_renderer_cleanup(struct strmbase_renderer *filter)
CloseHandle(filter->state_event); CloseHandle(filter->advise_event); + CloseHandle(filter->run_event); CloseHandle(filter->flush_event); strmbase_filter_cleanup(&filter->filter); } @@ -573,5 +574,6 @@ void strmbase_renderer_init(struct strmbase_renderer *filter, IUnknown *outer,
filter->state_event = CreateEventW(NULL, TRUE, TRUE, NULL); filter->advise_event = CreateEventW(NULL, FALSE, FALSE, NULL); + filter->run_event = CreateEventW(NULL, TRUE, FALSE, NULL); filter->flush_event = CreateEventW(NULL, TRUE, TRUE, NULL); } diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h index e902790ecb1..76caf103dee 100644 --- a/include/wine/strmbase.h +++ b/include/wine/strmbase.h @@ -286,6 +286,9 @@ struct strmbase_renderer /* Signaled when the sample presentation time occurs. The streaming thread * waits for this event in Receive() if applicable. */ HANDLE advise_event; + /* Signaled when the filter is running. The streaming thread waits for this + * event in Receive() while paused. */ + HANDLE run_event; /* Signaled when a flush or state change occurs, i.e. anything that needs * to immediately unblock the streaming thread. */ HANDLE flush_event;
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/qedit/nullrenderer.c | 24 ------------------------ dlls/quartz/videorenderer.c | 20 -------------------- dlls/quartz/vmr9.c | 15 +-------------- dlls/strmbase/renderer.c | 12 ++++++++++++ 4 files changed, 13 insertions(+), 58 deletions(-)
diff --git a/dlls/qedit/nullrenderer.c b/dlls/qedit/nullrenderer.c index 85493da02f1..e703ea24305 100644 --- a/dlls/qedit/nullrenderer.c +++ b/dlls/qedit/nullrenderer.c @@ -38,16 +38,6 @@ static struct null_renderer *impl_from_strmbase_renderer(struct strmbase_rendere
static HRESULT WINAPI NullRenderer_DoRenderSample(struct strmbase_renderer *iface, IMediaSample *sample) { - struct null_renderer *filter = impl_from_strmbase_renderer(iface); - - if (filter->renderer.filter.state == State_Paused) - { - const HANDLE events[2] = {filter->renderer.run_event, filter->renderer.flush_event}; - - SetEvent(filter->renderer.state_event); - WaitForMultipleObjects(2, events, FALSE, INFINITE); - } - return S_OK; }
@@ -65,24 +55,10 @@ static void null_renderer_destroy(struct strmbase_renderer *iface) free(filter); }
-static void null_renderer_start_stream(struct strmbase_renderer *iface) -{ - struct null_renderer *filter = impl_from_strmbase_renderer(iface); - SetEvent(filter->renderer.run_event); -} - -static void null_renderer_stop_stream(struct strmbase_renderer *iface) -{ - struct null_renderer *filter = impl_from_strmbase_renderer(iface); - ResetEvent(filter->renderer.run_event); -} - static const struct strmbase_renderer_ops renderer_ops = { .pfnCheckMediaType = NullRenderer_CheckMediaType, .pfnDoRenderSample = NullRenderer_DoRenderSample, - .renderer_start_stream = null_renderer_start_stream, - .renderer_stop_stream = null_renderer_stop_stream, .renderer_destroy = null_renderer_destroy, };
diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c index 1da5ad02d7a..a90e96c8f2a 100644 --- a/dlls/quartz/videorenderer.c +++ b/dlls/quartz/videorenderer.c @@ -102,16 +102,6 @@ static HRESULT WINAPI VideoRenderer_DoRenderSample(struct strmbase_renderer *ifa (BITMAPINFO *)get_bitmap_header(&filter->renderer.sink.pin.mt), DIB_RGB_COLORS, SRCCOPY); ReleaseDC(filter->window.hwnd, dc);
- if (filter->renderer.filter.state == State_Paused) - { - const HANDLE events[2] = {filter->renderer.run_event, filter->renderer.flush_event}; - - SetEvent(filter->renderer.state_event); - LeaveCriticalSection(&filter->renderer.filter.stream_cs); - WaitForMultipleObjects(2, events, FALSE, INFINITE); - EnterCriticalSection(&filter->renderer.filter.stream_cs); - } - return S_OK; }
@@ -172,13 +162,6 @@ static HRESULT video_renderer_pin_query_interface(struct strmbase_renderer *ifac return S_OK; }
-static void video_renderer_start_stream(struct strmbase_renderer *iface) -{ - struct video_renderer *filter = impl_from_strmbase_renderer(iface); - - SetEvent(filter->renderer.run_event); -} - static void video_renderer_stop_stream(struct strmbase_renderer *iface) { struct video_renderer *This = impl_from_strmbase_renderer(iface); @@ -188,8 +171,6 @@ static void video_renderer_stop_stream(struct strmbase_renderer *iface) if (This->window.AutoShow) /* Black it out */ RedrawWindow(This->window.hwnd, NULL, NULL, RDW_INVALIDATE | RDW_ERASE); - - ResetEvent(This->renderer.run_event); }
static void video_renderer_init_stream(struct strmbase_renderer *iface) @@ -235,7 +216,6 @@ static const struct strmbase_renderer_ops renderer_ops = .pfnCheckMediaType = VideoRenderer_CheckMediaType, .pfnDoRenderSample = VideoRenderer_DoRenderSample, .renderer_init_stream = video_renderer_init_stream, - .renderer_start_stream = video_renderer_start_stream, .renderer_stop_stream = video_renderer_stop_stream, .renderer_destroy = video_renderer_destroy, .renderer_query_interface = video_renderer_query_interface, diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c index 7e0edc57f61..b98e172e48e 100644 --- a/dlls/quartz/vmr9.c +++ b/dlls/quartz/vmr9.c @@ -209,7 +209,6 @@ static inline struct quartz_vmr *impl_from_IBaseFilter(IBaseFilter *iface) static HRESULT WINAPI VMR9_DoRenderSample(struct strmbase_renderer *iface, IMediaSample *sample) { struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface); - const HANDLE events[2] = {filter->renderer.run_event, filter->renderer.flush_event}; unsigned int data_size, width, depth, src_pitch; const BITMAPINFOHEADER *bitmap_header; REFERENCE_TIME start_time, end_time; @@ -310,17 +309,7 @@ static HRESULT WINAPI VMR9_DoRenderSample(struct strmbase_renderer *iface, IMedi
IDirect3DSurface9_UnlockRect(info.lpSurf);
- hr = IVMRImagePresenter9_PresentImage(filter->presenter, filter->cookie, &info); - - if (filter->renderer.filter.state == State_Paused) - { - SetEvent(filter->renderer.state_event); - LeaveCriticalSection(&filter->renderer.filter.stream_cs); - WaitForMultipleObjects(2, events, FALSE, INFINITE); - EnterCriticalSection(&filter->renderer.filter.stream_cs); - } - - return hr; + return IVMRImagePresenter9_PresentImage(filter->presenter, filter->cookie, &info); }
static HRESULT WINAPI VMR9_CheckMediaType(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt) @@ -484,7 +473,6 @@ static void vmr_start_stream(struct strmbase_renderer *iface) struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
IVMRImagePresenter9_StartPresenting(filter->presenter, filter->cookie); - SetEvent(filter->renderer.run_event); }
static void vmr_stop_stream(struct strmbase_renderer *iface) @@ -495,7 +483,6 @@ static void vmr_stop_stream(struct strmbase_renderer *iface)
if (This->renderer.filter.state == State_Running) IVMRImagePresenter9_StopPresenting(This->presenter, This->cookie); - ResetEvent(This->renderer.run_event); }
static HRESULT vmr_connect(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt) diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index 0978f7305c8..c95fe63c3f9 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -245,6 +245,7 @@ static HRESULT renderer_start_stream(struct strmbase_filter *iface, REFERENCE_TI
filter->stream_start = start; SetEvent(filter->state_event); + SetEvent(filter->run_event); if (filter->sink.pin.peer) filter->eos = FALSE; reset_qos(filter); @@ -258,6 +259,8 @@ static HRESULT renderer_stop_stream(struct strmbase_filter *iface) { struct strmbase_renderer *filter = impl_from_strmbase_filter(iface);
+ ResetEvent(filter->run_event); + if (filter->sink.pin.peer && filter->pFuncsTable->renderer_stop_stream) filter->pFuncsTable->renderer_stop_stream(filter);
@@ -354,8 +357,17 @@ static HRESULT WINAPI BaseRenderer_Receive(struct strmbase_sink *pin, IMediaSamp
if (state == State_Paused) { + HANDLE events[2] = {filter->run_event, filter->flush_event}; + filter->current_sample = sample; + hr = filter->pFuncsTable->pfnDoRenderSample(filter, sample); + + SetEvent(filter->state_event); + LeaveCriticalSection(&filter->filter.stream_cs); + WaitForMultipleObjects(2, events, FALSE, INFINITE); + EnterCriticalSection(&filter->filter.stream_cs); + filter->current_sample = NULL; }
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/evr/evr.c | 4 ++-- dlls/qedit/nullrenderer.c | 5 ++--- dlls/quartz/videorenderer.c | 4 ++-- dlls/quartz/vmr9.c | 4 ++-- dlls/strmbase/renderer.c | 4 ++-- include/wine/strmbase.h | 3 +-- 6 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/dlls/evr/evr.c b/dlls/evr/evr.c index 001839026b2..ff89d85ac8c 100644 --- a/dlls/evr/evr.c +++ b/dlls/evr/evr.c @@ -54,7 +54,7 @@ static HRESULT WINAPI evr_DoRenderSample(struct strmbase_renderer *iface, IMedia return E_NOTIMPL; }
-static HRESULT WINAPI evr_CheckMediaType(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt) +static HRESULT evr_query_accept(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt) { FIXME("Not implemented.\n"); return E_NOTIMPL; @@ -62,7 +62,7 @@ static HRESULT WINAPI evr_CheckMediaType(struct strmbase_renderer *iface, const
static const struct strmbase_renderer_ops renderer_ops = { - .pfnCheckMediaType = evr_CheckMediaType, + .renderer_query_accept = evr_query_accept, .pfnDoRenderSample = evr_DoRenderSample, .renderer_destroy = evr_destroy, }; diff --git a/dlls/qedit/nullrenderer.c b/dlls/qedit/nullrenderer.c index e703ea24305..a9319b06efe 100644 --- a/dlls/qedit/nullrenderer.c +++ b/dlls/qedit/nullrenderer.c @@ -41,9 +41,8 @@ static HRESULT WINAPI NullRenderer_DoRenderSample(struct strmbase_renderer *ifac return S_OK; }
-static HRESULT WINAPI NullRenderer_CheckMediaType(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt) +static HRESULT null_renderer_query_accept(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt) { - TRACE("Not a stub!\n"); return S_OK; }
@@ -57,7 +56,7 @@ static void null_renderer_destroy(struct strmbase_renderer *iface)
static const struct strmbase_renderer_ops renderer_ops = { - .pfnCheckMediaType = NullRenderer_CheckMediaType, + .renderer_query_accept = null_renderer_query_accept, .pfnDoRenderSample = NullRenderer_DoRenderSample, .renderer_destroy = null_renderer_destroy, }; diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c index a90e96c8f2a..ec40bc8db9c 100644 --- a/dlls/quartz/videorenderer.c +++ b/dlls/quartz/videorenderer.c @@ -105,7 +105,7 @@ static HRESULT WINAPI VideoRenderer_DoRenderSample(struct strmbase_renderer *ifa return S_OK; }
-static HRESULT WINAPI VideoRenderer_CheckMediaType(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt) +static HRESULT video_renderer_query_accept(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt) { if (!IsEqualGUID(&mt->majortype, &MEDIATYPE_Video)) return S_FALSE; @@ -213,7 +213,7 @@ static RECT video_renderer_get_default_rect(struct video_window *iface)
static const struct strmbase_renderer_ops renderer_ops = { - .pfnCheckMediaType = VideoRenderer_CheckMediaType, + .renderer_query_accept = video_renderer_query_accept, .pfnDoRenderSample = VideoRenderer_DoRenderSample, .renderer_init_stream = video_renderer_init_stream, .renderer_stop_stream = video_renderer_stop_stream, diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c index b98e172e48e..9e8a037eca0 100644 --- a/dlls/quartz/vmr9.c +++ b/dlls/quartz/vmr9.c @@ -312,7 +312,7 @@ static HRESULT WINAPI VMR9_DoRenderSample(struct strmbase_renderer *iface, IMedi return IVMRImagePresenter9_PresentImage(filter->presenter, filter->cookie, &info); }
-static HRESULT WINAPI VMR9_CheckMediaType(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt) +static HRESULT vmr_query_accept(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt) { if (!IsEqualIID(&mt->majortype, &MEDIATYPE_Video) || !mt->pbFormat) return S_FALSE; @@ -637,7 +637,7 @@ static HRESULT vmr_pin_query_interface(struct strmbase_renderer *iface, REFIID i
static const struct strmbase_renderer_ops renderer_ops = { - .pfnCheckMediaType = VMR9_CheckMediaType, + .renderer_query_accept = vmr_query_accept, .pfnDoRenderSample = VMR9_DoRenderSample, .renderer_init_stream = vmr_init_stream, .renderer_start_stream = vmr_start_stream, diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index c95fe63c3f9..7718232e97c 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -302,7 +302,7 @@ static const struct strmbase_filter_ops filter_ops = static HRESULT sink_query_accept(struct strmbase_pin *pin, const AM_MEDIA_TYPE *mt) { struct strmbase_renderer *filter = impl_from_IPin(&pin->IPin_iface); - return filter->pFuncsTable->pfnCheckMediaType(filter, mt); + return filter->pFuncsTable->renderer_query_accept(filter, mt); }
static HRESULT sink_query_interface(struct strmbase_pin *iface, REFIID iid, void **out) @@ -344,7 +344,7 @@ static HRESULT WINAPI BaseRenderer_Receive(struct strmbase_sink *pin, IMediaSamp TRACE("Format change.\n"); strmbase_dump_media_type(mt);
- if (FAILED(filter->pFuncsTable->pfnCheckMediaType(filter, mt))) + if (FAILED(filter->pFuncsTable->renderer_query_accept(filter, mt))) return VFW_E_TYPE_NOT_ACCEPTED; DeleteMediaType(mt); } diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h index 76caf103dee..dbb4a21c071 100644 --- a/include/wine/strmbase.h +++ b/include/wine/strmbase.h @@ -305,13 +305,12 @@ struct strmbase_renderer BOOL eos; };
-typedef HRESULT (WINAPI *BaseRenderer_CheckMediaType)(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt); typedef HRESULT (WINAPI *BaseRenderer_DoRenderSample)(struct strmbase_renderer *iface, IMediaSample *sample); typedef HRESULT (WINAPI *BaseRenderer_BreakConnect) (struct strmbase_renderer *iface);
struct strmbase_renderer_ops { - BaseRenderer_CheckMediaType pfnCheckMediaType; + HRESULT (*renderer_query_accept)(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt); BaseRenderer_DoRenderSample pfnDoRenderSample; void (*renderer_init_stream)(struct strmbase_renderer *iface); void (*renderer_start_stream)(struct strmbase_renderer *iface);