quartz/acmwrapper: Use the strmbase_passthrough object directly.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
dd3fe639e3
commit
f27030f1f6
|
@ -43,7 +43,7 @@ typedef struct ACMWrapperImpl
|
||||||
struct strmbase_source source;
|
struct strmbase_source source;
|
||||||
IQualityControl source_IQualityControl_iface;
|
IQualityControl source_IQualityControl_iface;
|
||||||
IQualityControl *source_qc_sink;
|
IQualityControl *source_qc_sink;
|
||||||
IUnknown *seeking;
|
struct strmbase_passthrough passthrough;
|
||||||
|
|
||||||
struct strmbase_sink sink;
|
struct strmbase_sink sink;
|
||||||
|
|
||||||
|
@ -337,7 +337,7 @@ static HRESULT acm_wrapper_source_query_interface(struct strmbase_pin *iface, RE
|
||||||
if (IsEqualGUID(iid, &IID_IQualityControl))
|
if (IsEqualGUID(iid, &IID_IQualityControl))
|
||||||
*out = &filter->source_IQualityControl_iface;
|
*out = &filter->source_IQualityControl_iface;
|
||||||
else if (IsEqualGUID(iid, &IID_IMediaSeeking))
|
else if (IsEqualGUID(iid, &IID_IMediaSeeking))
|
||||||
return IUnknown_QueryInterface(filter->seeking, iid, out);
|
*out = &filter->passthrough.IMediaSeeking_iface;
|
||||||
else
|
else
|
||||||
return E_NOINTERFACE;
|
return E_NOINTERFACE;
|
||||||
|
|
||||||
|
@ -486,11 +486,11 @@ static void acm_wrapper_destroy(struct strmbase_filter *iface)
|
||||||
|
|
||||||
strmbase_sink_cleanup(&filter->sink);
|
strmbase_sink_cleanup(&filter->sink);
|
||||||
strmbase_source_cleanup(&filter->source);
|
strmbase_source_cleanup(&filter->source);
|
||||||
|
strmbase_passthrough_cleanup(&filter->passthrough);
|
||||||
|
|
||||||
filter->stream_cs.DebugInfo->Spare[0] = 0;
|
filter->stream_cs.DebugInfo->Spare[0] = 0;
|
||||||
DeleteCriticalSection(&filter->stream_cs);
|
DeleteCriticalSection(&filter->stream_cs);
|
||||||
FreeMediaType(&filter->mt);
|
FreeMediaType(&filter->mt);
|
||||||
IUnknown_Release(filter->seeking);
|
|
||||||
strmbase_filter_cleanup(&filter->filter);
|
strmbase_filter_cleanup(&filter->filter);
|
||||||
free(filter);
|
free(filter);
|
||||||
|
|
||||||
|
@ -523,9 +523,7 @@ static const struct strmbase_filter_ops filter_ops =
|
||||||
|
|
||||||
HRESULT acm_wrapper_create(IUnknown *outer, IUnknown **out)
|
HRESULT acm_wrapper_create(IUnknown *outer, IUnknown **out)
|
||||||
{
|
{
|
||||||
ISeekingPassThru *passthrough;
|
|
||||||
ACMWrapperImpl *object;
|
ACMWrapperImpl *object;
|
||||||
HRESULT hr;
|
|
||||||
|
|
||||||
if (!(object = calloc(1, sizeof(*object))))
|
if (!(object = calloc(1, sizeof(*object))))
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
|
@ -539,21 +537,9 @@ HRESULT acm_wrapper_create(IUnknown *outer, IUnknown **out)
|
||||||
|
|
||||||
strmbase_source_init(&object->source, &object->filter, L"Out", &source_ops);
|
strmbase_source_init(&object->source, &object->filter, L"Out", &source_ops);
|
||||||
object->source_IQualityControl_iface.lpVtbl = &source_qc_vtbl;
|
object->source_IQualityControl_iface.lpVtbl = &source_qc_vtbl;
|
||||||
|
strmbase_passthrough_init(&object->passthrough, (IUnknown *)&object->source.pin.IPin_iface);
|
||||||
if (FAILED(hr = CoCreateInstance(&CLSID_SeekingPassThru,
|
ISeekingPassThru_Init(&object->passthrough.ISeekingPassThru_iface, FALSE,
|
||||||
(IUnknown *)&object->source.pin.IPin_iface, CLSCTX_INPROC_SERVER,
|
&object->sink.pin.IPin_iface);
|
||||||
&IID_IUnknown, (void **)&object->seeking)))
|
|
||||||
{
|
|
||||||
strmbase_sink_cleanup(&object->sink);
|
|
||||||
strmbase_source_cleanup(&object->source);
|
|
||||||
strmbase_filter_cleanup(&object->filter);
|
|
||||||
free(object);
|
|
||||||
return hr;
|
|
||||||
}
|
|
||||||
|
|
||||||
IUnknown_QueryInterface(object->seeking, &IID_ISeekingPassThru, (void **)&passthrough);
|
|
||||||
ISeekingPassThru_Init(passthrough, FALSE, &object->sink.pin.IPin_iface);
|
|
||||||
ISeekingPassThru_Release(passthrough);
|
|
||||||
|
|
||||||
object->lasttime_real = object->lasttime_sent = -1;
|
object->lasttime_real = object->lasttime_sent = -1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue