diff options
author | Mazhar <mazharx.sameullah@intel.com> | 2014-04-28 20:11:21 +0530 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-12-07 18:45:16 -0800 |
commit | 4bc44b7df2d89786c9dd986d5d420e633b007df1 (patch) | |
tree | e200daef8ca6239b62249196b4e6dfdd7a0e9527 /media/libstagefright/matroska | |
parent | 3c0409bf981f7ae224b4843741770ad4ee341207 (diff) | |
download | frameworks_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.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; |