본문 바로가기

DirectShow

KMP 렌더러와 기능들에 대해 알아보자

KMP 렌더러와 기능들에 대해 알아보자. (일부 내용 추가) 동영상과 UCC

2007/06/30 00:29

복사 http://blog.naver.com/jongsbee/20038766184

 

1.VMR9계열의 렌더러에서 화면이 살짝 뿌옇게 되는 이유는 무엇인가?
 

비디오 카드의 드라이버 레벨에서 압축된 YUV 형식의 색공간을 출력장치가 사용하는 RGB 형식으로 변환할 때 발생하는 문제입니다. 색공간 16-235 버그가 최신드라이버에서 수정되었기 때문에 굳이 색공간을 0~255로 늘리지 않아도 된다는 이야기.

ATI 카탈리스트 7.1이상, 지포스6이상 계열의 Nvidia 93.71 이상의 버전의 드라이버에서 이 문제가 해결되었다고 합니다.


쉽게 얘기해서 VMR9계열이 원래 뿌옇게 되는게 아니라 그래픽카드 드라이버의 버그라고 합니다.


이런 경우는 VMR9 + YV12를 사용하면 되겠고, 밑의 해결책을 따라할 필요도 없습니다.

오히려 해가 될 뿐입니다.


드라이버를 업데이트를 했다고 해도 완벽히 해결이 안된 그래픽카드가 상당히 많이 있습니다.

직접 테스트해봐서 뿌옇게 되는것이 확인이 될 경우만 밑의 해결책을 따라 주세요.


2.해결책

KMP 포럼에선 3가지의 해결책을 내놓고 있습니다.


 

 

1.VMR9 Renderless + 컬러스페이스 RGB32 강제 출력(RGB Force)

KMP에서는 이 문제에 대해서 RGB 출력시 내부의 KMP 비디오필터가 이 버그를 해결하는 루틴을 내장하고 있기 때문에, 이론적으로도 가장 좋으며 실제 측정한 결과로도 이를 입증합니다. 다만 이론적이라 해도 RGB32출력과 그냥 YV12출력한거에 뿌옇게되는 현상을 보정한것과 눈으로 보면 거의 차이없음.


대신 RGB32의 계산량이 많기 때문에 HD급 해상도의 영상 재생시에 엄청나게 늘어난 계산량을 CPU가 감당해야 하는 단점이 있습니다.


RGB가 YUV(YV12, YUY2..)에 비해 cpu가 처리해야 하는 데이터가 대략 2.7배이며,

아래 화면의 보이는 Output항목의 BitRate가 CPU가 계산해야 하는 픽셀정보량이라 합니다.


<VMR9 Renderless + RGB32>

 

<VMR9 Renderless + YV12 모드, 출력 bitrate 량이 거의 1/3가량 줄어들었다>


스샷을 보시면 위쪽 스샷이 색감을 제대로 표현 하고 있습니다. 남자 뒤통수 색깔을 비교해보면 알기가 쉽습니다.

VMR9모드에서 약간 뿌옇게 되는 문제로 검은색이 회색으로 표현되는 등의 문제가 rgb32출력으로 없어졌다는 것을 알 수 있습니다.


 

실제재생화면을 보시고 판단을 하시기 바랍니다. 한번 시험해 보세요~~^.^

RGB 강제출력 모드는 (초)고속 모드에서는 사용할 수 없습니다.


※ Output 해상도를 보면 704(768)x396이라 적혀있는데, 가로안에 들어있는 768이란 값은 신경 쓸 사항이 아닙니다. 프로그래밍시에 참고하는 값이라고 하더군요. 실제로 메모리에 할당될 때 그 크기로 된다는 kMP 내부참고값이며, 출력 해상도와 실질적으로 아무 관련이 없습니다.



2.remap_16_235

RGB32출력이 가장 이상적이긴 해도 해상도가 커질수록 CPU 부하량이 많기 때문에 이를 대체하는 방법이 있는데, VMR9 3D Texture의 픽셀 쉐이더를 이용하는 방법입니다. RGB32 다음으로 가장 좋은 방법이며, 실제로 remap으로 하는 방법이 가장 많이 쓰입니다.


 
 
RGB32를 쓰지 않고도 뿌옇게 나오는 문제를 해결해주는 옵션입니다.
쉐이더는 비디오 필터를 필요로 하지 않습니다. (비디오필터는 맨 밑의 항목에 설명되어 있습니다.)
단 이 모드를 사용하려면 조건이 있습니다.
 
1.그래픽카드가 픽셀쉐이더 2.0을 지원해야 한다.
2.VMR9 Renderless + 3D Texture Surface가 선택되어야 한다.
3.RGB32 모드에서 이용할 필요는 없다.
4.DirectX9 최신버전을 깔것.
 
일반적으로 픽셀쉐이더(PS) 2.0은 지포스 5700 이상, ATi Redeon 9500 이상에서 지원한다고 알려져 있습니다.
 
만약에 3D Texture Surface와 VMR9 렌더리스에서도 픽셀쉐이더 아무거나 해도 적용이 되지 않는다면
일단 DirectX9 최신버전을 까시고 그래도 안된다면 그 그래픽카드가 픽셀쉐이더 2.0을 지원하지 않는다고 보면 됩니다.
 
참고로 쉐이더중에서 sharpen을 적용하시는 분이 있는데, 솔직히 그 기능은 적용안하는게 좋다는게 제 의견입니다.
 
