diff --git a/services/engine/codec/audio/audio_codec_worker.cpp b/services/engine/codec/audio/audio_codec_worker.cpp index d07cbc65371c2216245525d26e968df88cce9889..3016bc5fdb5f9bf3b3163dd49f5516cdfa7e3eb5 100644 --- a/services/engine/codec/audio/audio_codec_worker.cpp +++ b/services/engine/codec/audio/audio_codec_worker.cpp @@ -355,8 +355,10 @@ void AudioCodecWorker::ConsumerOutputBuffer() } AVCODEC_LOGD_LIMIT(LOGD_FREQUENCY, "Work %{public}s consumerOutputBuffer callback_ index:%{public}u", name_.data(), index); + lock.unlock(); callback_->OnOutputBufferAvailable(index, outBuffer->GetBufferAttr(), outBuffer->GetFlag(), outBuffer->GetBuffer()); + lock.lock(); } } outputCondition_.wait_for(lock, std::chrono::milliseconds(TIMEOUT_MS),