chore(player): link upstream issue androidx/media#3377 in seek workaround

This commit is contained in:
edde746
2026-08-17 04:47:06 +02:00
parent 75704c7a9b
commit a79084b0a5
3 changed files with 8 additions and 6 deletions
@@ -30,10 +30,11 @@ import org.junit.Test
*
* media3 1.11.0 builds the Matroska seek map at the end of the Cues element, which for these files
* is before the Tracks element parsed, so the map permanently reports unseekable and ExoPlayer
* coerces every seek to t=0 (ProgressiveMediaPeriod). The first test is a canary asserting the
* upstream defect against a stock MatroskaExtractor — when it fails after a media3 upgrade, the
* TrackAwareSeekMap repair in [CuelessSeekExtractorWrapper] can be retired. The second test drives
* the production wrapper stack and requires the seek to actually land.
* coerces every seek to t=0 (ProgressiveMediaPeriod; tracking issue androidx/media #3377). The
* first test is a canary asserting the upstream defect against a stock MatroskaExtractor — when it
* fails after a media3 upgrade, the TrackAwareSeekMap repair in [CuelessSeekExtractorWrapper] can
* be retired. The second test drives the production wrapper stack and requires the seek to
* actually land.
*/
class MatroskaLateTracksSeekDeviceTest {
private companion object {
@@ -192,7 +192,7 @@ class CuelessSeekExtractorWrapper(
* Routes seeks through [TrackAwareSeekMap]'s per-track cue lookups when the delegate reports
* unseekable overall. The per-track queries read the live cue data (populated once the Cues
* element parsed), so they resolve correctly even when the map was constructed before the
* Tracks element — the media3 1.11.0 tracks-after-clusters case.
* Tracks element — the media3 1.11.0 tracks-after-clusters case (androidx/media #3377).
*/
private inner class TrackCueSeekMap(
private val delegate: TrackAwareSeekMap
@@ -111,7 +111,8 @@ class MatroskaLateTracksTest {
/**
* media3 1.11.0 builds the Matroska seek map at the end of the Cues element, which for
* tracks-after-clusters files is before the Tracks element parsed — the map then permanently
* reports unseekable and resolves every seek to byte 0, snapping playback to the start (#1969).
* reports unseekable and resolves every seek to byte 0, snapping playback to the start
* (#1969; upstream androidx/media #3377).
* The production stack must repair it through the per-track cue lookups.
*/
@Test