VersionControl:PRs/maybelle-config/288

From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
Jump to navigationJump to search
maybelle-config#288: delivery-kid: every rendition in standard range
State 🟢 open
Worked on by magent, justin, skyler
Moods #interfaces, #general
Deploy not said
Branch magent/delivery-kid-tv-range → production, by magent-cryptograss
Opened · last pushed 2026-11-08 16:11:38 · 2026-11-08 16:11:24
Skyler's iPhone 17 and slvrbckt's iPhone play Release videos with sound over a black picture. That happens in Safari's own HLS player (the master.m3u8 opened directly) and in hls.js alike (#interfaces and #general, 8 Nov 2026). The iPhone 17 has a hardware AV1 decoder, so the codec alone doesn't explain it.

Both Releases on Tidings that I probed are **full range** AV1 (`color_range=pc`). One is QmdGoub… (540×360). The other is Justin's test upload, Peggy-O Binghamton, QmYacRRA…, 720×1280. Its `metadata.json` shows the source was a Pixel's `yuvj420p` H.264, and the encoder carried that range straight through. Players expect standard range. The closest report I found is Jake Archibald's: Safari refuses full-range H.264 ([post](https://jakearchibald.com/2022/html-codecs-parameter-for-av1/)). That makes this the best suspect. **It's not proven**, since I can't test on Apple hardware.

The change (`transcode.py`):
- `_scale_filter` adds `out_range=tv`, so every rung converts to standard (16-235) range. This includes the tone-mapped HDR path, which scales after the tone map.
- `-color_range tv` tags the output to match.

Tests: the new `tests/test_standard_range.py` encodes a `yuvj420p` full-range clip end to end with libsvtav1 and checks every rung comes out `tv`. It fails without the change (`stream_360p is still full range`). A standard-range source stays standard. The `_scale_filter` expectations in `test_transcode_ladder.py` are updated. The whole pinning-service suite passes: 141, run without libtorrent, which doesn't install here.

To confirm it after deploy: upload and publish one new video, and Skyler opens it on the iPhone. If it plays, the old Releases need re-encoding: `reladder.py` stream-copies the top rung, so it won't fix them as it stands. If it's still black, range wasn't the cause and the next step is an H.264 rendition.

Redeploy delivery-kid.
Worked on by: magent, justin and skyler, in #interfaces and #general