diff options
Diffstat (limited to 'media/libstagefright/matroska')
-rw-r--r-- | media/libstagefright/matroska/MatroskaExtractor.cpp | 12 | ||||
-rw-r--r-- | media/libstagefright/matroska/MatroskaExtractor.h | 2 |
2 files changed, 10 insertions, 4 deletions
diff --git a/media/libstagefright/matroska/MatroskaExtractor.cpp b/media/libstagefright/matroska/MatroskaExtractor.cpp index f8fa015..c1fa240 100644 --- a/media/libstagefright/matroska/MatroskaExtractor.cpp +++ b/media/libstagefright/matroska/MatroskaExtractor.cpp @@ -792,7 +792,12 @@ MatroskaExtractor::MatroskaExtractor(const sp<DataSource> &source) info->GetWritingAppAsUTF8()); #endif - addTracks(); + ret = addTracks(); + if (ret < 0) { + delete mSegment; + mSegment = NULL; + return; + } } MatroskaExtractor::~MatroskaExtractor() { @@ -987,7 +992,7 @@ status_t addVorbisCodecInfo( return OK; } -void MatroskaExtractor::addTracks() { +int MatroskaExtractor::addTracks() { const mkvparser::Tracks *tracks = mSegment->GetTracks(); for (size_t index = 0; index < tracks->GetTracksCount(); ++index) { @@ -1064,7 +1069,7 @@ void MatroskaExtractor::addTracks() { if (!strcmp("A_AAC", codecID)) { meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_AAC); if (codecPrivateSize < 2) { - return; + return -1; } addESDSFromCodecPrivate( @@ -1110,6 +1115,7 @@ void MatroskaExtractor::addTracks() { trackInfo->mMeta = meta; trackInfo->mExtractor = this; } + return 0; } void MatroskaExtractor::findThumbnails() { diff --git a/media/libstagefright/matroska/MatroskaExtractor.h b/media/libstagefright/matroska/MatroskaExtractor.h index db36bf8..e3a07ec 100644 --- a/media/libstagefright/matroska/MatroskaExtractor.h +++ b/media/libstagefright/matroska/MatroskaExtractor.h @@ -74,7 +74,7 @@ private: bool mIsWebm; int64_t mSeekPreRollNs; - void addTracks(); + int addTracks(); void findThumbnails(); bool isLiveStreaming() const; |