VersionControl:PRs/maybelle-config/288
From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
| 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