From b1d5966ea567111fbdaa087c6b971a65d195c87c Mon Sep 17 00:00:00 2001 From: andrewlewis Date: Wed, 31 Oct 2018 03:37:24 -0700 Subject: [PATCH] Allow MP4s with truncated stco to be played ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=219448836 --- .../exoplayer2/extractor/mp4/AtomParsers.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java b/library/core/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java index 7104630a23..0cda3fafa8 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java @@ -221,11 +221,22 @@ import java.util.List; for (int i = 0; i < sampleCount; i++) { // Advance to the next chunk if necessary. - while (remainingSamplesInChunk == 0) { - Assertions.checkState(chunkIterator.moveNext()); + boolean chunkDataComplete = true; + while (remainingSamplesInChunk == 0 && (chunkDataComplete = chunkIterator.moveNext())) { offset = chunkIterator.offset; remainingSamplesInChunk = chunkIterator.numSamples; } + if (!chunkDataComplete) { + Log.w(TAG, "Unexpected end of chunk data"); + sampleCount = i; + offsets = Arrays.copyOf(offsets, sampleCount); + sizes = Arrays.copyOf(sizes, sampleCount); + timestamps = Arrays.copyOf(timestamps, sampleCount); + flags = Arrays.copyOf(flags, sampleCount); + remainingSamplesAtTimestampOffset = 0; + remainingTimestampOffsetChanges = 0; + break; + } // Add on the timestamp offset if ctts is present. if (ctts != null) {