피드로 돌아가기
Why I built a native libmpv IPTV player for Windows — an HDR tone-mapping deep-dive
Dev.toDev.to
Infrastructure

libmpv 기반 GPU 런타임 분석을 통한 실시간 HDR Tone-mapping 구현

Why I built a native libmpv IPTV player for Windows — an HDR tone-mapping deep-dive

Zehra Uludağ Çapar2026년 6월 5일5advanced

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 전용 경로로 강제 지정

원문 읽기