diff options
author | Wei Jia <wjia@google.com> | 2015-06-10 20:18:40 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-10 20:18:41 +0000 |
commit | 4599da7f4ca67a323aa64d84c1b79e3ce6ab9f41 (patch) | |
tree | 7822a822d17facbf05421eae7ee2a50f39b0e222 /media | |
parent | 5fb8b2987ab96ad65dc4b046616607ece16d6fb3 (diff) | |
parent | 3ab25457385dceb07205fc8ead86d7fb9e307588 (diff) | |
download | frameworks_av-4599da7f4ca67a323aa64d84c1b79e3ce6ab9f41.zip frameworks_av-4599da7f4ca67a323aa64d84c1b79e3ce6ab9f41.tar.gz frameworks_av-4599da7f4ca67a323aa64d84c1b79e3ce6ab9f41.tar.bz2 |
Merge "NuPlayerRenderer: discard pending kWhatDrainAudioQueue message when AudioSink is opened in callback mode." into mnc-dev
Diffstat (limited to 'media')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp index eb4e67d..fb2e767 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp @@ -425,14 +425,14 @@ void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { case kWhatDrainAudioQueue: { + mDrainAudioQueuePending = false; + int32_t generation; CHECK(msg->findInt32("drainGeneration", &generation)); if (generation != getDrainGeneration(true /* audio */)) { break; } - mDrainAudioQueuePending = false; - if (onDrainAudioQueue()) { uint32_t numFramesPlayed; CHECK_EQ(mAudioSink->getPosition(&numFramesPlayed), @@ -1684,8 +1684,10 @@ status_t NuPlayer::Renderer::onOpenAudioSink( onDisableOffloadAudio(); mCurrentOffloadInfo = AUDIO_INFO_INITIALIZER; ALOGV("openAudioSink: offload failed"); + } else { + mUseAudioCallback = true; // offload mode transfers data through callback + ++mAudioDrainGeneration; // discard pending kWhatDrainAudioQueue message. } - mUseAudioCallback = true; // offload mode transfers data through callback } } if (!offloadOnly && !offloadingAudio()) { @@ -1712,6 +1714,9 @@ status_t NuPlayer::Renderer::onOpenAudioSink( // Note: It is possible to set up the callback, but not use it to send audio data. // This requires a fix in AudioSink to explicitly specify the transfer mode. mUseAudioCallback = getUseAudioCallbackSetting(); + if (mUseAudioCallback) { + ++mAudioDrainGeneration; // discard pending kWhatDrainAudioQueue message. + } // Compute the desired buffer size. // For callback mode, the amount of time before wakeup is about half the buffer size. |