고 화질 영상의 경우 아무처리를 하지 않는것이 제일 좋으며, sharpen적용시 모든 동영상에 대해 화질이 좋아진다고도 할 수 없기 때문이죠. 요즘 릴되는 영상이야 샤픈이건 뭐던 다 보정이 되서 나오기 때문에 굳이 적용할 필요는 없다 봅니다.
 
 
3.레벨 조정
픽셀쉐이더가 지원되지 않는 그래픽 카드라면 마지막 보루로 VMR9 Renderless + YV12 + 고급영상처리의 레벨 조정을 이용하시면 되겠습니다. 아무래도 3가지 방법중 가장 안 좋은 것 같긴 하지만, KMP 비디오필터에서 수행되는 만큼 성능이 그리 나쁜 것은 아닙니다. 걍Remap 16_235와 동일하다라고 생각하면 될 듯.. 글픽카드에서 레벨조정(Remap)을 하는게 그만큼 CPU를 쓰지 않는다는 이득이 되니까요.
 
환경설정의 영상처리->레벨조정에 가면 위와 같은 화면을 볼 수 있는데, "입력 자동 설정"에는 체크하지 마세요~~
 
 
4.Direct3D(DX9) RGB Surface
렌더러를 Direct3D(DX9) RGB Surface로 선택해 주시면 되겠습니다.
RGB32를 조금 가볍게 출력하는 방법이기도 하지만, 비디오필터를 필요로 하고 범용적인 방법도 아니기에 그리 권장은 하지 않습니다.
 
원래 ATi 계열에서 레벨보정 기능중 하나인 alternative texture(대체 텍스쳐)을 대체하는 용도로 나왔으며, 개발자님도 쓰지 않는게 좋다고 했지만 의외로 쓰는 사람이 많네요. 바로 Direct3d로 렌더링하고 고품질자막도 가능하지만 쉐이더나 스케일러같은 VMR9 Renderless만이 제공하는 기능들을 일체 쓸 수 없습니다.  
 
 
5.그래픽카드 업그레이드
가장 효과만빵인 방법입니다. 저 위의 방법이 골치아프다, 뭔 소리인지 모르겠다 등등의 경우라면 이 방법이 가장 효과적입니다.
최신 그래픽카드에 최신 드라이버라면 위의 열거한 방법들을 알 필요가 없습니다. 뭐든지 돈이 최고입니다.~~
(농담조로 썼습니다.)
 
====================================================================================================================
 
VMR9 크기 조절방식은 뭔가?
화면 확대시 화면보정 기법을 말합니다.
확대시에 일반적으로 쓰이는 Bilinear보다 Bicubic이 더 좋은 화면을 보여주죠. (VMR9 렌더리스 모드에서 작동합니다.)
A는 사픈계수를 뜻합니다.
 
하지만 Bicubic은 그래픽카드의 픽셀쉐이더 2.0이 지원되어야 합니다.
 
PS 2.0 Bilinear와 그냥 Bilinear는 품질차이가 없기 때문에, Bilinear는 굳이 픽셀쉐이더가 필요 없습니다. 어차피 고해상도의 영상의 경우 Bilinear나 Bicubic이나 차이점을 느끼기가 힘들다고 하네요. 굳이 Bicubic을 쓰시겠다면 풀스크린모드에서 동영상을 재생중에 환경설정에서 조정하시면 실시간으로 확인이 되니 맘에 드는것을 골라보세요. Bilinear보다 살짝 깨끗한 느낌을 받을 수 있습니다.
 
샤픈계수가 너무 강하면 저해상도의 영상을 재생시 오히려 도트가 튀는 문제점이 있기 때문에
Bicubic (A = -0.6)이 가장 적당하지 않을까 싶네요.
 
 
비디오필터의 컬러스페이스 처리과정 
nVIDIA 계열의 오래된 후진 그래픽카드에서 출력컬러스페이스를 YV12모드에 대해 문제가 좀 있을 수 있습니다.(색번짐)
후진 그래픽카드 아니면 보통은 비디오 디코더(YV12) + 비디오 필터의 입력, 출력 모두 YV12에 체크로 세팅하는게 대세이며, 가장 이상적인 모드입니다.
 
 
비디오 디코더(출력 컬러스페이스) -> (입력컬러스페이스)KMP 비디오 필터(출력컬러스페이스) -> 비디오 렌더러
 
 
영상 재생시 Tab키로 재생정보를 확인할 수 있는데, Input은 (입력컬러스페이스), Output은 (출력컬러스페이스)이 며, Input과 Output사이에 비디오 필터가 있는 구조입니다. 예를 들어 xvid 비디오 디코더에서 Output 컬러스페이스를 yuy2로 맞추었다면 이는 그대로 입력컬러스페이스(yuy2)로 들어가는 것이죠. 위에 설명한 RGB32 강제출력도 비디오필터에서 수행하는 기능입니다.
내장코덱으로 재생하면 컬러스페이스 정보가 나오지 않습니다.
 
 
KMP의 비디오 필터는 무조건 YV12모드로 변환을 합니다. YV12의 내부 데이터 처리속도가 가장 빠르기 때문이죠.
그리고 KMP의 내장코덱(비디오 디코더)은 기본적으로 YV12모드 출력으로 세팅되어 있습니다.
입력과 출력컬러스페이스 둘다 YV12라면 변환과정이 생략되기 때문에 가장 좋은성능을 보여줍니다.
 
YUY2로 입력, YUY2로 출력을 하면 입력시 YUY2->YV12변환, 출력시 YV12->YUY2로 변환되므로 성능이 떨어집니다.
YUY2로 출력하려면 KMP 출력컬러스페이스 설정에서 YV12모드를 해제하면 가능할겁니다.
 
 
"YV12 입력을 강제로 시도해 봅니다" 옵션은 디코더 코덱이 컬러스페이스 설정을 지원하지 않을경우에 쓰입니다.
쉽게 얘기해서 비디오 디코더(출력 컬러스페이스)에서 YV12로 출력하도록 강제로 시도해보는 옵션입니다.
 
