From d7988b1a7b32e39e671f7d4e2b2d8027a1f99639 Mon Sep 17 00:00:00 2001 From: Ronghua Wu Date: Fri, 3 Oct 2014 15:19:10 -0700 Subject: [PATCH] NuPlayer: add audioDecoderStillNeeded. Bug: 17752358 Change-Id: Ia3b3ee4df65e5564afd0723943d2d747f3a604af --- media/libmediaplayerservice/nuplayer/NuPlayer.cpp | 11 ++++++++--- media/libmediaplayerservice/nuplayer/NuPlayer.h | 2 ++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp index 5270efc07b..53eec91c22 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp @@ -1048,9 +1048,9 @@ void NuPlayer::onMessageReceived(const sp &msg) { } else { ALOGW("resume called when source is gone or not set"); } - // |mAudioDecoder| may have been released due to the pause timeout, so try to re-create - // it if needed. - if (mFlushingAudio != SHUT_DOWN) { + // |mAudioDecoder| may have been released due to the pause timeout, so re-create it if + // needed. + if (audioDecoderStillNeeded() && mAudioDecoder == NULL) { instantiateDecoder(true /* audio */, &mAudioDecoder); } if (mRenderer != NULL) { @@ -1079,6 +1079,11 @@ void NuPlayer::onMessageReceived(const sp &msg) { } } +bool NuPlayer::audioDecoderStillNeeded() { + // Audio decoder is no longer needed if it's in shut/shutting down status. + return ((mFlushingAudio != SHUT_DOWN) && (mFlushingAudio != SHUTTING_DOWN_DECODER)); +} + void NuPlayer::finishFlushIfPossible() { if (mFlushingAudio != NONE && mFlushingAudio != FLUSHED && mFlushingAudio != SHUT_DOWN) { diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.h b/media/libmediaplayerservice/nuplayer/NuPlayer.h index 8fa72696c6..81577336db 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.h @@ -203,6 +203,8 @@ private: void finishFlushIfPossible(); + bool audioDecoderStillNeeded(); + void flushDecoder( bool audio, bool needShutdown, const sp &newFormat = NULL); void updateDecoderFormatWithoutFlush(bool audio, const sp &format); -- 2.11.0