summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2011-03-21 14:06:33 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-03-21 14:06:33 -0700
commit7a4b8bd58847e6334aaa45227a2512a8200c0812 (patch)
tree9ff2e404cf00598db0c64b80bbf4dec521ee53a8 /media/libmediaplayerservice
parent43e7aeb37e1d4d86eb89a0a5f620d148289d1986 (diff)
parent6667ac33f4d7084fa240baf719282051f1e9ff25 (diff)
downloadframeworks_base-7a4b8bd58847e6334aaa45227a2512a8200c0812.zip
frameworks_base-7a4b8bd58847e6334aaa45227a2512a8200c0812.tar.gz
frameworks_base-7a4b8bd58847e6334aaa45227a2512a8200c0812.tar.bz2
Merge "Fix issue 3483718: audio streaming and A2DP."
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r--media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index 369a3a8..828e008 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -198,18 +198,21 @@ void NuPlayer::Renderer::signalAudioSinkChanged() {
}
void NuPlayer::Renderer::onDrainAudioQueue() {
- uint32_t numFramesPlayed;
- CHECK_EQ(mAudioSink->getPosition(&numFramesPlayed), (status_t)OK);
- ssize_t numFramesAvailableToWrite =
- mAudioSink->frameCount() - (mNumFramesWritten - numFramesPlayed);
+ for (;;) {
+ uint32_t numFramesPlayed;
+ CHECK_EQ(mAudioSink->getPosition(&numFramesPlayed), (status_t)OK);
- CHECK_GE(numFramesAvailableToWrite, 0);
+ ssize_t numFramesAvailableToWrite =
+ mAudioSink->frameCount() - (mNumFramesWritten - numFramesPlayed);
- size_t numBytesAvailableToWrite =
- numFramesAvailableToWrite * mAudioSink->frameSize();
+ size_t numBytesAvailableToWrite =
+ numFramesAvailableToWrite * mAudioSink->frameSize();
+
+ if (numBytesAvailableToWrite == 0) {
+ break;
+ }
- while (numBytesAvailableToWrite > 0) {
if (mAudioQueue.empty()) {
break;
}
@@ -264,10 +267,10 @@ void NuPlayer::Renderer::onDrainAudioQueue() {
if (entry->mOffset == entry->mBuffer->size()) {
entry->mNotifyConsumed->post();
mAudioQueue.erase(mAudioQueue.begin());
+
entry = NULL;
}
- numBytesAvailableToWrite -= copy;
mNumFramesWritten += copy / mAudioSink->frameSize();
}