대표적으로 cyberlink video decoder가 있는데, 출력이 무조건 YUY2로 설정되어 출력되기 때문에 옵션에 체크할경우 YV12모드로 출력이 가능합니다. 즉 "cyberlink video decorder(yuy2)->yv12(입력컬러스페이스)->kmp 비디오 필터"의 모양새가 나는 것입니다.
이 옵션은 만약 디코더가 YV12 출력을 제대로 지원하지 않는다면 출력 화면을 망가뜨릴 가능성이 높습니다.
 
 
컬러스페이스는 KMP의 비디오 필터가 없더라도 외부 디코더로 조정 가능하지만 좀 불안할 수 있습니다.
비디오 필터가 없다면 (비디오 디코더 -> 렌더러) 이기 때문에 훨씬 다이렉트적이죠.
 
외부 코덱을 이용할경우 컬러스페이스 출력설정을 KMP 입력 컬러스페이스와 동일한 YV12로 세팅해주는 것이 성능향상을 이끌어냅니다.
 
 
 

CoreAVC같으면 Output formats에서 YV12를 최상단에 위치시켜주면 되겠구요.

Deblocking은 컴사양이 후달리지 않는 이상 Standard를 선택해주시구요. Deinterlacing은 보통은 필요없으니 None으로 지정합시다.


Output levels의 PC는 remap 16_256과 같은 기능이라고 생각하시면 됩니다. 실시간으로 적용여부를 알 수 있습니다.

곰플레이어는 VMR9 렌더러에서 뿌옇게 되는 문제에 대한 해결책이 없습니다. 하지만 H.264영상을 CoreAVC 디코더로 돌린다면

Output levels를 PC로 맞추어서 해결하는 방안이 있지요.



XVID의 경우는 Output 부분을 YV12로,DivX의 경우 Output YUV when supported에 체크하시면 됩니다.

DivX 최신코덱엔 Deinterace기능이 들어가있는데 필요없으므로 체크해제합니다.

 

 
컬러스페이스 YV12와 YUY2간의 화질 차이는 있는가?
일반적으로 YV12가 YUY2보다 좋다고 알려져 있지만, 데이터 처리속도는 빨라도 화질차이는 없습니다.
 
MPEG 압축시에는 보통 YV12(I420)형식으로 압축을 하는데, 이 포맷 외에는 거의 사용되지 않습니다.
따라서 한 점에 YUV값이 모아져 있어서 영상 처리 하기가 어려운 packed 포멧인 YUY2로 출력하는것은 화질차이가 없습니다.
YUY2가 Y,U,V의 분리된 값을 가지고 있기에 영상 처리나 기타 처리를 하기 쉬운 YV12에 비해 비트수가 많긴 하지만
원본의 형식은 대부분 YV12(I420)형식이라 YUY2출력은 화질에서 별 효용성이 없습니다.

 
YV12와 강제 RGB32출력의 차이
YUV(YUY2,YV12...)출력시 드라이버 레벨(렌더러)에서 RGB 변환이 이뤄집니다.(하드웨어 가속)
 
VMR9 Renderless + RGB32강제 출력을 이용하는 이유는 맨위에 설명했듯이 렌더러에서 변환시 색공간 버그가 일어날경우가 있는데, 이 경우 비디오필터가 렌더러 대신 RGB변환을 해서 렌더러에 보내주는 역할을 하기 때문입니다.
이 경우 렌더러는 RGB변환을 할 필요가 없기 때문에 비디오필터가 RGB변환 한것을 그대로 받아서 출력해주는 것이구요.
즉 최종출력시 행해지는 RGB변환을 렌더러가 아닌 비디오필터가 대신 해준다고 보면 되겠습니다.
 
VMR9 모드시 렌더러가 RGB변환을 하는게 KMP 비디오 필터가 RGB변환하는것에 비해 성능이 떨어지는 (버그가 있는) 그래픽카드가 의외로 많이 있습니다. (특히 nVIDIA 계열)
 
뿌옇게 되는 증상이 가장 대표적이고, 빨간색 계열의 원색에서 pixelated 현상이 나는 경우도 있다고 하네요.
(pixelated : 뻘건색 계통의 원색 계열에서 계단식으로 뭉게지며 출력되던 문제)
 
KMP 비디오필터는 RGB32변환시 이런 문제를 해결하는 루틴이 내장되어 있습니다.
VMR9 + RGB32가 그라데이션에서 더 좋다는 얘기도 KMP의 비디오처리 필터의 능력이라 볼 수 있을 것 같군요.
곰플레이어의 비디오필터는 VMR9모드시의 그라데이션 처리능력이 KMP의 비디오필터보다 떨어진다는 이야기도 있습니다.(확실치않음)
 
대신 하드웨어가 아닌 소프트웨어(비디오필터)가 처리하는 것이기 때문에 CPU부하는 결코 무시할 수 없는 요소가 됩니다. 특히 해상도가 커질수록 CPU 부하는 감당하기 어려울정도로 늘어나죠. CPU가 계산하는것이 그래픽카드가 계산하는 것보다 소숫점 연산에서 좀 더 정확하다고 하지만, 인간의 눈으로는 그 차이를 느끼기가 정말 힘듭니다.
 
 
자막 출력 방식
KMP에서는 자막출력 방식으로 3가지를 지원하고 있습니다.
오버레이 자막, VMR 자막(Windowed과 Renderless), 이미지 자막이죠.
 
 
 
저는 VMR9 렌더리스를 쓰면서도 자막은 이미지 자막을 씁니다.
왜냐면 전체화면시 원본사이즈 모드를 선호하는데, 렌더리스 자막은 화면크기(비디오 프레임)에 상관없이 커지기 때문에
많이 불편하더군요. (화면제어->비디오 프레임 크기-> 1x 크기 or 1.5x 크기)
 
