diff options
author | Robert Shih <robertshih@google.com> | 2015-03-04 00:22:03 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-03-04 00:22:03 +0000 |
commit | e8c9a8f78a9f9213060e5d54a15cde364df3e0d0 (patch) | |
tree | 04a444ead06fd5ad998b5132acc8962481dd93f3 /media | |
parent | 6d32d81f966b1e5e6e037d55a5003fea4b87e55b (diff) | |
parent | c5eef08195a6f81c2ae8fe7d4c346f12b15944e5 (diff) | |
download | frameworks_av-e8c9a8f78a9f9213060e5d54a15cde364df3e0d0.zip frameworks_av-e8c9a8f78a9f9213060e5d54a15cde364df3e0d0.tar.gz frameworks_av-e8c9a8f78a9f9213060e5d54a15cde364df3e0d0.tar.bz2 |
Merge "Fix NuPlayer::Decoder input buffer loss upon seamless format change"
Diffstat (limited to 'media')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp index 5d98d98..33378db 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp @@ -602,11 +602,11 @@ status_t NuPlayer::Decoder::fetchInputData(sp<AMessage> &reply) { // output queue, and handles it in renderer instead. rememberCodecSpecificData(newFormat); onFlush(false /* notifyComplete */); - err = OK; + continue; } else if (seamlessFormatChange) { // reuse existing decoder and don't flush rememberCodecSpecificData(newFormat); - err = OK; + continue; } else { // This stream is unaffected by the discontinuity return -EWOULDBLOCK; @@ -696,10 +696,7 @@ bool NuPlayer::Decoder::onInputBufferFetched(const sp<AMessage> &msg) { int32_t streamErr = ERROR_END_OF_STREAM; CHECK(msg->findInt32("err", &streamErr) || !hasBuffer); - if (streamErr == OK) { - /* buffers are returned to hold on to */ - return true; - } + CHECK(streamErr != OK); // attempt to queue EOS status_t err = mCodec->queueInputBuffer( |