동영상 재생시 10비트 출력을 위한 대전제 (상용 코덱이나 stand alone 블루레이 재생기는 제외)
1. 10비트 영상: 거의 없음, 넷플릭스 4K나 4K UHD 블루레이 정도 (이 소스가 항상 true 10비트라고 단정할 수 없음)
2. 10비트 출력이 되는 디코더: 내장 코덱, LAV (디코딩 후 P010으로 출력해야 함)
- P010에 대한 세부 내용: https://msdn.microsoft.com/en-us/library/windows/desktop/bb970578(v=vs.85).aspx
- HEVC(H265)의 경우 반드시 Native DxVA 모드에서만 P010으로 출력됨... 즉 HEVC 4K를 10비트로 출력하려면 이를 지원하는 하드웨어 디코더가 필요함(카비레이크, 폴라리스, 파스칼 이상의 그래픽 카드)
3. 10비트 출력이 가능한 렌더러: EVR C/P, 내장 D3D9/11 렌더러, madVR
* 렌더러의 10비트 출력요건
가. madVR
- 설정의 ① device - 본인의 모니터 모델명 - properties - the native display bitdepth is: 10 bit (or higher) 로 설정
- rendering - general settings - ② enable automatic fullscreen exclusive mode, ③ use Direct3D 11 for presentation 활성화
- 전체화면에서만 10비트 출력
나. 팟플 내장 렌더러 (EVR C/P, 내장 D3D9/11 렌더러)
- 다음 참조: http://cafe.daum.net/pot-tool/AZHQ/420
- 요약하면 팟플 설정의 영상 출력 장치가 evr c/p, 내장 d3d9 렌더러인 경우: ① 비디오 버퍼 포멧은 자동 또는 10비트로, ② 10비트 출력 상자에 체크하고 ③ 전체 화면 배타적 모드를 사용(가장 빠른 속도)으로 놓고 ④ 10비트 동영상을 재생한 후 전체화면으로 가면 됩니다.
- 내장 D3D11 렌더러인 경우: 전체 화면 배타적 모드를 사용하지 않아도 (창화면에서) 10비트 출력이 가능
* 팟플 내장 비디오 처리는 항상 8비트로만 동작하므로 만약 사용중인 게 있다면 반드시 꺼야 합니다.
* 기타 정보: http://cafe.daum.net/pot-tool/AZMV/16302
4. 10비트 모니터: 시중에 10비트라고 나도는 제품의 90% 이상은 정확히 말하면 10비트 입력을 받을 수 있는 8비트 FRC 모니터임 즉 10비트를 받아서 내부적으로 FRC 처리를 통해 8비트로 전환한 다음 모니터에 출력함.
- 진퉁 10비트 모니터 예: http://wolfcrow.com/blog/fun-comparison-which-is-the-best-4k-monitor-for-color-grading/
http://en.community.dell.com/support-forums/peripherals/f/3529/t/19987837
5. nVidia와 AMD 그래픽 제어판에서 10비트 출력으로 선택할 수 있어야 함
- 4K 인 경우 현재는 DP 1.2 이상에서만 10비트 출력 가능 (4K 10비트 HDR은 dp 1.4 이상이어야 함)
- HDMI는 2.0a 이상이어야 함 (1년 정도 있어야 나옴 즉 현재 hdmi로 4k 10비트 출력은 안됨)
6. 10비트 출력 검증: 위의 모든 과정을 제대로 거친 후 즉 로직상의 순서에 하자가 없는 경우에만 시작할 수 있습니다.
* 참고: http://www.coolenjoy.net/bbs/28/2974000?sfl=wr_subject&stx=10%EB%B9%84%ED%8A%B8&sop=and
http://www.coolenjoy.net/bbs/28/2974715?sfl=wr_subject&stx=10%EB%B9%84%ED%8A%B8&sop=and
http://forum.doom9.org/showthread.php?p=1721378#post1721378
* 샘플 동영상: https://drive.google.com/file/d/0B8IawRSS2DuxVWFBbDBWeWlaRTg/view?usp=sharing
- madVR에서는 육안으로밖에 검증할 수가 없고 ctrl+j 화면에서 10비트 P010으로 출력된다는 부분만 확인 가능합니다.
- 팟플의 tab 정보의 렌더러 - 포멧 항목의 맨 끝에 display 출력값이 displaymode값을 구한 것이라고 합니다. 아마 참고가 가능한 듯 싶습니다
- http://cafe.daum.net/pot-tool/AZMV/16306 스샷은 10비트 출력을 로직상으로 점검한 것인데 세번째 스크린샷의 네모 표시부분을 보면 최종 display 출력 부분이 XRGB로 10비트로 출력이 안되고 있습니다. 로직상으로는 맞는데 최종 출력 부분의 원인을 잘 모르겠더군요.
- 참고로 10비트 동영상 출력시 디더링이 일어나면 10비트가 아니라 8비트로 출력이 되는데 디더링이 된 8비트 출력화면과 10비트 출력화면은 구분이 불가능합니다. 쿨엔조이 게시판을 검색하고 유심히 살펴보면 구별이 되는 것처럼 되어 있는데 당시의 팟플은 10비트 출력 구조가 완전하지 않았고 최근 들어 출력의 모든 부분을 제어할 수 있도록 옵션이 생겼기 때문에 (http://cafe.daum.net/pot-tool/AZHQ/420) 디더링된 8비트 화면이 10비트와 구별이 안된다는 것을 쉽게 확인할 수 있습니다. 즉 팟플 설정에서 비디오 버퍼 포멧만 10비트로 놓고 나머지는 10비트 설정을 안해도 위 10비트 샘플 동영상의 밴딩을 전혀 확인할 수 없습니다.
다시 말해 10비트 출력은 육안으로 검증이 불가능하다고 봅니다. LAV 개발자도 같은 생각이더군요. 동영상의10비트 출력이 확실이 되고 있는지는 모니터상의 OSD 정보에서 그래픽 카드에서 입력받는 신호의 종류를 확인하는 것이 가장 정확한 방법이라고 합니다. 그런 모니터가 있다고 하더군요.
http://cafe.daum.net/pot-tool/AZMV/16306 링크의 마지막 스샷을 잘 보면 10비트 소스가 10비트로 디코딩이 된 후 렌더러에서 10비트 그대로 잘 통과해서 최종 백버퍼까지 도달한 상태를 확인할 수 있는데 최종 출력이 10비트가 아닙니다.
즉.. 드라이버에서 8비트로 출력한다는 얘기지요. doom9에서 10비트 관련 정보를 뒤적거리다 보니 nVidia 제어판의 비트 출력은 무늬만 있는 거지 제대로 출력이 안되는 거라는 소리도 있고 nVidia는 8비트는 8비트로 10비트 이상은 12비트로 출력한다는 소리가 있더군요. 만약 이 말이 맞다면 최종 출력이 8비트로 된 것이 말이 됩니다. 다시 말하면 제 모니터는 10비트 입력을 받을 수 있고 nVidia제어판에서 10비트로 설정했는데 nVidia 그래픽 드라이버에서 12비트로 출력한다는 얘기밖에 안되거든요.
이 문제에 대해 왜 이런 생각이 들었냐면, GTX1080을 쓰기 전에 HD7850 사용시에도 비슷한 경로(당시 팟플은 10비트 출력이 제대로 안되서 lav + madVR)로 테스트했었는데 당시에 10비트 출력을 하면 모니터에서 10비트 입력을 받아들이는데 상당한 delay가 있었습니다. 8bit frc 모니터를 가진 다른 분들에게서도 공통적으로 확인할 수 있었는데 10비트 모드 전환시의 큰 딜레이는 모니터상에 10비트가 입력이 되고 있다는 증거가 되거든요. 이유는 모니터에서 10비트를 받아서 8비트로 변환(FRC)하는데 걸리는 딜레이이기 때문입니다.
그런데 GTX1080으로 바꾼 뒤로 해보니 이런 딜레이가 없어서 아무리 확인해도 이해가 안되더군요. 그러다가 팟플의 렌더러 포멧 정보의 displaymode값을 보니 10비트 입력이 안되고 있다는 의심이 들었는데... 최종 확인을 하려면 HD7850을 다시 꼽아서 테스트해야 하는데 그냥 구찮아서 나중으로 미루던지 아니면 이 글을 읽는 분들 중에서 테스트해주실 수 있는 분이 있으면 좋겠네요.
암튼 이런 의심이 맞다면 nVidia로 10비트 출력은 12비트 입력이 가능한 모니터에서만 10비트 출력을 사용할 수가 있게 됩니다.
다만, 10비트 출력이 별 의미가 없게 된 것이 팟플 설정의 비디오 버퍼 포멧만 자동 선택10비트로 놓으면 밴딩 자체가 생기질 않으니 true 10비트 출력을 위해 삽질할(결과를 구별할 수 없으므로) 이유가 없고, 또 사실 10비트 출력의 큰 의미는 HDR에 있는데 HDR 모니터는 아직 대중화되려면 한참 먼 것 같더군요.
ps1. 현재 비디오 버퍼 포멧 자동 선택 동작은 생각하는 대로 되지 않습니다.
http://cafe.daum.net/pot-tool/AZMV/16571
HEVC를 dxva copyback이나 s/w로 재생시 NV12로 색공간이 고정되어 있는데(P010으로 출력하도록 수정했다가 퍼포먼스 때문에 NV12로 원복됨) 이 경우 비디오 버퍼 포멧의 자동 선택은 동작하지 않습니다. 그래서 효과를 보려면 10비트로 강제 설정해야 합니다.
ps2. 기타 포토샵 등 윈도우용 그래픽 응용 프로그램의 10비트 출력은 opengl에서만 가능한데 opengl의 10비트 출력은 쿼드로/파이어프로를 제외한 나머지 그래픽 카드에서는 드라이버상에서 10비트 출력 자체가 막혀 있다고 합니다.
여기서 논하는 10비트 출력과는 다른 영역이니 혼동 없으시길 바랍니다.
팟플 개발자님 답변 중에도 잘 보면 내장 opengl 렌더러로 10비트 출력이 안되는 이유가 드라이버상에서 막혀 있다고 된 것을 확인할 수 있습니다. 아마 쿼드로/파이어프로상에서 팟플의 opengl 렌더러로 10비트 출력이 될 거 같긴 한데.. 4K HEVC 10비트 출력시에는 이것도 h/w 디코더가 있어야 P010으로 출력이 되므로 (쿼드로/파이어프로에 해당 하드웨어 디코더가 없다면) 실제로는 별 의미없는 게 되겠죠.
첫댓글 이렇게 잘 정리된 글이 있었군요. 감사히 보고 갑니다.
질문도 하나 있는데요. evr c/p, d3d11 2 종류의 렌더러를 쓸 때 화질 면에서 어떤 차이가 있나요?? EVR도 윈도우 제공 레이어(?)이고 내장 d3d11 렌더러도 윈도우 제공 레이어? directx 써서 출력하는 거 같은데. 어떤 걸 골라야 좋은지 모르겠네요 ㅜㅜ
윈10 크리레이터 업데이트 + 파스칼 (GTX1080) + 카비레이크 CPU 사용 중입니다. ㅎㅎ
두 렌더러는 기능 상에서 거의 차이가 없습니다. 화질 차이도 전혀 없다고 보시면 됩니다. 다만 evr c/p가 더 안정적입니다. 특정한 경우에 d3d 11의 렌더링 속도가 빠르다는 분도 있었던 걸로 기억합니다만. 사양을 보니 아무 상관이 없겠네요.