API Video Acceleration - Video Acceleration API
| Autor (es) original (is) | Intel |
|---|---|
| lançamento inicial | 2008 |
| Versão estável | 2.13.0 / 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 |
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
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:
- Compensação de movimento (mocomp)
- Transformada de cosseno discreta inversa (iDCT)
- Filtro de desbloqueio em loop
- Previsão intra-frame
- decodificação de comprimento variável (VLD), mais comumente conhecida como aceleração de nível de fatia
- Processamento de fluxo de bits ( CAVLC / CABAC )
Arquitetura de software
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
- Clutter (kit de ferramentas)
- Servidor de mídia Jellyfin
- Emby media server (a partir da versão 3.0.6400)
- Helix media player ( Linux )
- ffmpeg , uma ferramenta de linha de comando do projeto FFmpeg , suporta codificação VA-API por meio de CLI com versão a partir de 3.1 e também libavcodec (também parte do projeto FFmpeg) contém código que outros aplicativos usam para suportar decodificação acelerada por hardware, incluindo VA- API.
- Fluendo
- Gnash Flash / reprodutor SWF
- GStreamer a gstreamer-vaapi
- Kodi (anteriormente XBMC Media Center) ( Linux )
- Kodibuntu (anteriormente XBMC Live) (Linux Live CD / sistema operacional USB)
- MPlayer (v1 com patches) e seu fork mpv (nativo)
- MythTV (a partir da versão 0.25)
- VLC media player (a partir da versão 1.1.0)
- Cliente Bluecherry DVR (a partir da versão 2.2.6)
- Xine (via biblioteca " xine-lib-vaapi ") desde a versão 1.2.3
- Open Broadcaster Software
- Firefox (no Wayland desde a versão 78 e no X11 desde a versão 80)
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
- Website oficial
- Intel Media e Audio para Linux
- mobile-hw-decode
- "VA API lentamente - mas seguramente - progredindo" - uma visão geral de 2009
- "MPlayer, FFmpeg Gain VA-API Support" - de 2008