X-비디오 모션 보상
X-Video Motion CompensationX-Video 모션 보상(XvMC)은 X 윈도우 시스템용 X 비디오 확장(Xv)의 확장이다.XvMC API는 비디오 프로그램이 비디오 디코딩 프로세스의 일부를 GPU 비디오 하드웨어로 오프로드할 수 있게 해준다.이론적으로 이 프로세스는 버스 대역폭 요구 사항도 줄여야 한다.현재 XvMC에서 GPU로 오프로드할 수 있는 부분은 MPEG-2 비디오용 모션 보정(mo comp)과 역 이산 코사인 변환(iDCT)이다.XvMC는 또한 MPEG-2뿐만 아니라 VIA Unicrome(S3 Graphics Chrome Series) 하드웨어에서 MPEG-4 ASP 비디오에 대한 mo comp, iDCT 및 VLD("변수 길이 디코딩", 더 흔히 "슬라이스 레벨 가속")의 오프로드 작업을 지원한다.
XvMC는 마이크로소프트 윈도우즈 DirectX 비디오 가속(DxVA) API와 동등한 UNIX 최초의 제품이었다.XvMC를 이용하는 것으로 알려진 인기 있는 소프트웨어 애플리케이션으로는 MPlayer, MythetTV, xine 등이 있다.
장치 드라이버
XvMC 비디오 가속이 가능한 각 하드웨어 비디오 GPU에는 이러한 기능을 활성화하기 위한 X11 소프트웨어 장치 드라이버가 필요하다.
하드웨어 제조업체
엔비디아
현재 사용할 수 있는 X11 Nvidia 드라이버는 2D 전용 오픈소스지만 Nvidia가 관리하는 난독화 드라이버, Nvidia가 독점하는 바이너리 드라이버, Novia가 개발한 바이너리 드라이버의 역엔지니어링에 기반한 오픈소스 드라이버 등 3가지가 있다.Nouveau는 XvMC 지원을 추구하지 [1]않고, 2D nv 드라이버는 XvMC를 지원하지 않으며, Nvidia의 공식적인 독점적 바이너리 드라이버는 GeForce 7000 시리즈까지의 하드웨어에 대한 MPEG-2 오프로드(mo comp 및 iDCT)만 지원한다.
비아
VIA는 일부 VIA 유니크롬(S3 Graphics Chrome Series) 하드웨어에 오픈 소스 장치 드라이버를 제공하여 MPEG-2 및 MPEG-4 ASP 비디오의 오프로드를 지원한다.VLD VIA 디코딩 레벨 덕분에 CPU에서 디코딩 작업이 iDCT 또는 mo comp 레벨만 지원하는 GPU보다 훨씬 더 많이 오프로드된다.모든 장치가 지원되는 것은 아니며 다른 주의 사항도 있다는 점을 명심하십시오.[2]
인텔
인텔은 인텔의 통합 그래픽 칩 8xx/9xx 범위에서 MPEG-2 오프로드(mo comp 및 iDCT)를 지원하는 공식 오픈 소스 장치 드라이버를 제공한다.[3]
ATI/AMD
ATI는 Rage 128 GPU로 그래픽 보드에 MPEG2 가속을 제공한 최초의 제조사였지만, 사용 방법에 대한 문서를 제공한 적은 없다.따라서 XvMC는 사용할 수 없으며, 앞으로도 사용할 수 없을 것이다.XvMC는 8.10 이상의 Catalyst 드라이버에 의해 실험적인 수준에서 Radeon-4000 카드(UVD가 있음)에서 지원된다("기존에서 작동하지 않는다는 의미).[4] (X-Video Bitstream Acceleration 참조)다른 ATI/AMD 하드웨어에서의 동작 보상 지원이 향후 계획되어 있다.(이제 모든 하드웨어는 iDCT 및 mo comp 레벨에서 MPEG-2 가속을 지원한다.)
매트록스
Matrox 하드웨어에서 XvMC를 지원하는 장치 드라이버는 없다(Matrox Parhelia 하드웨어는 MPEG-2 가속을 mo Comp 레벨에서 지원한다).
S3
S3의 바이너리 디바이스 드라이버는 Chrome 20 GPU의 초기 2.0.16 드라이버에서만 MPEG-2 오프로딩을 지원한다.[citation needed]
XvMC API 기술 개요
X-Vx비디오 o 모션 보상 - API 사양 v. 1.0에서[5] 가져온 기능
XvPort
XvMC는 X 비디오 확장(Xv)을 확장하고 XvPort라는 익숙한 개념을 활용한다.포트에는 Xv를 통해 설정 및 쿼리할 수 있는 속성이 있다.또한 XvMC 포트에서 하드웨어 모션 보상 컨텍스트를 생성하여 함께 사용할 수 있다.XvImage를 지원하는 포트(즉, XV 버전 2.2 API 부록에 설명된 "XV_IMIGE" 포트 인코딩을 가지고 있음)는 지원되는 XvMCSurface 유형의 목록을 쿼리할 수 있다.XvMCSurface 유형을 지원하는 경우 해당 포트에 대해 XvMccontext를 만들 수 있다.
XvMccontext
XvMccontext는 움직임 보상 파이프라인의 상태를 설명한다.개별 XvMCCon텍스트는 단일 포트, 표면 유형, 움직임 보상 유형, 폭 및 높이 조합과 함께 사용할 수 있다.예를 들어 720 x 480 4:2:0 표면에서 MPEG-2 모션 보정을 수행하는 특정 포트에 대해 컨텍스트가 생성될 수 있다.컨텍스트가 생성되면 이를 참조하는 것은 포트, 표면 유형, 크기 및 움직임 보상 유형을 의미한다.컨텍스트는 "직접" 또는 "간접"일 수 있다.간접적인 컨텍스트의 경우 X 디스플레이 서버는 클라이언트가 전달한 데이터를 사용하여 모든 비디오를 렌더링한다.직접 컨텍스트의 경우 클라이언트 라이브러리는 X 표시 서버와의 상호 작용이 거의 또는 전혀 없이 비디오를 렌더링한다.
XvMCSurfaces
XvMCSurfaces는 움직임 보상 하드웨어가 렌더링할 수 있는 버퍼다.버퍼 자체의 데이터는 클라이언트에 접근할 수 없으며 하드웨어 특정 형식으로 저장될 수 있다.특정 컨텍스트(리소스 허용)와 함께 사용하기 위해 임의의 수의 버퍼를 만들 수 있다.
비디오 파이프라인
XvMC는 비디오 파이프라인에서 두 곳 중 한 곳에서부터 비디오 가속을 제공한다.우리가 "운동 보상" 수준이라고 부를 첫 번째 지점에서 시작하는 가속은 운동 보상이 적용되는 장소에서 역 정량화와 IDCT 후에 시작된다.우리가 "IDCT" 수준이라고 부를 두 번째 지점은 역 정량화 직후 IDCT 앞에 시작된다.
렌더링
렌더링은 라이브러리에 대상 XvMCSurface와 최대 2개의 기준 XvMCSurfaces를 제시하여 동작 보상에 필요한 버퍼, 8x8 블록의 버퍼 및 동작 보정 벡터와 함께 대상 XvMCSurface에 데이터를 구성하는 방법을 설명하는 명령 버퍼를 제공한다.파이프라인이 iDCT 수준에서 시작되면 Xv는 동작 보상을 수행하기 전에 블록에 IDCT를 수행한다.XvMCSurface의 일부를 임의 스케일링으로 그릴 수 있는 위치에 복사/오버레이하는 기능이 제공된다.
XvMcsub 그림
XvMCSub 사진은 대상 표면과 혼합될 수 있는 별도의 표면이다.컨텍스트(리소스 허용)와 함께 사용하기 위해 임의의 수의 XvMcsub 그림을 생성할 수 있다."백엔드"와 "프론드" 서브픽처 동작이 모두 지원된다.
소프트웨어 지원
XvMC 가속은 다음에서 지원됨:
가속 가능한 프로세스
XvMC는 현재 모션 보정(mo comp)과 역 이산 코사인 변환(iDCT), (및 VIA 유니크롬 GPU에 대한 가변 길이 디코딩)의 하드웨어 가속만 지원하지만, GPU 단편 프로그램을 통해 가속화될 수 있는 최신 GPU에 추가 비디오 디코딩 프로세스가 전달될 수 있다.향후 XvMC를 확장하여 VDPAU, XvBA 및 VAAPI와 같은 새로운 경쟁 하드웨어 비디오 가속 API와 동일한 프로세스를 지원할 수 있음:
- 모션 보상(mo comp)
- 역 이산 코사인 변환(iDCT)
- 역방향 텔레신 3:2 및 2:2 풀다운 보정
- 역수정 이산 코사인 변환(iMDCT)
- 인루프 디블로킹 필터
- 프레임 내 예측
- 역정량화(IQ)
- 가변 길이 디코딩(VLD), 일반적으로 슬라이스 레벨 가속이라고 함
- 공간적-임시적 디인터레이싱 및 자동 인터레이스/진행적 소스 탐지
- 비트스트림 처리(CAVLC/CABAC)
현재 제한 사항
DxVA(Microsoft 등가 API for Windows)의 모든 특징과 기능을 일치시키지 못하며 Intel과 NVIDIA의 Linux 장치 드라이버에서 MPEG-2 이외의 비디오 형식에 대한 지원이 부족한 것 외에도 XvMC API 사양 버전[7] 1.0은 현재 다음과 같은 다른 한계를 가지고 있다.
- BOB와 한 필드는 XvMC와 함께 작동하는 유일한 디인터레이싱 방법이다.
- PiP(사진)는 XvMC와 함께 작동하지 않는다.
- 프레임별로 비디오 프레임을 통과하면 XvMC로 인해 아티팩트가 발생할 수 있다.
- XvMC가 활성화된 상태에서 비디오 편집은 불가능하기 어렵다.
- XvMC API의 네트워크 투명성 부족
- 클라이언트 애플리케이션이 어떤 클라이언트 측 라이브러리를 사용해야 하는지(즉, 통합 래퍼 라이브러리)와 완전히 독립적일 수 있는 능력 부족.
현대 GPU의 비디오 가속 기능을 지원하는 보다 현대적인 비디오 가속 API를 개발하기 위한 VA API라는 프로젝트가 진행 중이다.[8]
참고 항목
- X 비디오 확장(일반적으로 "XVideo" 또는 "XV"라고 함)
- X 창 시스템(일반적으로 "X11" 또는 "X"라고 함)
- MIT-SHM - X11용 MIT 공유 메모리 확장
- DirectX 비디오 가속(DxVA) API - XvMC와 동등한 Microsoft Windows
- 비디오 가속 API(VA API)
- OpenMAX IL (Open Media Acceleration Integration Layer) - Khronos 그룹의 로열티 없는 교차 플랫폼 미디어 추상화 API
- X-비디오 비트스트림 가속(XvBA)
- VDPAU(Video Decode and Presentation API for Unix)
- 분산 코덱 엔진(libcde)은 OMAP 기반 임베디드 시스템의 비디오 코덱 엔진을 위한 텍사스 인스트루먼트 API이다.
- Video Decode Acceleration Framework는 Mac OS X에서 H.264의 하드웨어 가속 디코딩을 위한 Apple Inc.의 API임
- VideoToolbox는 Apple TV 및 Mac OS X 10.05 이상에서 하드웨어 가속 디코딩을 위한 Apple Inc.의 API이다.[9]그것은 원래 문서화되지 않았지만, 애플은 그 이후 그것에 대한 문서를 발표했다.[10]
- OpenVideo 디코드(OVD) – AMD의 새로운 개방형 크로스 플랫폼 비디오 가속 API.[11]
참조
- ^ 누보 위키 - 피쳐 매트릭스
- ^ "Archived copy". Archived from the original on September 26, 2015. Retrieved February 26, 2009.
{{cite web}}: CS1 maint: 타이틀로 보관된 사본(링크) - ^ Intel의 Linux Graphics 드라이버 - i810 - Intel 8xx 통합 그래픽 칩셋
- ^ AMD의 X-Video Bitstream Acceleration //phoronix, 2008년 10월 28일
- ^ X-비디오 모션 보상 - API 사양 v.10 2007년 5월 15일 웨이백 머신에 보관
- ^ MythTV 0.25 릴리스 노트
- ^ XvMC API 사양 버전 1.0 2007년 5월 15일 웨이백 머신에 보관
- ^ freedesktop.org - 소프트웨어/vaapi
- ^ https://web.archive.org/web/20150305200949/http://www.tuaw.com/2011/01/20/xbmc-for-ios-and-atv2-now-available/ iOS 및 Apple TV용 XBMC 이용 가능
- ^ "VideoToolbox - Apple Developer Documentation". developer.apple.com. Retrieved 2018-08-05.
- ^ "Archived copy" (PDF). Archived from the original (PDF) on April 9, 2011. Retrieved January 16, 2012.
{{cite web}}: CS1 maint: 제목(링크) OpenVideo 디코드(OVD) API로 보관