※kmp 최신 베타버전(07.10.21)에는 자막(렌더리스 자막 포함)의 크기를 비디오 프레임 크기에 맞추는 기능이 생겼지만 완벽하지 않음^^
 
그런 특수한 경우가 아니면 오버레이 모드시 이미지 자막을, VMR 렌더러 모드시엔 VMR 자막을 쓰시면 됩니다.
VMR 자막은 비디오 필터가 필요없지만, 이미지 자막은 비디오 필터가 없으면 작동하지 않습니다.
 
자막 품질은 VMR Renderless > 이미지 자막 > VMR Windowed > 오버레이 자막 순입니다.
오버레이 믹서는 비디오필터 없이 자체적으로 자막을 렌더링할 수 있는 능력이 있습니다. 하지만 자막품질이 워낙 후지기 때문에
별로 언급할 가치가 없다고 생각되는군요. VMR 렌더리스 모드에서 렌더리스 자막과 Windowed 자막품질을 자막옵션의 체크박스를 통해 비교해 볼 수 있습니다.
 
다음화면은 전체화면 원본사이즈 모드시 화면입니다. (고해상도 영상의 경우 특히 좋더군요~~)
 
 
<VMR9 렌더리스의 고화질 자막시 영상크기에 관계없이 자막크기가 늘어나버린다>
 
 
<이미지 자막 모드, 영상 크기에 비례해서 늘어난다.>
 
 
VMR7과 9의 차이는 뭘까? 
VMR은 윈도우 플랫폼에서 오버레이 믹서나 Old video render를 대체할 더 나은 렌더러이며, 많은 기능이 들어있습니다.
초기 VMR은 윈도우 XP에서만 돌아가는 VMR7이 최초였고, DirectX9 출시후 XP뿐만 아니라 다른 윈도우에도 돌아가게 만들어진
게 VMR9입니다.
 
대충 듣기로 7이 DirectDraw7, 9가 Direct3D를 쓴다고 합니다. 일단 9가 7에 비해 그래픽카드의 최신 Direct3D기술을 갖다 쓰고 그래픽카드의 성능에 많은 영향이 있으므로, 그래픽카드가 좋다면 9를 권장하고 싶네요. XP의 VMR7를 쓰는것은 VMR9에 비해 그래픽카드의 성능을 그리 크게 타지 않기 때문에 시스템요구사항도 낮고, VMR9와 큰 성능차이가 나지 않는다고 하네요.
 
참고로 윈도우 미디어 플레이어는 VMR7 Windowed 렌더러(윈도우 XP 전용)를 사용한다고 합니다.
 
(설명이 너무 부실하네~~)
 
 
VMR9 Windowed와 Renderless의 차이는 뭘까?
Windowed는 VMR의 호환모드이며, 렌더리스모드는 플레이어(KMP)가 직접 VMR을 컨트롤(많은 옵션과 변형기능) 한다고 합니다.
 
그래서 렌더리스 모드시 고품질 자막, 3D Texture 쉐이더, VMR 믹서모드, VMR 크기조절, RGB32를 통한 색감보정등의 기능이
가능한거죠. 랜더리스 모드는 바탕화면 색을 트루컬러(32bit)로 맞추는 것을 권장합니다.
 
 
사실 windowed모드는 렌더리스 모드보다 가볍고 렌더러가 VMR인것을 빼면,
렌더리스에서 사용할 수 있는 부가기능을 활용할 수가 없어서 그다지 큰 유용성이 없습니다.
 
==========================================================================================================================
원래 이 모드는 비디오필터의 도움없이는 자막을 출력할 수 없습니다.
 
윈도우 xp에서만 쓸 수 있는 VMR7 Windowed의 경우 비디오필터를 떼내었을 경우 KMP에선 강제적으로 믹싱모드를 세팅하여 3D로 VMR자막을 출력하게 되어 있습니다.(최신그래픽 카드가 아니라면 VMR모드의 문제점인 화면 뿌옇게가 생깁니다.) 비디오필터가 붙어있으면 믹싱모드를 강제로 세팅하지 않으며 무조건 이미지자막으로 나옵니다.
 
VMR9 Windowed모드는 DirectX9의 Direct3D를 사용하기 때문에 기본적으로 믹싱모드로 세팅되니, 최신그래픽카드가 아니라면 이미지자막이나 비디오필터에 관계없이 화면 뿌옇게가 생깁니다.
 
 
그러니 Windowed모드를 쓰고자 할때는 비디오카드가 최신이 아니라면
 
VMR9 Windowed -> 화면 뿌옇게가 생긴다. 권장하지 않음
VMR7 Windowed + 비디오필터의 이미지 자막 -> 권장, 오버레이 믹서보다는 조금 나음.. 화면 뿌옇게 문제도 생기지 않음.
===========================================================================================================================
 
이 점을 이용해서 DxVA시 비디오 필터를 떼어내도 오버레이 자막보다 깔끔한 수준의 자막을 뽑아낼 수 있다와
렌더리스의 고화질 자막을 쓰고 싶지 않다 등의 경우를 빼고는 그다지 쓸일이 없네요.
 
좀 어정쩡한 모드지만 저사양 모드에서는 나름대로 유용합니다.
 
VMR9 렌더리스는 그래픽카드의 성능에 크게 좌우됩니다. 프레임이 끊긴다면 티어링 수정에 체크하시고, 그래도 계단현상이나 재생끊김등의 문제가 발생한다면 VMR9 렌더리스를 글픽카드가 제대로 뒷받침을 못하는것이니 다른 렌더러로 바꾸어야겠죠. 고사양PC 사용자들은 대부분 VMR9 렌더리스를 이용하고 있습니다.
 
