Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/avisplit.c | 10 +++++++--- dlls/quartz/dsoundrender.c | 2 +- dlls/quartz/mpegsplit.c | 2 +- dlls/quartz/vmr9.c | 23 ++++++++++++++--------- 4 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/dlls/quartz/avisplit.c b/dlls/quartz/avisplit.c index f55ebf2219..a422f45b8c 100644 --- a/dlls/quartz/avisplit.c +++ b/dlls/quartz/avisplit.c @@ -105,6 +105,11 @@ static inline AVISplitterImpl *impl_from_IMediaSeeking( IMediaSeeking *iface ) return CONTAINING_RECORD(iface, AVISplitterImpl, Parser.sourceSeeking.IMediaSeeking_iface); }
+static inline AVISplitterImpl *impl_from_IBaseFilter(IBaseFilter *iface) +{ + return CONTAINING_RECORD(iface, AVISplitterImpl, Parser.filter.IBaseFilter_iface); +} + /* The threading stuff cries for an explanation * * PullPin starts processing and calls AVISplitter_first_request @@ -1025,6 +1030,7 @@ static HRESULT AVISplitter_Disconnect(LPVOID iface); static HRESULT AVISplitter_InputPin_PreConnect(IPin * iface, IPin * pConnectPin, ALLOCATOR_PROPERTIES *props) { PullPin *This = impl_PullPin_from_IPin(iface); + AVISplitterImpl *pAviSplit = impl_from_IBaseFilter(This->pin.pinInfo.pFilter); HRESULT hr; RIFFLIST list; LONGLONG pos = 0; /* in bytes */ @@ -1034,8 +1040,6 @@ static HRESULT AVISplitter_InputPin_PreConnect(IPin * iface, IPin * pConnectPin, ULONG x; DWORD indexes;
- AVISplitterImpl * pAviSplit = (AVISplitterImpl *)This->pin.pinInfo.pFilter; - hr = IAsyncReader_SyncRead(This->pReader, pos, sizeof(list), (BYTE *)&list); pos += sizeof(list);
@@ -1264,7 +1268,7 @@ static HRESULT AVISplitter_Disconnect(LPVOID iface)
static ULONG WINAPI AVISplitter_Release(IBaseFilter *iface) { - AVISplitterImpl *This = (AVISplitterImpl *)iface; + AVISplitterImpl *This = impl_from_IBaseFilter(iface); ULONG ref;
ref = InterlockedDecrement(&This->Parser.filter.refCount); diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c index b9eb14952e..31862d23b3 100644 --- a/dlls/quartz/dsoundrender.c +++ b/dlls/quartz/dsoundrender.c @@ -759,8 +759,8 @@ static ULONG WINAPI DSoundRender_Release(IBaseFilter * iface)
static HRESULT WINAPI DSoundRender_Pause(IBaseFilter * iface) { + DSoundRenderImpl *This = impl_from_IBaseFilter(iface); HRESULT hr = S_OK; - DSoundRenderImpl *This = (DSoundRenderImpl *)iface;
TRACE("(%p/%p)->()\n", This, iface);
diff --git a/dlls/quartz/mpegsplit.c b/dlls/quartz/mpegsplit.c index 226fcacff5..c4cf93b13d 100644 --- a/dlls/quartz/mpegsplit.c +++ b/dlls/quartz/mpegsplit.c @@ -485,7 +485,7 @@ static HRESULT MPEGSplitter_init_audio(MPEGSplitterImpl *This, const BYTE *heade static HRESULT MPEGSplitter_pre_connect(IPin *iface, IPin *pConnectPin, ALLOCATOR_PROPERTIES *props) { PullPin *pPin = impl_PullPin_from_IPin(iface); - MPEGSplitterImpl *This = (MPEGSplitterImpl*)pPin->pin.pinInfo.pFilter; + MPEGSplitterImpl *This = impl_from_IBaseFilter(pPin->pin.pinInfo.pFilter); HRESULT hr; LONGLONG pos = 0; /* in bytes */ BYTE header[10]; diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c index 3d22f123b1..847dc40b04 100644 --- a/dlls/quartz/vmr9.c +++ b/dlls/quartz/vmr9.c @@ -206,6 +206,11 @@ static inline VMR9DefaultAllocatorPresenterImpl *impl_from_IVMRSurfaceAllocatorE
static HRESULT VMR9DefaultAllocatorPresenterImpl_create(struct quartz_vmr *parent, LPVOID * ppv);
+static inline struct quartz_vmr *impl_from_IBaseFilter(IBaseFilter *iface) +{ + return CONTAINING_RECORD(iface, struct quartz_vmr, renderer.filter.IBaseFilter_iface); +} + static DWORD VMR9_SendSampleData(struct quartz_vmr *This, VMR9PresentationInfo *info, LPBYTE data, DWORD size) { @@ -286,7 +291,7 @@ static DWORD VMR9_SendSampleData(struct quartz_vmr *This, VMR9PresentationInfo *
static HRESULT WINAPI VMR9_DoRenderSample(BaseRenderer *iface, IMediaSample * pSample) { - struct quartz_vmr *This = (struct quartz_vmr*)iface; + struct quartz_vmr *This = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface); LPBYTE pbSrcStream = NULL; long cbSrcStream = 0; REFERENCE_TIME tStart, tStop; @@ -351,7 +356,7 @@ static HRESULT WINAPI VMR9_DoRenderSample(BaseRenderer *iface, IMediaSample * pS
static HRESULT WINAPI VMR9_CheckMediaType(BaseRenderer *iface, const AM_MEDIA_TYPE * pmt) { - struct quartz_vmr *This = (struct quartz_vmr*)iface; + struct quartz_vmr *This = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
if (!IsEqualIID(&pmt->majortype, &MEDIATYPE_Video) || !pmt->pbFormat) return S_FALSE; @@ -445,7 +450,7 @@ static HRESULT VMR9_maybe_init(struct quartz_vmr *This, BOOL force)
static VOID WINAPI VMR9_OnStartStreaming(BaseRenderer* iface) { - struct quartz_vmr *This = (struct quartz_vmr*)iface; + struct quartz_vmr *This = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
TRACE("(%p)\n", This);
@@ -463,7 +468,7 @@ static VOID WINAPI VMR9_OnStartStreaming(BaseRenderer* iface)
static VOID WINAPI VMR9_OnStopStreaming(BaseRenderer* iface) { - struct quartz_vmr *This = (struct quartz_vmr*)iface; + struct quartz_vmr *This = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
TRACE("(%p)\n", This);
@@ -481,7 +486,7 @@ static HRESULT WINAPI VMR9_ShouldDrawSampleNow(BaseRenderer *This, IMediaSample
static HRESULT WINAPI VMR9_CompleteConnect(BaseRenderer *This, IPin *pReceivePin) { - struct quartz_vmr *pVMR9 = (struct quartz_vmr*)This; + struct quartz_vmr *pVMR9 = impl_from_IBaseFilter(&This->filter.IBaseFilter_iface); HRESULT hr;
TRACE("(%p)\n", This); @@ -495,7 +500,7 @@ static HRESULT WINAPI VMR9_CompleteConnect(BaseRenderer *This, IPin *pReceivePin
static HRESULT WINAPI VMR9_BreakConnect(BaseRenderer *This) { - struct quartz_vmr *pVMR9 = (struct quartz_vmr*)This; + struct quartz_vmr *pVMR9 = impl_from_IBaseFilter(&This->filter.IBaseFilter_iface); HRESULT hr = S_OK;
if (!pVMR9->mode) @@ -863,7 +868,7 @@ static const IUnknownVtbl IInner_VTable =
static HRESULT WINAPI VMR9_QueryInterface(IBaseFilter * iface, REFIID riid, LPVOID * ppv) { - struct quartz_vmr *This = (struct quartz_vmr*)iface; + struct quartz_vmr *This = impl_from_IBaseFilter(iface);
if (This->bAggregatable) This->bUnkOuterValid = TRUE; @@ -893,7 +898,7 @@ static HRESULT WINAPI VMR9_QueryInterface(IBaseFilter * iface, REFIID riid, LPVO
static ULONG WINAPI VMR9_AddRef(IBaseFilter * iface) { - struct quartz_vmr *This = (struct quartz_vmr*)iface; + struct quartz_vmr *This = impl_from_IBaseFilter(iface); LONG ret;
if (This->outer_unk && This->bUnkOuterValid) @@ -908,7 +913,7 @@ static ULONG WINAPI VMR9_AddRef(IBaseFilter * iface)
static ULONG WINAPI VMR9_Release(IBaseFilter * iface) { - struct quartz_vmr *This = (struct quartz_vmr*)iface; + struct quartz_vmr *This = impl_from_IBaseFilter(iface); LONG ret;
if (This->outer_unk && This->bUnkOuterValid)