Loading media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +13 −3 Original line number Diff line number Diff line Loading @@ -840,7 +840,7 @@ void NuPlayer::Renderer::notifyEOSCallback() { return; } notifyEOS(true /* audio */, ERROR_END_OF_STREAM); notifyEOS_l(true /* audio */, ERROR_END_OF_STREAM); } size_t NuPlayer::Renderer::fillAudioBuffer(void *buffer, size_t size) { Loading Loading @@ -917,10 +917,10 @@ size_t NuPlayer::Renderer::fillAudioBuffer(void *buffer, size_t size) { if (mAudioSink->needsTrailingPadding()) { postEOSDelayUs = getPendingAudioPlayoutDurationUs(ALooper::GetNowUs()); } ALOGV("fillAudioBuffer: notifyEOS " ALOGV("fillAudioBuffer: notifyEOS_l " "mNumFramesWritten:%u finalResult:%d postEOSDelay:%lld", mNumFramesWritten, entry->mFinalResult, (long long)postEOSDelayUs); notifyEOS(true /* audio */, entry->mFinalResult, postEOSDelayUs); notifyEOS_l(true /* audio */, entry->mFinalResult, postEOSDelayUs); } } return sizeCopied; Loading Loading @@ -1408,6 +1408,11 @@ void NuPlayer::Renderer::notifyVideoRenderingStart() { } void NuPlayer::Renderer::notifyEOS(bool audio, status_t finalResult, int64_t delayUs) { Mutex::Autolock autoLock(mLock); notifyEOS_l(audio, finalResult, delayUs); } void NuPlayer::Renderer::notifyEOS_l(bool audio, status_t finalResult, int64_t delayUs) { if (audio && delayUs > 0) { sp<AMessage> msg = new AMessage(kWhatEOS, this); msg->setInt32("audioEOSGeneration", mAudioEOSGeneration); Loading @@ -1420,6 +1425,11 @@ void NuPlayer::Renderer::notifyEOS(bool audio, status_t finalResult, int64_t del notify->setInt32("audio", static_cast<int32_t>(audio)); notify->setInt32("finalResult", finalResult); notify->post(delayUs); if (audio) { // Video might outlive audio. Clear anchor to enable video only case. mAnchorTimeMediaUs = -1; } } void NuPlayer::Renderer::notifyAudioTearDown(AudioTearDownReason reason) { Loading media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h +1 −0 Original line number Diff line number Diff line Loading @@ -275,6 +275,7 @@ private: void onChangeAudioFormat(const sp<AMessage> &meta, const sp<AMessage> ¬ify); void notifyEOS(bool audio, status_t finalResult, int64_t delayUs = 0); void notifyEOS_l(bool audio, status_t finalResult, int64_t delayUs = 0); void notifyFlushComplete(bool audio); void notifyPosition(); void notifyVideoLateBy(int64_t lateByUs); Loading Loading
media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +13 −3 Original line number Diff line number Diff line Loading @@ -840,7 +840,7 @@ void NuPlayer::Renderer::notifyEOSCallback() { return; } notifyEOS(true /* audio */, ERROR_END_OF_STREAM); notifyEOS_l(true /* audio */, ERROR_END_OF_STREAM); } size_t NuPlayer::Renderer::fillAudioBuffer(void *buffer, size_t size) { Loading Loading @@ -917,10 +917,10 @@ size_t NuPlayer::Renderer::fillAudioBuffer(void *buffer, size_t size) { if (mAudioSink->needsTrailingPadding()) { postEOSDelayUs = getPendingAudioPlayoutDurationUs(ALooper::GetNowUs()); } ALOGV("fillAudioBuffer: notifyEOS " ALOGV("fillAudioBuffer: notifyEOS_l " "mNumFramesWritten:%u finalResult:%d postEOSDelay:%lld", mNumFramesWritten, entry->mFinalResult, (long long)postEOSDelayUs); notifyEOS(true /* audio */, entry->mFinalResult, postEOSDelayUs); notifyEOS_l(true /* audio */, entry->mFinalResult, postEOSDelayUs); } } return sizeCopied; Loading Loading @@ -1408,6 +1408,11 @@ void NuPlayer::Renderer::notifyVideoRenderingStart() { } void NuPlayer::Renderer::notifyEOS(bool audio, status_t finalResult, int64_t delayUs) { Mutex::Autolock autoLock(mLock); notifyEOS_l(audio, finalResult, delayUs); } void NuPlayer::Renderer::notifyEOS_l(bool audio, status_t finalResult, int64_t delayUs) { if (audio && delayUs > 0) { sp<AMessage> msg = new AMessage(kWhatEOS, this); msg->setInt32("audioEOSGeneration", mAudioEOSGeneration); Loading @@ -1420,6 +1425,11 @@ void NuPlayer::Renderer::notifyEOS(bool audio, status_t finalResult, int64_t del notify->setInt32("audio", static_cast<int32_t>(audio)); notify->setInt32("finalResult", finalResult); notify->post(delayUs); if (audio) { // Video might outlive audio. Clear anchor to enable video only case. mAnchorTimeMediaUs = -1; } } void NuPlayer::Renderer::notifyAudioTearDown(AudioTearDownReason reason) { Loading
media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h +1 −0 Original line number Diff line number Diff line Loading @@ -275,6 +275,7 @@ private: void onChangeAudioFormat(const sp<AMessage> &meta, const sp<AMessage> ¬ify); void notifyEOS(bool audio, status_t finalResult, int64_t delayUs = 0); void notifyEOS_l(bool audio, status_t finalResult, int64_t delayUs = 0); void notifyFlushComplete(bool audio); void notifyPosition(); void notifyVideoLateBy(int64_t lateByUs); Loading