DXVA

 

'''D'''irect'''X''' '''V'''ideo '''A'''ccelaction
1. 개요
2. 지원 소프트웨어


1. 개요


DXVA는 DirectX를 이용, CPU로 소프트웨어 디코딩을 하는 것이 아니라 GPU를 이용한 하드웨어 디코딩을 하는 방식을 뜻한다. 일종의 GPGPU.
DXVA의 장점으로는 GPU를 디코딩에 이용하기 때문에 CPU 점유율이 매우 낮아지며 또한 렌더링 속도도 무척 빨라지게 된다.
단점은 CPU만을 사용하는 내장코덱과는 달리 DXVA는 VGA를 가속에 참여시키며 DXVA를 이용할 경우 일반적으로 GPU에 내장된 하드웨어 디코더를 통해 재생하지만 하드웨어 디코더가 아닌, DXVA를 단지 인터페이스로 쓸 뿐 실제로는 GPU를 통해서 연산하거나 둘의 하이브리드 방식인 경우도 있기 때문에 내장코덱을 이용한 구동방식보다 전기소모가 더 많을 수도 있으며 호환성이 나쁜 경우도 많아서, GPU가 지원하지 않는다면 H.265 등 정말로 내장코덱으로 돌리기엔 성능이 부족한 경우에만 사용하는 것을 권장한다.
VGA의 전용 동영상 디코딩칩을 이용하기 때문에 단순히 그래픽카드의 성능이 좋다고 DXVA의 효율이 높아지는것은 아니고, 오히려 상위 그래픽카드 제품군이 하위 그래픽카드 제품군의 동영상 가속 성능에서 밀리거나 영상 재생시 전성비가 좋지 못한 경우도 있다. 거기에다 이러한 하드웨어 방식의 디코딩은 디코딩에 약간은 엄격한 제한이 붙기 때문에 모든 동영상에서의 호환을 장담할 수 없을 뿐만 아니라 호환되지 않는 부분에서는 가차없이 에러를 뿜어낸다. DXVA를 사용하다 영상에서 묘한 깍두기 같은 것을 보았다면 100%. 따라서 CPU의 능력이 모자란 경우가 아니면 CPU만을 이용할 것을 강력히 권장한다. 단, AMD APU의 경우 VCN을 지원하여 좋은 효과를 거둘 수 있다.
또, 비디오 디코더 → 렌더러로 바로 영상이 처리되는 만큼 밝기 조절 같은 기타 영상효과는 전혀 주지 못한다는 것은 단점이나 요즘은 하드웨어 수준에서 모두 지원하고, 동영상 플레이어도 하드웨어 컨트롤을 사용하여 조절하는 것을 지원한다.
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는 여러 수준의 가속이 있으며 가속 수준별 특징 또한 다르다.
  • Post Process - 직역하면 후처리이며 DXVA 중 가장 VGA 가속을 덜 받는다. CPU가 완전히 디코딩한 것에 디인터레이싱이나, 블럭 제거 등의 잡티 제거만 돕는 수준. 물론 CPU 점유율이 높다.
  • Mocomp - Motion Compensation 직역하면 움직임 보상, 그나마 VGA가 디코딩을 조금씩 담당하는 단계, 동영상 압축원리 중 하나가 움직이는 물체의 움직임만 기록하고, 움직이지 않는 것은 생략하고 전에 있던 정보로 대체하는데, 이때 VGA가 연산을 약간 도와주는 정도. CPU 점유율이 떨어지는 건 눈에 보이긴하나 생각보다 높진 않은 상태. 엔비디아 그래픽카드에서는 지포스 256부터 처음 지원했었는데 지포스 2 ~ 4 Ti 시리즈 동안 해당 기능이 잠시 삭제되었다.
  • IDCT - Inverse Discrete Cosine Transform 역 이산 코사인 변환, 이 단계부터 VGA가 적극적으로 디코딩에 참여하고, 현재 대부분의 기존 프로그램들이 IDCT 가속을 이용하며 CPU 점유율도 상당히 내려간다. DXVA1에서 이용가능한 최고 수준의 가속.
  • VLD - Variable Length Decoder며 해석하면 가변장 복호화가 된다. 영상압축중 상당부분을 차지하고 있는 엔트로피 코드를 디코딩하는 것이며, 사실상 동영상 복호과정중 가장 많은 프로세스를 점유한다. ( 비트레이트가 높으면 높을수록, 엔트로피 코드의 복호화 부하도 크다. 따라서 비트레이트는 엔트로피 코딩을 사용하는 영상압축포맷을 디코딩할때 CPU점유율을 가늠하는 척도가 된다 ) 따라서 CPU부하가 대부분 줄어들게 되며, MPEG-4 part2 와 같이 가변장 복호를 제외한 나머지 프로세스들의 점유율이 크지 않은 경우에는 사실상 이를 통해 CPU점유율을 0%에 가깝게 끌어내릴수도 있다.

2. 지원 소프트웨어



분류