From 105ef1da2dea8ce71b118f4b6b6feac446518efe Mon Sep 17 00:00:00 2001 From: aquilescanta Date: Fri, 3 Jun 2016 06:32:46 -0700 Subject: [PATCH] Discard trailing ctts entries with 0 sample counts The bug this cl fixes is basically an uncaught case of [] Issue: #1567 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=123963779 --- .../android/exoplayer/extractor/mp4/AtomParsers.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/mp4/AtomParsers.java b/library/src/main/java/com/google/android/exoplayer/extractor/mp4/AtomParsers.java index e6e28090ae..cc4baa06e8 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/mp4/AtomParsers.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/mp4/AtomParsers.java @@ -229,12 +229,19 @@ import java.util.List; remainingSamplesInChunk--; } + Assertions.checkArgument(remainingSamplesAtTimestampOffset == 0); + // Remove trailing ctts entries with 0-valued sample counts. + while (remainingTimestampOffsetChanges > 0) { + Assertions.checkArgument(ctts.readUnsignedIntToInt() == 0); + ctts.readInt(); // Ignore offset. + remainingTimestampOffsetChanges--; + } + // Check all the expected samples have been seen. Assertions.checkArgument(remainingSynchronizationSamples == 0); Assertions.checkArgument(remainingSamplesAtTimestampDelta == 0); Assertions.checkArgument(remainingSamplesInChunk == 0); Assertions.checkArgument(remainingTimestampDeltaChanges == 0); - Assertions.checkArgument(remainingTimestampOffsetChanges == 0); } else { long[] chunkOffsetsBytes = new long[chunkIterator.length]; int[] chunkSampleCounts = new int[chunkIterator.length];