summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2012-08-08 09:43:26 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-08-08 09:43:26 -0700
commite2229fba1c7e98c243ea777f567fd72579d91e41 (patch)
treec9896144a6719480f828d568319c81f0bba9a2ca
parenta9e0ea58738a50de84a80d3b4db1936e7433dce4 (diff)
parentb7e75cfd64893dde230dfc1c3b281a00ca1b4470 (diff)
downloadframeworks_av-e2229fba1c7e98c243ea777f567fd72579d91e41.zip
frameworks_av-e2229fba1c7e98c243ea777f567fd72579d91e41.tar.gz
frameworks_av-e2229fba1c7e98c243ea777f567fd72579d91e41.tar.bz2
Merge "Handle empty stsc box" into jb-mr1-dev
-rw-r--r--media/libmediaplayerservice/nuplayer/mp4/TrackFragment.cpp11
1 files changed, 9 insertions, 2 deletions
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;
}