HRESULT WINAPI QualityControlImpl_Notify(IQualityControl *iface, IBaseFilter *sender, Quality qm) { QualityControlImpl *This = impl_from_IQualityControl(iface); HRESULT hr = S_FALSE; TRACE("%p %p { 0x%x %u " XTIME_FMT " " XTIME_FMT " }\n", This, sender, qm.Type, qm.Proportion, XTIME(qm.Late), XTIME(qm.TimeStamp)); if (This->tonotify) return IQualityControl_Notify(This->tonotify, This->self, qm); if (This->input) { IPin *to = NULL; IPin_ConnectedTo(This->input, &to); if (to) { IQualityControl *qc = NULL; IPin_QueryInterface(to, &IID_IQualityControl, (void**)&qc); if (qc) { hr = IQualityControl_Notify(qc, This->self, qm); IQualityControl_Release(qc); } IPin_Release(to); } } return hr; }
HRESULT WINAPI QualityControlImpl_SetSink(IQualityControl *iface, IQualityControl *tonotify) { QualityControlImpl *This = impl_from_IQualityControl(iface); TRACE("%p %p\n", This, tonotify); This->tonotify = tonotify; return S_OK; }
ULONG WINAPI QT_QualityControl_Release(IQualityControl *iface) { QTOutPin *This = impl_from_IQualityControl(iface); return IPin_Release(&This->pin.pin.IPin_iface); }
HRESULT WINAPI QT_QualityControl_QueryInterface(IQualityControl *iface, REFIID riid, void **ppv) { QTOutPin *This = impl_from_IQualityControl(iface); return IPin_QueryInterface(&This->pin.pin.IPin_iface, riid, ppv); }
ULONG WINAPI QualityControlImpl_Release(IQualityControl *iface) { QualityControlImpl *This = impl_from_IQualityControl(iface); return IBaseFilter_Release(This->self); }
HRESULT WINAPI QualityControlImpl_QueryInterface(IQualityControl *iface, REFIID riid, void **ppv) { QualityControlImpl *This = impl_from_IQualityControl(iface); return IBaseFilter_QueryInterface(This->self, riid, ppv); }