Compartilhar via


Método IStreamBuilder::Render (strmif.h)

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O Render método conclui a renderização do fluxo originado com esse pino. Isso pode envolver a adição de filtros ao grafo de filtro e a conexão deles.

Sintaxe

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

Parâmetros

[in] ppinOut

Ponteiro para a interface IPin desse pino.

[in] pGraph

Ponteiro para a interface IGraphBuilder do Gerenciador de Grafo de Filtro.

Retornar valor

Retorna um valor HRESULT . Um código de retorno de S_OK indica que o fluxo foi renderizado com êxito.

Comentários

O código a seguir ilustra como implementar esse método em um pino de saída. Este exemplo pressupõe que o filtro requer um renderizador personalizado downstream dele.

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho strmif.h (inclua Dshow.h)
Biblioteca Strmiids.lib

Confira também

Códigos de erro e êxito

IStreamBuilder Interface