From 8cf107408d2b6d15373dc8a6b938bfbec03e8b83 Mon Sep 17 00:00:00 2001 From: andrewlewis Date: Fri, 23 Sep 2016 07:49:27 -0700 Subject: [PATCH] Replace stbl consistency assertions with a warning. Issue: #1850 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=134073096 --- .../exoplayer2/extractor/mp4/AtomParsers.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java b/library/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java index 87be7029c9..be26e7f9d4 100644 --- a/library/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java +++ b/library/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer2.extractor.mp4; +import android.util.Log; import android.util.Pair; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.Format; @@ -38,6 +39,8 @@ import java.util.List; */ /* package */ final class AtomParsers { + private static final String TAG = "AtomParsers"; + private static final int TYPE_vide = Util.getIntegerCodeForString("vide"); private static final int TYPE_soun = Util.getIntegerCodeForString("soun"); private static final int TYPE_text = Util.getIntegerCodeForString("text"); @@ -248,11 +251,16 @@ import java.util.List; 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); + // If the stbl's child boxes are not consistent the container is malformed, but the stream may + // still be playable. + if (remainingSynchronizationSamples != 0 || remainingSamplesAtTimestampDelta != 0 + || remainingSamplesInChunk != 0 || remainingTimestampDeltaChanges != 0) { + Log.w(TAG, "Inconsistent stbl box for track " + track.id + + ": remainingSynchronizationSamples " + remainingSynchronizationSamples + + ", remainingSamplesAtTimestampDelta " + remainingSamplesAtTimestampDelta + + ", remainingSamplesInChunk " + remainingSamplesInChunk + + ", remainingTimestampDeltaChanges " + remainingTimestampDeltaChanges); + } } else { long[] chunkOffsetsBytes = new long[chunkIterator.length]; int[] chunkSampleCounts = new int[chunkIterator.length];