Freigeben über


IStreamBuilder::Render-Methode (strmif.h)

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Die Render -Methode schließt das Rendering des Datenstroms ab, der mit diesem Pin stammt. Dies kann das Hinzufügen von Filtern zum Filterdiagramm und das Verbinden der Filter umfassen.

Syntax

HRESULT Render(
  [in] IPin          *ppinOut,
  [in] IGraphBuilder *pGraph
);

Parameter

[in] ppinOut

Zeiger auf die IPin-Schnittstelle dieses Pins.

[in] pGraph

Zeiger auf die IGraphBuilder-Schnittstelle des Filter Graph-Managers.

Rückgabewert

Gibt einen HRESULT-Wert zurück. Ein Rückgabecode von S_OK gibt an, dass der Stream erfolgreich gerendert wurde.

Hinweise

Der folgende Code veranschaulicht, wie diese Methode auf einem Ausgabenadel implementiert wird. In diesem Beispiel wird davon ausgegangen, dass für den Filter ein benutzerdefinierter Renderer erforderlich ist.

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;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile strmif.h (include Dshow.h)
Bibliothek Strmiids.lib

Weitere Informationen

Fehler- und Erfolgscodes

IStreamBuilder-Schnittstelle