Sobre o DXVA 2.0
DirectX Video Acceleration (DXVA) é uma API e uma DDI correspondente para usar a aceleração de hardware para acelerar o processamento de vídeo. Codecs de software e processadores de vídeo de software podem usar DXVA para descarregar certas operações de CPU intensiva para a GPU. Por exemplo, um decodificador de software pode descarregar a transformação discreta de cosseno inversa (iDCT) para a GPU.
No DXVA, algumas operações de decodificação são implementadas pelo driver de hardware gráfico. Esse conjunto de funcionalidades é chamado de acelerador. Outras operações de decodificação são implementadas pelo software aplicativo de modo de usuário, chamado de decodificador de host ou decodificador de software. (Os termos decodificador de host e decodificador de software são equivalentes.) O processamento executado pelo acelerador é chamado de processamento fora do host. Normalmente, o acelerador usa a GPU para acelerar algumas operações. Sempre que o acelerador executa uma operação de decodificação, o decodificador do host deve transmitir aos buffers do acelerador as informações necessárias para executar a operação
A API DXVA 2 requer o Windows Vista ou posterior. A API DXVA 1 ainda tem suporte no Windows Vista para compatibilidade com versões anteriores. É fornecida uma camada de emulação que converte entre uma versão da API e a versão oposta da DDI:
- Se o driver gráfico estiver em conformidade com o WDDM (Windows Display Driver Model), as chamadas de API DXVA 1 serão convertidas em chamadas DDI DXVA 2.
- Se os drivers gráficos usam o antigo Windows XP Display Driver Model (XPDM), as chamadas de API DXVA 2 são convertidas em chamadas DDI DXVA 1.
A tabela a seguir mostra os requisitos do sistema operacional e os renderizadores de vídeo suportados para cada versão da API DXVA.
Versão da API | Requisitos | Suporte a renderizadores de vídeo |
---|---|---|
DXVA 1 | Windows 2000 ou posterior | Misturador de sobreposição, VMR-7, VMR-9 (somente DirectShow) |
DXVA 2 | Windows Vista | EVR (DirectShow e Media Foundation) |
No DXVA 1, o decodificador de software deve acessar a API por meio do renderizador de vídeo. Não há como usar a API DXVA 1 sem chamar o renderizador de vídeo. Essa limitação foi removida com o DXVA 2. Usando o DXVA 2, o decodificador de host (ou qualquer aplicativo) pode acessar a API diretamente, por meio da interface IDirectXVideoDecoderService.
A documentação do DXVA 1 descreve as estruturas de decodificação usadas para os seguintes padrões de vídeo:
- ITU-T Rec. H.261
- ITU-T Rec. H.263
- Vídeo MPEG-1
- Vídeo MPEG-2 Main Profile
As especificações a seguir definem extensões DXVA para outros padrões de vídeo:
- Especificação DXVA para decodificação H.264/AVC
- Especificação DXVA para H.264/MPEG-4 AVC Multiview Video Coding (MVC), incluindo o perfil alto estéreo
- Especificação DXVA para MPEG-1 VLD e decodificação de vídeo combinada MPEG-1/MPEG-2 VLD.
- Especificação DXVA para modo VLD fora do host para decodificação de vídeo MPEG-4 Parte 2
- Especificação DXVA para decodificação de vídeo do Windows Media v8®, v9 e vA (incluindo SMPTE 421M "VC-1")
- Especificação de aceleração de vídeo DirectX (DXVA) para codificação de vídeo escalável H.264/MPEG-4 (SVC) Off-Host VLD Mode Decoding
- Especificação de aceleração de vídeo DirectX para codificação de vídeo VP8 e VP9
DXVA 1 e DXVA 2 usam as mesmas estruturas de dados para decodificação. No entanto, o procedimento para configurar a sessão de decodificação foi alterado. DXVA 1 usa um mecanismo de "sonda e bloqueio", em que o decodificador host pode testar várias configurações antes de definir a configuração desejada no acelerador. No DXVA 2, o acelerador retorna uma lista de configurações suportadas e o decodificador de host seleciona uma da lista. Os detalhes são dados nas seguintes seções:
Tópicos relacionados