summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2011-08-17 13:21:40 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-08-17 13:21:40 -0700
commitee0846f97cf07f5f18d19161526743330aabb44e (patch)
tree060d8b6539f946d215149036427f0d0cbe2b11ce /media
parent1e7d2ba8b79e548286a649ca91402a2d41f59fa0 (diff)
parent169c286ed166499c5099d2b336967e0bf3d25551 (diff)
downloadframeworks_av-ee0846f97cf07f5f18d19161526743330aabb44e.zip
frameworks_av-ee0846f97cf07f5f18d19161526743330aabb44e.tar.gz
frameworks_av-ee0846f97cf07f5f18d19161526743330aabb44e.tar.bz2
Merge "Make sure we have all the sample table metadata before declaring a track valid."
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/MPEG4Extractor.cpp5
-rw-r--r--media/libstagefright/SampleTable.cpp7
-rw-r--r--media/libstagefright/include/SampleTable.h2
3 files changed, 14 insertions, 0 deletions
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp
index 73a05a5..3b79f06 100644
--- a/media/libstagefright/MPEG4Extractor.cpp
+++ b/media/libstagefright/MPEG4Extractor.cpp
@@ -1687,6 +1687,11 @@ status_t MPEG4Extractor::verifyTrack(Track *track) {
}
}
+ if (!track->sampleTable->isValid()) {
+ // Make sure we have all the metadata we need.
+ return ERROR_MALFORMED;
+ }
+
return OK;
}
diff --git a/media/libstagefright/SampleTable.cpp b/media/libstagefright/SampleTable.cpp
index a8a094e..2b9d99b 100644
--- a/media/libstagefright/SampleTable.cpp
+++ b/media/libstagefright/SampleTable.cpp
@@ -84,6 +84,13 @@ SampleTable::~SampleTable() {
mSampleIterator = NULL;
}
+bool SampleTable::isValid() const {
+ return mChunkOffsetOffset >= 0
+ && mSampleToChunkOffset >= 0
+ && mSampleSizeOffset >= 0
+ && mTimeToSample != NULL;
+}
+
status_t SampleTable::setChunkOffsetParams(
uint32_t type, off64_t data_offset, size_t data_size) {
if (mChunkOffsetOffset >= 0) {
diff --git a/media/libstagefright/include/SampleTable.h b/media/libstagefright/include/SampleTable.h
index f44e0a2..a6a6524 100644
--- a/media/libstagefright/include/SampleTable.h
+++ b/media/libstagefright/include/SampleTable.h
@@ -34,6 +34,8 @@ class SampleTable : public RefBase {
public:
SampleTable(const sp<DataSource> &source);
+ bool isValid() const;
+
// type can be 'stco' or 'co64'.
status_t setChunkOffsetParams(
uint32_t type, off64_t data_offset, size_t data_size);