diff --git a/services/audio_service/server/src/audio_server.cpp b/services/audio_service/server/src/audio_server.cpp index 10085a6667ffaec6618d82731324125961200091..4bb029110935207e58553b04b8b4183698d11ac0 100644 --- a/services/audio_service/server/src/audio_server.cpp +++ b/services/audio_service/server/src/audio_server.cpp @@ -220,6 +220,22 @@ static void UpdateArmInstance(std::shared_ptr &sink, primarySink->ResetActiveDeviceForDisconnect(DEVICE_TYPE_NONE); } +static bool SetAudioSceneForFastSource(AudioScene audioScene) +{ +#ifdef SUPPORT_LOW_LATENCY + std::shared_ptr fastVoipSource = GetSourceByProp(HDI_ID_TYPE_FAST, HDI_ID_INFO_VOIP, false); + if (fastVoipSource != nullptr && fastVoipSource->IsInited()) { + fastVoipSource->SetAudioScene(audioScene); + return true; + } +#endif + std::shared_ptr fastSource = GetSourceByProp(HDI_ID_TYPE_FAST, HDI_ID_INFO_DEFAULT, false); + if (fastSource != nullptr && fastSource->IsInited()) { + fastSource->SetAudioScene(audioScene); + return true; + } + return false; +} static void SetAudioSceneForAllSource(AudioScene audioScene) { std::shared_ptr usbSource = GetSourceByProp(HDI_ID_TYPE_PRIMARY, HDI_ID_INFO_USB); @@ -234,20 +250,13 @@ static void SetAudioSceneForAllSource(AudioScene audioScene) if (primarySource != nullptr && primarySource->IsInited()) { primarySource->SetAudioScene(audioScene); } -#ifdef SUPPORT_LOW_LATENCY - std::shared_ptr fastSource = GetSourceByProp(HDI_ID_TYPE_FAST, HDI_ID_INFO_DEFAULT, true); - if (fastSource != nullptr && fastSource->IsInited()) { - fastSource->SetAudioScene(audioScene); - } - std::shared_ptr fastVoipSource = GetSourceByProp(HDI_ID_TYPE_FAST, HDI_ID_INFO_VOIP, true); - if (fastVoipSource != nullptr && fastVoipSource->IsInited()) { - fastVoipSource->SetAudioScene(audioScene); - } -#endif std::shared_ptr a2dpInSource = GetSourceByProp(HDI_ID_TYPE_BLUETOOTH); if (a2dpInSource != nullptr && a2dpInSource->IsInited()) { a2dpInSource->SetAudioScene(audioScene); } + if (SetAudioSceneForFastSource() == false) { + AUDIO_WARNING_LOG("fast source is null or not inited, need not setAudioScene for fast source"); + } } static void SetAudioSceneForAllSink(AudioScene audioScene, bool scoExcludeFlag)