From 89b36570d861547f5d0dae5577b7ebd79e8d48bb Mon Sep 17 00:00:00 2001 From: dongyu_dy Date: Wed, 17 Jul 2024 03:17:46 +0000 Subject: [PATCH 1/2] optimize audio eos state change Signed-off-by: dongyu_dy --- .../media_engine/modules/sink/audio_sink.cpp | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/services/media_engine/modules/sink/audio_sink.cpp b/services/media_engine/modules/sink/audio_sink.cpp index 54ca8059c..78790536e 100644 --- a/services/media_engine/modules/sink/audio_sink.cpp +++ b/services/media_engine/modules/sink/audio_sink.cpp @@ -181,7 +181,11 @@ Status AudioSink::PauseSub() if (ret != Status::OK) { return ret; } - state_ = Pipeline::FilterState::PAUSED; + state_ = Pipeline::FilterState::PAUSED; + AutoLock lock(eosMutex_); + if (eosInterruptType_ == EosInterruptState::INITIAL || eosInterruptType_ == EosInterruptState::RESUME) { + eosInterruptType_ = EosInterruptState::PAUSE; + } return ret; } @@ -201,10 +205,6 @@ Status AudioSink::Pause() } else { ret = PauseSub(); } - AutoLock lock(eosMutex_); - if (eosInterruptType_ == EosInterruptState::INITIAL || eosInterruptType_ == EosInterruptState::RESUME) { - eosInterruptType_ = EosInterruptState::PAUSE; - } return ret; } @@ -244,14 +244,18 @@ Status AudioSink::Flush() seekCompleted_.store(true); MEDIA_LOG_I("AudioSink Flush Job end, notify completed"); } + { + AutoLock lock(eosMutex_); + eosInterruptType_ = EosInterruptState::NONE; + } seekCondition_.NotifyAll(); }); } else { ret = plugin_->Flush(); - } - { - AutoLock lock(eosMutex_); - eosInterruptType_ = EosInterruptState::NONE; + { + AutoLock lock(eosMutex_); + eosInterruptType_ = EosInterruptState::NONE; + } } return ret; } -- Gitee From 6bc46e0f2a2e6fbb9abcd6b46dd630597bca38a9 Mon Sep 17 00:00:00 2001 From: dongyu_dy Date: Wed, 17 Jul 2024 03:19:16 +0000 Subject: [PATCH 2/2] update services/media_engine/modules/sink/audio_sink.cpp. Signed-off-by: dongyu_dy --- services/media_engine/modules/sink/audio_sink.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/media_engine/modules/sink/audio_sink.cpp b/services/media_engine/modules/sink/audio_sink.cpp index 78790536e..99e443912 100644 --- a/services/media_engine/modules/sink/audio_sink.cpp +++ b/services/media_engine/modules/sink/audio_sink.cpp @@ -181,7 +181,7 @@ Status AudioSink::PauseSub() if (ret != Status::OK) { return ret; } - state_ = Pipeline::FilterState::PAUSED; + state_ = Pipeline::FilterState::PAUSED; AutoLock lock(eosMutex_); if (eosInterruptType_ == EosInterruptState::INITIAL || eosInterruptType_ == EosInterruptState::RESUME) { eosInterruptType_ = EosInterruptState::PAUSE; -- Gitee