그리고 비스타에서 사용할 수 있는 EVR(인핸스드 비디오 렌더러)는 DxVA 2.0지원에 티어링이나 뿌옇게 되는 증상같은 VMR9 렌더리스의 자질구레한 문제들이 해결되어 있습니다. XP에서 닷넷 프레임워크를 깔면 EVR렌더러를 사용 가능하다하지만, 윈도우 비스타에서 EVR 렌더러를 사용하는 것에 비해 많은 부분이 제대로 동작하지 않고, KMP도 아직 EVR렌더러를 완벽하게 지원하려면 시간이 좀 걸린다고 합니다.
 
XP에서 EVR C/A 렌더러를 쓰면 VMR9 Renderless처럼 쉐이더도 쓸 수 있고 고품질 자막도 똑같이 돌아가고 걍 비슷하더군요.
최근 그래픽카드 드라이버가 윈도우 비스타와 EVR렌더러를 기준으로 지원을 많이 하고 있으니, 세부적인 차이점은 윈도우비스타를 써봐야 알겠습니다. 지금 당장은 XP에서는 EVR이나 VMR9나 거의 똑같습니다. DxVA 2.0이란 것도 CPU의 힘을 거의 빌리지 않는 더 발전된 하드웨어 가속이라 들었는데, 이건 UVD를 지원하는 그래픽카드여야 하고 블루레이를 돌리는게 아닌이상 별 필요도 없고.. 쩝..
 
이것도 역시 설명이 조금 부실하네요~~~
 
 
VMR Renderless 방식
VMR Renderless에서 Direct3D를 제어하는 옵션들이라 합니다. 3D Texture Surface, 2D Texture Surface, Offscreen Plain Surface, SystemDefault 이렇게 4가지 옵션이 있습니다. 자신의 그래픽카드가 픽셀쉐이더 2.0 이상을 지원한다면 VMR9 3D Texture 쉐이더도 쓸 겸해서 닥치고 3D Texture를 선택하시면 됩니다. 3D Texture이면 렌더리스 자막 출력시 그래픽카드의 안티-앨리어싱 강제설정에 영향을 받을 수 있다고 하네요. (근데 문제나면 그거 끄면 그만..)
 
이 옵션이 세분화된 건 VMR 기능이 Direct3d 9에 기반하고 있기 때문인 것으로 추측됩니다.
다음 링크는 VMR 렌더러가 요구하는 그래픽카드 스펙입니다.
 
이때만 해도 Direct3D의 기술을 적극적으로 활용하는 그래픽카드가 별로 없었습니다. ATi 라데온 9xxx시리즈 이전의 일이죠.
그래서 이렇게 세분화시킨게 아닌가 싶습니다. 3D Texture외에 다른 옵션들은 기능상 차이가 없고, 성능면에서도 원칙적으로 차이가 없습니다. 단지 렌더링을 어디에서 할 것이냐가 다를 뿐입니다. 동영상 재생시 텍스쳐 표면(렌더링 표면)이라는 것이 디코딩된 후 비디오 스트림이 저장되는 비디오 메모리상의 논리적인 가상 공간입니다. 어떤걸 사용하느냐의 차이일 뿐입니다. 3D Texture는 VMR9 3D Texture를 사용할 수 있는 기능이 있지만, 나머지옵션은 별다른 기능이 없습니다.
 
KMP 개발자님 말로는 system default가 제일 속도가 빠르다고 합니다.
3D Texture를 선택할 수 있는 환경이 아니라면 나머지 세 옵션중에 이걸 추천하고 싶네요.
 
참고로 최근에 발견된 문제인데 system default가 아닌 다른 옵션을 지정시 깍두기 현상이 나는 그래픽카드가 있다고 합니다.
 
각 옵션의 정의는 다음 링크를 읽어보시구요.
 
밑의 그림은 KMP 개발자님의 말입니다.
 
 
 
 
오버레이 믹서와 VMR7 Windowed
이거는 개발자님에게 직접 들었던 이야기인데 VMR7 Windowed는 오버레이 믹서보다 렌더링 방식이 조금 낫고, 화질은 100% 동일하다고 합니다. 대신 VMR7 Windowed는 XP이상에서 사용할 수 있는 렌더러이구요.
 
그래서 PC에서 감상시를 기준으로 운영체제가 윈도우xp라면, xp전용 렌더러 vmr7 windowed모드를 선택하는 것을 권장합니다.
(특히 ATi계열에서 가볍게 재생하면서도 색감도 잘 나옴)
 
오버레이 믹서는 모기노이즈 현상이 있을 수도 있고, 구식렌더러이고 일부카드에서 전체화면이 안되거나 등의 여러 문제가 있습니다. 전체화면에서 화면이 안나오는거 이거 무슨 보드와 관련이 있는 문제라는데, 아무튼 전체화면에서 화면 안나오는 문제를 호소하는 사람들 보면 대부분이 오버레이 믹서를 렌더러로 쓰고 있다는 공통점이 있습니다. 오버레이 믹서는 또한 아무래도 비디오재생정보 등을 표시할때 글자폰트가 좀 안좋긴 하죠..
 
대부분의 플레이어가 디폴트로 오버레이믹서가 선택되어 있는 이유는 일단 호환성 때문입니다. 운영체제가 98이건 2000이건 글픽카드가 구식이라든지등의 조건에 구애를 받지 않는 즉 아무데서나 돌아가는 렌더러이기 때문이죠. KMP 렌더러선택하는 설정화면을 보면 "오버레이믹서(권장)" 이렇게 표시되어 있는데, 포럼에서 얘기하기를 디폴트를 권장이라고 잘못 번역했다고 하네요. 권장이라는 말은 KMP에서 왠만하면 쓰는 문구도 아니라고도 하구요.
 
