VDPAU

**VDPAU**(Video Decode and Presentation API for Unix, 유닉스용 비디오 디코드 및 프레젠테이션 API)는 사용료 없는 애플리케이션 프로그래밍 인터페이스(API)이자 MIT 허가서에 따라 배포되는 자유-오픈 소스 라이브러리()로서 구현된 것이다. VDPAU는 엔비디아에서도 지원한다.

VDPAU 인터페이스는 엔비디아 지포스 드라이버, 누보 또는 amdgpu와 같은 장치 드라이버에 의해 구현되어야 하며, VLC 미디어 플레이어 또는 GStreamer와 같은 최종 사용자 소프트웨어에 엔비디아의 퓨어비디오 또는 AMD의 통합 비디오 디코더와 같은 그래픽 처리 장치(GPU)의 ASIC 블록 형태의 사용 가능한 비디오 압축 해제 가속 하드웨어에 대한 표준화된 접근을 제공하고 이를 활용할 수 있도록 한다.

VDPAU는 유닉스 계열 운영체제(리눅스, FreeBSD, 솔라리스 포함)를 대상으로 한다.

## 인터페이스의 기능 범위
VDPAU를 통해 비디오 프로그램은 GPU의 특수 비디오 디코딩 ASIC에 접근하여 비디오 디코딩 프로세스의 일부와 비디오 후처리를 CPU에서 GPU로 오프로드할 수 있다.

현재 VDPAU에 의해 GPU로 오프로드될 수 있는 부분은 움직임 보상(mo comp), 이산 코사인 변환(iDCT), VLD(가변 길이 디코딩) 및 MPEG-1, MPEG-2, MPEG-4 ASP (MPEG-4 파트 2), H.264/MPEG-4 AVC 및 VC-1, WMV3/WMV9 인코딩 비디오를 위한 디블록킹이다. GPU로 오프로드할 수 있는 특정 코덱은 GPU 하드웨어의 세대 버전에 따라 달라진다.

## 역사
VDPAU는 원래 엔비디아가 지포스 8 시리즈 및 이후 GPU에 탑재된 자사의 퓨어비디오 SIP 블록을 위해 설계했다.

2015년 3월 9일, 엔비디아는 메인, 메인 4:4:4, 메인 스틸 픽처, 메인 10, 메인 12 프로파일에 대한 고효율 비디오 코딩(HEVC) 디코딩을 지원하는 VDPAU 버전 1.0을 출시했다.

## VDPAU를 구현하는 장치 드라이버 및 비디오 컨트롤러
VDPAU는 X11 소프트웨어 장치 드라이버에 구현되지만, 하드웨어 GPU의 가속 기능에 의존한다.

드라이버가 VDPAU를 구현하는 모든 엔비디아 그래픽 카드는 엔비디아 퓨어비디오에 나열되어 있다.

S3 그래픽스는 크롬 400 비디오 카드의 리눅스 드라이버에 VDPAU를 추가했다. 리눅스 장치 드라이버 버전 14.02.17 현재, VDPAU는 S3 크롬 430 GT, S3 크롬 440 GTX, S3 크롬 530 GT 및 S3 크롬 540 GTX 하드웨어에서 사용할 수 있다.

ATI/AMD는 VDPAU 가속 기능을 갖춘 라데온 HD 4000+ 그래픽 카드용 오픈 소스 드라이버를 출시했다.

인텔은 VDPAU 드라이버를 제공하지 않고, 자사의 VA-API만 지원한다. 그러나 libvdpau-va-gl을 통해 인텔의 VA-API 드라이버를 사용할 수 있다.

엔비디아는 인텔 및 ATI용 하드웨어 특정 드라이버의 예시 이름(libvdpau_intel.so 및 libvdpau_ati.so)을 언급하며 다른 GPU 설계자들이 자신들의 제품을 오픈 소스 VDPAU 라이브러리와 호환되도록 하고 VDPAU 가속 기능이 있는 드라이버를 제공하기를 바란다. 인텔은 VDPAU를 고려 중이라고 밝혔다.

