From a5b4642220b810d8f044171c7c05aed0597a1812 Mon Sep 17 00:00:00 2001 From: Andy Hung Date: Thu, 3 Sep 2015 15:13:01 -0700 Subject: NuPlayerRenderer: do not send rendering started message when paused Delay until resume. Bug: 23669269 Change-Id: I0a805812d80b1aad561425442bca0fc05a05752f --- media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp | 11 ++++++++++- media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'media/libmediaplayerservice') diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp index 8053245..4d25294 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp @@ -111,6 +111,7 @@ NuPlayer::Renderer::Renderer( mVideoRenderingStarted(false), mVideoRenderingStartGeneration(0), mAudioRenderingStartGeneration(0), + mRenderingDataDelivered(false), mAudioOffloadPauseTimeoutGeneration(0), mAudioTornDown(false), mCurrentOffloadInfo(AUDIO_INFO_INITIALIZER), @@ -648,11 +649,16 @@ void NuPlayer::Renderer::postDrainAudioQueue_l(int64_t delayUs) { void NuPlayer::Renderer::prepareForMediaRenderingStart_l() { mAudioRenderingStartGeneration = mAudioDrainGeneration; mVideoRenderingStartGeneration = mVideoDrainGeneration; + mRenderingDataDelivered = false; } void NuPlayer::Renderer::notifyIfMediaRenderingStarted_l() { if (mVideoRenderingStartGeneration == mVideoDrainGeneration && mAudioRenderingStartGeneration == mAudioDrainGeneration) { + mRenderingDataDelivered = true; + if (mPaused) { + return; + } mVideoRenderingStartGeneration = -1; mAudioRenderingStartGeneration = -1; @@ -1504,7 +1510,10 @@ void NuPlayer::Renderer::onResume() { { Mutex::Autolock autoLock(mLock); mPaused = false; - + // rendering started message may have been delayed if we were paused. + if (mRenderingDataDelivered) { + notifyIfMediaRenderingStarted_l(); + } // configure audiosink as we did not do it when pausing if (mAudioSink != NULL && mAudioSink->ready()) { mAudioSink->setPlaybackRate(mPlaybackSettings); diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h index 87bcbf9..9479c31 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h @@ -176,6 +176,7 @@ private: bool mVideoRenderingStarted; int32_t mVideoRenderingStartGeneration; int32_t mAudioRenderingStartGeneration; + bool mRenderingDataDelivered; int64_t mLastPositionUpdateUs; -- cgit v1.1