피드로 돌아가기
Dev.toInfrastructure
원문 읽기
libmpv 기반 GPU 런타임 분석을 통한 실시간 HDR Tone-mapping 구현
Why I built a native libmpv IPTV player for Windows — an HDR tone-mapping deep-dive
AI 요약
Context
기존 Windows IPTV 플레이어의 에뮬레이터 기반 구동으로 인한 Input lag 발생 및 단순 HDR Metadata Pass-through 방식의 한계 분석. 특히 SDR 패널 및 저사양 HDR 디스플레이에서 하이라이트 영역이 뭉개지는 Clipping 현상과 오디오 Bitstream 유실 문제 해결 필요.
Technical Solution
- libmpv C API와 Flutter FFI 결합을 통한 GPU 가속 기반의 Native Video Path 설계
- D3D11VA Hardware Decode를 통해 HEVC/AV1 비트스트림을 GPU 메모리 내에서 직접 처리하여 CPU Copy 오버헤드 제거
- Metadata 의존성을 배제하고 GPU Histogram을 이용한 Per-frame Peak/Average Luminance 실시간 측정 로직 구현
- BT.2390 EETF Curve 적용으로 섀도우와 미드톤 대비를 유지하며 하이라이트 영역만 압축하는 지능적 Tone-mapping 수행
- WASAPI Exclusive Mode 채택을 통한 Dolby Atmos 및 DTS-X 오디오의 무손실 Bitstream Passthrough 구현
- 해상도 변경 시 발생하는 Texture-resize Race Condition 해결을 위해 스트림 URL 기반의 개별 Player Widget 인스턴스 할당 구조 도입
실천 포인트
- 라이브 스트리밍 환경에서는 HDR Metadata(MaxCLL/MaxFALL)의 신뢰도가 낮으므로 런타임 프레임 분석 기반의 동적 맵핑 검토 - 고성능 미디어 재생기 설계 시 UI 프레임워크의 Texture Copy 방식 대신 GPU 레이어 상의 직접 컴포지팅 구조 채택 - Windows 환경의 Native 앱 개발 시 Non-ASCII 사용자 계정 경로로 인한 Toolchain 오류 방지를 위해 캐시 경로를 ASCII 전용 경로로 강제 지정