Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/qcap/avico.c | 81 +++++++++++++++-------------------------- dlls/qcap/tests/avico.c | 8 ++-- 2 files changed, 33 insertions(+), 56 deletions(-)
diff --git a/dlls/qcap/avico.c b/dlls/qcap/avico.c index f0f60ae4394..f65f33fe442 100644 --- a/dlls/qcap/avico.c +++ b/dlls/qcap/avico.c @@ -56,12 +56,6 @@ static inline AVICompressor *impl_from_strmbase_filter(struct strmbase_filter *f return CONTAINING_RECORD(filter, AVICompressor, filter); }
-static inline AVICompressor *impl_from_IBaseFilter(IBaseFilter *iface) -{ - struct strmbase_filter *filter = CONTAINING_RECORD(iface, struct strmbase_filter, IBaseFilter_iface); - return impl_from_strmbase_filter(filter); -} - static inline AVICompressor *impl_from_strmbase_pin(struct strmbase_pin *pin) { return impl_from_strmbase_filter(pin->filter); @@ -117,57 +111,14 @@ static HRESULT fill_format_info(AVICompressor *This, VIDEOINFOHEADER *src_videoi return S_OK; }
-static HRESULT WINAPI AVICompressor_Stop(IBaseFilter *iface) -{ - AVICompressor *This = impl_from_IBaseFilter(iface); - - TRACE("(%p)\n", This); - - if(This->filter.state == State_Stopped) - return S_OK; - - ICCompressEnd(This->hic); - This->filter.state = State_Stopped; - return S_OK; -} - -static HRESULT WINAPI AVICompressor_Pause(IBaseFilter *iface) -{ - AVICompressor *This = impl_from_IBaseFilter(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI AVICompressor_Run(IBaseFilter *iface, REFERENCE_TIME tStart) -{ - AVICompressor *This = impl_from_IBaseFilter(iface); - HRESULT hres; - - TRACE("(%p)->(%s)\n", This, wine_dbgstr_longlong(tStart)); - - if(This->filter.state == State_Running) - return S_OK; - - if (This->source.pAllocator && FAILED(hres = IMemAllocator_Commit(This->source.pAllocator))) - { - FIXME("Commit failed: %08x\n", hres); - return hres; - } - - This->frame_cnt = 0; - - This->filter.state = State_Running; - return S_OK; -} - static const IBaseFilterVtbl AVICompressorVtbl = { BaseFilterImpl_QueryInterface, BaseFilterImpl_AddRef, BaseFilterImpl_Release, BaseFilterImpl_GetClassID, - AVICompressor_Stop, - AVICompressor_Pause, - AVICompressor_Run, + BaseFilterImpl_Stop, + BaseFilterImpl_Pause, + BaseFilterImpl_Run, BaseFilterImpl_GetState, BaseFilterImpl_SetSyncSource, BaseFilterImpl_GetSyncSource, @@ -215,11 +166,37 @@ static HRESULT avi_compressor_query_interface(struct strmbase_filter *iface, REF return S_OK; }
+static HRESULT avi_compressor_init_stream(struct strmbase_filter *iface) +{ + AVICompressor *filter = impl_from_strmbase_filter(iface); + HRESULT hr; + + if (filter->source.pAllocator && FAILED(hr = IMemAllocator_Commit(filter->source.pAllocator))) + { + ERR("Failed to commit allocator, hr %#x.\n", hr); + return hr; + } + + filter->frame_cnt = 0; + + return S_OK; +} + +static HRESULT avi_compressor_cleanup_stream(struct strmbase_filter *iface) +{ + AVICompressor *filter = impl_from_strmbase_filter(iface); + + ICCompressEnd(filter->hic); + return S_OK; +} + static const struct strmbase_filter_ops filter_ops = { .filter_get_pin = avi_compressor_get_pin, .filter_destroy = avi_compressor_destroy, .filter_query_interface = avi_compressor_query_interface, + .filter_init_stream = avi_compressor_init_stream, + .filter_cleanup_stream = avi_compressor_cleanup_stream, };
static AVICompressor *impl_from_IPersistPropertyBag(IPersistPropertyBag *iface) diff --git a/dlls/qcap/tests/avico.c b/dlls/qcap/tests/avico.c index 5c6d4aa54f4..b4f52f10210 100644 --- a/dlls/qcap/tests/avico.c +++ b/dlls/qcap/tests/avico.c @@ -665,11 +665,11 @@ static void test_unconnected_filter_state(IBaseFilter *filter) ok(state == State_Stopped, "Got state %u.\n", state);
hr = IBaseFilter_Pause(filter); - todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(hr == S_OK, "Got hr %#x.\n", hr);
hr = IBaseFilter_GetState(filter, 0, &state); ok(hr == S_OK, "Got hr %#x.\n", hr); - todo_wine ok(state == State_Paused, "Got state %u.\n", state); + ok(state == State_Paused, "Got state %u.\n", state);
hr = IBaseFilter_Run(filter, 0); ok(hr == S_OK, "Got hr %#x.\n", hr); @@ -679,11 +679,11 @@ static void test_unconnected_filter_state(IBaseFilter *filter) ok(state == State_Running, "Got state %u.\n", state);
hr = IBaseFilter_Pause(filter); - todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(hr == S_OK, "Got hr %#x.\n", hr);
hr = IBaseFilter_GetState(filter, 0, &state); ok(hr == S_OK, "Got hr %#x.\n", hr); - todo_wine ok(state == State_Paused, "Got state %u.\n", state); + ok(state == State_Paused, "Got state %u.\n", state);
hr = IBaseFilter_Stop(filter); ok(hr == S_OK, "Got hr %#x.\n", hr);
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/qcap/avimux.c | 58 +++++++++++++--------------------------------- 1 file changed, 16 insertions(+), 42 deletions(-)
diff --git a/dlls/qcap/avimux.c b/dlls/qcap/avimux.c index 1995358ac2f..a7a9ac7ceda 100644 --- a/dlls/qcap/avimux.c +++ b/dlls/qcap/avimux.c @@ -167,19 +167,6 @@ static HRESULT avi_mux_query_interface(struct strmbase_filter *iface, REFIID iid return S_OK; }
-static const struct strmbase_filter_ops filter_ops = -{ - .filter_get_pin = avi_mux_get_pin, - .filter_destroy = avi_mux_destroy, - .filter_query_interface = avi_mux_query_interface, -}; - -static inline AviMux* impl_from_IBaseFilter(IBaseFilter *iface) -{ - struct strmbase_filter *filter = CONTAINING_RECORD(iface, struct strmbase_filter, IBaseFilter_iface); - return impl_from_strmbase_filter(filter); -} - static HRESULT out_flush(AviMux *This) { ULONG written; @@ -420,17 +407,12 @@ static HRESULT queue_sample(AviMux *avimux, AviMuxIn *avimuxin, IMediaSample *sa return flush_queue(avimux, avimuxin, FALSE); }
-static HRESULT WINAPI AviMux_Stop(IBaseFilter *iface) +static HRESULT avi_mux_cleanup_stream(struct strmbase_filter *iface) { - AviMux *This = impl_from_IBaseFilter(iface); + AviMux *This = impl_from_strmbase_filter(iface); HRESULT hr; int i;
- TRACE("(%p)\n", This); - - if(This->filter.state == State_Stopped) - return S_OK; - if (This->stream) { AVIEXTHEADER dmlh; @@ -559,36 +541,20 @@ static HRESULT WINAPI AviMux_Stop(IBaseFilter *iface) This->stream = NULL; }
- This->filter.state = State_Stopped; return S_OK; }
-static HRESULT WINAPI AviMux_Pause(IBaseFilter *iface) +static HRESULT avi_mux_init_stream(struct strmbase_filter *iface) { - AviMux *This = impl_from_IBaseFilter(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI AviMux_Run(IBaseFilter *iface, REFERENCE_TIME tStart) -{ - AviMux *This = impl_from_IBaseFilter(iface); + AviMux *This = impl_from_strmbase_filter(iface); HRESULT hr; int i, stream_id;
- TRACE("(%p)->(%s)\n", This, wine_dbgstr_longlong(tStart)); - - if(This->filter.state == State_Running) - return S_OK; - if(This->mode != INTERLEAVE_FULL) { FIXME("mode not supported (%d)\n", This->mode); return E_NOTIMPL; }
- if(tStart) - FIXME("tStart parameter ignored\n"); - for(i=0; i<This->input_pin_no; i++) { IMediaSeeking *ms; LONGLONG cur, stop; @@ -694,18 +660,26 @@ static HRESULT WINAPI AviMux_Run(IBaseFilter *iface, REFERENCE_TIME tStart) This->avih.dwWidth = ((BITMAPINFOHEADER*)This->in[0]->strf->data)->biWidth; This->avih.dwHeight = ((BITMAPINFOHEADER*)This->in[0]->strf->data)->biHeight;
- This->filter.state = State_Running; return S_OK; }
+static const struct strmbase_filter_ops filter_ops = +{ + .filter_get_pin = avi_mux_get_pin, + .filter_destroy = avi_mux_destroy, + .filter_query_interface = avi_mux_query_interface, + .filter_init_stream = avi_mux_init_stream, + .filter_cleanup_stream = avi_mux_cleanup_stream, +}; + static const IBaseFilterVtbl AviMuxVtbl = { BaseFilterImpl_QueryInterface, BaseFilterImpl_AddRef, BaseFilterImpl_Release, BaseFilterImpl_GetClassID, - AviMux_Stop, - AviMux_Pause, - AviMux_Run, + BaseFilterImpl_Stop, + BaseFilterImpl_Pause, + BaseFilterImpl_Run, BaseFilterImpl_GetState, BaseFilterImpl_SetSyncSource, BaseFilterImpl_GetSyncSource,
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/qcap/capture.h | 7 +- dlls/qcap/v4l.c | 166 +++++++++++++---------------------------- dlls/qcap/vfwcapture.c | 60 ++++++++------- 3 files changed, 89 insertions(+), 144 deletions(-)
diff --git a/dlls/qcap/capture.h b/dlls/qcap/capture.h index 6433f37d88f..7d2be332488 100644 --- a/dlls/qcap/capture.h +++ b/dlls/qcap/capture.h @@ -31,8 +31,9 @@ HRESULT qcap_driver_get_format(const Capture *, AM_MEDIA_TYPE *) DECLSPEC_HIDDEN HRESULT qcap_driver_get_prop_range(Capture*,VideoProcAmpProperty,LONG*,LONG*,LONG*,LONG*,LONG*) DECLSPEC_HIDDEN; HRESULT qcap_driver_get_prop(Capture*,VideoProcAmpProperty,LONG*,LONG*) DECLSPEC_HIDDEN; HRESULT qcap_driver_set_prop(Capture*,VideoProcAmpProperty,LONG,LONG) DECLSPEC_HIDDEN; -HRESULT qcap_driver_run(Capture*,FILTER_STATE*) DECLSPEC_HIDDEN; -HRESULT qcap_driver_pause(Capture*,FILTER_STATE*) DECLSPEC_HIDDEN; -HRESULT qcap_driver_stop(Capture*,FILTER_STATE*) DECLSPEC_HIDDEN; +void qcap_driver_init_stream(Capture *device) DECLSPEC_HIDDEN; +void qcap_driver_start_stream(Capture *device) DECLSPEC_HIDDEN; +void qcap_driver_stop_stream(Capture *device) DECLSPEC_HIDDEN; +void qcap_driver_cleanup_stream(Capture *device) DECLSPEC_HIDDEN;
#endif /* __QCAP_CAPTURE_H__ */ diff --git a/dlls/qcap/v4l.c b/dlls/qcap/v4l.c index a203e91e52b..75121fd8518 100644 --- a/dlls/qcap/v4l.c +++ b/dlls/qcap/v4l.c @@ -99,13 +99,11 @@ struct _Capture UINT width, height, bitDepth, fps, outputwidth, outputheight; BOOL swresize;
- CRITICAL_SECTION CritSect; - struct strmbase_source *pin; int fd, mmap; - BOOL iscommitted, stopped; + FILTER_STATE state;
- HANDLE thread; + HANDLE thread, run_event; };
static int xioctl(int fd, int request, void * arg) @@ -125,8 +123,6 @@ HRESULT qcap_driver_destroy(Capture *capBox)
if( capBox->fd != -1 ) video_close(capBox->fd); - capBox->CritSect.DebugInfo->Spare[0] = 0; - DeleteCriticalSection(&capBox->CritSect); CoTaskMemFree(capBox); return S_OK; } @@ -389,16 +385,14 @@ static DWORD WINAPI ReadThread(LPVOID lParam) if (!(image_data = heap_alloc(image_size))) { ERR("Failed to allocate memory.\n"); - capBox->thread = 0; - capBox->stopped = TRUE; return 0; }
- while (1) + while (capBox->state != State_Stopped) { - EnterCriticalSection(&capBox->CritSect); - if (capBox->stopped) - break; + if (capBox->state == State_Paused) + WaitForSingleObject(capBox->run_event, INFINITE); + hr = BaseOutputPinImpl_GetDeliveryBuffer(capBox->pin, &pSample, NULL, NULL, 0); if (SUCCEEDED(hr)) { @@ -432,124 +426,66 @@ static DWORD WINAPI ReadThread(LPVOID lParam) if (FAILED(hr) && hr != VFW_E_NOT_CONNECTED) { TRACE("Return %x, stop IFilterGraph\n", hr); - capBox->thread = 0; - capBox->stopped = TRUE; break; } - LeaveCriticalSection(&capBox->CritSect); }
- LeaveCriticalSection(&capBox->CritSect); heap_free(image_data); return 0; }
-HRESULT qcap_driver_run(Capture *capBox, FILTER_STATE *state) +void qcap_driver_init_stream(Capture *device) { - HANDLE thread; + ALLOCATOR_PROPERTIES req_props, ret_props; HRESULT hr;
- TRACE("%p -> (%p)\n", capBox, state); - - if (*state == State_Running) return S_OK; - - EnterCriticalSection(&capBox->CritSect); + req_props.cBuffers = 3; + if (!device->swresize) + req_props.cbBuffer = device->width * device->height; + else + req_props.cbBuffer = device->outputwidth * device->outputheight; + req_props.cbBuffer = (req_props.cbBuffer * device->bitDepth) / 8; + req_props.cbAlign = 1; + req_props.cbPrefix = 0;
- capBox->stopped = FALSE; + hr = IMemAllocator_SetProperties(device->pin->pAllocator, &req_props, &ret_props); + if (FAILED(hr)) + ERR("Failed to set allocator properties (buffer size %u), hr %#x.\n", req_props.cbBuffer, hr);
- if (*state == State_Stopped && capBox->pin->pin.peer) + if (SUCCEEDED(hr)) { - *state = State_Running; - if (!capBox->iscommitted) - { - ALLOCATOR_PROPERTIES ap, actual; - - capBox->iscommitted = TRUE; - - ap.cBuffers = 3; - if (!capBox->swresize) - ap.cbBuffer = capBox->width * capBox->height; - else - ap.cbBuffer = capBox->outputwidth * capBox->outputheight; - ap.cbBuffer = (ap.cbBuffer * capBox->bitDepth) / 8; - ap.cbAlign = 1; - ap.cbPrefix = 0; - - hr = IMemAllocator_SetProperties(capBox->pin->pAllocator, &ap, &actual); - - if (SUCCEEDED(hr)) - hr = IMemAllocator_Commit(capBox->pin->pAllocator); - - TRACE("Committing allocator: %x\n", hr); - } - - thread = CreateThread(NULL, 0, ReadThread, capBox, 0, NULL); - if (thread) - { - capBox->thread = thread; - SetThreadPriority(thread, THREAD_PRIORITY_LOWEST); - LeaveCriticalSection(&capBox->CritSect); - return S_OK; - } - ERR("Creating thread failed.. %u\n", GetLastError()); - LeaveCriticalSection(&capBox->CritSect); - return E_FAIL; + if (FAILED(hr = IMemAllocator_Commit(device->pin->pAllocator))) + ERR("Failed to commit allocator, hr %#x.\n", hr); }
- ResumeThread(capBox->thread); - *state = State_Running; - LeaveCriticalSection(&capBox->CritSect); - return S_OK; + device->state = State_Paused; + device->thread = CreateThread(NULL, 0, ReadThread, device, 0, NULL); }
-HRESULT qcap_driver_pause(Capture *capBox, FILTER_STATE *state) +void qcap_driver_start_stream(Capture *device) { - TRACE("%p -> (%p)\n", capBox, state); - - if (*state == State_Paused) - return S_OK; - if (*state == State_Stopped) - qcap_driver_run(capBox, state); - - EnterCriticalSection(&capBox->CritSect); - *state = State_Paused; - SuspendThread(capBox->thread); - LeaveCriticalSection(&capBox->CritSect); - - return S_OK; + device->state = State_Running; + SetEvent(device->run_event); }
-HRESULT qcap_driver_stop(Capture *capBox, FILTER_STATE *state) +void qcap_driver_stop_stream(Capture *device) { - TRACE("%p -> (%p)\n", capBox, state); - - if (*state == State_Stopped) - return S_OK; - - EnterCriticalSection(&capBox->CritSect); - - if (capBox->thread) - { - if (*state == State_Paused) - ResumeThread(capBox->thread); - capBox->stopped = TRUE; - capBox->thread = 0; - if (capBox->iscommitted) - { - HRESULT hr; - - capBox->iscommitted = FALSE; - - hr = IMemAllocator_Decommit(capBox->pin->pAllocator); + device->state = State_Paused; + ResetEvent(device->run_event); +}
- if (hr != S_OK && hr != VFW_E_NOT_COMMITTED) - WARN("Decommitting allocator: %x\n", hr); - } - } +void qcap_driver_cleanup_stream(Capture *device) +{ + HRESULT hr;
- *state = State_Stopped; - LeaveCriticalSection(&capBox->CritSect); - return S_OK; + device->state = State_Stopped; + WaitForSingleObject(device->thread, INFINITE); + CloseHandle(device->thread); + device->thread = NULL; + + hr = IMemAllocator_Decommit(device->pin->pAllocator); + if (hr != S_OK && hr != VFW_E_NOT_COMMITTED) + ERR("Failed to decommit allocator, hr %#x.\n", hr); }
Capture *qcap_driver_init(struct strmbase_source *pin, USHORT card) @@ -566,9 +502,6 @@ Capture *qcap_driver_init(struct strmbase_source *pin, USHORT card) if (!(device = CoTaskMemAlloc(sizeof(*device)))) return NULL;
- InitializeCriticalSection(&device->CritSect); - device->CritSect.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": Capture.CritSect"); - sprintf(path, "/dev/video%i", card); TRACE("Opening device %s.\n", path); #ifdef O_CLOEXEC @@ -635,8 +568,8 @@ Capture *qcap_driver_init(struct strmbase_source *pin, USHORT card) device->bitDepth = 24; device->pin = pin; device->fps = 3; - device->stopped = FALSE; - device->iscommitted = FALSE; + device->state = State_Stopped; + device->run_event = CreateEventW(NULL, TRUE, FALSE, NULL);
TRACE("Format: %d bpp - %dx%d.\n", device->bitDepth, device->width, device->height);
@@ -701,17 +634,22 @@ HRESULT qcap_driver_set_prop(Capture *capBox, VideoProcAmpProperty Property, FAIL_WITH_ERR; }
-HRESULT qcap_driver_run(Capture *capBox, FILTER_STATE *state) +void qcap_driver_init_stream(Capture *device) +{ + FAIL_WITH_ERR; +} + +void qcap_driver_start_stream(Capture *device) { FAIL_WITH_ERR; }
-HRESULT qcap_driver_pause(Capture *capBox, FILTER_STATE *state) +void qcap_driver_stop_stream(Capture *device) { FAIL_WITH_ERR; }
-HRESULT qcap_driver_stop(Capture *capBox, FILTER_STATE *state) +void qcap_driver_cleanup_stream(Capture *device) { FAIL_WITH_ERR; } diff --git a/dlls/qcap/vfwcapture.c b/dlls/qcap/vfwcapture.c index 2b60e542eba..0f8beb0f495 100644 --- a/dlls/qcap/vfwcapture.c +++ b/dlls/qcap/vfwcapture.c @@ -62,11 +62,6 @@ static inline VfwCapture *impl_from_strmbase_filter(struct strmbase_filter *ifac return CONTAINING_RECORD(iface, VfwCapture, filter); }
-static inline VfwCapture *impl_from_IBaseFilter(IBaseFilter *iface) -{ - return CONTAINING_RECORD(iface, VfwCapture, filter.IBaseFilter_iface); -} - static inline VfwCapture *impl_from_IAMStreamConfig(IAMStreamConfig *iface) { return CONTAINING_RECORD(iface, VfwCapture, IAMStreamConfig_iface); @@ -99,7 +94,7 @@ static void vfw_capture_destroy(struct strmbase_filter *iface) if (filter->init) { if (filter->filter.state != State_Stopped) - qcap_driver_stop(filter->driver_info, &filter->filter.state); + qcap_driver_stop_stream(filter->driver_info); qcap_driver_destroy(filter->driver_info); }
@@ -129,47 +124,58 @@ static HRESULT vfw_capture_query_interface(struct strmbase_filter *iface, REFIID return S_OK; }
-static const struct strmbase_filter_ops filter_ops = +static HRESULT vfw_capture_init_stream(struct strmbase_filter *iface) { - .filter_get_pin = vfw_capture_get_pin, - .filter_destroy = vfw_capture_destroy, - .filter_query_interface = vfw_capture_query_interface, -}; + VfwCapture *filter = impl_from_strmbase_filter(iface);
-/** IMediaFilter methods **/ + qcap_driver_init_stream(filter->driver_info); + return VFW_S_CANT_CUE; +}
-static HRESULT WINAPI VfwCapture_Stop(IBaseFilter * iface) +static HRESULT vfw_capture_start_stream(struct strmbase_filter *iface, REFERENCE_TIME time) { - VfwCapture *This = impl_from_IBaseFilter(iface); + VfwCapture *filter = impl_from_strmbase_filter(iface);
- TRACE("()\n"); - return qcap_driver_stop(This->driver_info, &This->filter.state); + qcap_driver_start_stream(filter->driver_info); + return S_OK; }
-static HRESULT WINAPI VfwCapture_Pause(IBaseFilter * iface) +static HRESULT vfw_capture_stop_stream(struct strmbase_filter *iface) { - VfwCapture *This = impl_from_IBaseFilter(iface); + VfwCapture *filter = impl_from_strmbase_filter(iface);
- TRACE("()\n"); - return qcap_driver_pause(This->driver_info, &This->filter.state); + qcap_driver_stop_stream(filter->driver_info); + return VFW_S_CANT_CUE; }
-static HRESULT WINAPI VfwCapture_Run(IBaseFilter * iface, REFERENCE_TIME tStart) +static HRESULT vfw_capture_cleanup_stream(struct strmbase_filter *iface) { - VfwCapture *This = impl_from_IBaseFilter(iface); - TRACE("(%s)\n", wine_dbgstr_longlong(tStart)); - return qcap_driver_run(This->driver_info, &This->filter.state); + VfwCapture *filter = impl_from_strmbase_filter(iface); + + qcap_driver_cleanup_stream(filter->driver_info); + return S_OK; }
+static const struct strmbase_filter_ops filter_ops = +{ + .filter_get_pin = vfw_capture_get_pin, + .filter_destroy = vfw_capture_destroy, + .filter_query_interface = vfw_capture_query_interface, + .filter_init_stream = vfw_capture_init_stream, + .filter_start_stream = vfw_capture_start_stream, + .filter_stop_stream = vfw_capture_stop_stream, + .filter_cleanup_stream = vfw_capture_cleanup_stream, +}; + static const IBaseFilterVtbl VfwCapture_Vtbl = { BaseFilterImpl_QueryInterface, BaseFilterImpl_AddRef, BaseFilterImpl_Release, BaseFilterImpl_GetClassID, - VfwCapture_Stop, - VfwCapture_Pause, - VfwCapture_Run, + BaseFilterImpl_Stop, + BaseFilterImpl_Pause, + BaseFilterImpl_Run, BaseFilterImpl_GetState, BaseFilterImpl_SetSyncSource, BaseFilterImpl_GetSyncSource,
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/qcap/audiorecord.c | 20 +----------- dlls/qcap/avico.c | 20 +----------- dlls/qcap/avimux.c | 20 +----------- dlls/qcap/smartteefilter.c | 20 +----------- dlls/qcap/vfwcapture.c | 21 +----------- dlls/qedit/samplegrabber.c | 21 +----------- dlls/quartz/dsoundrender.c | 12 +++---- dlls/quartz/filesource.c | 21 +----------- dlls/quartz/tests/videorenderer.c | 21 +----------- dlls/quartz/tests/vmr7.c | 21 +----------- dlls/quartz/tests/vmr9.c | 21 +----------- dlls/strmbase/filter.c | 53 +++++++++++++++++++++---------- dlls/strmbase/renderer.c | 21 +----------- dlls/strmbase/transform.c | 22 +------------ dlls/winegstreamer/gstdemux.c | 27 +++------------- dlls/wineqtdecoder/qtsplitter.c | 20 +----------- include/wine/strmbase.h | 18 +---------- 17 files changed, 60 insertions(+), 319 deletions(-)
diff --git a/dlls/qcap/audiorecord.c b/dlls/qcap/audiorecord.c index 0262bc5bd8f..3c15734e894 100644 --- a/dlls/qcap/audiorecord.c +++ b/dlls/qcap/audiorecord.c @@ -49,24 +49,6 @@ static inline AudioRecord *impl_from_IPersistPropertyBag(IPersistPropertyBag *if return CONTAINING_RECORD(iface, AudioRecord, IPersistPropertyBag_iface); }
-static const IBaseFilterVtbl AudioRecordVtbl = { - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo -}; - static struct strmbase_pin *audio_record_get_pin(struct strmbase_filter *iface, unsigned int index) { FIXME("iface %p, index %u, stub!\n", iface, index); @@ -186,7 +168,7 @@ IUnknown* WINAPI QCAP_createAudioCaptureFilter(IUnknown *outer, HRESULT *phr) memset(This, 0, sizeof(*This)); This->IPersistPropertyBag_iface.lpVtbl = &PersistPropertyBagVtbl;
- strmbase_filter_init(&This->filter, &AudioRecordVtbl, outer, &CLSID_AudioRecord, &filter_ops); + strmbase_filter_init(&This->filter, outer, &CLSID_AudioRecord, &filter_ops);
*phr = S_OK; return &This->filter.IUnknown_inner; diff --git a/dlls/qcap/avico.c b/dlls/qcap/avico.c index f65f33fe442..9365c437b4f 100644 --- a/dlls/qcap/avico.c +++ b/dlls/qcap/avico.c @@ -111,24 +111,6 @@ static HRESULT fill_format_info(AVICompressor *This, VIDEOINFOHEADER *src_videoi return S_OK; }
-static const IBaseFilterVtbl AVICompressorVtbl = { - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo, -}; - static struct strmbase_pin *avi_compressor_get_pin(struct strmbase_filter *iface, unsigned int index) { AVICompressor *filter = impl_from_strmbase_filter(iface); @@ -576,7 +558,7 @@ IUnknown* WINAPI QCAP_createAVICompressor(IUnknown *outer, HRESULT *phr) return NULL; }
- strmbase_filter_init(&compressor->filter, &AVICompressorVtbl, outer, &CLSID_AVICo, &filter_ops); + strmbase_filter_init(&compressor->filter, outer, &CLSID_AVICo, &filter_ops);
compressor->IPersistPropertyBag_iface.lpVtbl = &PersistPropertyBagVtbl;
diff --git a/dlls/qcap/avimux.c b/dlls/qcap/avimux.c index a7a9ac7ceda..dc28104c80a 100644 --- a/dlls/qcap/avimux.c +++ b/dlls/qcap/avimux.c @@ -672,24 +672,6 @@ static const struct strmbase_filter_ops filter_ops = .filter_cleanup_stream = avi_mux_cleanup_stream, };
-static const IBaseFilterVtbl AviMuxVtbl = { - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo -}; - static inline AviMux* impl_from_IConfigAviMux(IConfigAviMux *iface) { return CONTAINING_RECORD(iface, AviMux, IConfigAviMux_iface); @@ -1964,7 +1946,7 @@ IUnknown * WINAPI QCAP_createAVIMux(IUnknown *outer, HRESULT *phr) return NULL; }
- strmbase_filter_init(&avimux->filter, &AviMuxVtbl, outer, &CLSID_AviDest, &filter_ops); + strmbase_filter_init(&avimux->filter, outer, &CLSID_AviDest, &filter_ops); avimux->IConfigAviMux_iface.lpVtbl = &ConfigAviMuxVtbl; avimux->IConfigInterleaving_iface.lpVtbl = &ConfigInterleavingVtbl; avimux->IMediaSeeking_iface.lpVtbl = &MediaSeekingVtbl; diff --git a/dlls/qcap/smartteefilter.c b/dlls/qcap/smartteefilter.c index f63a43de50c..7762ec1e500 100644 --- a/dlls/qcap/smartteefilter.c +++ b/dlls/qcap/smartteefilter.c @@ -51,24 +51,6 @@ static inline SmartTeeFilter *impl_from_strmbase_pin(struct strmbase_pin *pin) return impl_from_strmbase_filter(pin->filter); }
-static const IBaseFilterVtbl SmartTeeFilterVtbl = { - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo -}; - static struct strmbase_pin *smart_tee_get_pin(struct strmbase_filter *iface, unsigned int index) { SmartTeeFilter *filter = impl_from_strmbase_filter(iface); @@ -417,7 +399,7 @@ IUnknown* WINAPI QCAP_createSmartTeeFilter(IUnknown *outer, HRESULT *phr) } memset(object, 0, sizeof(*object));
- strmbase_filter_init(&object->filter, &SmartTeeFilterVtbl, outer, &CLSID_SmartTee, &filter_ops); + strmbase_filter_init(&object->filter, outer, &CLSID_SmartTee, &filter_ops); strmbase_sink_init(&object->sink, &SmartTeeFilterInputVtbl, &object->filter, inputW, &sink_ops, NULL); hr = CoCreateInstance(&CLSID_MemoryAllocator, NULL, CLSCTX_INPROC_SERVER, &IID_IMemAllocator, (void **)&object->sink.pAllocator); diff --git a/dlls/qcap/vfwcapture.c b/dlls/qcap/vfwcapture.c index 0f8beb0f495..e7522ea9b36 100644 --- a/dlls/qcap/vfwcapture.c +++ b/dlls/qcap/vfwcapture.c @@ -167,25 +167,6 @@ static const struct strmbase_filter_ops filter_ops = .filter_cleanup_stream = vfw_capture_cleanup_stream, };
-static const IBaseFilterVtbl VfwCapture_Vtbl = -{ - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo -}; - /* AMStreamConfig interface, we only need to implement {G,S}etFormat */ static HRESULT WINAPI AMStreamConfig_QueryInterface(IAMStreamConfig *iface, REFIID iid, void **out) { @@ -611,7 +592,7 @@ IUnknown * WINAPI QCAP_createVFWCaptureFilter(IUnknown *outer, HRESULT *phr) return NULL; }
- strmbase_filter_init(&object->filter, &VfwCapture_Vtbl, outer, &CLSID_VfwCapture, &filter_ops); + strmbase_filter_init(&object->filter, outer, &CLSID_VfwCapture, &filter_ops);
object->IAMStreamConfig_iface.lpVtbl = &IAMStreamConfig_VTable; object->IAMVideoProcAmp_iface.lpVtbl = &IAMVideoProcAmp_VTable; diff --git a/dlls/qedit/samplegrabber.c b/dlls/qedit/samplegrabber.c index af05966c140..019af5c35de 100644 --- a/dlls/qedit/samplegrabber.c +++ b/dlls/qedit/samplegrabber.c @@ -489,25 +489,6 @@ SampleGrabber_In_IPin_ReceiveConnection(IPin *iface, IPin *connector, const AM_M return S_OK; }
-static const IBaseFilterVtbl IBaseFilter_VTable = -{ - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo, -}; - static const ISampleGrabberVtbl ISampleGrabber_VTable = { SampleGrabber_ISampleGrabber_QueryInterface, @@ -714,7 +695,7 @@ HRESULT SampleGrabber_create(IUnknown *outer, void **out) } ZeroMemory(obj, sizeof(SG_Impl));
- strmbase_filter_init(&obj->filter, &IBaseFilter_VTable, outer, &CLSID_SampleGrabber, &filter_ops); + strmbase_filter_init(&obj->filter, outer, &CLSID_SampleGrabber, &filter_ops); obj->ISampleGrabber_iface.lpVtbl = &ISampleGrabber_VTable; obj->IMemInputPin_iface.lpVtbl = &IMemInputPin_VTable;
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c index a2c7ca94a62..cad210a8762 100644 --- a/dlls/quartz/dsoundrender.c +++ b/dlls/quartz/dsoundrender.c @@ -555,7 +555,7 @@ static HRESULT WINAPI Basicaudio_QueryInterface(IBasicAudio *iface,
TRACE("(%p/%p)->(%s, %p)\n", This, iface, debugstr_guid(riid), ppvObj);
- return BaseFilterImpl_QueryInterface(&This->renderer.filter.IBaseFilter_iface, riid, ppvObj); + return IUnknown_QueryInterface(This->renderer.filter.outer_unk, riid, ppvObj); }
static ULONG WINAPI Basicaudio_AddRef(IBasicAudio *iface) { @@ -563,7 +563,7 @@ static ULONG WINAPI Basicaudio_AddRef(IBasicAudio *iface) {
TRACE("(%p/%p)->()\n", This, iface);
- return BaseFilterImpl_AddRef(&This->renderer.filter.IBaseFilter_iface); + return IUnknown_AddRef(This->renderer.filter.outer_unk); }
static ULONG WINAPI Basicaudio_Release(IBasicAudio *iface) { @@ -571,7 +571,7 @@ static ULONG WINAPI Basicaudio_Release(IBasicAudio *iface) {
TRACE("(%p/%p)->()\n", This, iface);
- return BaseFilterImpl_Release(&This->renderer.filter.IBaseFilter_iface); + return IUnknown_Release(This->renderer.filter.outer_unk); }
HRESULT WINAPI basic_audio_GetTypeInfoCount(IBasicAudio *iface, UINT *count) @@ -708,7 +708,7 @@ static HRESULT WINAPI AMDirectSound_QueryInterface(IAMDirectSound *iface,
TRACE("(%p/%p)->(%s, %p)\n", This, iface, debugstr_guid(riid), ppvObj);
- return BaseFilterImpl_QueryInterface(&This->renderer.filter.IBaseFilter_iface, riid, ppvObj); + return IUnknown_QueryInterface(This->renderer.filter.outer_unk, riid, ppvObj); }
static ULONG WINAPI AMDirectSound_AddRef(IAMDirectSound *iface) @@ -717,7 +717,7 @@ static ULONG WINAPI AMDirectSound_AddRef(IAMDirectSound *iface)
TRACE("(%p/%p)->()\n", This, iface);
- return BaseFilterImpl_AddRef(&This->renderer.filter.IBaseFilter_iface); + return IUnknown_AddRef(This->renderer.filter.outer_unk); }
static ULONG WINAPI AMDirectSound_Release(IAMDirectSound *iface) @@ -726,7 +726,7 @@ static ULONG WINAPI AMDirectSound_Release(IAMDirectSound *iface)
TRACE("(%p/%p)->()\n", This, iface);
- return BaseFilterImpl_Release(&This->renderer.filter.IBaseFilter_iface); + return IUnknown_Release(This->renderer.filter.outer_unk); }
/*** IAMDirectSound methods ***/ diff --git a/dlls/quartz/filesource.c b/dlls/quartz/filesource.c index 1c17980f58c..e0d45730aec 100644 --- a/dlls/quartz/filesource.c +++ b/dlls/quartz/filesource.c @@ -412,7 +412,7 @@ HRESULT AsyncReader_create(IUnknown *outer, void **out) if (!pAsyncRead) return E_OUTOFMEMORY;
- strmbase_filter_init(&pAsyncRead->filter, &AsyncReader_Vtbl, outer, &CLSID_AsyncReader, &filter_ops); + strmbase_filter_init(&pAsyncRead->filter, outer, &CLSID_AsyncReader, &filter_ops);
pAsyncRead->IFileSourceFilter_iface.lpVtbl = &FileSource_Vtbl;
@@ -428,25 +428,6 @@ HRESULT AsyncReader_create(IUnknown *outer, void **out) return S_OK; }
-static const IBaseFilterVtbl AsyncReader_Vtbl = -{ - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo -}; - static HRESULT WINAPI FileSource_QueryInterface(IFileSourceFilter * iface, REFIID riid, LPVOID * ppv) { AsyncReader *This = impl_from_IFileSourceFilter(iface); diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c index d3810598682..6f9e47b9dc4 100644 --- a/dlls/quartz/tests/videorenderer.c +++ b/dlls/quartz/tests/videorenderer.c @@ -495,25 +495,6 @@ struct testfilter struct strmbase_source source; };
-static const IBaseFilterVtbl testfilter_vtbl = -{ - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo, -}; - static inline struct testfilter *impl_from_BaseFilter(struct strmbase_filter *iface) { return CONTAINING_RECORD(iface, struct testfilter, filter); @@ -597,7 +578,7 @@ static const struct strmbase_source_ops testsource_ops = static void testfilter_init(struct testfilter *filter) { static const GUID clsid = {0xabacab}; - strmbase_filter_init(&filter->filter, &testfilter_vtbl, NULL, &clsid, &testfilter_ops); + strmbase_filter_init(&filter->filter, NULL, &clsid, &testfilter_ops); strmbase_source_init(&filter->source, &testsource_vtbl, &filter->filter, L"", &testsource_ops); }
diff --git a/dlls/quartz/tests/vmr7.c b/dlls/quartz/tests/vmr7.c index 01d9ad10fa4..b8fd3f53cef 100644 --- a/dlls/quartz/tests/vmr7.c +++ b/dlls/quartz/tests/vmr7.c @@ -855,25 +855,6 @@ struct testfilter struct strmbase_source source; };
-static const IBaseFilterVtbl testfilter_vtbl = -{ - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo, -}; - static inline struct testfilter *impl_from_strmbase_filter(struct strmbase_filter *iface) { return CONTAINING_RECORD(iface, struct testfilter, filter); @@ -957,7 +938,7 @@ static const struct strmbase_source_ops testsource_ops = static void testfilter_init(struct testfilter *filter) { static const GUID clsid = {0xabacab}; - strmbase_filter_init(&filter->filter, &testfilter_vtbl, NULL, &clsid, &testfilter_ops); + strmbase_filter_init(&filter->filter, NULL, &clsid, &testfilter_ops); strmbase_source_init(&filter->source, &testsource_vtbl, &filter->filter, L"", &testsource_ops); }
diff --git a/dlls/quartz/tests/vmr9.c b/dlls/quartz/tests/vmr9.c index 9379fa11e48..18971495753 100644 --- a/dlls/quartz/tests/vmr9.c +++ b/dlls/quartz/tests/vmr9.c @@ -859,25 +859,6 @@ struct testfilter struct strmbase_source source; };
-static const IBaseFilterVtbl testfilter_vtbl = -{ - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo, -}; - static inline struct testfilter *impl_from_strmbase_filter(struct strmbase_filter *iface) { return CONTAINING_RECORD(iface, struct testfilter, filter); @@ -961,7 +942,7 @@ static const struct strmbase_source_ops testsource_ops = static void testfilter_init(struct testfilter *filter) { static const GUID clsid = {0xabacab}; - strmbase_filter_init(&filter->filter, &testfilter_vtbl, NULL, &clsid, &testfilter_ops); + strmbase_filter_init(&filter->filter, NULL, &clsid, &testfilter_ops); strmbase_source_init(&filter->source, &testsource_vtbl, &filter->filter, L"", &testsource_ops); }
diff --git a/dlls/strmbase/filter.c b/dlls/strmbase/filter.c index f90f760a49e..53307884c4d 100644 --- a/dlls/strmbase/filter.c +++ b/dlls/strmbase/filter.c @@ -271,25 +271,25 @@ static inline struct strmbase_filter *impl_from_IBaseFilter(IBaseFilter *iface) return CONTAINING_RECORD(iface, struct strmbase_filter, IBaseFilter_iface); }
-HRESULT WINAPI BaseFilterImpl_QueryInterface(IBaseFilter *iface, REFIID iid, void **out) +static HRESULT WINAPI filter_QueryInterface(IBaseFilter *iface, REFIID iid, void **out) { struct strmbase_filter *filter = impl_from_IBaseFilter(iface); return IUnknown_QueryInterface(filter->outer_unk, iid, out); }
-ULONG WINAPI BaseFilterImpl_AddRef(IBaseFilter *iface) +static ULONG WINAPI filter_AddRef(IBaseFilter *iface) { struct strmbase_filter *filter = impl_from_IBaseFilter(iface); return IUnknown_AddRef(filter->outer_unk); }
-ULONG WINAPI BaseFilterImpl_Release(IBaseFilter *iface) +static ULONG WINAPI filter_Release(IBaseFilter *iface) { struct strmbase_filter *filter = impl_from_IBaseFilter(iface); return IUnknown_Release(filter->outer_unk); }
-HRESULT WINAPI BaseFilterImpl_GetClassID(IBaseFilter * iface, CLSID * pClsid) +static HRESULT WINAPI filter_GetClassID(IBaseFilter * iface, CLSID * pClsid) { struct strmbase_filter *This = impl_from_IBaseFilter(iface); TRACE("(%p)->(%p)\n", This, pClsid); @@ -299,7 +299,7 @@ HRESULT WINAPI BaseFilterImpl_GetClassID(IBaseFilter * iface, CLSID * pClsid) return S_OK; }
-HRESULT WINAPI BaseFilterImpl_Stop(IBaseFilter *iface) +static HRESULT WINAPI filter_Stop(IBaseFilter *iface) { struct strmbase_filter *filter = impl_from_IBaseFilter(iface); HRESULT hr = S_OK; @@ -320,7 +320,7 @@ HRESULT WINAPI BaseFilterImpl_Stop(IBaseFilter *iface) return hr; }
-HRESULT WINAPI BaseFilterImpl_Pause(IBaseFilter *iface) +static HRESULT WINAPI filter_Pause(IBaseFilter *iface) { struct strmbase_filter *filter = impl_from_IBaseFilter(iface); HRESULT hr = S_OK; @@ -341,7 +341,7 @@ HRESULT WINAPI BaseFilterImpl_Pause(IBaseFilter *iface) return hr; }
-HRESULT WINAPI BaseFilterImpl_Run(IBaseFilter *iface, REFERENCE_TIME start) +static HRESULT WINAPI filter_Run(IBaseFilter *iface, REFERENCE_TIME start) { struct strmbase_filter *filter = impl_from_IBaseFilter(iface); HRESULT hr = S_OK; @@ -362,7 +362,7 @@ HRESULT WINAPI BaseFilterImpl_Run(IBaseFilter *iface, REFERENCE_TIME start) return hr; }
-HRESULT WINAPI BaseFilterImpl_GetState(IBaseFilter *iface, DWORD timeout, FILTER_STATE *state) +static HRESULT WINAPI filter_GetState(IBaseFilter *iface, DWORD timeout, FILTER_STATE *state) { struct strmbase_filter *filter = impl_from_IBaseFilter(iface); HRESULT hr = S_OK; @@ -380,7 +380,7 @@ HRESULT WINAPI BaseFilterImpl_GetState(IBaseFilter *iface, DWORD timeout, FILTER return hr; }
-HRESULT WINAPI BaseFilterImpl_SetSyncSource(IBaseFilter * iface, IReferenceClock *pClock) +static HRESULT WINAPI filter_SetSyncSource(IBaseFilter * iface, IReferenceClock *pClock) { struct strmbase_filter *This = impl_from_IBaseFilter(iface); TRACE("(%p)->(%p)\n", This, pClock); @@ -398,7 +398,7 @@ HRESULT WINAPI BaseFilterImpl_SetSyncSource(IBaseFilter * iface, IReferenceClock return S_OK; }
-HRESULT WINAPI BaseFilterImpl_GetSyncSource(IBaseFilter * iface, IReferenceClock **ppClock) +static HRESULT WINAPI filter_GetSyncSource(IBaseFilter *iface, IReferenceClock **ppClock) { struct strmbase_filter *This = impl_from_IBaseFilter(iface); TRACE("(%p)->(%p)\n", This, ppClock); @@ -414,7 +414,7 @@ HRESULT WINAPI BaseFilterImpl_GetSyncSource(IBaseFilter * iface, IReferenceClock return S_OK; }
-HRESULT WINAPI BaseFilterImpl_EnumPins(IBaseFilter *iface, IEnumPins **enum_pins) +static HRESULT WINAPI filter_EnumPins(IBaseFilter *iface, IEnumPins **enum_pins) { struct strmbase_filter *filter = impl_from_IBaseFilter(iface);
@@ -423,7 +423,7 @@ HRESULT WINAPI BaseFilterImpl_EnumPins(IBaseFilter *iface, IEnumPins **enum_pins return enum_pins_create(filter, enum_pins); }
-HRESULT WINAPI BaseFilterImpl_FindPin(IBaseFilter *iface, const WCHAR *id, IPin **ret) +static HRESULT WINAPI filter_FindPin(IBaseFilter *iface, const WCHAR *id, IPin **ret) { struct strmbase_filter *This = impl_from_IBaseFilter(iface); struct strmbase_pin *pin; @@ -443,7 +443,7 @@ HRESULT WINAPI BaseFilterImpl_FindPin(IBaseFilter *iface, const WCHAR *id, IPin return VFW_E_NOT_FOUND; }
-HRESULT WINAPI BaseFilterImpl_QueryFilterInfo(IBaseFilter * iface, FILTER_INFO *pInfo) +static HRESULT WINAPI filter_QueryFilterInfo(IBaseFilter *iface, FILTER_INFO *pInfo) { struct strmbase_filter *This = impl_from_IBaseFilter(iface); TRACE("(%p)->(%p)\n", This, pInfo); @@ -457,7 +457,7 @@ HRESULT WINAPI BaseFilterImpl_QueryFilterInfo(IBaseFilter * iface, FILTER_INFO * return S_OK; }
-HRESULT WINAPI BaseFilterImpl_JoinFilterGraph(IBaseFilter * iface, IFilterGraph *pGraph, LPCWSTR pName ) +static HRESULT WINAPI filter_JoinFilterGraph(IBaseFilter *iface, IFilterGraph *pGraph, const WCHAR *pName) { struct strmbase_filter *This = impl_from_IBaseFilter(iface);
@@ -476,23 +476,42 @@ HRESULT WINAPI BaseFilterImpl_JoinFilterGraph(IBaseFilter * iface, IFilterGraph return S_OK; }
-HRESULT WINAPI BaseFilterImpl_QueryVendorInfo(IBaseFilter * iface, LPWSTR *pVendorInfo) +static HRESULT WINAPI filter_QueryVendorInfo(IBaseFilter *iface, WCHAR **pVendorInfo) { TRACE("(%p)->(%p)\n", iface, pVendorInfo); return E_NOTIMPL; }
+static const IBaseFilterVtbl filter_vtbl = +{ + filter_QueryInterface, + filter_AddRef, + filter_Release, + filter_GetClassID, + filter_Stop, + filter_Pause, + filter_Run, + filter_GetState, + filter_SetSyncSource, + filter_GetSyncSource, + filter_EnumPins, + filter_FindPin, + filter_QueryFilterInfo, + filter_JoinFilterGraph, + filter_QueryVendorInfo, +}; + VOID WINAPI BaseFilterImpl_IncrementPinVersion(struct strmbase_filter *filter) { InterlockedIncrement(&filter->pin_version); }
-void strmbase_filter_init(struct strmbase_filter *filter, const IBaseFilterVtbl *vtbl, IUnknown *outer, +void strmbase_filter_init(struct strmbase_filter *filter, IUnknown *outer, const CLSID *clsid, const struct strmbase_filter_ops *ops) { memset(filter, 0, sizeof(*filter));
- filter->IBaseFilter_iface.lpVtbl = vtbl; + filter->IBaseFilter_iface.lpVtbl = &filter_vtbl; filter->IUnknown_inner.lpVtbl = &filter_inner_vtbl; filter->outer_unk = outer ? outer : &filter->IUnknown_inner; filter->refcount = 1; diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index cacbb90e591..d592ab034e6 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -448,25 +448,6 @@ HRESULT WINAPI BaseRendererImpl_Receive(struct strmbase_renderer *This, IMediaSa return hr; }
-static const IBaseFilterVtbl strmbase_renderer_vtbl = -{ - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo -}; - HRESULT WINAPI BaseRendererImpl_ClearPendingSample(struct strmbase_renderer *iface) { if (iface->pMediaSample) @@ -483,7 +464,7 @@ HRESULT WINAPI strmbase_renderer_init(struct strmbase_renderer *filter, IUnknown HRESULT hr;
memset(filter, 0, sizeof(*filter)); - strmbase_filter_init(&filter->filter, &strmbase_renderer_vtbl, outer, clsid, &filter_ops); + strmbase_filter_init(&filter->filter, outer, clsid, &filter_ops);
filter->pFuncsTable = ops;
diff --git a/dlls/strmbase/transform.c b/dlls/strmbase/transform.c index 9e2582a0dbf..5c079d38e76 100644 --- a/dlls/strmbase/transform.c +++ b/dlls/strmbase/transform.c @@ -246,26 +246,6 @@ static const struct strmbase_source_ops source_ops = .pfnDecideAllocator = BaseOutputPinImpl_DecideAllocator, };
- -static const IBaseFilterVtbl transform_vtbl = -{ - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo -}; - static TransformFilter *impl_from_source_IQualityControl(IQualityControl *iface) { return CONTAINING_RECORD(iface, TransformFilter, source_IQualityControl_iface); @@ -346,7 +326,7 @@ static HRESULT strmbase_transform_init(IUnknown *outer, const CLSID *clsid, ISeekingPassThru *passthru; HRESULT hr;
- strmbase_filter_init(&filter->filter, &transform_vtbl, outer, clsid, &filter_ops); + strmbase_filter_init(&filter->filter, outer, clsid, &filter_ops);
InitializeCriticalSection(&filter->csReceive); filter->csReceive.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__": TransformFilter.csReceive"); diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c index e024d271974..78c8e38701a 100644 --- a/dlls/winegstreamer/gstdemux.c +++ b/dlls/winegstreamer/gstdemux.c @@ -99,7 +99,6 @@ static const WCHAR wcsInputPinName[] = {'i','n','p','u','t',' ','p','i','n',0}; static const IMediaSeekingVtbl GST_Seeking_Vtbl; static const IPinVtbl GST_OutputPin_Vtbl; static const IPinVtbl GST_InputPin_Vtbl; -static const IBaseFilterVtbl GST_Vtbl; static const IQualityControlVtbl GSTOutPin_QualityControl_Vtbl;
static struct gstdemux_source *create_pin(struct gstdemux *filter, const WCHAR *name); @@ -1438,7 +1437,7 @@ IUnknown * CALLBACK Gstreamer_Splitter_create(IUnknown *outer, HRESULT *phr) return NULL; }
- strmbase_filter_init(&object->filter, &GST_Vtbl, outer, &CLSID_Gstreamer_Splitter, &filter_ops); + strmbase_filter_init(&object->filter, outer, &CLSID_Gstreamer_Splitter, &filter_ops);
object->no_more_pads_event = CreateEventW(NULL, FALSE, FALSE, NULL); object->sink.dir = PINDIR_INPUT; @@ -1453,24 +1452,6 @@ IUnknown * CALLBACK Gstreamer_Splitter_create(IUnknown *outer, HRESULT *phr) return &object->filter.IUnknown_inner; }
-static const IBaseFilterVtbl GST_Vtbl = { - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo -}; - static struct gstdemux *impl_from_IAMStreamSelect(IAMStreamSelect *iface) { return CONTAINING_RECORD(iface, struct gstdemux, IAMStreamSelect_iface); @@ -2383,7 +2364,7 @@ IUnknown * CALLBACK wave_parser_create(IUnknown *outer, HRESULT *phr) return NULL; }
- strmbase_filter_init(&object->filter, &GST_Vtbl, outer, &CLSID_WAVEParser, &filter_ops); + strmbase_filter_init(&object->filter, outer, &CLSID_WAVEParser, &filter_ops);
object->sink.dir = PINDIR_INPUT; object->sink.filter = &object->filter; @@ -2489,7 +2470,7 @@ IUnknown * CALLBACK avi_splitter_create(IUnknown *outer, HRESULT *phr) return NULL; }
- strmbase_filter_init(&object->filter, &GST_Vtbl, outer, &CLSID_AviSplitter, &filter_ops); + strmbase_filter_init(&object->filter, outer, &CLSID_AviSplitter, &filter_ops);
object->no_more_pads_event = CreateEventW(NULL, FALSE, FALSE, NULL); object->sink.dir = PINDIR_INPUT; @@ -2627,7 +2608,7 @@ IUnknown * CALLBACK mpeg_splitter_create(IUnknown *outer, HRESULT *phr) return NULL; }
- strmbase_filter_init(&object->filter, &GST_Vtbl, outer, &CLSID_MPEG1Splitter, &mpeg_splitter_ops); + strmbase_filter_init(&object->filter, outer, &CLSID_MPEG1Splitter, &mpeg_splitter_ops); object->IAMStreamSelect_iface.lpVtbl = &stream_select_vtbl;
object->duration_event = CreateEventW(NULL, FALSE, FALSE, NULL); diff --git a/dlls/wineqtdecoder/qtsplitter.c b/dlls/wineqtdecoder/qtsplitter.c index 28ea36785a8..5b1e82ebc9b 100644 --- a/dlls/wineqtdecoder/qtsplitter.c +++ b/dlls/wineqtdecoder/qtsplitter.c @@ -357,7 +357,7 @@ IUnknown * CALLBACK QTSplitter_create(IUnknown *outer, HRESULT *phr) } ZeroMemory(This,sizeof(*This));
- strmbase_filter_init(&This->filter, &QT_Vtbl, outer, &CLSID_QTSplitter, &filter_ops); + strmbase_filter_init(&This->filter, outer, &CLSID_QTSplitter, &filter_ops);
InitializeCriticalSection(&This->csReceive); This->csReceive.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__": QTSplitter.csReceive"); @@ -721,24 +721,6 @@ audio_error: return hr; }
-static const IBaseFilterVtbl QT_Vtbl = { - BaseFilterImpl_QueryInterface, - BaseFilterImpl_AddRef, - BaseFilterImpl_Release, - BaseFilterImpl_GetClassID, - BaseFilterImpl_Stop, - BaseFilterImpl_Pause, - BaseFilterImpl_Run, - BaseFilterImpl_GetState, - BaseFilterImpl_SetSyncSource, - BaseFilterImpl_GetSyncSource, - BaseFilterImpl_EnumPins, - BaseFilterImpl_FindPin, - BaseFilterImpl_QueryFilterInfo, - BaseFilterImpl_JoinFilterGraph, - BaseFilterImpl_QueryVendorInfo -}; - static void free_source_pin(QTOutPin *pin) { if (pin->pin.pin.peer) diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h index 7949e6670a5..75eac504209 100644 --- a/include/wine/strmbase.h +++ b/include/wine/strmbase.h @@ -176,25 +176,9 @@ struct strmbase_filter_ops HRESULT (*filter_wait_state)(struct strmbase_filter *iface, DWORD timeout); };
-HRESULT WINAPI BaseFilterImpl_QueryInterface(IBaseFilter * iface, REFIID riid, LPVOID * ppv); -ULONG WINAPI BaseFilterImpl_AddRef(IBaseFilter * iface); -ULONG WINAPI BaseFilterImpl_Release(IBaseFilter * iface); -HRESULT WINAPI BaseFilterImpl_Stop(IBaseFilter *iface); -HRESULT WINAPI BaseFilterImpl_Pause(IBaseFilter *iface); -HRESULT WINAPI BaseFilterImpl_Run(IBaseFilter *iface, REFERENCE_TIME start); -HRESULT WINAPI BaseFilterImpl_GetClassID(IBaseFilter * iface, CLSID * pClsid); -HRESULT WINAPI BaseFilterImpl_GetState(IBaseFilter * iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState ); -HRESULT WINAPI BaseFilterImpl_SetSyncSource(IBaseFilter * iface, IReferenceClock *pClock); -HRESULT WINAPI BaseFilterImpl_GetSyncSource(IBaseFilter * iface, IReferenceClock **ppClock); -HRESULT WINAPI BaseFilterImpl_EnumPins(IBaseFilter * iface, IEnumPins **ppEnum); -HRESULT WINAPI BaseFilterImpl_FindPin(IBaseFilter *iface, const WCHAR *id, IPin **pin); -HRESULT WINAPI BaseFilterImpl_QueryFilterInfo(IBaseFilter * iface, FILTER_INFO *pInfo); -HRESULT WINAPI BaseFilterImpl_JoinFilterGraph(IBaseFilter * iface, IFilterGraph *pGraph, LPCWSTR pName ); -HRESULT WINAPI BaseFilterImpl_QueryVendorInfo(IBaseFilter * iface, LPWSTR *pVendorInfo); - VOID WINAPI BaseFilterImpl_IncrementPinVersion(struct strmbase_filter *filter);
-void strmbase_filter_init(struct strmbase_filter *filter, const IBaseFilterVtbl *vtbl, IUnknown *outer, +void strmbase_filter_init(struct strmbase_filter *filter, IUnknown *outer, const CLSID *clsid, const struct strmbase_filter_ops *func_table); void strmbase_filter_cleanup(struct strmbase_filter *filter);