summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/matroska
diff options
context:
space:
mode:
authorMazhar <mazharx.sameullah@intel.com>2014-04-28 20:11:21 +0530
committerSteve Kondik <steve@cyngn.com>2015-12-07 18:45:16 -0800
commit4bc44b7df2d89786c9dd986d5d420e633b007df1 (patch)
treee200daef8ca6239b62249196b4e6dfdd7a0e9527 /media/libstagefright/matroska
parent3c0409bf981f7ae224b4843741770ad4ee341207 (diff)
downloadframeworks_av-4bc44b7df2d89786c9dd986d5d420e633b007df1.zip
frameworks_av-4bc44b7df2d89786c9dd986d5d420e633b007df1.tar.gz
frameworks_av-4bc44b7df2d89786c9dd986d5d420e633b007df1.tar.bz2
Fatal error while playing certain mkv files.
In addTracks() function, the value of codecPrivateSize is zero for the certain mkv contents, which causes this fatal error. With this fix, error is returned whenever the value of codecPrivateSize is less than 2, to avoid the fatal error. Change-Id: I2f464deb7444d4c129aaa4d77bba35a3835bf7e1 Signed-off-by: gbhakteX <gurudattax.bhakte@intel.com> Signed-off-by: Mazhar <mazharx.sameullah@intel.com>
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;