PC에서 감상하는 것을 기준으로 저사양PC이용자라면 오버레이 믹서보다는 VMR7 Windowed모드를 권장합니다.
더군다나 VMR7 Windowed는 모든 렌더러 중 가장 버그가 적고 안정적입니다. (괜히 XP 전용이 아님)
 
 
VMR7 Renderless
저사양PC라 VMR7 Windowed을 이용할 처지이지만, 고품질 자막도 같이 사용하고 싶을떄 유용합니다.
 
이 렌더러를 선택하면 VMR9 Renderless처럼 고품질 자막을 사용할 수 있습니다. VMR9는 그래픽카드의 3D 성능에 상당한 영향이 있기 때문에, 글픽카드가 후지면 제대로 돌아가지 않는 경향이 있습니다. 그러나 VMR7은 일단 DirectDraw(2D)를 쓰기 때문에 그런 문제에 상당히 영향을 덜 받는 편이죠.
 
좀 아쉬운게 있다면 VMR7 렌더리스는 VMR7 Windowed와의 차이가 고품질 자막 가능유무일 뿐이라는 것.
 
 
VMR9 Windowed는 VMR9 Renderless처럼 기본적으로 화면이 뿌옇게 될 수 있는 문제를 안고 있고, 요구성능은 VMR7 Windowed보다 높습니다. Windowed는 렌더러가 VMR인것을 빼면 얻을 수 있는 메리트가 없기 때문에, VMR9 Windowed모드는 별 쓸모 없어 보입니다.
 
렌더러에 대한 정확한 정의를 알고 싶다면 다음 링크를 방문해보세요.
팟플레이어 개발자 블로그입니다. 예전 KMP개발자님이시기도 하구요.
 
 
 
VMR Mixer Mode
VMR9 렌더리스 모드는 기본적으로 하드웨어(그래픽카드)의 DxVA(비디오가속), 색감 조절, Deinteracing 등의 기능을 사용할 수 없습니다. 따라서 Mixer mode(혼합 모드)도 같이 체크해주어야 VMR9의 기능을 그대로 쓰면서 하드웨어 기능도 같이 이용할 수 있습니다.
그리고 렌더러에 관계없이 비디오필터를 떼내어야 하는것도 조건입니다.
 
인터넷에서 디빅 종류의 파일만 받아서 보신다면 사실 알 필요도 없습니다.
 
블루레이나 HD-DVD, TP, DVD, H.264등을 재생시 CPU가 후달리다면 그래픽카드의 비디오가속을 통한 재생성능향상을 꾀할 수 있고, 그래픽카드의 고급 디인터레이싱 기법과 IVTC(역 텔레시네), 노이즈 제거등을 사용할때도 유용합니다. PureVideo라든가 AVIVO같은 비디오 가속기능이 이에 해당되는 이야기인데 그 외에는 사용할 필요가 없습니다.
 
<nVIDIA 제어판의 비디오 설정화면>
 
KMP 포럼에서 ATi와 nVIDIA의 비디오 가속에 관한 글이 있었는데,
ATi는 오버레이 믹서와 VMR7 9 Windowed, nVIDIA는 VMR9 Renderless + VMR Mixer Mode에서 비디오 가속이나 디인테레이싱이 가능하다고 적혀 있습니다. 물론 다른 렌더러라도 적용이 안된다는것은 아니지만, 재생이 끊긴다는 등의 여러가지 문제가 발생할 수 있습니다.
 
ATi의 AVIVO나 nVIDIA의 Purevideo같은 그래픽카드의 가속기능은 특정렌더러에서 제대로 작동되게 만들어져 있습니다.
이 사실로 ATi와 nVIDIA라는 회사가 각각 중요시하게 여기는 렌더러가 무엇인지 알 수 있습니다.
 
비디오가속은 물론 반드시 비디오필터를 떼네어야 제대로 작동합니다.
 
nVIDIA에서는 DxVA시 VMR9 렌더리스 모드를 이용하기 때문에 비디오필터 유무에 상관없이 고품질 자막이 출력 가능합니다.
 
ATi는 DxVA시 VMR7,9 Windowed를 이용한다면 위에 설명했듯이 KMP의 강제세팅 덕분으로 렌더리스자막보다는 못하지만, 이미지자막품질과 비슷한 VMR Windowed의 자막을 뽑아내는것이 가능합니다. 하지만 이럴때 생길 수 있는 뿌옇게 되는 문제에 대해서는 해결책이 없습니다. VMR7, 9 Renderless를 사용한다면 비디오필터 없이 자막출력이 가능하지만, ATi카드는 지금 없어서 그 렌더러에서 dxVA 작동여부는 확실히는 모르겠네요.
 
ATi 카드에서 VMR9 Renderless는 아마 요즘은 DxVA 될겁니다. ATi가 좋네. nVIDIA가 좋네 하는건 요즘들어 별 의미가 없어졌어요.
제가 최신 그래픽카드를 구비하고 있는것도 아니라 이제 이 부분은 뭐라 말 못하겠음.
 
k벤치에는 ATi AVIVO에 관한 기사중에 DxVA가 작동하는 렌더러에 관한 이야기가 있는데 요즘도 해당되는 이야기인지는 모르겠네요.
 
 
오버레이 믹서와 VMR9
제것만 그런건지 모르겠는데 nVIDIA 계열의 지포스6이하의 카드는 오버레이 믹서 렌더러에서 상당히 칙칙하고 어두운 화면을 보여줍니다. YV12입력 문제도 있고, 화면도 이상하고 어쩔땐 전체화면시 화면이 아예 안보이는 등등의 문제가 있더군요.
오버레이 믹서 자체가 RGB변환을 하지않고 YUV 그대로 출력하기 때문에, 그래픽카드에 따라 이런 문제가 발생할 수 있습니다.
 
