API Video Acceleration - Video Acceleration API

libva
Autor (es) original (is) Intel
lançamento inicial 2008
Versão estável
2.13.0 / 16 de setembro de 2021 ; 26 dias atrás ( 16 de setembro de 2021 )
Repositório
Escrito em C
Sistema operacional Linux , Android , BSD
Modelo API
Licença Licença MIT
Local na rede Internet www .freedesktop .org / wiki / Software / vaapi / Edite isso no Wikidata

A API de aceleração de vídeo ( VA-API ) é uma API de código aberto que permite que aplicativos como o VLC media player ou GStreamer usem recursos de aceleração de vídeo por hardware, geralmente fornecidos pela unidade de processamento gráfico (GPU). É implementado pela biblioteca de código aberto libva , combinada com um driver específico de hardware, geralmente fornecido junto com o driver da GPU.

A interface de decodificação / codificação de vídeo VA-API é independente de plataforma e sistema de janela, mas é principalmente voltada para Direct Rendering Infrastructure (DRI) no X Window System em sistemas operacionais do tipo Unix (incluindo Linux , FreeBSD , Solaris ) e Android , no entanto, pode potencialmente também pode ser usado com framebuffer direto e subsistemas gráficos para saída de vídeo. Processamento acelerado inclui suporte para descodificação vídeo , codificação de vídeo , a mistura de sub-imagem, e processamento.

A especificação VA-API foi originalmente projetada pela Intel para sua série GMA (Graphics Media Accelerator) de hardware GPU com o objetivo específico de, eventualmente, substituir o padrão XvMC como o equivalente multiplataforma Unix padrão da API Microsoft Windows DirectX Video Acceleration (DxVA) , mas hoje a API não está mais limitada a hardware específico da Intel ou GPUs. Outros hardwares e fabricantes podem usar livremente esta API de padrão aberto para processamento de vídeo acelerado por hardware com seu próprio hardware, sem pagar uma taxa de royalties.

Visão geral

Image
Um exemplo de saída vainfo, mostrando codecs de vídeo suportados para aceleração VA-API

A principal motivação para VA-API é permitir a decodificação de vídeo acelerada por hardware em vários pontos de entrada ( VLD , IDCT , compensação de movimento , desbloqueio ) para os padrões de codificação prevalecentes hoje ( MPEG-2 , MPEG-4 ASP / H.263 , MPEG-4 AVC / H.264 , H.265 / HEVC e VC-1 / WMV3 ). Estender o XvMC foi considerado, mas devido ao seu design original apenas para MPEG-2 MotionComp , fez mais sentido projetar uma interface do zero que pode expor totalmente os recursos de decodificação de vídeo nas GPUs de hoje .

Hardware e drivers suportados

A partir de 2019, VA-API tem suporte nativo por:

  • Drivers de código aberto Intel Quick Sync para Linux
  • Drivers de fonte aberta Mesa para placas gráficas AMD e Intel
  • Drivers AMDGPU-PRO para placas de vídeo AMD no Linux
  • libva-vdpau-driver para placas suportadas por VDPAU

Codecs de vídeo suportados

VA-API atualmente oferece suporte a esses codecs de vídeo na versão oficial principal, mas observe que exatamente quais codecs de vídeo são compatíveis depende do hardware e das capacidades do driver.

  • Perfil principal de aceleração de decodificação MPEG-2
  • Perfil avançado de aceleração de decodificação VC-1 / WMV3
  • MPEG-4 Parte 2 (H.263) (também conhecido como MPEG-4 SP / MPEG-4 ASP, mais conhecido como Xvid ) aceleração de decodificação
  • Perfil principal de aceleração de codificação H.264 AVC
  • Aceleração de decodificação H.264 AVC de alto perfil
    • Decodificação de comprimento variável de hardware H.264 / AVC (VLD) - CABAC
    • Decodificação de comprimento variável de hardware H.264 / AVC (VLD) - CAVLC
    • H.264 / AVC Hardware Inverse Transform (IT)
    • H.264 / AVC Hardware Motion Compensation (HWMC)
    • H.264 / AVC Hardware In-Loop Deblocking (ILDB)
  • Aceleração de codificação H.265 / HEVC
  • Aceleração de decodificação H.265 / HEVC
  • Aceleração de codificação VP9 de 8 bits
  • VP9 aceleração de decodificação de 8 e 10 bits

Processos que podem ser acelerados com VA-API

Processos de decodificação e pós-processamento de vídeo que podem ser descarregados e acelerados se os drivers de dispositivo e o hardware da GPU suportarem:

Arquitetura de software

Image
Arquitetura da API Video Acceleration

A interface atual é independente do sistema de janelas, de modo que pode ser potencialmente usada com subsistemas gráficos diferentes de DRI (Direct Rendering Infrastructure) no X Window System , como direto com framebuffer , e pode funcionar com DRM de terceiros ( Bibliotecas Direct Rendering Manager) . Em suma, é um esquema para passar vários tipos de buffers de dados do aplicativo para a GPU para decodificar ou codificar um fluxo de bits compactado .

Software compatível com VA-API

Veja também

  • Distributed Codec Engine (libdce) - API Texas Instruments para o mecanismo de codec de vídeo em sistemas embarcados baseados em OMAP
  • OpenMAX - uma API de abstração de mídia multiplataforma isenta de royalties do Khronos Group

Referências

links externos