mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-04-12 23:14:48

DXVA

DirectX Video Acceleration

1. 개요2. 지원 소프트웨어3. 기타

1. 개요

DXVA는 DirectX를 이용, CPU로 소프트웨어 디코딩을 하는 것이 아니라 GPU를 이용한 하드웨어 디코딩을 위한 인터페이스이다.

DXVA의 장점으로는 GPU를 디코딩에 이용하기 때문에 CPU 점유율이 매우 낮아지며 또한 렌더링 속도도 무척 빨라지게 된다.

단점은 소프트웨어 코덱이 CPU만 사용하는것에 비해 DXVA는 VGA를 가속에 참여시키며 DXVA를 이용할 경우 일반적으로 GPU에 내장된 하드웨어 디코더를 통해 재생하지만 하드웨어 디코더가 아닌, DXVA를 단지 인터페이스로 쓸 뿐 실제로는 GPU를 통해서 연산하거나 둘의 하이브리드 방식인 경우도 있기 때문에 소프트웨어 처리보다 총 전력소모가 높을수도 있고 소프트웨어 디코딩과 달리 하드웨어 코덱은 영상 코덱의 스펙을 모두 지원하지 않는 경우가 있다.

셰이더 유닛과 같은 VGA의 범용 프로세서가 아닌 전용 동영상 디코딩칩을 이용하기 때문에 단순히 그래픽카드의 성능과 비례하지 않는다. 오히려 상위 그래픽카드 제품군이 하위 그래픽카드 제품군의 동영상 가속 성능에서 밀리거나 영상 재생시 전성비가 좋지 못한 경우도 있다. 거기에다 이러한 하드웨어 방식의 디코딩은 디코딩에 약간은 엄격한 제한이 붙기 때문에 모든 동영상에서의 호환을 장담할 수 없을 뿐만 아니라 호환되지 않는 부분에서는 가차없이 에러를 뿜어낸다. DXVA를 사용하다 소프트웨어 디코딩에서 보이지 않던 묘한 깍두기 같은 것이 영상에서 보였다면 100%. 따라서 최고의 품질을 위해서는 CPU의 능력이 모자란 경우가 아니면 CPU만을 이용할 것이 권장된다.

기본적으로 비디오 디코더 → 렌더러로 바로 영상이 처리되는 플레이어의 경우 밝기 조절 같은 기타 영상효과는 전혀 주지 못하는 경우가 있으나 요즘은 드라이버 수준에서 모두 지원하고, 디코딩된 이미지에 셰이더 후처리로 효과를 주는 동영상 플레이어의 경우 상관 없이 적용이 가능하다.

VGA에 따라 지원하는 코덱과 영역이 다른데, 이걸 간단히 확인하는 방법으로는 DXVA Checker라는 프로그램을 받아서 실행시켜보면 알 수 있다.

또한, 아무 재생기에서 되는 건 아니고 특정 플레이어와 코덱 VGA를 모두 가리는 제한적인 조건이 필요하다. H.262/WMV가 주요 지원 코덱이며, DXVA2에 들어서 H.264/VC1/AVC 등의 지원이 추가되어 지원코덱의 범위는 커졌지만 그 외에 제한 조건이 더 심해지며 EVR 렌더러를 필수로 이용해야 한다. 원래 Windows Vista부터 사용 가능했으나 나중에 Windows XP에서도 사용 가능하게 제공해줬다. 단, .Net Framework 3.0 이상의 프레임워크를 별도로 설치해야한다.

네이티브와 copy-back모드가 있는데 네이티브는 앞서 말한 대로 비디오 디코더→비디오 렌더러로 바로 연결되지만 copy-back은 중간에 cpu를 한번 거친다. 때문에 성능은 떨어지지만 재생할 GPU를 선택 가능하고 렌더러에 상관없이 동작하므로 호환성이 더 좋다.

DXVA는 여러 수준의 가속이 있으며 가속 수준별 특징 또한 다르다.

2. 지원 소프트웨어

3. 기타

DXVA는 Microsoft 가 DirectX 와 같이 Windows를 위해 만든 것인 만큼 다른 OS에서는 사용이 불가능하다. 물론 다른 OS에도 비슷한 기능을 하는 기술들은 존재한다.
또한 하드웨어 제조사들 또한 저런 별도의 레이어를 거치지 않고 Low-Level 로 접근할 수 있는 인터페이스를 제공하기도 한다.

[1] 이름에서 알수 있듯이 동영상의 복호,부호화 과정내에(In-loop) 수행되는 디블럭킹 필터이다. 동영상을 인코딩하기 전에 전처리를 하는 Pre-process 디블럭킹 필터나, 동영상을 디코딩한 후에 적용되는 post-process 디블럭킹 필터와는 엄연히 구분된다. 거기다가 In-loop 디블럭킹 필터자체가 디코딩 과정중 하나이기 때문에 디코딩할때도 디블럭킹 연산을 해야하며 이의 부하가 생각외로 크다. (어느 서적에 따르면 전체 CPU점유율의 대략 30%에서 많으면 50%라고 한다) 따라서 저사양 컴퓨터에 무리를 주기 때문에 어떤 디코더는(대표적으로 CoreAVC) 이 디블럭킹 연산을 해제할수 있도록 한다. 사양은 많이 낮아지지만 최후의 보루다. 해제하면 네모난 블럭이 난무하는 끔찍한 화질을 볼 수 있다.

분류