From b7e75cfd64893dde230dfc1c3b281a00ca1b4470 Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Wed, 8 Aug 2012 09:19:05 -0700 Subject: Handle empty stsc box Change-Id: I867e2499fac3045075654aaaecf44327753327fd --- media/libmediaplayerservice/nuplayer/mp4/TrackFragment.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'media/libmediaplayerservice/nuplayer') diff --git a/media/libmediaplayerservice/nuplayer/mp4/TrackFragment.cpp b/media/libmediaplayerservice/nuplayer/mp4/TrackFragment.cpp index e2df468..12e71db 100644 --- a/media/libmediaplayerservice/nuplayer/mp4/TrackFragment.cpp +++ b/media/libmediaplayerservice/nuplayer/mp4/TrackFragment.cpp @@ -217,6 +217,9 @@ static void setU32At(uint8_t *ptr, uint32_t x) { } void Parser::StaticTrackFragment::fixSampleToChunkTableIfNecessary() { + if (mSampleToChunk == NULL) { + return; + } uint32_t entryCount = U32_AT(mSampleToChunk->data() + 4); uint32_t totalSamples = 0; for (uint32_t i = 0; i < entryCount; ++i) { @@ -251,7 +254,7 @@ status_t Parser::StaticTrackFragment::signalCompletion() { mSampleToChunkIndex = 0; - mSampleToChunkRemaining = + mSampleToChunkRemaining = (mSampleToChunk == NULL) ? 0 : U32_AT(mSampleToChunk->data() + 8 + 12 * mSampleToChunkIndex + 4); updateSampleInfo(); @@ -328,7 +331,11 @@ status_t Parser::StaticTrackFragment::parseSampleToChunk( uint32_t entryCount = parser->readU32(offset + 4); - if (entryCount == 0 || offset + 8 + entryCount * 12 != size) { + if (entryCount == 0) { + return OK; + } + + if (offset + 8 + entryCount * 12 != size) { return ERROR_MALFORMED; } -- cgit v1.1