diff options
| author | Andreas Huber <andih@google.com> | 2011-08-17 13:21:40 -0700 | 
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-17 13:21:40 -0700 | 
| commit | ee0846f97cf07f5f18d19161526743330aabb44e (patch) | |
| tree | 060d8b6539f946d215149036427f0d0cbe2b11ce /media | |
| parent | 1e7d2ba8b79e548286a649ca91402a2d41f59fa0 (diff) | |
| parent | 169c286ed166499c5099d2b336967e0bf3d25551 (diff) | |
| download | frameworks_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.cpp | 5 | ||||
| -rw-r--r-- | media/libstagefright/SampleTable.cpp | 7 | ||||
| -rw-r--r-- | media/libstagefright/include/SampleTable.h | 2 | 
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);  | 
