Compartilhar via


Renderizador de vídeo aprimorado

[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 por meio dos componentes MediaPlayer e IMFMediaEngine. Para reproduzir o 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 componentes foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use mediaplayer ou o nível inferior IMFMediaEngine APIs 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.]

O EVR (renderizador de vídeo) aprimorado é um componente que exibe vídeo no monitor do usuário. Existem duas versões do EVR:

  • O coletor de mídia EVR, para aplicativos do Media Foundation.
  • O filtro EVR, para aplicativos DirectShow.

Ambas as versões usam os mesmos objetos internos para renderizar vídeo e compartilham muitas das mesmas interfaces.

O EVR pode misturar até 16 fluxos de vídeo. O primeiro fluxo de entrada é chamado de fluxo de referência . O fluxo de referência sempre aparece primeiro na ordem z. Todos os fluxos adicionais são chamados substreamse são misturados na parte superior do fluxo de referência. O aplicativo pode alterar a ordem z dos substreams, mas nenhum substream pode ser o primeiro na ordem z.

O driver gráfico determina quais formatos de vídeo têm suporte, mas normalmente eles são limitados ao seguinte:

  • Fluxo de referência: YUV progressivo ou entrelaçado sem alfa por pixel (como NV12 ou YUY2); ou RGB progressivo.
  • Substreams: YUV progressivo com por pixel-alfa, como AYUV ou AI44.

Os formatos de substream disponíveis podem depender do formato do fluxo de referência. Para obter mais informações, consulte de negociação de tipo de mídia EVR.

Internamente, o EVR usa um objeto chamado mixer para compor os quadros dos fluxos de entrada em uma superfície para renderização. O mixer também executa a desinterlação e a correção de cores. A saída do mixer é o quadro de vídeo composto final. Um segundo objeto chamado apresentador renderiza o quadro de vídeo para a exibição. O apresentador agenda quando os quadros são renderizados e gerencia o dispositivo Direct3D. Um aplicativo pode fornecer uma implementação personalizada do mixer ou do apresentador.

A taxa de quadros de saída está bloqueada para o fluxo de referência. Sempre que os substreams recebem novos quadros, o mixer os mantém. Quando o fluxo de referência recebe um novo quadro, o mixer compõe esse quadro com os quadros de substream. (Se o fluxo de referência estiver entrelaçado, um quadro de referência completo poderá exigir mais de um exemplo de mídia.) É possível que um substream receba mais de um quadro enquanto o mixer aguarda um quadro de referência. Nesse caso, o mixer simplesmente descarta o quadro de substream anterior.

Como o apresentador cria o dispositivo Direct3D, ele também é responsável por compartilhar o dispositivo com outros objetos de pipeline que precisam acessar os serviços de DXVA (Aceleração de Vídeo) DirectX. Em particular, o mixer EVR usa os serviços de processamento de vídeo DXVA para desinterlacear e misturar o vídeo. Externos ao EVR, os decodificadores de software podem usar DXVA para decodificação acelerada de vídeo. O apresentador compartilha o dispositivo Direct3D por meio do do Gerenciador de Dispositivos Direct3D. O diagrama a seguir mostra a arquitetura interna do EVR. (O decodificador de software, sombreado em cinza, não faz parte do EVR.)

diagrama de arquitetura mostrando a evr.

EVR Interfaces

O EVR dá suporte às interfaces a seguir. Algumas dessas interfaces são implementadas pelo mixer ou pelo apresentador. Para cada interface, o tópico de referência descreve como obter um ponteiro para a interface.

Interface Descrição
IEVRFilterConfig Define o número de pinos de entrada no filtro EVR (somente DirectShow).
IEVRFilterConfigEx Configura o filtro EVR (somente DirectShow).
IEVRTrustedVideoPlugin Habilita um plug-in EVR para renderizar vídeo protegido.
IMFDesiredSample Permite que o apresentador do EVR solicite um quadro específico do mixer.
IMFQualityAdvise Permite que o gerenciador de qualidade ajuste a qualidade do vídeo EVR.
IMFTopologyServiceLookup Permite que um mixer ou apresentador personalizado obtenha ponteiros de interface do EVR.
IMFVideoDeviceID Retorna o identificador do dispositivo de um mixer ou apresentador do EVR.
IMFVideoDisplayControl Controla como o EVR exibe o vídeo.
IMFVideoMixerBitmap O Alpha mistura uma imagem de bitmap estático com o vídeo.
IMFVideoMixerControl Controla como o EVR (Renderizador de Vídeo Avançado) mistura substreams de vídeo.
IMFVideoMixerControl2 Controla as preferências para a desinterlação de vídeo.
IMFVideoPositionMapper Mapeia uma posição em um fluxo de vídeo de entrada para a posição correspondente em um fluxo de vídeo de saída.
IMFVideoPresenter Exposto pelo apresentador do EVR.
IMFVideoProcessor Controla o processamento de vídeo, incluindo ajuste, filtros de ruído e filtros de detalhes.
IMFVideoRenderer Define um mixer ou apresentador no EVR.
IMFVideoSampleAllocator Aloca exemplos de vídeo.

 

Nesta seção

Tópico Descrição
usando o filtro EVR do DirectShow Como usar o EVR em um aplicativo DirectShow.
usando o coletor de mídia EVR Como usar o EVR em um aplicativo do Media Foundation.
usando os controles de exibição de vídeo Como controlar a maneira como o EVR exibe o vídeo dentro da janela do aplicativo.
usando os controles do Video Mixer Como controlar a maneira como o misturador EVR opera.
de negociação de tipo de mídia EVR Descreve como o EVR determina quais formatos de vídeo ele pode aceitar como entrada.
de Combinadores Personalizados Como escrever um mixer personalizado para o EVR.
como escrever um apresentador EVR Como escrever um apresentador personalizado para o EVR.

 

de Reprodução de Áudio/Vídeo do