Context
Follow-up to the LL-DASH byte-range issue. Once go-live/pkg/dash can source fragment ranges from manifest_fragmented.mpd, nothing in the serving path needs the per-segment .byteranges JSON sidecars any more — the encoder emits fully self-describing playlist.m3u8 and manifest_fragmented.mpd.
Note: the current sample encode (insane_fpv_shots_hydrofoil_windsurfing_p200_h264_xs, 2026-08-07) still writes the sidecars. They are redundant, not yet absent. This issue is about removing our dependence on them so the encoder is free to stop.
Sites that still generate or assume sidecars
| Location |
What it does |
Action |
go-upload/internal/util/byteranges.go:22 GenerateByteranges |
Shells out to python3 /sbin/parse_fmp4_fragments.py once per segment (10s timeout each) |
Make it a no-op when the playlist already carries #EXT-X-PART / the MPD carries mediaRange |
go-upload/internal/api/routes.go:630 + go-upload/cmd/server/main.go:67 |
POST /api/content/{content_name}/generate-byteranges |
Keep the endpoint for legacy content; report "skipped — manifest already self-describing" |
generate_abr/create_abr_ladder.sh:2684 (Phase 6) |
Generates sidecars during the local ladder build |
Gate behind a flag; default off for fmp4 output |
go-live/pkg/parser/byterange.go:108 and go-live/pkg/parser/playlist.go:170 |
Sidecar fallback when no #EXT-X-PART found |
Keep — this is the legacy-content path |
Also worth fixing while in here
go-live/pkg/parser/byterange.go keys its result map inconsistently between its two branches:
#EXT-X-PART branch (:69) keys by filepath.Base(uri)
- sidecar fallback (
:127) keys by the raw playlist line
Callers look up by segment.URI (e.g. generator/ll_hls.go:188). These agree only while playlist lines are bare filenames — which is true for current content, so this is latent, not live. Worth collapsing to one keying rule rather than leaving the trap set.
Acceptance criteria
Blocked on the LL-DASH MPD-reader issue landing first.
Context
Follow-up to the LL-DASH byte-range issue. Once
go-live/pkg/dashcan source fragment ranges frommanifest_fragmented.mpd, nothing in the serving path needs the per-segment.byterangesJSON sidecars any more — the encoder emits fully self-describingplaylist.m3u8andmanifest_fragmented.mpd.Note: the current sample encode (
insane_fpv_shots_hydrofoil_windsurfing_p200_h264_xs, 2026-08-07) still writes the sidecars. They are redundant, not yet absent. This issue is about removing our dependence on them so the encoder is free to stop.Sites that still generate or assume sidecars
go-upload/internal/util/byteranges.go:22GenerateByterangespython3 /sbin/parse_fmp4_fragments.pyonce per segment (10s timeout each)#EXT-X-PART/ the MPD carriesmediaRangego-upload/internal/api/routes.go:630+go-upload/cmd/server/main.go:67POST /api/content/{content_name}/generate-byterangesgenerate_abr/create_abr_ladder.sh:2684(Phase 6)go-live/pkg/parser/byterange.go:108andgo-live/pkg/parser/playlist.go:170#EXT-X-PARTfoundAlso worth fixing while in here
go-live/pkg/parser/byterange.gokeys its result map inconsistently between its two branches:#EXT-X-PARTbranch (:69) keys byfilepath.Base(uri):127) keys by the raw playlist lineCallers look up by
segment.URI(e.g.generator/ll_hls.go:188). These agree only while playlist lines are bare filenames — which is true for current content, so this is latent, not live. Worth collapsing to one keying rule rather than leaving the trap set.Acceptance criteria
parse_fmp4_fragments.pyat all, and reports why it was skipped.byterange.gouses one map-key convention across both branches.Blocked on the LL-DASH MPD-reader issue landing first.