Loading media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +22 −1 Original line number Diff line number Diff line Loading @@ -141,6 +141,17 @@ NuPlayer::Renderer::~Renderer() { mAudioSink->flush(); mAudioSink->close(); } // Try to avoid racing condition in case callback is still on. Mutex::Autolock autoLock(mLock); mUseAudioCallback = false; flushQueue(&mAudioQueue); flushQueue(&mVideoQueue); mWakeLock.clear(); mMediaClock.clear(); mVideoScheduler.clear(); mNotify.clear(); mAudioSink.clear(); } void NuPlayer::Renderer::queueBuffer( Loading Loading @@ -744,7 +755,7 @@ size_t NuPlayer::Renderer::AudioSinkCallback( case MediaPlayerBase::AudioSink::CB_EVENT_STREAM_END: { ALOGV("AudioSink::CB_EVENT_STREAM_END"); me->notifyEOS(true /* audio */, ERROR_END_OF_STREAM); me->notifyEOSCallback(); break; } Loading @@ -759,6 +770,16 @@ size_t NuPlayer::Renderer::AudioSinkCallback( return 0; } void NuPlayer::Renderer::notifyEOSCallback() { Mutex::Autolock autoLock(mLock); if (!mUseAudioCallback) { return; } notifyEOS(true /* audio */, ERROR_END_OF_STREAM); } size_t NuPlayer::Renderer::fillAudioBuffer(void *buffer, size_t size) { Mutex::Autolock autoLock(mLock); Loading media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h +1 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,7 @@ private: status_t getCurrentPositionFromAnchor( int64_t *mediaUs, int64_t nowUs, bool allowPastQueuedVideo = false); void notifyEOSCallback(); size_t fillAudioBuffer(void *buffer, size_t size); bool onDrainAudioQueue(); Loading Loading
media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +22 −1 Original line number Diff line number Diff line Loading @@ -141,6 +141,17 @@ NuPlayer::Renderer::~Renderer() { mAudioSink->flush(); mAudioSink->close(); } // Try to avoid racing condition in case callback is still on. Mutex::Autolock autoLock(mLock); mUseAudioCallback = false; flushQueue(&mAudioQueue); flushQueue(&mVideoQueue); mWakeLock.clear(); mMediaClock.clear(); mVideoScheduler.clear(); mNotify.clear(); mAudioSink.clear(); } void NuPlayer::Renderer::queueBuffer( Loading Loading @@ -744,7 +755,7 @@ size_t NuPlayer::Renderer::AudioSinkCallback( case MediaPlayerBase::AudioSink::CB_EVENT_STREAM_END: { ALOGV("AudioSink::CB_EVENT_STREAM_END"); me->notifyEOS(true /* audio */, ERROR_END_OF_STREAM); me->notifyEOSCallback(); break; } Loading @@ -759,6 +770,16 @@ size_t NuPlayer::Renderer::AudioSinkCallback( return 0; } void NuPlayer::Renderer::notifyEOSCallback() { Mutex::Autolock autoLock(mLock); if (!mUseAudioCallback) { return; } notifyEOS(true /* audio */, ERROR_END_OF_STREAM); } size_t NuPlayer::Renderer::fillAudioBuffer(void *buffer, size_t size) { Mutex::Autolock autoLock(mLock); Loading
media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h +1 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,7 @@ private: status_t getCurrentPositionFromAnchor( int64_t *mediaUs, int64_t nowUs, bool allowPastQueuedVideo = false); void notifyEOSCallback(); size_t fillAudioBuffer(void *buffer, size_t size); bool onDrainAudioQueue(); Loading