From 95512af5dff1f91d0a8b234cc9d60179fed24079 Mon Sep 17 00:00:00 2001 From: FileStream Date: Mon, 27 May 2024 13:51:33 +0000 Subject: [PATCH] =?UTF-8?q?=E7=9F=AD=E9=9F=B3=E6=92=AD=E6=94=BE=E4=B8=8D?= =?UTF-8?q?=E8=B5=B0offload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: FileStream --- frameworks/native/soundpool/cache_buffer.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/frameworks/native/soundpool/cache_buffer.cpp b/frameworks/native/soundpool/cache_buffer.cpp index f5d38b43a..7c1f022b7 100644 --- a/frameworks/native/soundpool/cache_buffer.cpp +++ b/frameworks/native/soundpool/cache_buffer.cpp @@ -84,8 +84,15 @@ std::unique_ptr CacheBuffer::CreateAudioRenderer(c } CHECK_AND_RETURN_RET_LOG(audioRenderer != nullptr, nullptr, "Invalid audioRenderer."); + size_t targetSize = 0; + int32_t ret = audioRenderer_->GetBufferSize(targetSize); audioRenderer->SetRenderMode(AudioStandard::AudioRenderMode::RENDER_MODE_CALLBACK); - int32_t ret = audioRenderer->SetRendererWriteCallback(shared_from_this()); + if (ret == 0 && targetSize != 0 && !audioRenderer_->IsFastRenderer()) { + size_t bufferDuration = 20; // 20 -> 20ms + audioRenderer_->SetBufferDuration(bufferDuration); + MEDIA_LOGI("Using buffer size:%{public}zu, duration %{public}zu", targetSize, bufferDuration); + } + ret = audioRenderer->SetRendererWriteCallback(shared_from_this()); if (ret != MSERR_OK) { MEDIA_LOGE("audio renderer write callback fail, ret %{public}d.", ret); } @@ -183,6 +190,7 @@ int32_t CacheBuffer::DealPlayParamsBeforePlay(const int32_t streamID, const Play { std::lock_guard lock(cacheBufferLock_); CHECK_AND_RETURN_RET_LOG(audioRenderer_ != nullptr, MSERR_INVALID_VAL, "Invalid audioRenderer."); + audioRenderer_->SetOffloadAllowed(false); loop_ = playParams.loop; audioRenderer_->SetRenderRate(CheckAndAlignRendererRate(playParams.rate)); audioRenderer_->SetVolume(playParams.leftVolume); -- Gitee