Objective
Track the known Media3 failure for byte-range LL-HLS delivery over CMAF/fMP4 media and remove the characterization once a stable Media3 release carries the upstream fix.
CMAF/fMP4 and LL-HLS are not alternatives here: CMAF/fMP4 is the media packaging; LL-HLS is the HLS delivery/signaling path. MuxTV must accept provider-supplied HLS/LL-HLS independently of Apple TV support.
Failure family
The deterministic fixture uses:
- local
MockWebServer only;
- MuxTV's real
PlaybackMediaSourceFactory / MuxTvHttpClients / HlsMediaSource / ExoPlayer path;
- exact AndroidX CMAF
audio_init.mp4 test data;
- the first 512 bytes of AndroidX CMAF
audio_2.m4s exposed as #EXT-X-PART ... BYTERANGE="512@0";
- assertions on the fatal
DataSpec.subrange -> HlsMediaChunk.feedDataToExtractor cause chain and the single Range: bytes=0-511 request.
Affected flow:
LL-HLS EXT-X-PART + BYTERANGE -> bounded CMAF/fMP4 DataSpec fully consumed -> nextLoadPosition == dataSpec.length -> retry -> zero-length DataSpec.subrange(...) -> IllegalArgumentException -> fatal source error.
This is an upstream Media3 loader behavior, not a CMAF-format rejection and not an Apple-specific MuxTV architecture choice.
Landed characterization
Merged PR #274 landed the characterization on main as merge commit:
a8350d4752a987e8280f0e823884b53bebbee30c
The merge contains only the Android instrumentation characterization plus scoped Apache-2.0 attribution for AndroidX test-data bytes; no production HLS/parser/player behavior changed.
Terminology-only follow-up PR #276 renames/comments the test explicitly as LL-HLS-over-CMAF/fMP4 while preserving the same fixture bytes and assertions.
Exact 1.10.1 / 1.11.0 attribution
The identical characterization blob ea206954db072da8cd9370faccf35ffe9f783d59 reproduced the same fatal signature on:
API26/API36 evidence succeeded on both version lines. Therefore the defect is pre-existing across 1.10.1 -> 1.11.0; it was not introduced by the dependency upgrade.
Upstream status
Workaround policy
No MuxTV parser workaround is currently justified. Do not strip LL-HLS tags, disable LL-HLS, change player ownership, or alter buffer/cache/network policy merely to mask this upstream defect.
If real provider impact ever requires an app-side fallback before the fixed stable Media3 exists, it must first prove ordinary HLS, EXT-X-SKIP, complete-segment fallback, security/header ownership and secret-redaction behavior.
Acceptance / remaining gate
Keep this issue open only as that upstream stable-fix watch. Close it without an app-side parser fallback if the released Media3 fix resolves the fixture.
Related: #186, #179.
Objective
Track the known Media3 failure for byte-range LL-HLS delivery over CMAF/fMP4 media and remove the characterization once a stable Media3 release carries the upstream fix.
CMAF/fMP4 and LL-HLS are not alternatives here: CMAF/fMP4 is the media packaging; LL-HLS is the HLS delivery/signaling path. MuxTV must accept provider-supplied HLS/LL-HLS independently of Apple TV support.
Failure family
The deterministic fixture uses:
MockWebServeronly;PlaybackMediaSourceFactory/MuxTvHttpClients/HlsMediaSource/ ExoPlayer path;audio_init.mp4test data;audio_2.m4sexposed as#EXT-X-PART ... BYTERANGE="512@0";DataSpec.subrange->HlsMediaChunk.feedDataToExtractorcause chain and the singleRange: bytes=0-511request.Affected flow:
LL-HLS EXT-X-PART + BYTERANGE-> bounded CMAF/fMP4DataSpecfully consumed ->nextLoadPosition == dataSpec.length-> retry -> zero-lengthDataSpec.subrange(...)->IllegalArgumentException-> fatal source error.This is an upstream Media3 loader behavior, not a CMAF-format rejection and not an Apple-specific MuxTV architecture choice.
Landed characterization
Merged PR #274 landed the characterization on
mainas merge commit:a8350d4752a987e8280f0e823884b53bebbee30cThe merge contains only the Android instrumentation characterization plus scoped Apache-2.0 attribution for AndroidX test-data bytes; no production HLS/parser/player behavior changed.
Terminology-only follow-up PR #276 renames/comments the test explicitly as LL-HLS-over-CMAF/fMP4 while preserving the same fixture bytes and assertions.
Exact 1.10.1 / 1.11.0 attribution
The identical characterization blob
ea206954db072da8cd9370faccf35ffe9f783d59reproduced the same fatal signature on:API26/API36 evidence succeeded on both version lines. Therefore the defect is pre-existing across
1.10.1 -> 1.11.0; it was not introduced by the dependency upgrade.Upstream status
mainfix commit:6bb2737e5f07907611f587f8f9f9b43853eb0ebc—Propagate EOF as ParserException for an HLS media chunk fully loaded;Workaround policy
No MuxTV parser workaround is currently justified. Do not strip LL-HLS tags, disable LL-HLS, change player ownership, or alter buffer/cache/network policy merely to mask this upstream defect.
If real provider impact ever requires an app-side fallback before the fixed stable Media3 exists, it must first prove ordinary HLS,
EXT-X-SKIP, complete-segment fallback, security/header ownership and secret-redaction behavior.Acceptance / remaining gate
Keep this issue open only as that upstream stable-fix watch. Close it without an app-side parser fallback if the released Media3 fix resolves the fixture.
Related: #186, #179.