BaseRenderer_GetPinCount
};
-static const BasePinFuncTable input_BaseFuncTable = {
- BaseRenderer_Input_CheckMediaType,
- NULL,
- BasePinImpl_GetMediaTypeVersion,
- BasePinImpl_GetMediaType
-};
-
static const BaseInputPinFuncTable input_BaseInputFuncTable = {
- BaseRenderer_Receive
+ {
+ BaseRenderer_Input_CheckMediaType,
+ NULL,
+ BasePinImpl_GetMediaTypeVersion,
+ BasePinImpl_GetMediaType
+ },
+ BaseRenderer_Receive
};
piInput.pFilter = &This->filter.IBaseFilter_iface;
lstrcpynW(piInput.achName, wcsInputPinName, sizeof(piInput.achName) / sizeof(piInput.achName[0]));
- hr = BaseInputPin_Construct(&BaseRenderer_InputPin_Vtbl, &piInput, &input_BaseFuncTable, &input_BaseInputFuncTable, &This->filter.csFilter, NULL, (IPin **)&This->pInputPin);
+ hr = BaseInputPin_Construct(&BaseRenderer_InputPin_Vtbl, sizeof(BaseInputPin), &piInput,
+ &input_BaseInputFuncTable, &This->filter.csFilter, NULL, (IPin **)&This->pInputPin);
if (SUCCEEDED(hr))
{
ULONG WINAPI BaseRendererImpl_Release(IBaseFilter* iface)
{
BaseRenderer *This = impl_from_IBaseFilter(iface);
- ULONG refCount = BaseFilterImpl_Release(iface);
+ ULONG refCount = InterlockedDecrement(&This->filter.refCount);
if (!refCount)
{
CloseHandle(This->ThreadSignal);
CloseHandle(This->RenderEvent);
QualityControlImpl_Destroy(This->qcimpl);
+ BaseFilter_Destroy(&This->filter);
}
return refCount;
}
if (This->pInputPin->pin.pConnectedTo)
{
- This->pInputPin->end_of_stream = 0;
+ This->pInputPin->end_of_stream = FALSE;
}
else if (This->filter.filterInfo.pGraph)
{
{
if (This->pInputPin->pin.pConnectedTo)
ResetEvent(This->evComplete);
- This->pInputPin->end_of_stream = 0;
+ This->pInputPin->end_of_stream = FALSE;
}
else if (This->pFuncsTable->pfnOnStopStreaming)
This->pFuncsTable->pfnOnStopStreaming(This);