diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/avi/AviExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/avi/AviExtractor.java index 7fa8133820..c759619767 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/avi/AviExtractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/avi/AviExtractor.java @@ -15,6 +15,7 @@ */ package androidx.media3.extractor.avi; +import static java.lang.Math.max; import static java.lang.annotation.ElementType.TYPE_USE; import androidx.annotation.IntDef; @@ -521,7 +522,7 @@ public final class AviExtractor implements Extractor { ChunkReader chunkReader = new ChunkReader( streamId, trackType, durationUs, aviStreamHeaderChunk.length, trackOutput); - this.durationUs = durationUs; + this.durationUs = max(this.durationUs, durationUs); return chunkReader; } else { // We don't currently support tracks other than video and audio. diff --git a/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.0.dump b/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.0.dump index 666526a13d..d49d31921a 100644 --- a/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.0.dump +++ b/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.0.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true - duration = 4080000 + duration = 4087416 getPosition(0) = [[timeUs=0, position=9996]] getPosition(1) = [[timeUs=0, position=9996]] - getPosition(2040000) = [[timeUs=1835152, position=160708], [timeUs=2335648, position=198850]] - getPosition(4080000) = [[timeUs=3837136, position=308434]] + getPosition(2043708) = [[timeUs=1835152, position=160708], [timeUs=2335648, position=198850]] + getPosition(4087416) = [[timeUs=3837136, position=308434]] numberOfTracks = 2 track 0: total output bytes = 252777 diff --git a/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.1.dump b/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.1.dump index 94a7031440..a4fe2bc546 100644 --- a/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.1.dump +++ b/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.1.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true - duration = 4080000 + duration = 4087416 getPosition(0) = [[timeUs=0, position=9996]] getPosition(1) = [[timeUs=0, position=9996]] - getPosition(2040000) = [[timeUs=1835152, position=160708], [timeUs=2335648, position=198850]] - getPosition(4080000) = [[timeUs=3837136, position=308434]] + getPosition(2043708) = [[timeUs=1835152, position=160708], [timeUs=2335648, position=198850]] + getPosition(4087416) = [[timeUs=3837136, position=308434]] numberOfTracks = 2 track 0: total output bytes = 165531 diff --git a/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.2.dump b/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.2.dump index ba5d85a844..20ec6584e4 100644 --- a/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.2.dump +++ b/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.2.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true - duration = 4080000 + duration = 4087416 getPosition(0) = [[timeUs=0, position=9996]] getPosition(1) = [[timeUs=0, position=9996]] - getPosition(2040000) = [[timeUs=1835152, position=160708], [timeUs=2335648, position=198850]] - getPosition(4080000) = [[timeUs=3837136, position=308434]] + getPosition(2043708) = [[timeUs=1835152, position=160708], [timeUs=2335648, position=198850]] + getPosition(4087416) = [[timeUs=3837136, position=308434]] numberOfTracks = 2 track 0: total output bytes = 102418 diff --git a/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.3.dump b/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.3.dump index 2be55648da..a99ed20fc9 100644 --- a/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.3.dump +++ b/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.3.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true - duration = 4080000 + duration = 4087416 getPosition(0) = [[timeUs=0, position=9996]] getPosition(1) = [[timeUs=0, position=9996]] - getPosition(2040000) = [[timeUs=1835152, position=160708], [timeUs=2335648, position=198850]] - getPosition(4080000) = [[timeUs=3837136, position=308434]] + getPosition(2043708) = [[timeUs=1835152, position=160708], [timeUs=2335648, position=198850]] + getPosition(4087416) = [[timeUs=3837136, position=308434]] numberOfTracks = 2 track 0: total output bytes = 17833 diff --git a/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.unknown_length.dump index 666526a13d..d49d31921a 100644 --- a/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.unknown_length.dump +++ b/libraries/test_data/src/test/assets/extractordumps/avi/sample.avi.unknown_length.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true - duration = 4080000 + duration = 4087416 getPosition(0) = [[timeUs=0, position=9996]] getPosition(1) = [[timeUs=0, position=9996]] - getPosition(2040000) = [[timeUs=1835152, position=160708], [timeUs=2335648, position=198850]] - getPosition(4080000) = [[timeUs=3837136, position=308434]] + getPosition(2043708) = [[timeUs=1835152, position=160708], [timeUs=2335648, position=198850]] + getPosition(4087416) = [[timeUs=3837136, position=308434]] numberOfTracks = 2 track 0: total output bytes = 252777