Renderizador de vídeo aprimorado
[O componente descrito nesta página, Enhanced Video Renderer, é um recurso herdado. Ele foi substituído pelo Simple Video Renderer (SVR) exposto através do MediaPlayer e IMFMediaEngine componentes. 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 componentes foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda enfaticamente 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 renderizador de vídeo aprimorado (EVR) é um componente que exibe vídeo no monitor do usuário. Existem duas versões do EVR:
- O dissipador de mídia EVR, para aplicações Media Foundation.
- O filtro EVR, para aplicações 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. Quaisquer fluxos adicionais são chamados de subfluxos e são misturados sobre o fluxo de referência. O aplicativo pode alterar a ordem z dos subfluxos, mas nenhum subfluxo pode ser o primeiro na ordem z.
O driver gráfico determina quais formatos de vídeo são suportados, 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.
- Subfluxos: YUV progressivo com alfa por pixel, como AYUV ou AI44.
Os formatos de subfluxo disponíveis podem depender do formato do fluxo de referência. Para obter mais informações, consulte EVR Media Type Negotiation.
Internamente, o EVR usa um objeto chamado misturador de para compor os quadros dos fluxos de entrada em uma superfície para renderização. O misturador também realiza desentrelaçamento e correção de cor. 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 misturador ou do apresentador.
A taxa de quadros de saída é bloqueada para o fluxo de referência. Sempre que os subfluxos recebem novos quadros, o misturador mantém-nos. Quando o fluxo de referência recebe um novo quadro, o misturador compõe esse quadro com os quadros do subfluxo. (Se o fluxo de referência estiver entrelaçado, um quadro de referência completo pode exigir mais de uma amostra de mídia.) É possível que um subfluxo receba mais de um quadro enquanto o misturador aguarda um quadro de referência. Nesse caso, o misturador simplesmente descarta o quadro de subfluxo 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 DirectX Video Acceleration (DXVA). Em particular, o misturador EVR usa os serviços de processamento de vídeo DXVA para desentrelaçar e misturar o vídeo. Externo ao EVR, os decodificadores de software podem usar DXVA para decodificação de vídeo acelerada. O apresentador partilha o dispositivo Direct3D através do Gestor de Dispositivos Direct3D. O diagrama a seguir mostra a arquitetura interna do EVR. (O descodificador de software, sombreado a cinzento, não faz parte do EVR.)
EVR Interfaces
O EVR suporta as seguintes interfaces. Algumas dessas interfaces são implementadas pelo misturador ou 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 | Permite que um plug-in EVR renderize vídeo protegido. |
IMFDesiredSample | Permite que o apresentador EVR solicite um quadro específico do misturador. |
IMFQualityAdvise | Permite que o gerente de qualidade ajuste a qualidade de vídeo EVR. |
IMFTopologyServiceLookup | Permite que um misturador ou apresentador personalizado obtenha ponteiros de interface do EVR. |
IMFVideoDeviceID | Devolve o identificador de dispositivo de um misturador ou apresentador EVR. |
IMFVideoDisplayControl | Controla como o EVR exibe vídeo. |
IMFVideoMixerBitmap | Alpha-combina uma imagem bitmap estática com o vídeo. |
IMFVideoMixerControl | Controla como o Renderizador de Vídeo Avançado (EVR) mistura subfluxos de vídeo. |
IMFVideoMixerControl2 | Controla as preferências para desentrelaçamento 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 misturador ou apresentador no EVR. |
IMFVideoSampleAllocator | Aloca amostras de vídeo. |
Nesta secção
Tópico | Descrição |
---|---|
Usando o filtro EVR do DirectShow | Como usar o EVR em um aplicativo DirectShow. |
Usando o dissipador de mídia EVR | Como usar o EVR em um aplicativo Media Foundation. |
Usando os controles de exibição de vídeo | Como controlar a forma como o EVR exibe o vídeo dentro da janela do aplicativo. |
Usando os controles do misturador de vídeo | Como controlar a forma como o misturador EVR opera. |
de negociação do tipo de mídia EVR | Descreve como o EVR determina quais formatos de vídeo ele pode aceitar como entrada. |
Misturadores Personalizados | Como escrever um misturador personalizado para o EVR. |
Como escrever um de apresentador EVR | Como escrever um apresentador personalizado para o EVR. |
Tópicos relacionados