Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

IStreamBuilder::Render method (strmif.h)

[The feature associated with this page, DirectShow, is a legacy feature. It has been superseded by MediaPlayer, IMFMediaEngine, and Audio/Video Capture in Media Foundation. Those features have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use MediaPlayer, IMFMediaEngine and Audio/Video Capture in Media Foundation instead of DirectShow, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]

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

[in] ppinOut

Pointer to the IPin interface of this pin.

[in] pGraph

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.

C++
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

Requirement Value
Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header strmif.h (include Dshow.h)
Library Strmiids.lib

See also

Error and Success Codes

IStreamBuilder Interface


Feedback

Was this page helpful?

Additional resources