diff options
author | The Android Automerger <android-build@android.com> | 2011-08-30 13:42:46 -0700 |
---|---|---|
committer | The Android Automerger <android-build@android.com> | 2011-08-30 13:42:46 -0700 |
commit | 9641158ef2bafc1de350218e0ec902f55f664dd3 (patch) | |
tree | 00737e1c8fe6e23c35e00879b0455beb84b38976 /media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp | |
parent | 514166986238c99e32995af204160b9d58805dc6 (diff) | |
download | frameworks_av-9641158ef2bafc1de350218e0ec902f55f664dd3.zip frameworks_av-9641158ef2bafc1de350218e0ec902f55f664dd3.tar.gz frameworks_av-9641158ef2bafc1de350218e0ec902f55f664dd3.tar.bz2 |
merge in ics-release history after reset to master
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp index 35ed43f..8f213da 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp @@ -395,29 +395,40 @@ void NuPlayer::Renderer::onQueueBuffer(const sp<AMessage> &msg) { postDrainVideoQueue(); } - if (mSyncQueues && !mAudioQueue.empty() && !mVideoQueue.empty()) { - int64_t firstAudioTimeUs; - int64_t firstVideoTimeUs; - CHECK((*mAudioQueue.begin()).mBuffer->meta() - ->findInt64("timeUs", &firstAudioTimeUs)); - CHECK((*mVideoQueue.begin()).mBuffer->meta() - ->findInt64("timeUs", &firstVideoTimeUs)); + if (!mSyncQueues || mAudioQueue.empty() || mVideoQueue.empty()) { + return; + } - int64_t diff = firstVideoTimeUs - firstAudioTimeUs; + sp<ABuffer> firstAudioBuffer = (*mAudioQueue.begin()).mBuffer; + sp<ABuffer> firstVideoBuffer = (*mVideoQueue.begin()).mBuffer; - LOGV("queueDiff = %.2f secs", diff / 1E6); + if (firstAudioBuffer == NULL || firstVideoBuffer == NULL) { + // EOS signalled on either queue. + syncQueuesDone(); + return; + } - if (diff > 100000ll) { - // Audio data starts More than 0.1 secs before video. - // Drop some audio. + int64_t firstAudioTimeUs; + int64_t firstVideoTimeUs; + CHECK(firstAudioBuffer->meta() + ->findInt64("timeUs", &firstAudioTimeUs)); + CHECK(firstVideoBuffer->meta() + ->findInt64("timeUs", &firstVideoTimeUs)); - (*mAudioQueue.begin()).mNotifyConsumed->post(); - mAudioQueue.erase(mAudioQueue.begin()); - return; - } + int64_t diff = firstVideoTimeUs - firstAudioTimeUs; - syncQueuesDone(); + LOGV("queueDiff = %.2f secs", diff / 1E6); + + if (diff > 100000ll) { + // Audio data starts More than 0.1 secs before video. + // Drop some audio. + + (*mAudioQueue.begin()).mNotifyConsumed->post(); + mAudioQueue.erase(mAudioQueue.begin()); + return; } + + syncQueuesDone(); } void NuPlayer::Renderer::syncQueuesDone() { |