From 4897a638d41f4a9ececedf675ff5d37ea63072cc Mon Sep 17 00:00:00 2001 From: sunshinglight Date: Thu, 17 Jul 2025 02:23:59 +0000 Subject: [PATCH 1/3] fix a2dpin Signed-off-by: sunshinglight Change-Id: I1ccc0535292207b84e783e493188ff7784eb5db7 Signed-off-by: sunshinglight --- .../service_main/include/audio_core_service.h | 1 + .../src/audio_core_service_private.cpp | 65 ++++++++++++++++++- .../audio_core_service_private_unit_test.cpp | 28 ++++++++ 3 files changed, 92 insertions(+), 2 deletions(-) diff --git a/services/audio_policy/server/service/service_main/include/audio_core_service.h b/services/audio_policy/server/service/service_main/include/audio_core_service.h index 480c9a6a94..ef66a47ac6 100644 --- a/services/audio_policy/server/service/service_main/include/audio_core_service.h +++ b/services/audio_policy/server/service/service_main/include/audio_core_service.h @@ -288,6 +288,7 @@ private: int32_t SwitchActiveA2dpDevice(std::shared_ptr deviceDescriptor); int32_t ActivateNearlinkDevice(const std::shared_ptr &streamDesc, const AudioStreamDeviceChangeReasonExt reason = AudioStreamDeviceChangeReasonExt::ExtEnum::UNKNOWN); + int32_t OpenA2dpInAudioPort(std::shared_ptr pipeInfo); int32_t LoadA2dpModule(DeviceType deviceType, const AudioStreamInfo &audioStreamInfo, std::string networkId, std::string sinkName, SourceType sourceType); int32_t ReloadA2dpAudioPort(AudioModuleInfo &moduleInfo, DeviceType deviceType, diff --git a/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp b/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp index a12079788f..93479c3fbd 100644 --- a/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp +++ b/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp @@ -1599,12 +1599,22 @@ uint32_t AudioCoreService::OpenNewAudioPortAndRoute(std::shared_ptrstreamDescriptors_.size() > 0 && pipeInfo->streamDescriptors_.front() != nullptr, OPEN_PORT_FAILURE, "pipeInfo is invalid"); + CHECK_AND_RETURN_RET_LOG(pipeInfo->streamDescriptors_.front()->newDeviceDescs_.size() > 0 && + pipeInfo->streamDescriptors_.front()->newDeviceDescs_[0] != nullptr, OPEN_PORT_FAILURE, "invalid streamDesc"); if (pipeInfo->streamDescriptors_.front()->newDeviceDescs_.front()->deviceType_ == DEVICE_TYPE_REMOTE_CAST) { AUDIO_INFO_LOG("[PipeExecInfo] remote cast device do not need open pipe"); id = pipeInfo->streamDescriptors_.front()->sessionId_; } else { - HandleCommonSourceOpened(pipeInfo); - id = audioPolicyManager_.OpenAudioPort(pipeInfo, paIndex); + if (pipeInfo->moduleInfo_.name == BLUETOOTH_MIC && + pipeInfo->streamDescriptors_.front()->newDeviceDescs_[0]->deviceType_ == DEVICE_TYPE_BLUETOOTH_A2DP_IN) { + int32_t result = OpenA2dpInAudioPort(pipeInfo); + CHECK_AND_RETURN_RET_LOG(result == SUCCESS, ERR_OPERATION_FAILED, + "LoadA2dpModule failed %{public}d", result); + id = pipeInfo->id_; + } else { + HandleCommonSourceOpened(pipeInfo); + id = audioPolicyManager_.OpenAudioPort(pipeInfo, paIndex); + } if (audioActiveDevice_.GetCurrentInputDeviceType() == DEVICE_TYPE_MIC || audioActiveDevice_.GetCurrentInputDeviceType() == DEVICE_TYPE_ACCESSORY) { audioPolicyManager_.SetDeviceActive(audioActiveDevice_.GetCurrentInputDeviceType(), @@ -1620,6 +1630,57 @@ uint32_t AudioCoreService::OpenNewAudioPortAndRoute(std::shared_ptr pipeInfo) +{ + std::shared_ptr streamDesc = pipeInfo->streamDescriptors_.front(); + shared_ptr desc = streamDesc->newDeviceDescs_[0]; + audioActiveDevice_.SetActiveBtDeviceMac(desc->macAddress_); + DeviceType deviceType = desc->deviceType_; + AudioStreamInfo audioStreamInfo = {}; + audioActiveDevice_.GetActiveA2dpDeviceStreamInfo(DEVICE_TYPE_BLUETOOTH_A2DP_IN, audioStreamInfo); + std::string networkId = audioActiveDevice_.GetCurrentOutputDeviceNetworkId(); + std::string sinkName = AudioPolicyUtils::GetInstance().GetSinkPortName( + audioActiveDevice_.GetCurrentOutputDeviceType()); + SourceType sourceType = streamDesc->capturerInfo_.sourceType; + + std::list moduleInfoList; + bool ret = policyConfigMananger_.GetModuleListByType(ClassType::TYPE_A2DP, moduleInfoList); + CHECK_AND_RETURN_RET_LOG(ret, ERR_OPERATION_FAILED, "A2dp module is not exist in the configuration file"); + + // not load bt_a2dp_fast and bt_hdap, maybe need fix + int32_t loadRet = AudioServerProxy::GetInstance().LoadHdiAdapterProxy(HDI_DEVICE_MANAGER_TYPE_BLUETOOTH, "bt_a2dp"); + if (loadRet) { + AUDIO_ERR_LOG("load adapter failed"); + } + for (auto &moduleInfo : moduleInfoList) { + DeviceRole configRole = moduleInfo.role == "source" ? INPUT_DEVICE : OUTPUT_DEVICE; + DeviceRole deviceRole = INPUT_DEVICE; + AUDIO_INFO_LOG("Load a2dp module [%{public}s], role[%{public}d], config role[%{public}d]", + moduleInfo.name.c_str(), deviceRole, configRole); + if (configRole != deviceRole) {continue;} + AUDIO_INFO_LOG("A2dp device connects for the first time"); + // a2dp device connects for the first time + GetA2dpModuleInfo(moduleInfo, audioStreamInfo, sourceType); + uint32_t paIndex = 0; + AudioIOHandle ioHandle = audioPolicyManager_.OpenAudioPort(moduleInfo, paIndex); + CHECK_AND_RETURN_RET_LOG(ioHandle != HDI_INVALID_ID, + ERR_INVALID_HANDLE, "OpenAudioPort failed ioHandle[%{public}u]", ioHandle); + CHECK_AND_RETURN_RET_LOG(paIndex != OPEN_PORT_FAILURE, + ERR_OPERATION_FAILED, "OpenAudioPort failed paId[%{public}u]", paIndex); + pipeInfo->id_ = ioHandle; + pipeInfo->paIndex_ = paIndex; + pipeInfo->name_ = "a2dp_input"; + pipeInfo->pipeRole_ = PIPE_ROLE_INPUT; + pipeInfo->routeFlag_ = AUDIO_INPUT_FLAG_NORMAL; + pipeInfo->adapterName_ = "a2dp"; + pipeInfo->moduleInfo_ = moduleInfo; + pipeInfo->pipeAction_ = PIPE_ACTION_DEFAULT; + AUDIO_INFO_LOG("Add PipeInfo %{public}u in load a2dp.", pipeInfo->id_); + } + + return SUCCESS; +} + bool AudioCoreService::IsPaRoute(uint32_t routeFlag) { if ((routeFlag & AUDIO_OUTPUT_FLAG_DIRECT) || diff --git a/services/audio_policy/test/unittest/audio_core_service_private_unit_test/src/audio_core_service_private_unit_test.cpp b/services/audio_policy/test/unittest/audio_core_service_private_unit_test/src/audio_core_service_private_unit_test.cpp index e10d0fe060..49b2ff4803 100644 --- a/services/audio_policy/test/unittest/audio_core_service_private_unit_test/src/audio_core_service_private_unit_test.cpp +++ b/services/audio_policy/test/unittest/audio_core_service_private_unit_test/src/audio_core_service_private_unit_test.cpp @@ -2266,5 +2266,33 @@ HWTEST(AudioCoreServicePrivateTest, LoadSplitModule_004, TestSize.Level1) auto ret = audioCoreService->LoadSplitModule(splitArgs, networkId); EXPECT_EQ(ret, 0); } + +/** + * @tc.name : Test AudioCoreService. + * @tc.number: AudioCoreServicePrivate_124 + * @tc.desc : Test AudioCoreService::ProcessInputPipeNew() + */ +HWTEST(AudioCoreServicePrivateTest, AudioCoreServicePrivate_124, TestSize.Level1) +{ + auto audioCoreService = std::make_shared(); + ASSERT_NE(audioCoreService, nullptr); + + std::shared_ptr pipeInfo = std::make_shared(); + std::shared_ptr audioStreamDescriptor = std::make_shared(); + pipeInfo->moduleInfo_.name = BLUETOOTH_MIC; + + pipeInfo->streamDescriptors_.push_back(audioStreamDescriptor); + audioStreamDescriptor->streamAction_ = AUDIO_STREAM_ACTION_DEFAULT; + uint32_t flag = 0; + + audioCoreService->pipeManager_ = std::make_shared(); + + std::shared_ptr audioDeviceDescriptor = std::make_shared(); + audioDeviceDescriptor->deviceType_ = DEVICE_TYPE_BLUETOOTH_A2DP_IN; + audioStreamDescriptor->newDeviceDescs_.push_back(audioDeviceDescriptor); + + audioCoreService->ProcessInputPipeNew(pipeInfo, flag); + ASSERT_NE(audioCoreService->pipeManager_, nullptr); +} } // namespace AudioStandard } // namespace OHOS -- Gitee From bb9bbd608daeb35711c431863cf05655c80fed6f Mon Sep 17 00:00:00 2001 From: sunshinglight Date: Thu, 17 Jul 2025 13:40:46 +0000 Subject: [PATCH 2/3] fix-a2dpin Signed-off-by: sunshinglight Change-Id: I24d07bd288fb1198823f36ec0c7d5c530283d817 Signed-off-by: sunshinglight --- .../service_main/include/audio_core_service.h | 1 - .../src/audio_core_service_private.cpp | 81 +++++-------------- .../audio_core_service_private_unit_test.cpp | 63 ++++++++++++--- 3 files changed, 69 insertions(+), 76 deletions(-) diff --git a/services/audio_policy/server/service/service_main/include/audio_core_service.h b/services/audio_policy/server/service/service_main/include/audio_core_service.h index ef66a47ac6..480c9a6a94 100644 --- a/services/audio_policy/server/service/service_main/include/audio_core_service.h +++ b/services/audio_policy/server/service/service_main/include/audio_core_service.h @@ -288,7 +288,6 @@ private: int32_t SwitchActiveA2dpDevice(std::shared_ptr deviceDescriptor); int32_t ActivateNearlinkDevice(const std::shared_ptr &streamDesc, const AudioStreamDeviceChangeReasonExt reason = AudioStreamDeviceChangeReasonExt::ExtEnum::UNKNOWN); - int32_t OpenA2dpInAudioPort(std::shared_ptr pipeInfo); int32_t LoadA2dpModule(DeviceType deviceType, const AudioStreamInfo &audioStreamInfo, std::string networkId, std::string sinkName, SourceType sourceType); int32_t ReloadA2dpAudioPort(AudioModuleInfo &moduleInfo, DeviceType deviceType, diff --git a/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp b/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp index 93479c3fbd..751d495f08 100644 --- a/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp +++ b/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp @@ -1599,22 +1599,28 @@ uint32_t AudioCoreService::OpenNewAudioPortAndRoute(std::shared_ptrstreamDescriptors_.size() > 0 && pipeInfo->streamDescriptors_.front() != nullptr, OPEN_PORT_FAILURE, "pipeInfo is invalid"); - CHECK_AND_RETURN_RET_LOG(pipeInfo->streamDescriptors_.front()->newDeviceDescs_.size() > 0 && - pipeInfo->streamDescriptors_.front()->newDeviceDescs_[0] != nullptr, OPEN_PORT_FAILURE, "invalid streamDesc"); - if (pipeInfo->streamDescriptors_.front()->newDeviceDescs_.front()->deviceType_ == DEVICE_TYPE_REMOTE_CAST) { + std::shared_ptr streamDesc = pipeInfo->streamDescriptors_[0]; + CHECK_AND_RETURN_RET_LOG(streamDesc->newDeviceDescs_.size() > 0 && + streamDesc->newDeviceDescs_[0] != nullptr, OPEN_PORT_FAILURE, "invalid streamDesc"); + if (streamDesc->newDeviceDescs_.front()->deviceType_ == DEVICE_TYPE_REMOTE_CAST) { AUDIO_INFO_LOG("[PipeExecInfo] remote cast device do not need open pipe"); - id = pipeInfo->streamDescriptors_.front()->sessionId_; + id = streamDesc->sessionId_; } else { if (pipeInfo->moduleInfo_.name == BLUETOOTH_MIC && - pipeInfo->streamDescriptors_.front()->newDeviceDescs_[0]->deviceType_ == DEVICE_TYPE_BLUETOOTH_A2DP_IN) { - int32_t result = OpenA2dpInAudioPort(pipeInfo); - CHECK_AND_RETURN_RET_LOG(result == SUCCESS, ERR_OPERATION_FAILED, - "LoadA2dpModule failed %{public}d", result); - id = pipeInfo->id_; - } else { - HandleCommonSourceOpened(pipeInfo); - id = audioPolicyManager_.OpenAudioPort(pipeInfo, paIndex); + streamDesc->newDeviceDescs_[0]->deviceType_ == DEVICE_TYPE_BLUETOOTH_A2DP_IN) { + shared_ptr desc = streamDesc->newDeviceDescs_[0]; + audioActiveDevice_.SetActiveBtDeviceMac(desc->macAddress_); + AudioStreamInfo audioStreamInfo = {}; + bool ret = audioActiveDevice_.GetActiveA2dpDeviceStreamInfo(DEVICE_TYPE_BLUETOOTH_A2DP_IN, + audioStreamInfo); + CHECK_AND_RETURN_RET_LOG(ret, OPEN_PORT_FAILURE, "invalid streamDesc"); + streamDesc->streamInfo_ = audioStreamInfo; + SourceType sourceType = streamDesc->capturerInfo_.sourceType; + GetA2dpModuleInfo(pipeInfo->moduleInfo_, audioStreamInfo, sourceType); } + HandleCommonSourceOpened(pipeInfo); + id = audioPolicyManager_.OpenAudioPort(pipeInfo, paIndex); + if (audioActiveDevice_.GetCurrentInputDeviceType() == DEVICE_TYPE_MIC || audioActiveDevice_.GetCurrentInputDeviceType() == DEVICE_TYPE_ACCESSORY) { audioPolicyManager_.SetDeviceActive(audioActiveDevice_.GetCurrentInputDeviceType(), @@ -1630,57 +1636,6 @@ uint32_t AudioCoreService::OpenNewAudioPortAndRoute(std::shared_ptr pipeInfo) -{ - std::shared_ptr streamDesc = pipeInfo->streamDescriptors_.front(); - shared_ptr desc = streamDesc->newDeviceDescs_[0]; - audioActiveDevice_.SetActiveBtDeviceMac(desc->macAddress_); - DeviceType deviceType = desc->deviceType_; - AudioStreamInfo audioStreamInfo = {}; - audioActiveDevice_.GetActiveA2dpDeviceStreamInfo(DEVICE_TYPE_BLUETOOTH_A2DP_IN, audioStreamInfo); - std::string networkId = audioActiveDevice_.GetCurrentOutputDeviceNetworkId(); - std::string sinkName = AudioPolicyUtils::GetInstance().GetSinkPortName( - audioActiveDevice_.GetCurrentOutputDeviceType()); - SourceType sourceType = streamDesc->capturerInfo_.sourceType; - - std::list moduleInfoList; - bool ret = policyConfigMananger_.GetModuleListByType(ClassType::TYPE_A2DP, moduleInfoList); - CHECK_AND_RETURN_RET_LOG(ret, ERR_OPERATION_FAILED, "A2dp module is not exist in the configuration file"); - - // not load bt_a2dp_fast and bt_hdap, maybe need fix - int32_t loadRet = AudioServerProxy::GetInstance().LoadHdiAdapterProxy(HDI_DEVICE_MANAGER_TYPE_BLUETOOTH, "bt_a2dp"); - if (loadRet) { - AUDIO_ERR_LOG("load adapter failed"); - } - for (auto &moduleInfo : moduleInfoList) { - DeviceRole configRole = moduleInfo.role == "source" ? INPUT_DEVICE : OUTPUT_DEVICE; - DeviceRole deviceRole = INPUT_DEVICE; - AUDIO_INFO_LOG("Load a2dp module [%{public}s], role[%{public}d], config role[%{public}d]", - moduleInfo.name.c_str(), deviceRole, configRole); - if (configRole != deviceRole) {continue;} - AUDIO_INFO_LOG("A2dp device connects for the first time"); - // a2dp device connects for the first time - GetA2dpModuleInfo(moduleInfo, audioStreamInfo, sourceType); - uint32_t paIndex = 0; - AudioIOHandle ioHandle = audioPolicyManager_.OpenAudioPort(moduleInfo, paIndex); - CHECK_AND_RETURN_RET_LOG(ioHandle != HDI_INVALID_ID, - ERR_INVALID_HANDLE, "OpenAudioPort failed ioHandle[%{public}u]", ioHandle); - CHECK_AND_RETURN_RET_LOG(paIndex != OPEN_PORT_FAILURE, - ERR_OPERATION_FAILED, "OpenAudioPort failed paId[%{public}u]", paIndex); - pipeInfo->id_ = ioHandle; - pipeInfo->paIndex_ = paIndex; - pipeInfo->name_ = "a2dp_input"; - pipeInfo->pipeRole_ = PIPE_ROLE_INPUT; - pipeInfo->routeFlag_ = AUDIO_INPUT_FLAG_NORMAL; - pipeInfo->adapterName_ = "a2dp"; - pipeInfo->moduleInfo_ = moduleInfo; - pipeInfo->pipeAction_ = PIPE_ACTION_DEFAULT; - AUDIO_INFO_LOG("Add PipeInfo %{public}u in load a2dp.", pipeInfo->id_); - } - - return SUCCESS; -} - bool AudioCoreService::IsPaRoute(uint32_t routeFlag) { if ((routeFlag & AUDIO_OUTPUT_FLAG_DIRECT) || diff --git a/services/audio_policy/test/unittest/audio_core_service_private_unit_test/src/audio_core_service_private_unit_test.cpp b/services/audio_policy/test/unittest/audio_core_service_private_unit_test/src/audio_core_service_private_unit_test.cpp index 49b2ff4803..dfe7360463 100644 --- a/services/audio_policy/test/unittest/audio_core_service_private_unit_test/src/audio_core_service_private_unit_test.cpp +++ b/services/audio_policy/test/unittest/audio_core_service_private_unit_test/src/audio_core_service_private_unit_test.cpp @@ -2270,29 +2270,68 @@ HWTEST(AudioCoreServicePrivateTest, LoadSplitModule_004, TestSize.Level1) /** * @tc.name : Test AudioCoreService. * @tc.number: AudioCoreServicePrivate_124 - * @tc.desc : Test AudioCoreService::ProcessInputPipeNew() + * @tc.desc : Test AudioCoreService::OpenNewAudioPortAndRoute() */ HWTEST(AudioCoreServicePrivateTest, AudioCoreServicePrivate_124, TestSize.Level1) { + uint32_t sessionIDTest = 100; + auto audioCoreService = std::make_shared(); ASSERT_NE(audioCoreService, nullptr); - std::shared_ptr pipeInfo = std::make_shared(); - std::shared_ptr audioStreamDescriptor = std::make_shared(); - pipeInfo->moduleInfo_.name = BLUETOOTH_MIC; - + auto pipeInfo = std::make_shared(); + ASSERT_NE(pipeInfo, nullptr); + auto audioStreamDescriptor = std::make_shared(); + ASSERT_NE(audioStreamDescriptor, nullptr); pipeInfo->streamDescriptors_.push_back(audioStreamDescriptor); - audioStreamDescriptor->streamAction_ = AUDIO_STREAM_ACTION_DEFAULT; - uint32_t flag = 0; - audioCoreService->pipeManager_ = std::make_shared(); + auto audioDeviceDescriptor = std::make_shared(); + ASSERT_NE(audioStreamDescriptor, nullptr); + audioDeviceDescriptor->deviceType_ = DEVICE_TYPE_REMOTE_CAST; + audioDeviceDescriptor->newDeviceDescs_.push_back(audioDeviceDescriptor); + audioDeviceDescriptor->sessionId_ = sessionIDTest; + pipeInfo->streamDescriptors_->newDeviceDescs_.push_back(audioDeviceDescriptor); - std::shared_ptr audioDeviceDescriptor = std::make_shared(); + uint32_t paIndex = 0; + auto ret = audioCoreService->OpenNewAudioPortAndRoute(pipeInfo, paIndex); + + EXPECT_EQ(ret, sessionIDTest); +} + +/** + * @tc.name : Test AudioCoreService. + * @tc.number: AudioCoreServicePrivate_125 + * @tc.desc : Test AudioCoreService::OpenNewAudioPortAndRoute() + */ +HWTEST(AudioCoreServicePrivateTest, AudioCoreServicePrivate_125, TestSize.Level1) +{ + uint32_t sessionIDTest = 0; + + auto audioCoreService = std::make_shared(); + ASSERT_NE(audioCoreService, nullptr); + AudioStreamInfo audioStreamInfo = {}; + audioStreamInfo.samplingRate = AudioSamplingRate::SAMPLE_RATE_48000; + audioStreamInfo.format = AudioSampleFormat::SAMPLE_S16LE; + audioStreamInfo.channels = AudioChannel::STEREO; + auto pipeInfo = std::make_shared(); + ASSERT_NE(pipeInfo, nullptr); + auto audioStreamDescriptor = std::make_shared(); + ASSERT_NE(audioStreamDescriptor, nullptr); + audioStreamDescriptor->streamInfo_ = audioStreamInfo; + pipeInfo->streamDescriptors_.push_back(audioStreamDescriptor); + pipeInfo->moduleInfo_.name = BLUETOOTH_MIC; + + auto audioDeviceDescriptor = std::make_shared(); + ASSERT_NE(audioStreamDescriptor, nullptr); audioDeviceDescriptor->deviceType_ = DEVICE_TYPE_BLUETOOTH_A2DP_IN; - audioStreamDescriptor->newDeviceDescs_.push_back(audioDeviceDescriptor); + audioDeviceDescriptor->newDeviceDescs_.push_back(audioDeviceDescriptor); + pipeInfo->streamDescriptors_->newDeviceDescs_.push_back(audioDeviceDescriptor); - audioCoreService->ProcessInputPipeNew(pipeInfo, flag); - ASSERT_NE(audioCoreService->pipeManager_, nullptr); + uint32_t paIndex = 0; + auto ret = audioCoreService->OpenNewAudioPortAndRoute(pipeInfo, paIndex); + + EXPECT_NE(ret, sessionIDTest); } + } // namespace AudioStandard } // namespace OHOS -- Gitee From 7da45f4ed2ddfd8a816a7d7f2a1a20ed68f791ad Mon Sep 17 00:00:00 2001 From: sunshinglight Date: Fri, 18 Jul 2025 01:37:29 +0000 Subject: [PATCH 3/3] a2dpin fix bug Signed-off-by: sunshinglight Change-Id: Iee781906fcf1ce73fa62d491f4886d26922f0f1b --- .../src/audio_core_service_private.cpp | 6 ++---- .../src/audio_core_service_private_unit_test.cpp | 14 +++++++------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp b/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp index 751d495f08..9c5d53fea5 100644 --- a/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp +++ b/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp @@ -1610,13 +1610,11 @@ uint32_t AudioCoreService::OpenNewAudioPortAndRoute(std::shared_ptrnewDeviceDescs_[0]->deviceType_ == DEVICE_TYPE_BLUETOOTH_A2DP_IN) { shared_ptr desc = streamDesc->newDeviceDescs_[0]; audioActiveDevice_.SetActiveBtDeviceMac(desc->macAddress_); - AudioStreamInfo audioStreamInfo = {}; bool ret = audioActiveDevice_.GetActiveA2dpDeviceStreamInfo(DEVICE_TYPE_BLUETOOTH_A2DP_IN, - audioStreamInfo); + streamDesc->streamInfo_); CHECK_AND_RETURN_RET_LOG(ret, OPEN_PORT_FAILURE, "invalid streamDesc"); - streamDesc->streamInfo_ = audioStreamInfo; SourceType sourceType = streamDesc->capturerInfo_.sourceType; - GetA2dpModuleInfo(pipeInfo->moduleInfo_, audioStreamInfo, sourceType); + GetA2dpModuleInfo(pipeInfo->moduleInfo_, streamDesc->streamInfo_, sourceType); } HandleCommonSourceOpened(pipeInfo); id = audioPolicyManager_.OpenAudioPort(pipeInfo, paIndex); diff --git a/services/audio_policy/test/unittest/audio_core_service_private_unit_test/src/audio_core_service_private_unit_test.cpp b/services/audio_policy/test/unittest/audio_core_service_private_unit_test/src/audio_core_service_private_unit_test.cpp index dfe7360463..392fc22df5 100644 --- a/services/audio_policy/test/unittest/audio_core_service_private_unit_test/src/audio_core_service_private_unit_test.cpp +++ b/services/audio_policy/test/unittest/audio_core_service_private_unit_test/src/audio_core_service_private_unit_test.cpp @@ -2267,6 +2267,7 @@ HWTEST(AudioCoreServicePrivateTest, LoadSplitModule_004, TestSize.Level1) EXPECT_EQ(ret, 0); } + /** * @tc.name : Test AudioCoreService. * @tc.number: AudioCoreServicePrivate_124 @@ -2288,9 +2289,9 @@ HWTEST(AudioCoreServicePrivateTest, AudioCoreServicePrivate_124, TestSize.Level1 auto audioDeviceDescriptor = std::make_shared(); ASSERT_NE(audioStreamDescriptor, nullptr); audioDeviceDescriptor->deviceType_ = DEVICE_TYPE_REMOTE_CAST; - audioDeviceDescriptor->newDeviceDescs_.push_back(audioDeviceDescriptor); - audioDeviceDescriptor->sessionId_ = sessionIDTest; - pipeInfo->streamDescriptors_->newDeviceDescs_.push_back(audioDeviceDescriptor); + audioStreamDescriptor->newDeviceDescs_.push_back(audioDeviceDescriptor); + audioStreamDescriptor->sessionId_ = sessionIDTest; + pipeInfo->streamDescriptors_[0]->newDeviceDescs_.push_back(audioDeviceDescriptor); uint32_t paIndex = 0; auto ret = audioCoreService->OpenNewAudioPortAndRoute(pipeInfo, paIndex); @@ -2323,15 +2324,14 @@ HWTEST(AudioCoreServicePrivateTest, AudioCoreServicePrivate_125, TestSize.Level1 auto audioDeviceDescriptor = std::make_shared(); ASSERT_NE(audioStreamDescriptor, nullptr); - audioDeviceDescriptor->deviceType_ = DEVICE_TYPE_BLUETOOTH_A2DP_IN; - audioDeviceDescriptor->newDeviceDescs_.push_back(audioDeviceDescriptor); - pipeInfo->streamDescriptors_->newDeviceDescs_.push_back(audioDeviceDescriptor); + audioDeviceDescriptor->deviceType_ = DEVICE_TYPE_REMOTE_CAST; + audioStreamDescriptor->newDeviceDescs_.push_back(audioDeviceDescriptor); + pipeInfo->streamDescriptors_[0]->newDeviceDescs_.push_back(audioDeviceDescriptor); uint32_t paIndex = 0; auto ret = audioCoreService->OpenNewAudioPortAndRoute(pipeInfo, paIndex); EXPECT_NE(ret, sessionIDTest); } - } // namespace AudioStandard } // namespace OHOS -- Gitee