Loading media/libmediaplayerservice/nuplayer/NuPlayer.cpp +16 −2 Original line number Diff line number Diff line Loading @@ -92,11 +92,11 @@ void NuPlayer::start() { } void NuPlayer::pause() { // XXX to be implemented (new AMessage(kWhatPause, id()))->post(); } void NuPlayer::resume() { // XXX to be implemented (new AMessage(kWhatResume, id()))->post(); } void NuPlayer::resetAsync() { Loading Loading @@ -430,6 +430,20 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { break; } case kWhatPause: { CHECK(mRenderer != NULL); mRenderer->pause(); break; } case kWhatResume: { CHECK(mRenderer != NULL); mRenderer->resume(); break; } default: TRESPASS(); break; Loading media/libmediaplayerservice/nuplayer/NuPlayer.h +2 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,8 @@ private: kWhatRendererNotify, kWhatReset, kWhatSeek, kWhatPause, kWhatResume, }; wp<NuPlayerDriver> mDriver; Loading media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +58 −3 Original line number Diff line number Diff line Loading @@ -42,7 +42,8 @@ NuPlayer::Renderer::Renderer( mFlushingVideo(false), mHasAudio(mAudioSink != NULL), mHasVideo(true), mSyncQueues(mHasAudio && mHasVideo) { mSyncQueues(mHasAudio && mHasVideo), mPaused(false) { } NuPlayer::Renderer::~Renderer() { Loading Loading @@ -93,6 +94,14 @@ void NuPlayer::Renderer::signalTimeDiscontinuity() { mSyncQueues = mHasAudio && mHasVideo; } void NuPlayer::Renderer::pause() { (new AMessage(kWhatPause, id()))->post(); } void NuPlayer::Renderer::resume() { (new AMessage(kWhatResume, id()))->post(); } void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { switch (msg->what()) { case kWhatDrainAudioQueue: Loading Loading @@ -151,6 +160,18 @@ void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { break; } case kWhatPause: { onPause(); break; } case kWhatResume: { onResume(); break; } default: TRESPASS(); break; Loading @@ -158,7 +179,7 @@ void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { } void NuPlayer::Renderer::postDrainAudioQueue() { if (mDrainAudioQueuePending || mSyncQueues) { if (mDrainAudioQueuePending || mSyncQueues || mPaused) { return; } Loading Loading @@ -254,7 +275,7 @@ void NuPlayer::Renderer::onDrainAudioQueue() { } void NuPlayer::Renderer::postDrainVideoQueue() { if (mDrainVideoQueuePending || mSyncQueues) { if (mDrainVideoQueuePending || mSyncQueues || mPaused) { return; } Loading Loading @@ -528,5 +549,39 @@ void NuPlayer::Renderer::notifyPosition() { notify->post(); } void NuPlayer::Renderer::onPause() { CHECK(!mPaused); mDrainAudioQueuePending = false; ++mAudioQueueGeneration; mDrainVideoQueuePending = false; ++mVideoQueueGeneration; if (mHasAudio) { mAudioSink->pause(); } mPaused = true; } void NuPlayer::Renderer::onResume() { CHECK(mPaused); if (mHasAudio) { mAudioSink->start(); } mPaused = false; if (!mAudioQueue.empty()) { postDrainAudioQueue(); } if (!mVideoQueue.empty()) { postDrainVideoQueue(); } } } // namespace android media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h +9 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,9 @@ struct NuPlayer::Renderer : public AHandler { void signalAudioSinkChanged(); void pause(); void resume(); enum { kWhatEOS, kWhatFlushComplete, Loading @@ -60,6 +63,8 @@ private: kWhatQueueEOS, kWhatFlush, kWhatAudioSinkChanged, kWhatPause, kWhatResume, }; struct QueueEntry { Loading Loading @@ -91,6 +96,8 @@ private: bool mHasVideo; bool mSyncQueues; bool mPaused; void onDrainAudioQueue(); void postDrainAudioQueue(); Loading @@ -101,6 +108,8 @@ private: void onQueueEOS(const sp<AMessage> &msg); void onFlush(const sp<AMessage> &msg); void onAudioSinkChanged(); void onPause(); void onResume(); void notifyEOS(bool audio); void notifyFlushComplete(bool audio); Loading Loading
media/libmediaplayerservice/nuplayer/NuPlayer.cpp +16 −2 Original line number Diff line number Diff line Loading @@ -92,11 +92,11 @@ void NuPlayer::start() { } void NuPlayer::pause() { // XXX to be implemented (new AMessage(kWhatPause, id()))->post(); } void NuPlayer::resume() { // XXX to be implemented (new AMessage(kWhatResume, id()))->post(); } void NuPlayer::resetAsync() { Loading Loading @@ -430,6 +430,20 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { break; } case kWhatPause: { CHECK(mRenderer != NULL); mRenderer->pause(); break; } case kWhatResume: { CHECK(mRenderer != NULL); mRenderer->resume(); break; } default: TRESPASS(); break; Loading
media/libmediaplayerservice/nuplayer/NuPlayer.h +2 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,8 @@ private: kWhatRendererNotify, kWhatReset, kWhatSeek, kWhatPause, kWhatResume, }; wp<NuPlayerDriver> mDriver; Loading
media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +58 −3 Original line number Diff line number Diff line Loading @@ -42,7 +42,8 @@ NuPlayer::Renderer::Renderer( mFlushingVideo(false), mHasAudio(mAudioSink != NULL), mHasVideo(true), mSyncQueues(mHasAudio && mHasVideo) { mSyncQueues(mHasAudio && mHasVideo), mPaused(false) { } NuPlayer::Renderer::~Renderer() { Loading Loading @@ -93,6 +94,14 @@ void NuPlayer::Renderer::signalTimeDiscontinuity() { mSyncQueues = mHasAudio && mHasVideo; } void NuPlayer::Renderer::pause() { (new AMessage(kWhatPause, id()))->post(); } void NuPlayer::Renderer::resume() { (new AMessage(kWhatResume, id()))->post(); } void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { switch (msg->what()) { case kWhatDrainAudioQueue: Loading Loading @@ -151,6 +160,18 @@ void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { break; } case kWhatPause: { onPause(); break; } case kWhatResume: { onResume(); break; } default: TRESPASS(); break; Loading @@ -158,7 +179,7 @@ void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { } void NuPlayer::Renderer::postDrainAudioQueue() { if (mDrainAudioQueuePending || mSyncQueues) { if (mDrainAudioQueuePending || mSyncQueues || mPaused) { return; } Loading Loading @@ -254,7 +275,7 @@ void NuPlayer::Renderer::onDrainAudioQueue() { } void NuPlayer::Renderer::postDrainVideoQueue() { if (mDrainVideoQueuePending || mSyncQueues) { if (mDrainVideoQueuePending || mSyncQueues || mPaused) { return; } Loading Loading @@ -528,5 +549,39 @@ void NuPlayer::Renderer::notifyPosition() { notify->post(); } void NuPlayer::Renderer::onPause() { CHECK(!mPaused); mDrainAudioQueuePending = false; ++mAudioQueueGeneration; mDrainVideoQueuePending = false; ++mVideoQueueGeneration; if (mHasAudio) { mAudioSink->pause(); } mPaused = true; } void NuPlayer::Renderer::onResume() { CHECK(mPaused); if (mHasAudio) { mAudioSink->start(); } mPaused = false; if (!mAudioQueue.empty()) { postDrainAudioQueue(); } if (!mVideoQueue.empty()) { postDrainVideoQueue(); } } } // namespace android
media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h +9 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,9 @@ struct NuPlayer::Renderer : public AHandler { void signalAudioSinkChanged(); void pause(); void resume(); enum { kWhatEOS, kWhatFlushComplete, Loading @@ -60,6 +63,8 @@ private: kWhatQueueEOS, kWhatFlush, kWhatAudioSinkChanged, kWhatPause, kWhatResume, }; struct QueueEntry { Loading Loading @@ -91,6 +96,8 @@ private: bool mHasVideo; bool mSyncQueues; bool mPaused; void onDrainAudioQueue(); void postDrainAudioQueue(); Loading @@ -101,6 +108,8 @@ private: void onQueueEOS(const sp<AMessage> &msg); void onFlush(const sp<AMessage> &msg); void onAudioSinkChanged(); void onPause(); void onResume(); void notifyEOS(bool audio); void notifyFlushComplete(bool audio); Loading