Loading media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.cpp +13 −3 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ namespace android { namespace android { static const int kMaxPendingBuffers = 10; static const int kMaxPendingBuffers = 10; static const int kMaxCachedBytes = 200000; NuPlayer::DecoderPassThrough::DecoderPassThrough( NuPlayer::DecoderPassThrough::DecoderPassThrough( const sp<AMessage> ¬ify) const sp<AMessage> ¬ify) Loading @@ -39,6 +40,7 @@ NuPlayer::DecoderPassThrough::DecoderPassThrough( mBufferGeneration(0), mBufferGeneration(0), mReachedEOS(true), mReachedEOS(true), mPendingBuffers(0), mPendingBuffers(0), mCachedBytes(0), mComponentName("pass through decoder") { mComponentName("pass through decoder") { mDecoderLooper = new ALooper; mDecoderLooper = new ALooper; mDecoderLooper->setName("NuPlayerDecoderPassThrough"); mDecoderLooper->setName("NuPlayerDecoderPassThrough"); Loading Loading @@ -78,6 +80,7 @@ bool NuPlayer::DecoderPassThrough::supportsSeamlessFormatChange( void NuPlayer::DecoderPassThrough::onConfigure(const sp<AMessage> &format) { void NuPlayer::DecoderPassThrough::onConfigure(const sp<AMessage> &format) { ALOGV("[%s] onConfigure", mComponentName.c_str()); ALOGV("[%s] onConfigure", mComponentName.c_str()); mPendingBuffers = 0; mPendingBuffers = 0; mCachedBytes = 0; mReachedEOS = false; mReachedEOS = false; ++mBufferGeneration; ++mBufferGeneration; Loading @@ -96,7 +99,7 @@ bool NuPlayer::DecoderPassThrough::isStaleReply(const sp<AMessage> &msg) { } } void NuPlayer::DecoderPassThrough::requestABuffer() { void NuPlayer::DecoderPassThrough::requestABuffer() { if (mPendingBuffers >= kMaxPendingBuffers || mReachedEOS) { if (mCachedBytes >= kMaxCachedBytes || mReachedEOS) { ALOGV("[%s] mReachedEOS=%d, max pending buffers(%d:%d)", ALOGV("[%s] mReachedEOS=%d, max pending buffers(%d:%d)", mComponentName.c_str(), (mReachedEOS ? 1 : 0), mComponentName.c_str(), (mReachedEOS ? 1 : 0), mPendingBuffers, kMaxPendingBuffers); mPendingBuffers, kMaxPendingBuffers); Loading Loading @@ -136,8 +139,11 @@ void android::NuPlayer::DecoderPassThrough::onInputBufferFilled( return; return; } } mCachedBytes += buffer->size(); sp<AMessage> reply = new AMessage(kWhatBufferConsumed, id()); sp<AMessage> reply = new AMessage(kWhatBufferConsumed, id()); reply->setInt32("generation", mBufferGeneration); reply->setInt32("generation", mBufferGeneration); reply->setInt32("size", buffer->size()); sp<AMessage> notify = mNotify->dup(); sp<AMessage> notify = mNotify->dup(); notify->setInt32("what", kWhatDrainThisBuffer); notify->setInt32("what", kWhatDrainThisBuffer); Loading @@ -146,8 +152,9 @@ void android::NuPlayer::DecoderPassThrough::onInputBufferFilled( notify->post(); notify->post(); } } void NuPlayer::DecoderPassThrough::onBufferConsumed() { void NuPlayer::DecoderPassThrough::onBufferConsumed(int32_t size) { mPendingBuffers--; mPendingBuffers--; mCachedBytes -= size; sp<AMessage> message = new AMessage(kWhatRequestABuffer, id()); sp<AMessage> message = new AMessage(kWhatRequestABuffer, id()); message->setInt32("generation", mBufferGeneration); message->setInt32("generation", mBufferGeneration); message->post(); message->post(); Loading @@ -160,6 +167,7 @@ void NuPlayer::DecoderPassThrough::onFlush() { notify->setInt32("what", kWhatFlushCompleted); notify->setInt32("what", kWhatFlushCompleted); notify->post(); notify->post(); mPendingBuffers = 0; mPendingBuffers = 0; mCachedBytes = 0; mReachedEOS = false; mReachedEOS = false; } } Loading Loading @@ -205,7 +213,9 @@ void NuPlayer::DecoderPassThrough::onMessageReceived(const sp<AMessage> &msg) { case kWhatBufferConsumed: case kWhatBufferConsumed: { { if (!isStaleReply(msg)) { if (!isStaleReply(msg)) { onBufferConsumed(); int32_t size; CHECK(msg->findInt32("size", &size)); onBufferConsumed(size); } } break; break; } } Loading media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.h +2 −1 Original line number Original line Diff line number Diff line Loading @@ -61,12 +61,13 @@ private: void onConfigure(const sp<AMessage> &format); void onConfigure(const sp<AMessage> &format); void onFlush(); void onFlush(); void onInputBufferFilled(const sp<AMessage> &msg); void onInputBufferFilled(const sp<AMessage> &msg); void onBufferConsumed(); void onBufferConsumed(int32_t size); void onShutdown(); void onShutdown(); int32_t mBufferGeneration; int32_t mBufferGeneration; bool mReachedEOS; bool mReachedEOS; int32_t mPendingBuffers; int32_t mPendingBuffers; int32_t mCachedBytes; AString mComponentName; AString mComponentName; DISALLOW_EVIL_CONSTRUCTORS(DecoderPassThrough); DISALLOW_EVIL_CONSTRUCTORS(DecoderPassThrough); Loading Loading
media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.cpp +13 −3 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ namespace android { namespace android { static const int kMaxPendingBuffers = 10; static const int kMaxPendingBuffers = 10; static const int kMaxCachedBytes = 200000; NuPlayer::DecoderPassThrough::DecoderPassThrough( NuPlayer::DecoderPassThrough::DecoderPassThrough( const sp<AMessage> ¬ify) const sp<AMessage> ¬ify) Loading @@ -39,6 +40,7 @@ NuPlayer::DecoderPassThrough::DecoderPassThrough( mBufferGeneration(0), mBufferGeneration(0), mReachedEOS(true), mReachedEOS(true), mPendingBuffers(0), mPendingBuffers(0), mCachedBytes(0), mComponentName("pass through decoder") { mComponentName("pass through decoder") { mDecoderLooper = new ALooper; mDecoderLooper = new ALooper; mDecoderLooper->setName("NuPlayerDecoderPassThrough"); mDecoderLooper->setName("NuPlayerDecoderPassThrough"); Loading Loading @@ -78,6 +80,7 @@ bool NuPlayer::DecoderPassThrough::supportsSeamlessFormatChange( void NuPlayer::DecoderPassThrough::onConfigure(const sp<AMessage> &format) { void NuPlayer::DecoderPassThrough::onConfigure(const sp<AMessage> &format) { ALOGV("[%s] onConfigure", mComponentName.c_str()); ALOGV("[%s] onConfigure", mComponentName.c_str()); mPendingBuffers = 0; mPendingBuffers = 0; mCachedBytes = 0; mReachedEOS = false; mReachedEOS = false; ++mBufferGeneration; ++mBufferGeneration; Loading @@ -96,7 +99,7 @@ bool NuPlayer::DecoderPassThrough::isStaleReply(const sp<AMessage> &msg) { } } void NuPlayer::DecoderPassThrough::requestABuffer() { void NuPlayer::DecoderPassThrough::requestABuffer() { if (mPendingBuffers >= kMaxPendingBuffers || mReachedEOS) { if (mCachedBytes >= kMaxCachedBytes || mReachedEOS) { ALOGV("[%s] mReachedEOS=%d, max pending buffers(%d:%d)", ALOGV("[%s] mReachedEOS=%d, max pending buffers(%d:%d)", mComponentName.c_str(), (mReachedEOS ? 1 : 0), mComponentName.c_str(), (mReachedEOS ? 1 : 0), mPendingBuffers, kMaxPendingBuffers); mPendingBuffers, kMaxPendingBuffers); Loading Loading @@ -136,8 +139,11 @@ void android::NuPlayer::DecoderPassThrough::onInputBufferFilled( return; return; } } mCachedBytes += buffer->size(); sp<AMessage> reply = new AMessage(kWhatBufferConsumed, id()); sp<AMessage> reply = new AMessage(kWhatBufferConsumed, id()); reply->setInt32("generation", mBufferGeneration); reply->setInt32("generation", mBufferGeneration); reply->setInt32("size", buffer->size()); sp<AMessage> notify = mNotify->dup(); sp<AMessage> notify = mNotify->dup(); notify->setInt32("what", kWhatDrainThisBuffer); notify->setInt32("what", kWhatDrainThisBuffer); Loading @@ -146,8 +152,9 @@ void android::NuPlayer::DecoderPassThrough::onInputBufferFilled( notify->post(); notify->post(); } } void NuPlayer::DecoderPassThrough::onBufferConsumed() { void NuPlayer::DecoderPassThrough::onBufferConsumed(int32_t size) { mPendingBuffers--; mPendingBuffers--; mCachedBytes -= size; sp<AMessage> message = new AMessage(kWhatRequestABuffer, id()); sp<AMessage> message = new AMessage(kWhatRequestABuffer, id()); message->setInt32("generation", mBufferGeneration); message->setInt32("generation", mBufferGeneration); message->post(); message->post(); Loading @@ -160,6 +167,7 @@ void NuPlayer::DecoderPassThrough::onFlush() { notify->setInt32("what", kWhatFlushCompleted); notify->setInt32("what", kWhatFlushCompleted); notify->post(); notify->post(); mPendingBuffers = 0; mPendingBuffers = 0; mCachedBytes = 0; mReachedEOS = false; mReachedEOS = false; } } Loading Loading @@ -205,7 +213,9 @@ void NuPlayer::DecoderPassThrough::onMessageReceived(const sp<AMessage> &msg) { case kWhatBufferConsumed: case kWhatBufferConsumed: { { if (!isStaleReply(msg)) { if (!isStaleReply(msg)) { onBufferConsumed(); int32_t size; CHECK(msg->findInt32("size", &size)); onBufferConsumed(size); } } break; break; } } Loading
media/libmediaplayerservice/nuplayer/NuPlayerDecoderPassThrough.h +2 −1 Original line number Original line Diff line number Diff line Loading @@ -61,12 +61,13 @@ private: void onConfigure(const sp<AMessage> &format); void onConfigure(const sp<AMessage> &format); void onFlush(); void onFlush(); void onInputBufferFilled(const sp<AMessage> &msg); void onInputBufferFilled(const sp<AMessage> &msg); void onBufferConsumed(); void onBufferConsumed(int32_t size); void onShutdown(); void onShutdown(); int32_t mBufferGeneration; int32_t mBufferGeneration; bool mReachedEOS; bool mReachedEOS; int32_t mPendingBuffers; int32_t mPendingBuffers; int32_t mCachedBytes; AString mComponentName; AString mComponentName; DISALLOW_EVIL_CONSTRUCTORS(DecoderPassThrough); DISALLOW_EVIL_CONSTRUCTORS(DecoderPassThrough); Loading