summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/matroska
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/matroska')
-rw-r--r--media/libstagefright/matroska/MatroskaExtractor.cpp12
-rw-r--r--media/libstagefright/matroska/MatroskaExtractor.h2
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;