Squashed commit of the following:
commit 63be8ceb8b2354fb997a277c0092abae015ecf10
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 17 13:45:34 2010 -0800
Enable handling of discontinuities that involve potential format changes.
Change-Id: I21848a113db8764abb54bdcf302b0923253eaf4d
commit d18a7f80ec09af382026809263dcbbfa9e7a9ec8
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 17 13:45:01 2010 -0800
Signal whether or not a format change occured as part of the discontinuity.
Change-Id: I06e64f542f4369549c9cebbb892dc612346ae43d
commit c400adbd5fdbd65cfef7aed9ec65bcaace4bb69b
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 17 13:44:46 2010 -0800
A little more instrumentation of ACodec
Change-Id: I07f4aeccbbd15cdd9f80f48c3f92ee984ef6d92b
commit 1d802ee01f47b3cdc5b89502cec7fbb595e197a3
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 17 13:43:58 2010 -0800
Only sync audio/video queues if both types of media are actually present.
Change-Id: Ic88edf9bb1ebd4034c08747cce9877a4e28e0d35
commit e402da39d9a4d8b75653a78f728e20a3ef0fb497
Author: Andreas Huber <andih@google.com>
Date: Fri Dec 17 13:42:24 2010 -0800
Disable the random seek for now.
Change-Id: Iddd597b546e2f229e88214f9bdd6452bb188105e
Change-Id: I27c4d9ba916080be94ce6117dbb095e9022ed62b
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index 855bc0a..57a652c 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -39,7 +39,9 @@
mAnchorTimeRealUs(-1),
mFlushingAudio(false),
mFlushingVideo(false),
- mSyncQueues(true) {
+ mHasAudio(mAudioSink != NULL),
+ mHasVideo(true),
+ mSyncQueues(mHasAudio && mHasVideo) {
}
NuPlayer::Renderer::~Renderer() {
@@ -87,7 +89,7 @@
CHECK(mVideoQueue.empty());
mAnchorTimeMediaUs = -1;
mAnchorTimeRealUs = -1;
- mSyncQueues = true;
+ mSyncQueues = mHasAudio && mHasVideo;
}
void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) {
@@ -142,6 +144,12 @@
break;
}
+ case kWhatAudioSinkChanged:
+ {
+ onAudioSinkChanged();
+ break;
+ }
+
default:
TRESPASS();
break;
@@ -163,6 +171,10 @@
msg->post(10000);
}
+void NuPlayer::Renderer::signalAudioSinkChanged() {
+ (new AMessage(kWhatAudioSinkChanged, id()))->post();
+}
+
void NuPlayer::Renderer::onDrainAudioQueue() {
uint32_t numFramesPlayed;
CHECK_EQ(mAudioSink->getPosition(&numFramesPlayed), (status_t)OK);
@@ -264,7 +276,7 @@
if (mAnchorTimeMediaUs < 0) {
delayUs = 0;
- if (mAudioSink == NULL) {
+ if (!mHasAudio) {
mAnchorTimeMediaUs = mediaTimeUs;
mAnchorTimeRealUs = ALooper::GetNowUs();
}
@@ -492,5 +504,10 @@
return true;
}
+void NuPlayer::Renderer::onAudioSinkChanged() {
+ CHECK(!mDrainAudioQueuePending);
+ mNumFramesWritten = 0;
+}
+
} // namespace android