그런 문제가 없고 RGB32출력이 부담스럽다면 그리고 행여나 티어링문제까지 있다면 (오버레이 믹서+이미지 자막)을 써도
좋습니다.
 
오버레이 믹서의 장점 중 하나가 바로 간편함과 호환성, tv-out 그리고 사양을 덜 탄다는 점이죠~~
단점 중에 하나를 들자면 오버레이 믹서는 VMR에 비해 렌더링방식이 구식이라서 동영상을 동시에 여러개 재생할 수가 없습니다.
"오버레이 믹서가 사용중입니다"라는 메시지가 뜨는건 이것 때문이죠.
 
 
KMP 포럼에서는 오버레이 믹서와 VMR9 + RGB32와 비교했을때 거의 동일한 색감을 보여준다고 합니다.
예전에는 오버레이믹서나 VMR7 Windowed를 쓰면 그래도 원본 거의 그대로 나와서 뿌옇게 나오는 문제를 안고있는 VMR9 모드는 잘 쓰지는 않았었습니다. 그런데 요즘 nVIDIA 그래픽카드는 오버레이 믹서나 VMR모드나 색감차이가 별로 없고 재생시 뿌옇게 나옵니다..
(결론은 VMR9 Renderless + Remap 16_235밖에 답이 없다는 것)
 
오버레이와 VMR9을 비교해서 색감차이가 크게 난다면 거의 nVIDIA인데, 밑의 그림처럼 채도값을 100%로 맞추면 됩니다. 지포스6이상의 카드는 이 설정만 해주시면 되며, VMR9과 오버레이 믹서의 색감 격차를 거의 없앨 수 있었습니다. 하지만 최근 드라이버에서는 이 설정이 없어져버렸습니다. ㅠ.ㅠ (어쩌라고??)
 
 
 
 
오버레이 믹서와 VMR의 또다른 차이라면 하드웨어 스케일러입니다.

스케일러는 확대시 화면을 하드웨어적으로 키워주는 장치를 말합니다. 오버레이 믹서는 "저질스케일러"라고 불리더군요.

이 때 화면 가장자리에서 모기 노이즈(윤곽선의 경계선에서 약간 지글거리는 잡음)이 발생한다고 합니다.

다 그런게 아니고 그래픽카드의 스케일러 스펙에 따라 나타나지 않을 수 있습니다.


그래서 이런저런 면에서 오버레이 믹서 렌더러는 구식이 되어 버렸습니다.


문제많은 Nvidia에 비해 색감이 좋기로 유명한 ATi 계열에선 보통 오버레이 믹서나 VMR7 windowed (특히 x1000이상의 그래픽카드의 AVIVO)를 많이 쓰는 것 같습니다.


위에 언급한 문제를 제쳐두더라도 ATi 특유의 색감이 오버레이 믹서에 적용되게 만든 듯 싶더군요,

저질 스케일러 문제가 없다든가 rgb32출력이 부담스러우면 오버레이 믹서, VMR7 Windowed + ATi의 조합으로 가는게 좋을 것 같습니다.


저는 예전에 ATi계열은 이렇게 이용하고 있었습니다. 색감이 VMR9 + RGB32보다 오버레이 믹서가 좀 나은듯 보이기 때문입니다.

요즘은 어떨지 모르겠네요. 모니터 캘러브레이션 설정이라든가 그래픽카드에 따라 천차만별이기 때문에 자신의 눈으로 보고 확인하는게 제일입니다.



내장코덱과 외장코덱

저 같은 경우에는 KMP의 내장코덱은 커녕 ffdshow도 이용하지 않습니다.

통합코덱으로 모든 동영상을 돌리죠.


저는 각 동영상에 맞는 디코더와 디코더에 내장된 후처리를 통해 보는것이 가장 좋은 화질을 이끌어낸다고 믿습니다.

DivX이면 DivX 디코더, Xvid이면 Xvid 디코더, h.264면 Coreavc 디코더로 보는 식이죠.


ffdshow는 단지 편리와 호환용 코덱이라 봅니다. ffdshow의 후처리(Post-processing) 이용시 디코더의 후처리와 비교해서

CPU부하가 별 다를 바 없으며, 인코딩한 코덱의 디코더의 후처리와 화질차이도 미세하게 있습니다.


후처리를 쓰지 않는다면 내장코덱으로 돌리는것도 좋습니다. 별 차이가 없기 때문이죠.


 

외장코덱을 쓴다면 위와 같이 설정하시면 됩니다.

무조건 사용에 체크했을 경우 KMP의 내장코덱 부분을 다 체크해제했다고 해도

KMP가 재생가능한 내장코덱 찾는데 걸리는 시간이 있기 때문에 위 옵션처럼 한 큐에 해결합시다.


외부 코덱 설정부분은 다음과 같이 하시면 됩니다.

외부코덱 사용자 정의를 클릭후 "검색해서 추가"로 설치된 코덱을 검색합니다.


그후 각 코덱마다 재생하고자 하는 외부디코더를 선택해주시면 됩니다.

통합코덱 이용시 ffdshow에서 해당코덱을 disable해주는 작업도 필요합니다.



 

 

splitter도 *쳐진게 외부 스플리터이니 체크해주면 좋겠죠? 이건 그냥 참고사항입니다.

스플리터는 동영상 파일안에 영상, 오디오부분을 찾아 나눈후 디코더에 보내주는 역할을 합니다.


