Files
James df80182452 fix(engine): add bt709 color space + range conversion to H.264/H.265 encoding
Chrome captures frames in full-range sRGB, which maps to BT.709. Without
explicit color metadata, players guess the wrong color space and range,
causing color shifts and crushed dark values across devices.

Changes:
- Embed bt709 color info in H.264/H.265 VUI via x264-params/x265-params
  (colorprim, transfer, colormatrix) and FFmpeg metadata flags
- Add scale filter (in_range=pc:out_range=tv) to convert full-range
  Chrome screenshots to limited/TV range expected by H.264 decoders
- Chain range conversion with VAAPI's existing hwupload filter
- Add -video_track_timescale 90000 for consistent A/V timing
- Skip color metadata and range conversion for VP9/ProRes
- 8 new regression tests for color space, range filter, VAAPI chain,
  GPU skip, VP9 skip, and timescale

Verified via ffprobe: color_space=bt709, color_transfer=bt709,
color_primaries=bt709, color_range=tv, time_base=1/90000.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 16:58:28 +00:00
..
2026-04-03 04:36:19 +00:00