summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
diff options
context:
space:
mode:
authorRobert Shih <robertshih@google.com>2015-02-20 17:01:55 -0800
committerRobert Shih <robertshih@google.com>2015-02-20 17:11:09 -0800
commitc5eef08195a6f81c2ae8fe7d4c346f12b15944e5 (patch)
tree312897fec636a262c99bd36869ef85efa68486bc /media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp
parent27a3e954a587c2cf070fdd2aae7d93d839888db9 (diff)
downloadframeworks_av-c5eef08195a6f81c2ae8fe7d4c346f12b15944e5.zip
frameworks_av-c5eef08195a6f81c2ae8fe7d4c346f12b15944e5.tar.gz
frameworks_av-c5eef08195a6f81c2ae8fe7d4c346f12b15944e5.tar.bz2
Fix NuPlayer::Decoder input buffer loss upon seamless format change
Bug: 19462710 Change-Id: I30f2ab76785a524e95b404b8b18ddc862e9c414e
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp')
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp9
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(