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:

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:

Aceleração de vídeo DirectX 2.0

DXVA 1.0 especificação