Loading media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.cpp +12 −5 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ NuPlayer::DecoderPassThrough::DecoderPassThrough( mSource(source), mRenderer(renderer), mSkipRenderingUntilMediaTimeUs(-1ll), mPaused(false), mBufferGeneration(0), mReachedEOS(true), mPendingAudioErr(OK), Loading Loading @@ -105,16 +106,16 @@ bool NuPlayer::DecoderPassThrough::isStaleReply(const sp<AMessage> &msg) { return generation != mBufferGeneration; } bool NuPlayer::DecoderPassThrough::isCacheFullOrEOS() const { ALOGV("[%s] mCachedBytes = %zu, mReachedEOS = %d", mComponentName.c_str(), mCachedBytes, mReachedEOS); bool NuPlayer::DecoderPassThrough::isDoneFetching() const { ALOGV("[%s] mCachedBytes = %zu, mReachedEOS = %d mPaused = %d", mComponentName.c_str(), mCachedBytes, mReachedEOS, mPaused); return mCachedBytes >= kMaxCachedBytes || mReachedEOS; return mCachedBytes >= kMaxCachedBytes || mReachedEOS || mPaused; } void NuPlayer::DecoderPassThrough::doRequestBuffers() { status_t err = OK; while (!isCacheFullOrEOS()) { while (!isDoneFetching()) { sp<AMessage> msg = new AMessage(); err = fetchInputData(msg); Loading Loading @@ -355,6 +356,8 @@ void NuPlayer::DecoderPassThrough::onBufferConsumed(int32_t size) { } void NuPlayer::DecoderPassThrough::onResume(bool notifyComplete) { mPaused = false; onRequestInputBuffers(); if (notifyComplete) { Loading @@ -367,6 +370,9 @@ void NuPlayer::DecoderPassThrough::onResume(bool notifyComplete) { void NuPlayer::DecoderPassThrough::onFlush(bool notifyComplete) { ++mBufferGeneration; mSkipRenderingUntilMediaTimeUs = -1; mPendingAudioAccessUnit.clear(); mPendingAudioErr = OK; mAggregateBuffer.clear(); if (mRenderer != NULL) { mRenderer->flush(true /* audio */, notifyComplete); Loading @@ -374,6 +380,7 @@ void NuPlayer::DecoderPassThrough::onFlush(bool notifyComplete) { } if (notifyComplete) { mPaused = true; sp<AMessage> notify = mNotify->dup(); notify->setInt32("what", kWhatFlushCompleted); notify->post(); Loading media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.h +2 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ private: sp<Source> mSource; sp<Renderer> mRenderer; int64_t mSkipRenderingUntilMediaTimeUs; bool mPaused; int32_t mBufferGeneration; bool mReachedEOS; Loading @@ -73,7 +74,7 @@ private: AString mComponentName; bool isStaleReply(const sp<AMessage> &msg); bool isCacheFullOrEOS() const; bool isDoneFetching() const; status_t dequeueAccessUnit(sp<ABuffer> *accessUnit); sp<ABuffer> aggregateBuffer(const sp<ABuffer> &accessUnit); Loading Loading
media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.cpp +12 −5 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ NuPlayer::DecoderPassThrough::DecoderPassThrough( mSource(source), mRenderer(renderer), mSkipRenderingUntilMediaTimeUs(-1ll), mPaused(false), mBufferGeneration(0), mReachedEOS(true), mPendingAudioErr(OK), Loading Loading @@ -105,16 +106,16 @@ bool NuPlayer::DecoderPassThrough::isStaleReply(const sp<AMessage> &msg) { return generation != mBufferGeneration; } bool NuPlayer::DecoderPassThrough::isCacheFullOrEOS() const { ALOGV("[%s] mCachedBytes = %zu, mReachedEOS = %d", mComponentName.c_str(), mCachedBytes, mReachedEOS); bool NuPlayer::DecoderPassThrough::isDoneFetching() const { ALOGV("[%s] mCachedBytes = %zu, mReachedEOS = %d mPaused = %d", mComponentName.c_str(), mCachedBytes, mReachedEOS, mPaused); return mCachedBytes >= kMaxCachedBytes || mReachedEOS; return mCachedBytes >= kMaxCachedBytes || mReachedEOS || mPaused; } void NuPlayer::DecoderPassThrough::doRequestBuffers() { status_t err = OK; while (!isCacheFullOrEOS()) { while (!isDoneFetching()) { sp<AMessage> msg = new AMessage(); err = fetchInputData(msg); Loading Loading @@ -355,6 +356,8 @@ void NuPlayer::DecoderPassThrough::onBufferConsumed(int32_t size) { } void NuPlayer::DecoderPassThrough::onResume(bool notifyComplete) { mPaused = false; onRequestInputBuffers(); if (notifyComplete) { Loading @@ -367,6 +370,9 @@ void NuPlayer::DecoderPassThrough::onResume(bool notifyComplete) { void NuPlayer::DecoderPassThrough::onFlush(bool notifyComplete) { ++mBufferGeneration; mSkipRenderingUntilMediaTimeUs = -1; mPendingAudioAccessUnit.clear(); mPendingAudioErr = OK; mAggregateBuffer.clear(); if (mRenderer != NULL) { mRenderer->flush(true /* audio */, notifyComplete); Loading @@ -374,6 +380,7 @@ void NuPlayer::DecoderPassThrough::onFlush(bool notifyComplete) { } if (notifyComplete) { mPaused = true; sp<AMessage> notify = mNotify->dup(); notify->setInt32("what", kWhatFlushCompleted); notify->post(); Loading
media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.h +2 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ private: sp<Source> mSource; sp<Renderer> mRenderer; int64_t mSkipRenderingUntilMediaTimeUs; bool mPaused; int32_t mBufferGeneration; bool mReachedEOS; Loading @@ -73,7 +74,7 @@ private: AString mComponentName; bool isStaleReply(const sp<AMessage> &msg); bool isCacheFullOrEOS() const; bool isDoneFetching() const; status_t dequeueAccessUnit(sp<ABuffer> *accessUnit); sp<ABuffer> aggregateBuffer(const sp<ABuffer> &accessUnit); Loading