선시 SoC (올위너)는 실험적인 VDPAU 구현을 가지고 있다.

메사 v8.0부터는 Gallium3D를 활용하는 비디오 카드에 대한 VDPAU를 포함한다.

### 제네릭 VDPAU 드라이버
2013년 말부터는 OpenGL(그리기 및 스케일링용)과 VA-API(가능한 경우 디코딩용)를 사용하는 독립적으로 개발된 백엔드 드라이버가 있다. 이는 일부 인텔 그래픽스 및 어도비 플래시 플레이어에서 작동하는 것으로 보고되었다.

OpenGL 기능만을 이용한 가속 스케일링은 VDPAU를 사용할 수 없을 때 비가속 스케일링을 사용하는 플래시 플레이어 때문에 주로 필요하다. 리눅스나 FreeBSD에서 실행되는 거의 모든 다른 비디오 소프트웨어는 Xv를 지원한다. 이는 기본 VDPAU 지원이 없는 느린 컴퓨터에서 전체 화면 비디오에 필수적이다.

HW 디코딩을 위한 VDPAU 대 VA-API 변환은 최신 인텔 그래픽 하드웨어에 유용하다. 일부 소프트웨어는 VDPAU를 통해 HW 디코딩을 지원하지만 VA-API를 지원하지 않기 때문이다.

## VDPAU를 지원하는 소프트웨어
* 버전 2.6부터 Avidemux
* Boxee
* FFmpeg
* GStreamer
* Fluendo
* 엠플레이어
* MythTV
* 코디 (이전 XBMC)
* Xine
* MLT
* 어도비 플래시 10.2 스테이지 비디오 및 이후 버전
* VLC 미디어 플레이어 2.1
* mpv

VDPAU는 VA-API 및 OpenMAX IL의 백엔드로도 사용될 수 있으며, 이들은 VDPAU 기능의 일부를 포함한다. 따라서 VA-API 또는 OpenMAX IL을 사용하는 모든 소프트웨어는 VDPAU를 부분적으로 사용할 수 있다(예: VLC 미디어 플레이어).

## 엔비디아 VDPAU 기능 세트
**엔비디아 VDPAU 기능 세트**는 (엔비디아 퓨어비디오) 하드웨어 디코딩 기능의 다양한 수준을 지원하는 GPU의 하드웨어 세대이다. 기능 세트 A, B, C의 경우 최대 비디오 너비와 높이는 2048 화소이며, 최소 너비와 높이는 48화소이고, 모든 코덱은 현재 최대 8192 매크로블록(VC-1/WMV9의 경우 8190)으로 제한된다.
부분 가속은 VLD(비트스트림) 디코딩이 CPU에서 수행되고, GPU는 IDCT, 움직임 보상 및 디블록킹만 수행함을 의미한다. 완전 가속은 GPU가 VLD, IDCT, 움직임 보상 및 디블록킹을 모두 수행함을 의미한다.

