IStreamBuilder::Render method
Applies to: desktop apps only
The Render method completes rendering of the stream originating with this pin. This can involve adding filters to the filter graph and connecting them.
Syntax
HRESULT Render( [in] IPin *ppinOut, [in] IGraphBuilder *pGraph );
Parameters
- ppinOut [in]
-
Pointer to the IPin interface of this pin.
- pGraph [in]
-
Pointer to the IGraphBuilder interface of the Filter Graph Manager.
Return value
Returns an HRESULT value. A return code of S_OK indicates that the stream was successfully rendered.
Remarks
The following code illustrates how to implement this method on an output pin. This example assumes that the filter requires a custom renderer downstream from it.
STDMETHODIMP CMyOutputPin::Render(IPin *pPin, IGraphBuilder *pGraph)
{
CheckPointer(pPin, E_POINTER);
CheckPointer(pGraph, E_POINTER);
// This filter needs a special renderer connected to it.
IBaseFilter *pMyRenderer = NULL;
// Create the renderer.
HRESULT hr = CoCreateInstance(CLSID_MyRenderer, NULL, CLSCTX_INPROC,
IID_IBaseFilter, (void **)&pMyRenderer);
if (FAILED(hr))
{
return hr;
}
// Add my renderer to the filter graph.
hr = pGraph->AddFilter(pMyRenderer, L"My Renderer");
if (FAILED(hr))
{
pMyRenderer->Release();
return hr;
}
IEnumPins *pEnumPins;
IPin *pMyRendererInputPin = NULL;
hr = pMyRenderer->EnumPins(&pEnumPins);
if (SUCCEEDED(hr))
{
if (S_OK != pEnumPins->Next(1, &pMyRendererInputPin, 0))
{
hr = E_UNEXPECTED;
}
}
if (SUCCEEDED(hr))
{
// Connect my renderer to my output pin.
hr = pGraph->ConnectDirect(pPin, pMyRendererInputPin);
pMyRendererInputPin->Release();
}
if (FAILED(hr))
{
// Could not connect to my renderer. Remove it from the graph.
pGraph->RemoveFilter(pMyRenderer);
}
pMyRenderer->Release();
return hr;
}
Requirements
|
Minimum supported client | Windows 2000 Professional |
|---|---|
|
Minimum supported server | Windows 2000 Server |
|
Header |
|
|
Library |
|
See also
Send comments about this topic to Microsoft
Build date: 3/6/2012