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.)
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.
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. |
Tópicos relacionados