; 기능 세트 A
: H.264에 대한 완전 가속 및 MPEG-1, MPEG-2, VC-1/WMV9에 대한 부분 가속을 지원한다.
; 기능 세트 B
: MPEG-1, MPEG-2, VC-1/WMV9 및 H.264에 대한 완전 가속을 지원한다.
: 모든 기능 세트 B 하드웨어는 다음 너비의 H.264를 디코딩할 수 없다: 769-784, 849-864, 929-944, 1009-1024, 1793-1808, 1873-1888, 1953-1968, 2033-2048 화소.
; 기능 세트 C
: MPEG-1, MPEG-2, MPEG-4 파트 2(일명 MPEG-4 ASP), VC-1/WMV9 및 H.264에 대한 완전 가속을 지원한다.
: 전역 움직임 보상 및 데이터 분할은 MPEG-4 파트 2에 대해 지원되지 않는다.
; 기능 세트 D
: 기능 세트 C와 유사하지만 최대 4032 x 4080 해상도의 H.264 디코딩과 최대 4032 x 4048 해상도의 MPEG-1/MPEG-2 디코딩을 추가로 지원한다.
; 기능 세트 E
: 기능 세트 D와 유사하지만 최대 4096 x 4096 해상도의 H.264 디코딩과 최대 4080 x 4080 해상도의 MPEG-1/MPEG-2 디코딩을 추가로 지원한다. VDPAU 기능 세트 E를 사용하는 GPU는 손상된 비디오 스트림을 디코딩할 때 더 강력한 오류 처리를 제공하는 향상된 오류 은폐 모드를 지원한다.
; 기능 세트 F
: 최대 4096 × 2304 화소 해상도의 HEVC 메인 (8비트), 메인 10 (10비트) 및 VP9 프로필 0 (8비트) 비디오 디코딩 전용이 도입되었다.
; 기능 세트 G
: HEVC 메인 12 (12비트) 및 VP9 프로필 2 (12비트) 비디오 디코딩에 대한 하드웨어 지원이 추가되었다.
; 기능 세트 H
: 기능 세트 H는 8192x8192 (8K 해상도) H.265/HEVC 비디오 스트림의 하드웨어 가속 디코딩이 가능하다.
; 기능 세트 I
: 기능 세트 H와 유사하다.
; 기능 세트 J
: 기능 세트 J는 HEVC 444 디코드 지원을 추가한다.
; 기능 세트 K
: 기능 세트 K는 8192x8192 (8K 해상도) AV1 MAIN 프로필 비디오 스트림의 하드웨어 가속 디코딩이 가능하다.

## libvdpau 독립형 VDPAU 라이브러리
libvdpau 독립형 VDPAU 라이브러리는 엔비디아의 독점 리눅스 그래픽 드라이버와 독립적으로 엔비디아가 배포한다. 이는 엔비디아 외부에서 VDPAU 채택을 돕기 위한 노력의 일환이다. 이 오픈 소스 라이브러리 패키지에는 다른 제조업체가 장치 드라이버에 VDPAU를 구현할 수 있도록 하는 래퍼 라이브러리와 디버깅 라이브러리가 포함되어 있다.

## 같이 보기

* 퓨어비디오
* 통합 비디오 디코더
* DirectX 비디오 가속 (DXVA) – 마이크로소프트 윈도우 운영 체제용 VDPAU 등가 API.
* 비디오 가속 API (VA API) – 리눅스/유닉스 운영 체제용 대체 비디오 가속 API.
* X-비디오 비트스트림 가속 (XvBA) – 리눅스/유닉스 운영 체제용 대체 비디오 가속 API.
* X-비디오 움직임 보상 (XvMC) API – 리눅스/유닉스 운영 체제용 대체 및 가장 오래된 비디오 가속 API.
* 분산 코덱 엔진 (libcde)은 OMAP 기반 임베디드 시스템의 비디오 코덱 엔진용 텍사스 인스트루먼트 API이다.
* Video Decode Acceleration Framework는 애플의 Mac OS X에서 H.264 하드웨어 가속 디코딩용 API이다.
* 비디오툴박스는 애플의 Apple TV 및 Mac OS X에서 하드웨어 가속 디코딩용 API이다.
* OpenMAX IL (오픈 미디어 가속 통합 레이어) - 크로노스 그룹의 로열티 프리 크로스 플랫폼 미디어 추상화 API

## 각주

## 외부 링크
* VDPAU (Video Decode and Presentation API for Unix) by Nvidia
* NVIDIA VDPAU Benchmarks
* A NVIDIA VDPAU Back-End For Intel's VA-API
* VDPAU usage by MythTV

분류:API
분류:Freedesktop.org
분류:비디오 가속
분류:비디오 라이브러리
분류:엔비디아 소프트웨어
분류:비디오 후처리