From 9f15cb53fb15e59190f8d211e55b95cd5011d850 Mon Sep 17 00:00:00 2001 From: huyue57 Date: Wed, 13 Dec 2023 14:18:35 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=93=9D=E7=89=99?= =?UTF-8?q?=E8=AE=BE=E5=A4=87SetActive=E5=A4=B1=E8=B4=A5=E6=97=B6=E4=BC=9A?= =?UTF-8?q?=E9=80=92=E5=BD=92=E8=B0=83=E7=94=A8FetchOutputDevice=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: huyue57 Change-Id: I669cd8cae0597f73fe9b4f7fa3059a2ac0939d31 --- .../audiocommon/include/audio_device_info.h | 1 + .../include/service/audio_device_manager.h | 1 + .../src/service/audio_device_manager.cpp | 20 +++++++++++++++++++ .../src/service/audio_policy_service.cpp | 8 ++++++-- 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/interfaces/inner_api/native/audiocommon/include/audio_device_info.h b/interfaces/inner_api/native/audiocommon/include/audio_device_info.h index 3b47d1a5ef..406f70c9bf 100644 --- a/interfaces/inner_api/native/audiocommon/include/audio_device_info.h +++ b/interfaces/inner_api/native/audiocommon/include/audio_device_info.h @@ -216,6 +216,7 @@ enum DeviceInfoUpdateCommand { CATEGORY_UPDATE = 1, CONNECTSTATE_UPDATE, ENABLE_UPDATE, + EXCEPTION_FLAG_UPDATE, }; struct DevicePrivacyInfo { diff --git a/services/audio_policy/server/include/service/audio_device_manager.h b/services/audio_policy/server/include/service/audio_device_manager.h index 4384e78385..4ded816d67 100644 --- a/services/audio_policy/server/include/service/audio_device_manager.h +++ b/services/audio_policy/server/include/service/audio_device_manager.h @@ -115,6 +115,7 @@ private: void UpdateConnectState(const shared_ptr &devDesc); void UpdateDeviceCategory(const sptr &deviceDescriptor); void UpdateEnableState(const shared_ptr &deviceDescriptor); + void UpdateExceptionFlag(const shared_ptr &deviceDescriptor); list privacyDeviceList_; list publicDeviceList_; diff --git a/services/audio_policy/server/src/service/audio_device_manager.cpp b/services/audio_policy/server/src/service/audio_device_manager.cpp index 6e0d0b83e6..e2f14bd6e5 100644 --- a/services/audio_policy/server/src/service/audio_device_manager.cpp +++ b/services/audio_policy/server/src/service/audio_device_manager.cpp @@ -659,6 +659,9 @@ void AudioDeviceManager::UpdateDevicesListInfo(const sptr case ENABLE_UPDATE: UpdateEnableState(devDesc); break; + case EXCEPTION_FLAG_UPDATE; + UpdateExceptionFlag(devDesc); + break; default: break; } @@ -729,6 +732,23 @@ void AudioDeviceManager::UpdateEnableState(const shared_ptr &deviceDescriptor) +{ + for (auto &desc : connectedDevices_) { + if (deviceDescriptor->deviceType_ == DEVICE_TYPE_BLUETOOTH_A2DP || + deviceDescriptor->deviceType_ == DEVICE_TYPE_BLUETOOTH_SCO) { + if (desc->macAddress_ == deviceDescriptor->macAddress_ && + desc->exceptionFlag_ != deviceDescriptor->exceptionFlag_) { + desc->exceptionFlag_ = deviceDescriptor->exceptionFlag_; + } + } else if (desc->deviceType_ == deviceDescriptor->deviceType_ && + desc->networkId_ == deviceDescriptor->networkId_ && + desc->exceptionFlag_ != deviceDescriptor->exceptionFlag_) { + desc->exceptionFlag_ = deviceDescriptor->exceptionFlag_; + } + } +} + void AudioDeviceManager::AddBtToOtherList(const shared_ptr &devDesc) { if (devDesc->networkId_ != LOCAL_NETWORK_ID) { diff --git a/services/audio_policy/server/src/service/audio_policy_service.cpp b/services/audio_policy/server/src/service/audio_policy_service.cpp index 9a7aeb7989..48dbf26921 100644 --- a/services/audio_policy/server/src/service/audio_policy_service.cpp +++ b/services/audio_policy/server/src/service/audio_policy_service.cpp @@ -1648,10 +1648,12 @@ void AudioPolicyService::FetchInputDeviceWhenNoRunningStream() int32_t AudioPolicyService::ActivateA2dpDevice(unique_ptr &desc, vector> &rendererChangeInfos, bool isStreamStatusUpdated) { - int32_t ret = SwitchActiveA2dpDevice(new AudioDeviceDescriptor(*desc)); + sptr deviceDesc = new AudioDeviceDescriptor(*desc); + int32_t ret = SwitchActiveA2dpDevice(deviceDesc); if (ret != SUCCESS) { AUDIO_ERR_LOG("Active A2DP device failed, retrigger fetch output device"); - desc->exceptionFlag_ = true; + deviceDesc->exceptionFlag_ = true; + UpdateDevicesListInfo(deviceDesc, EXCEPTION_FLAG_UPDATE); FetchOutputDevice(rendererChangeInfos, isStreamStatusUpdated); return ERROR; } @@ -1666,6 +1668,7 @@ int32_t AudioPolicyService::HandleScoDeviceFetched(unique_ptrexceptionFlag_ = true; + UpdateDevicesListInfo(new AudioDeviceDescriptor(*desc), EXCEPTION_FLAG_UPDATE); FetchOutputDevice(rendererChangeInfos, isStreamStatusUpdated); return ERROR; } @@ -1784,6 +1787,7 @@ void AudioPolicyService::FetchInputDevice(vectorexceptionFlag_ = true; + UpdateDevicesListInfo(new AudioDeviceDescriptor(*desc), EXCEPTION_FLAG_UPDATE); FetchInputDevice(capturerChangeInfos, isStreamStatusUpdated); return; } -- Gitee From 8c91642dc4de6e2b95b5fdcfda28b0f3b8a01ce3 Mon Sep 17 00:00:00 2001 From: huyue57 Date: Wed, 13 Dec 2023 14:21:53 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=93=9D=E7=89=99?= =?UTF-8?q?=E8=AE=BE=E5=A4=87SetActive=E5=A4=B1=E8=B4=A5=E6=97=B6=E4=BC=9A?= =?UTF-8?q?=E9=80=92=E5=BD=92=E8=B0=83=E7=94=A8FetchOutputDevice=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: huyue57 Change-Id: Ie9845724478477df5b8a1243fbfa7125f749888c --- .../audio_policy/server/src/service/audio_device_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/audio_policy/server/src/service/audio_device_manager.cpp b/services/audio_policy/server/src/service/audio_device_manager.cpp index e2f14bd6e5..f53d16638d 100644 --- a/services/audio_policy/server/src/service/audio_device_manager.cpp +++ b/services/audio_policy/server/src/service/audio_device_manager.cpp @@ -659,7 +659,7 @@ void AudioDeviceManager::UpdateDevicesListInfo(const sptr case ENABLE_UPDATE: UpdateEnableState(devDesc); break; - case EXCEPTION_FLAG_UPDATE; + case EXCEPTION_FLAG_UPDATE: UpdateExceptionFlag(devDesc); break; default: -- Gitee From 5396aeb228074976811def528198673d48c85c97 Mon Sep 17 00:00:00 2001 From: huyue57 Date: Wed, 13 Dec 2023 14:52:23 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=93=9D=E7=89=99?= =?UTF-8?q?=E8=AE=BE=E5=A4=87SetActive=E5=A4=B1=E8=B4=A5=E6=97=B6=E4=BC=9A?= =?UTF-8?q?=E9=80=92=E5=BD=92=E8=B0=83=E7=94=A8FetchOutputDevice=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: huyue57 Change-Id: I000634cd546f8c1e6f55255f8b69b343479c447a --- .../server/src/service/audio_policy_service.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/audio_policy/server/src/service/audio_policy_service.cpp b/services/audio_policy/server/src/service/audio_policy_service.cpp index 48dbf26921..537471c646 100644 --- a/services/audio_policy/server/src/service/audio_policy_service.cpp +++ b/services/audio_policy/server/src/service/audio_policy_service.cpp @@ -1653,7 +1653,7 @@ int32_t AudioPolicyService::ActivateA2dpDevice(unique_ptr if (ret != SUCCESS) { AUDIO_ERR_LOG("Active A2DP device failed, retrigger fetch output device"); deviceDesc->exceptionFlag_ = true; - UpdateDevicesListInfo(deviceDesc, EXCEPTION_FLAG_UPDATE); + audioDeviceManager_.UpdateDevicesListInfo(deviceDesc, EXCEPTION_FLAG_UPDATE); FetchOutputDevice(rendererChangeInfos, isStreamStatusUpdated); return ERROR; } @@ -1668,7 +1668,7 @@ int32_t AudioPolicyService::HandleScoDeviceFetched(unique_ptrexceptionFlag_ = true; - UpdateDevicesListInfo(new AudioDeviceDescriptor(*desc), EXCEPTION_FLAG_UPDATE); + audioDeviceManager_.UpdateDevicesListInfo(new AudioDeviceDescriptor(*desc), EXCEPTION_FLAG_UPDATE); FetchOutputDevice(rendererChangeInfos, isStreamStatusUpdated); return ERROR; } @@ -1787,7 +1787,7 @@ void AudioPolicyService::FetchInputDevice(vectorexceptionFlag_ = true; - UpdateDevicesListInfo(new AudioDeviceDescriptor(*desc), EXCEPTION_FLAG_UPDATE); + audioDeviceManager_.UpdateDevicesListInfo(new AudioDeviceDescriptor(*desc), EXCEPTION_FLAG_UPDATE); FetchInputDevice(capturerChangeInfos, isStreamStatusUpdated); return; } -- Gitee From cd79044a9ff9eb874c6be0bf1b8591bd721b1ee7 Mon Sep 17 00:00:00 2001 From: huyue57 Date: Sat, 16 Dec 2023 11:30:38 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: huyue57 Change-Id: I88597278fa10e102be3ec0794daaafa43f02ea8a --- .../native/audiocommon/include/audio_device_info.h | 8 ++++++++ .../native/audiocommon/include/audio_info.h | 12 ++++++++++++ .../audiomanager/include/audio_system_manager.h | 6 ------ .../audio_policy/client/src/audio_policy_proxy.cpp | 13 +++++++++++-- .../server/include/service/audio_device_manager.h | 1 + .../server/src/audio_policy_manager_stub.cpp | 2 ++ .../server/src/service/audio_device_manager.cpp | 1 + .../server/src/service/audio_policy_service.cpp | 14 ++++++++++++-- .../client/src/audio_device_descriptor.cpp | 4 ++++ .../client/src/audio_stream_tracker.cpp | 2 ++ 10 files changed, 53 insertions(+), 10 deletions(-) diff --git a/interfaces/inner_api/native/audiocommon/include/audio_device_info.h b/interfaces/inner_api/native/audiocommon/include/audio_device_info.h index 406f70c9bf..f9a7846520 100644 --- a/interfaces/inner_api/native/audiocommon/include/audio_device_info.h +++ b/interfaces/inner_api/native/audiocommon/include/audio_device_info.h @@ -219,6 +219,13 @@ enum DeviceInfoUpdateCommand { EXCEPTION_FLAG_UPDATE, }; +enum ConnectState { + CONNECTED, + SUSPEND_CONNECTED, + VIRTUAL_CONNECTED, + DEACTIVE_CONNECTED +}; + struct DevicePrivacyInfo { std::string deviceName; DeviceType deviceType; @@ -315,6 +322,7 @@ public: int32_t interruptGroupId; int32_t volumeGroupId; bool isLowLatencyDevice; + ConnectState connectState = CONNECTED; DeviceInfo() = default; ~DeviceInfo() = default; diff --git a/interfaces/inner_api/native/audiocommon/include/audio_info.h b/interfaces/inner_api/native/audiocommon/include/audio_info.h index e55916bd20..8b401a7c52 100644 --- a/interfaces/inner_api/native/audiocommon/include/audio_info.h +++ b/interfaces/inner_api/native/audiocommon/include/audio_info.h @@ -277,6 +277,18 @@ struct AudioRendererInfo { ContentType contentType = CONTENT_TYPE_UNKNOWN; StreamUsage streamUsage = STREAM_USAGE_UNKNOWN; int32_t rendererFlags = 0; + bool Marshalling(Parcel &parcel) const + { + return parcel.WriteInt32(static_cast(contentType)) + && parcel.WriteInt32(static_cast(streamUsage)) + && parcel.WriteInt32(rendererFlags); + } + void Unmarshalling(Parcel &parcel) + { + contentType = static_cast(parcel.ReadInt32()); + streamUsage = static_cast(parcel.ReadInt32()); + rendererFlags = parcel.ReadInt32(); + } }; class AudioCapturerInfo { diff --git a/interfaces/inner_api/native/audiomanager/include/audio_system_manager.h b/interfaces/inner_api/native/audiomanager/include/audio_system_manager.h index dafbe12e16..4f063bdd83 100644 --- a/interfaces/inner_api/native/audiomanager/include/audio_system_manager.h +++ b/interfaces/inner_api/native/audiomanager/include/audio_system_manager.h @@ -31,12 +31,6 @@ namespace OHOS { namespace AudioStandard { -enum ConnectState { - CONNECTED, - SUSPEND_CONNECTED, - VIRTUAL_CONNECTED, - DEACTIVE_CONNECTED -}; class AudioDeviceDescriptor; class AudioDeviceDescriptor : public Parcelable { diff --git a/services/audio_policy/client/src/audio_policy_proxy.cpp b/services/audio_policy/client/src/audio_policy_proxy.cpp index 4c5aa75b70..4c1d72ea3d 100644 --- a/services/audio_policy/client/src/audio_policy_proxy.cpp +++ b/services/audio_policy/client/src/audio_policy_proxy.cpp @@ -514,8 +514,12 @@ std::vector> AudioPolicyProxy::GetPreferredOutputDev AUDIO_ERR_LOG("AudioPolicyProxy: WriteInterfaceToken failed"); return deviceInfo; } - sptr audioRendererFilter = new(std::nothrow) AudioRendererFilter(); - audioRendererFilter->uid = -1; + + if (!rendererInfo.Marshalling(data)) { + AUDIO_ERR_LOG("AudioRendererInfo Marshalling() failed"); + return deviceInfo; + } + int32_t error = Remote()->SendRequest( static_cast(AudioPolicyInterfaceCode::GET_ACTIVE_OUTPUT_DEVICE_DESCRIPTORS), data, reply, option); if (error != ERR_NONE) { @@ -544,6 +548,11 @@ std::vector> AudioPolicyProxy::GetPreferredInputDevi return deviceInfo; } + if (!captureInfo.Marshalling(data)) { + AUDIO_ERR_LOG("AudioCapturerInfo Marshalling() failed"); + return deviceInfo; + } + int32_t error = Remote()->SendRequest( static_cast(AudioPolicyInterfaceCode::GET_PREFERRED_INTPUT_DEVICE_DESCRIPTORS), data, reply, option); if (error != ERR_NONE) { diff --git a/services/audio_policy/server/include/service/audio_device_manager.h b/services/audio_policy/server/include/service/audio_device_manager.h index 4ded816d67..7ae1632c49 100644 --- a/services/audio_policy/server/include/service/audio_device_manager.h +++ b/services/audio_policy/server/include/service/audio_device_manager.h @@ -137,6 +137,7 @@ private: sptr earpiece_ = nullptr; sptr speaker_ = nullptr; sptr defalutMic_ = nullptr; + std::mutex deviceInfoUpdateMutex_; }; } // namespace AudioStandard } // namespace OHOS diff --git a/services/audio_policy/server/src/audio_policy_manager_stub.cpp b/services/audio_policy/server/src/audio_policy_manager_stub.cpp index 951f788925..31c0fa39ea 100644 --- a/services/audio_policy/server/src/audio_policy_manager_stub.cpp +++ b/services/audio_policy/server/src/audio_policy_manager_stub.cpp @@ -249,6 +249,7 @@ void AudioPolicyManagerStub::GetPreferredOutputDeviceDescriptorsInternal(Message { AUDIO_DEBUG_LOG("GET_ACTIVE_OUTPUT_DEVICE_DESCRIPTORS AudioManagerStub"); AudioRendererInfo rendererInfo; + rendererInfo.Unmarshalling(data); std::vector> devices = GetPreferredOutputDeviceDescriptors(rendererInfo); int32_t size = static_cast(devices.size()); AUDIO_DEBUG_LOG("GET_ACTIVE_OUTPUT_DEVICE_DESCRIPTORS size= %{public}d", size); @@ -261,6 +262,7 @@ void AudioPolicyManagerStub::GetPreferredOutputDeviceDescriptorsInternal(Message void AudioPolicyManagerStub::GetPreferredInputDeviceDescriptorsInternal(MessageParcel &data, MessageParcel &reply) { AudioCapturerInfo captureInfo; + captureInfo.Unmarshalling(data); std::vector> devices = GetPreferredInputDeviceDescriptors(captureInfo); size_t size = static_cast(devices.size()); AUDIO_DEBUG_LOG("GET_PREFERRED_INTPUT_DEVICE_DESCRIPTORS size= %{public}zu", size); diff --git a/services/audio_policy/server/src/service/audio_device_manager.cpp b/services/audio_policy/server/src/service/audio_device_manager.cpp index f53d16638d..10a7980004 100644 --- a/services/audio_policy/server/src/service/audio_device_manager.cpp +++ b/services/audio_policy/server/src/service/audio_device_manager.cpp @@ -734,6 +734,7 @@ void AudioDeviceManager::UpdateEnableState(const shared_ptr &deviceDescriptor) { + lock_guard lock(deviceInfoUpdateMutex_); for (auto &desc : connectedDevices_) { if (deviceDescriptor->deviceType_ == DEVICE_TYPE_BLUETOOTH_A2DP || deviceDescriptor->deviceType_ == DEVICE_TYPE_BLUETOOTH_SCO) { diff --git a/services/audio_policy/server/src/service/audio_policy_service.cpp b/services/audio_policy/server/src/service/audio_policy_service.cpp index 537471c646..5846625f6d 100644 --- a/services/audio_policy/server/src/service/audio_policy_service.cpp +++ b/services/audio_policy/server/src/service/audio_policy_service.cpp @@ -1744,7 +1744,7 @@ void AudioPolicyService::OffloadStartPlayingIfOffloadMode(uint64_t sessionId) bool AudioPolicyService::IsSameDevice(unique_ptr &desc, DeviceInfo &deviceInfo) { if (desc->networkId_ == deviceInfo.networkId && desc->deviceType_ == deviceInfo.deviceType && - desc->macAddress_ == deviceInfo.macAddress) { + desc->macAddress_ == deviceInfo.macAddress && desc->connectState_ == deviceInfo.connectState) { return true; } else { return false; @@ -1754,7 +1754,7 @@ bool AudioPolicyService::IsSameDevice(unique_ptr &desc, D bool AudioPolicyService::IsSameDevice(unique_ptr &desc, AudioDeviceDescriptor &deviceDesc) { if (desc->networkId_ == deviceDesc.networkId_ && desc->deviceType_ == deviceDesc.deviceType_ && - desc->macAddress_ == deviceDesc.macAddress_) { + desc->macAddress_ == deviceDesc.macAddress_ && desc->connectState_ == deviceDesc.connectState_) { return true; } else { return false; @@ -2466,6 +2466,15 @@ void AudioPolicyService::AddEarpiece() } sptr audioDescriptor = new (std::nothrow) AudioDeviceDescriptor(DEVICE_TYPE_EARPIECE, OUTPUT_DEVICE); + // Use speaker streaminfo for earpiece cap + auto itr = std::find_if(connectedDevices_.begin(), connectedDevices_.end(), + [](const sptr &devDesc) { + CHECK_AND_RETURN_RET_LOG(devDesc != nullptr, false, "Invalid device descriptor"); + return (devDesc->deviceType_ == DEVICE_TYPE_SPEAKER); + }); + if (itr != connectedDevices_.end()) { + audioDescriptor->SetDeviceCapability((*itr)->audioStreamInfo_, 0); + } audioDescriptor->deviceId_ = startDeviceId++; UpdateDisplayName(audioDescriptor); audioDeviceManager_.AddNewDevice(audioDescriptor); @@ -3834,6 +3843,7 @@ void AudioPolicyService::UpdateDeviceInfo(DeviceInfo &deviceInfo, const sptrchannelMasks_; deviceInfo.channelIndexMasks = desc->channelIndexMasks_; deviceInfo.displayName = desc->displayName_; + deviceInfo.connectState = desc->connectState_; if (hasBTPermission) { deviceInfo.deviceName = desc->deviceName_; diff --git a/services/audio_service/client/src/audio_device_descriptor.cpp b/services/audio_service/client/src/audio_device_descriptor.cpp index 6862073c4c..ff63fb5861 100644 --- a/services/audio_service/client/src/audio_device_descriptor.cpp +++ b/services/audio_service/client/src/audio_device_descriptor.cpp @@ -40,6 +40,7 @@ AudioDeviceDescriptor::AudioDeviceDescriptor(DeviceType type, DeviceRole role, i pairDeviceDescriptor_ = nullptr; isScoRealConnected_ = false; isEnable_ = true; + exceptionFlag_ = false; } AudioDeviceDescriptor::AudioDeviceDescriptor(DeviceType type, DeviceRole role) : deviceType_(type), deviceRole_(role) @@ -61,6 +62,7 @@ AudioDeviceDescriptor::AudioDeviceDescriptor(DeviceType type, DeviceRole role) : pairDeviceDescriptor_ = nullptr; isScoRealConnected_ = false; isEnable_ = true; + exceptionFlag_ = false; } AudioDeviceDescriptor::AudioDeviceDescriptor() @@ -90,6 +92,7 @@ AudioDeviceDescriptor::AudioDeviceDescriptor(const AudioDeviceDescriptor &device pairDeviceDescriptor_ = deviceDescriptor.pairDeviceDescriptor_; isScoRealConnected_ = deviceDescriptor.isScoRealConnected_; isEnable_ = deviceDescriptor.isEnable_; + exceptionFlag_ = deviceDescriptor.exceptionFlag_; } AudioDeviceDescriptor::AudioDeviceDescriptor(const sptr &deviceDescriptor) @@ -119,6 +122,7 @@ AudioDeviceDescriptor::AudioDeviceDescriptor(const sptr & pairDeviceDescriptor_ = deviceDescriptor->pairDeviceDescriptor_; isScoRealConnected_ = deviceDescriptor->isScoRealConnected_; isEnable_ = deviceDescriptor->isEnable_; + exceptionFlag_ = deviceDescriptor->exceptionFlag_; } AudioDeviceDescriptor::~AudioDeviceDescriptor() diff --git a/services/audio_service/client/src/audio_stream_tracker.cpp b/services/audio_service/client/src/audio_stream_tracker.cpp index d547025839..b19bb11676 100644 --- a/services/audio_service/client/src/audio_stream_tracker.cpp +++ b/services/audio_service/client/src/audio_stream_tracker.cpp @@ -42,12 +42,14 @@ void AudioStreamTracker::RegisterTracker(const AudioRegisterTrackerInfo ®iste streamChangeInfo.audioRendererChangeInfo.clientPid = registerTrackerInfo.clientPid; streamChangeInfo.audioRendererChangeInfo.rendererState = static_cast(registerTrackerInfo.state); streamChangeInfo.audioRendererChangeInfo.rendererInfo = registerTrackerInfo.rendererInfo; + streamChangeInfo.audioRendererChangeInfo.outputDeviceInfo.deviceRole = OUTPUT_DEVICE; } else { streamChangeInfo.audioCapturerChangeInfo.clientUID = clientUid_; streamChangeInfo.audioCapturerChangeInfo.sessionId = registerTrackerInfo.sessionId; streamChangeInfo.audioCapturerChangeInfo.clientPid = registerTrackerInfo.clientPid; streamChangeInfo.audioCapturerChangeInfo.capturerState = static_cast(registerTrackerInfo.state); streamChangeInfo.audioCapturerChangeInfo.capturerInfo = registerTrackerInfo.capturerInfo; + streamChangeInfo.audioCapturerChangeInfo.inputDeviceInfo.deviceRole = INPUT_DEVICE; } AudioPolicyManager::GetInstance().RegisterTracker(eMode_, streamChangeInfo, clientTrackerObj); } -- Gitee