diff options
author | Wei Jia <wjia@google.com> | 2015-08-28 10:35:35 -0700 |
---|---|---|
committer | The Android Automerger <android-build@google.com> | 2016-05-27 11:30:16 -0700 |
commit | f81038006b4c59a5a148dcad887371206033c28f (patch) | |
tree | e27334106fce00eddb73daa302a4d8d40fd2bce6 /media/libmediaplayerservice | |
parent | 6fdee2a83432b3b150d6a34f231c4e2f7353c01e (diff) | |
download | frameworks_av-f81038006b4c59a5a148dcad887371206033c28f.zip frameworks_av-f81038006b4c59a5a148dcad887371206033c28f.tar.gz frameworks_av-f81038006b4c59a5a148dcad887371206033c28f.tar.bz2 |
MPEG4Extractor: ensure kKeyTrackID exists before creating an MPEG4Source as track.
GenericSource: return error when no track exists.
SampleIterator: make sure mSamplesPerChunk is not zero before using it as divisor.
Bug: 21657957
Bug: 23705695
Bug: 22802344
Bug: 28799341
Change-Id: I7664992ade90b935d3f255dcd43ecc2898f30b04
(cherry picked from commit 0386c91b8a910a134e5898ffa924c1b6c7560b13)
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/GenericSource.cpp | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp index 45da218..0598254 100644 --- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp +++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp @@ -211,6 +211,9 @@ status_t NuPlayer::GenericSource::initFromDataSource() { for (size_t i = 0; i < numtracks; ++i) { sp<MediaSource> track = extractor->getTrack(i); + if (track == NULL) { + continue; + } sp<MetaData> meta = extractor->getTrackMetaData(i); @@ -253,24 +256,27 @@ status_t NuPlayer::GenericSource::initFromDataSource() { } } - if (track != NULL) { - mSources.push(track); - int64_t durationUs; - if (meta->findInt64(kKeyDuration, &durationUs)) { - if (durationUs > mDurationUs) { - mDurationUs = durationUs; - } + mSources.push(track); + int64_t durationUs; + if (meta->findInt64(kKeyDuration, &durationUs)) { + if (durationUs > mDurationUs) { + mDurationUs = durationUs; } + } - int32_t bitrate; - if (totalBitrate >= 0 && meta->findInt32(kKeyBitRate, &bitrate)) { - totalBitrate += bitrate; - } else { - totalBitrate = -1; - } + int32_t bitrate; + if (totalBitrate >= 0 && meta->findInt32(kKeyBitRate, &bitrate)) { + totalBitrate += bitrate; + } else { + totalBitrate = -1; } } + if (mSources.size() == 0) { + ALOGE("b/23705695"); + return UNKNOWN_ERROR; + } + mBitrate = totalBitrate; return OK; @@ -318,7 +324,7 @@ int64_t NuPlayer::GenericSource::getLastReadPosition() { status_t NuPlayer::GenericSource::setBuffers( bool audio, Vector<MediaBuffer *> &buffers) { - if (mIsSecure && !audio) { + if (mIsWidevine && !audio && mVideoTrack.mSource != NULL) { return mVideoTrack.mSource->setBuffers(buffers); } return INVALID_OPERATION; |