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
commit0511969950188634f4212fcf63680c43207baedd (patch)
tree79c5aa1f2d5ccd38c5944bc7a60815025770ccb9 /media/libmediaplayerservice
parentc8a8472a0205dd698c8d81bf7e09026ca1013d1e (diff)
parent9b7d950f1f3b0c526712b713dbceb0e22762c015 (diff)
downloadframeworks_av-0511969950188634f4212fcf63680c43207baedd.zip
frameworks_av-0511969950188634f4212fcf63680c43207baedd.tar.gz
frameworks_av-0511969950188634f4212fcf63680c43207baedd.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();
}