만약 위의 과정을 거쳤어도 재생할때 해당되는 코덱이나 스플리터가 작동하지 않는다면 "필터 우선순위 변경"으로 등록한뒤

"강제사용"으로 설정해주시면 됩니다. 영상재생시 해당되는 코덱이나 스플리터를 필요로 한다면 "강제사용' 항목이 우선시됩니다.


보통은 AVI 스플리터를 이용하면 되지만 MKV, MP4 영상은 최근에 나와서 기존 AVI 스플리터와 호환이 약간 안되는 문제가 있을 수 있습니다.툭툭 끊기거나 사운드 싱크가 맞지 않는 현상이 납니다. 그래서 MKV, MP4는 할리 미디어 스플리터를 쓰기를 권장합니다.


요즘은 CoreAVC 설치하면 같이 깔리죠.

KMP 내부에 할리미디어 스플리터가 내장되어 있지 않으며, 밑의 그림의 옵션은 단지 제어를 위한 것입니다.


 




비디오 필터와 음성 필터


재생기에 내장된 필터는 동영상 재생시 필수요소가 아닙니다. 인용하자면

"디코더에서 압축이 해제되어 출력되는 비디오/오디오 신호들은 마치 우리의 맨 얼굴과도 같습니다. 여기에 얼굴을 다듬고 화장을 하는 것이 처리 필터를 통과하게 되는 것과 유사합니다."


즉 필터는 옵션이지 필수가 아니라는 겁니다.




기본 영상처리에 있는 "날카롭게" 라든가 "부드럽게"등의 기능도 비디오 필터의 기능 중 일부입니다.

그 밖에 컬러스페이스 조정, 자막을 이미지로 만들기, 캡쳐제어, 오버샘플링등의 기능이 있습니다. (더 있을려나?)

실시간 재생정보 표시(Tab)은 vmr windowed모드는 비디오필터가 없으면 표시되지 않습니다.


확실히 말해둘 사항은 필터는 단지 부가기능이기 때문에 영상 화질차이의 직접적인 원인이 되지 않습니다.

(옛날에 이 부분 잘못 썼다가 다굴당했었음 ㅠ.ㅠ)


<동영상>소스 필터 -> 스플리터 ->  비디오/오디오 디코더(코덱) -> (비디오/오디오 필터) -> 비디오/오디오 렌더러 -> 모니터


즉 위의 과정에서 비디오/오디오 필터를 빼도 동영상을 재생하는데 문제가 없다는 겁니다.


저 같은 경우는 이미지 자막출력 때문에 비디오 처리 필터는 어쩔 수 없이 쓰긴 하지만,

음성 필터 같은 경우는 별 부하가 없긴해도 필요없어서 떼 버렸습니다.


 
 
<영상 재생시 KMP Video Transform(비디오 필터)가 붙어있음을 확인 할 수 있다.>
 

(초)고속 모드는 필터를 떼버리는 것을 의미합니다. 이러면 플레이어 자체가 상당히 가벼워집니다.


초고속 모드 - 비디오 & 음성 필터를 사용안함 (DxVA에 많이 사용)

고속 모드 - 비디오 필터 사용안함 (DxVA에 많이 사용)

본인은 음성필터 사용 안함


VMR9 모드를 사용한다면 렌더러 혹은 강제믹싱모드가 자막을 만들어 주기 때문에 재생면에서만 따지면

비디오필터가 사실 별 필요없을지도 모릅니다.


(초)고속 모드를 쓰면 플레이어가 가볍고 로딩속도도 빨라지는 건 맞지만,

렌더러와 자막 모드, 컬러스페이스 등등을 고려해서 하시기 바랍니다.


예를 들어 오버레이 믹서 모드에서는 비디오필터의 도움으로 이미지 자막을 출력하는게 좋습니다.

하지만 비디오 필터를 뗄 경우 오버레이 자막이 출력되므로 자막 품질이 나빠지는 경우가 생기죠..


그리고 비디오 필터가 컬러스페이스를 조정하는 기능은 동영상이 안정적으로 재생하는데 큰 역할을 합니다.

비디오 필터가 없을경우 특정 렌더러에서 가끔 느리게 재생되는 현상이나 화면비율문제가 있었습니다.



kmp포럼의 글에 의하면 필터는 설사 아무 기능을 하지 않는다 해도 붙어있는 거 자체가 약간의 부하를 발생시킨다고 하네요.

고해상도 영상 로딩시 잠깐 멈칫거리는 시간이 있는것은 그 때문입니다.

그래도 음성필터라면 몰라도 비디오필터는 DxVA를 제외하고는 왠만하면 붙어있는 편이 안정성 면에서 좋습니다.


판단은 님들이 스스로 따져보고 하시기 바랍니다. 최신그래픽카드와 vmr9 렌더리스라면 사실 별 문제가 나지 않기 때문에, 비디오필터를 떼어내서 KMP를 더 가볍게 쓸 수 있을테니까요. 대신 캡쳐나 날카롭게, 이미지자막 등의 기능을 쓸 수 없습니다.

================================================================================================================


KMP 포럼을 뒤적뒤적 거려서 얻은 정보를 바탕으로 쓰는 포스팅이며,

부정확한 정보도 있을 수 있음을 밝혀둡니다. 워낙에 속 시원하게 정리된 글들이 없어서..

초보자가 알고 싶어하는 사항들을 이 포스트에 모아 보았습니다.


어디까지나 "이 기능은 대충 뭐구나" 라는 정도로 참고만 해 두셨으면 좋겠네요.

제가 전문가도 아닌 이상 이 기능에 대해 정확한 기술적 표현까지는 못하겠네요.


이 포스트의 잘못된 점에 대해 태클과 의견을 주시는것은 언제든지 환영합니다.


※최근 글 수정 (08.07.10