Partilhar via


Usar o filtro EVR do DirectShow

[O componente descrito nesta página, Renderizador de Vídeo Avançado, é um recurso herdado. Ele foi substituído pelo SVR (Simple Video Renderer) exposto através dos componentes MediaPlayer e IMFMediaEngine. Para reproduzir conteúdo de vídeo, você deve enviar dados para um desses componentes e permitir que eles instanciem o novo renderizador de vídeo. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda enfaticamente que o novo código use o MediaPlayer ou as APIs IMFMediaEngine de nível inferior para reproduzir mídia de vídeo no Windows em vez do EVR, 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.]

Para criar o filtro EVR (renderizador de vídeo avançado), chame CoCreateInstance. O CLSID é CLSID_EnhancedVideoRenderer, definido em uuids.h. Não é necessário chamar MFStartup ou MFShutdown para usar o filtro EVR.

Para obter mais informações sobre como usar o filtro EVR em um aplicativo DirectShow, consulte Reprodução de áudio/vídeo no DirectShow.

O filtro EVR começa com um marcador de entrada, que corresponde ao fluxo de referência. Para adicionar marcadores para subfluxos, consulte o filtro para a interface IEVRFilterConfig e chame IEVRFilterConfig::SetNumberOfStreams. Chame esse método antes de conectar qualquer marcador de entrada. O marcador 0 é sempre o fluxo de referência. Conecte esse marcador antes de qualquer outro marcador, pois o formato do fluxo de referência pode limitar quais formatos de subfluxo estão disponíveis.

Antes de iniciar o gráfico, defina a janela de recorte de vídeo e o retângulo de destino. Para obter mais informações, confira Como usar os controles de exibição de video.

Ao contrário do VMR (Video Mixing Renderer), o EVR não tem modos operacionais (com janelas, sem janelas e assim por diante). Especialmente:

  • O EVR não dá suporte ao modo de janela. O aplicativo precisa fornecer a janela de recorte.
  • O EVR não tem um modo sem renderização. Para substituir o apresentador padrão, chame IMFVideoRenderer::InitializeRenderer.
  • O EVR não tem um modo de mistura. O EVR sempre cria o misturador. Se você tiver um fluxo de entrada, não será necessário chamar SetNumberOfStreams para forçar o EVR a usar o mixer.

Filtrar Interfaces

O filtro EVR expõe as interfaces a seguir. Algumas dessas interfaces estão documentadas no SDK do DirectShow. Use QueryInterface para recuperar ponteiros para estas interfaces:

Interfaces de marcador de entrada

Os marcadores de entrada no filtro EVR expõem as interfaces a seguir. Use QueryInterface para recuperar ponteiros para estas interfaces:

Além disso, você pode usar a interface IMFGetService para recuperar a seguinte interface:

Reprodução de áudio/vídeo no DirectShow

Renderizador de Vídeo Avançado