summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorWei Jia <wjia@google.com>2015-06-10 20:18:40 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-06-10 20:18:41 +0000
commit4599da7f4ca67a323aa64d84c1b79e3ce6ab9f41 (patch)
tree7822a822d17facbf05421eae7ee2a50f39b0e222 /media
parent5fb8b2987ab96ad65dc4b046616607ece16d6fb3 (diff)
parent3ab25457385dceb07205fc8ead86d7fb9e307588 (diff)
downloadframeworks_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.cpp11
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.