From 524822f30db5e3f4c4556f623fa6433bdc7762f7 Mon Sep 17 00:00:00 2001 From: lizihao Date: Mon, 26 Aug 2024 09:46:17 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E7=A9=BA=E9=97=B4=E9=9F=B3=E9=A2=91?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=8F=AF=E6=8C=81=E4=B9=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lizihao --- .../audio_spatialization_service.h | 10 +- .../audio_spatialization_service.cpp | 101 +++++++++++++++++- 2 files changed, 108 insertions(+), 3 deletions(-) diff --git a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h index 83ffcbc8fe..27556555bf 100644 --- a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h +++ b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h @@ -85,8 +85,9 @@ private: enum WriteToDbOperation { WRITE_SPATIALIZATION_STATE = 0, WRITE_SPATIALIZATION_SCENE = 1, + WRITE_DEVICESPATIAL_INFO = 2, }; - + const int32_t maxDevices_ = 10; int32_t UpdateSpatializationStateReal(bool outputDeviceChange, std::string preDeviceAddress = ""); int32_t UpdateSpatializationState(); int32_t UpdateSpatializationSceneType(); @@ -96,6 +97,13 @@ private: bool IsHeadTrackingDataRequestedForCurrentDevice(); void UpdateHeadTrackingDeviceState(bool outputDeviceChange, std::string preDeviceAddress = ""); void HandleHeadTrackingDeviceChange(const std::unordered_map &changeInfo); + void removeOldestDevice(); + void UpdateDeviceSpatialInfo(std::string address, std::string deviceSpatialInfo); + std::string GetCurrTimestamp(); + std::string EnCapsulateDeviceInfo(const std::string address); + void extractAddress(const std::string deviceSpatialInfo); + extractTimestamp(const std::string deviceSpatialInfo); + std::map addressToDeviceSpatialInfoMap_; std::shared_ptr audioPolicyServerHandler_; std::string currentDeviceAddress_ = ""; std::string preSettingSpatialAddress_ = "NO_PREVIOUS_SET_DEVICE"; diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index eb7aaedadf..f271673101 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -161,7 +161,10 @@ int32_t AudioSpatializationService::SetSpatializationEnabled(const sptr lock(spatializationServiceMutex_); preSettingSpatialAddress_ = address; + std::string deviceSpatialInfo = EnCapsulateDeviceInfo(address); + UpdateDeviceSpatialInfo(addrss, deviceSpatialInfo); if (addressToSpatialEnabledMap_[address].spatializationEnabled == enable) { + WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO); return SPATIALIZATION_SERVICE_OK; } addressToSpatialEnabledMap_[address].spatializationEnabled = enable; @@ -169,7 +172,7 @@ int32_t AudioSpatializationService::SetSpatializationEnabled(const sptr lock(spatializationServiceMutex_); preSettingSpatialAddress_ = address; + std::string deviceSpatialInfo = EnCapsulateDeviceInfo(address); + UpdateDeviceSpatialInfo(addrss, deviceSpatialInfo); if (addressToSpatialEnabledMap_[address].headTrackingEnabled == enable) { + WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO); return SPATIALIZATION_SERVICE_OK; } addressToSpatialEnabledMap_[address].headTrackingEnabled = enable; @@ -225,7 +231,7 @@ int32_t AudioSpatializationService::SetHeadTrackingEnabled(const sptr(sceneType); UpdateSpatializationSceneType(); } + + for (int i = 1; i <= 10; ++i) { + ret = settingProvider.GetStringValue(SPATIALIZATION_STATE_SETTINGKEY + "_device" + std::to_string(i), + deviceSpatialInfo); + if (ret != SUCCESS) { + AUDIO_WARNING_LOG("Failed to read spatialization_state from setting db! Err: %{public}d", ret); + break; + } + std::string address = extractAddress(deviceSpatialInfo); + addressToDeviceSpatialInfoMap_[address] = deviceSpatialInfo; + } + UpdateSpatializationStateReal(false); isLoadedfromDb_ = true; } @@ -606,6 +625,16 @@ void AudioSpatializationService::WriteSpatializationStateToDb(WriteToDbOperation CHECK_AND_RETURN_LOG(ret == SUCCESS, "Failed to write spatialization_scene to setting db: %{public}d", ret); break; } + case WRITE_DEVICESPATIAL_INFO: { + int32_t i = 0; + for (const auto& entry : addressToDeviceSpatialInfoMap_) { + ErrCode ret = settingProvider.PutStringValue( + SPATIALIZATION_STATE_SETTINGKEY + "_device" + std::to_string(++i), entry.second); + CHECK_AND_RETURN_LOG(ret == SUCCESS, "Failed to write spatialization_state_device%{public}d to + setting db: %{public}d", i, ret); + } + break; + } default: break; } @@ -661,5 +690,73 @@ std::string AudioSpatializationService::GetCurrentDeviceAddress() const { return currentDeviceAddress_; } + +std::string AudioSpatializationService::GetCurrTimestamp() +{ + std::time_t now = std::time(nullptr); + std::ostringstream oss; + oss << now; + return oss.str(); +} + +std::string AudioSpatializationService::extractAddress(const std::string deviceSpatialInfo) +{ + size_t pos = deviceSpatialInfo.find("|"); + if (pos != std::string::npos) { + return deviceSpatialInfo.substr(0, pos); + } + return ""; +} + +std::string AudioSpatializationService::extractTimestamp(const std::string deviceSpatialInfo) +{ + size_t pos = deviceSpatialInfo.rfind("|"); + if (pos != std::string::npos) { + return deviceSpatialInfo.substr(pos + 1); + } + return ""; +} + +std::string AudioSpatializationService::EnCapsulateDeviceInfo(const std::string address) +{ + std::stringstream value; + value << address; + value << "|" << addressToSpatialEnabledMap_[address].spatializationEnabled; + value << "|" << addressToSpatialEnabledMap_[address].headTrackingEnabled + value << "|" << addressToSpatialDeviceStateMap_[address].isSpatializationSupported + value << "|" << addressToSpatialDeviceStateMap_[address].isSpatializationSupported + value << "|" << addressToSpatialDeviceStateMap_[address].spatialDeviceType; + value << "|" << GetCurrTimestamp(); + AUDIO_INFO_LOG("value is %{public}s", oss.str()); + return value.str(); +} + +void AudioSpatializationService::removeOldestDevice() +{ + std::string oldestAddr; + std::string oldestTimestamp; + for (const auto& entry : addressToDeviceSpatialInfoMap_) { + std::string currTimestamp = extractTimestamp(entry.second); + if (oldestTimestamp.empty() || currTimestamp < oldestTimestamp) { + oldestTimestamp = currTimestamp; + oldestAddr = entry.first; + } + } + + if (!oldestAddr.empty()) { + addressToDeviceSpatialInfoMap_.erase(oldestAddr); + } +} + +void AudioSpatializationService::UpdateDeviceSpatialInfo(std::string address, std::string deviceSpatialInfo) +{ + if (!addressToDeviceSpatialInfoMap_.count(address)) { + if (addressToDeviceSpatialInfoMap_.size() >= maxDevices_) { + removeOldestDevice(); + } + } + addressToDeviceSpatialInfoMap_[address] = deviceSpatialInfo; + +} } // namespace AudioStandard } // namespace OHOS -- Gitee From f4af3702f849ae26965cd777338999ae16ce9a59 Mon Sep 17 00:00:00 2001 From: lizihao Date: Mon, 26 Aug 2024 11:29:17 +0800 Subject: [PATCH 02/23] bugfix Signed-off-by: lizihao --- .../spatialization/audio_spatialization_service.h | 4 ++-- .../spatialization/audio_spatialization_service.cpp | 13 ++++++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h index 27556555bf..c455517980 100644 --- a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h +++ b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h @@ -101,8 +101,8 @@ private: void UpdateDeviceSpatialInfo(std::string address, std::string deviceSpatialInfo); std::string GetCurrTimestamp(); std::string EnCapsulateDeviceInfo(const std::string address); - void extractAddress(const std::string deviceSpatialInfo); - extractTimestamp(const std::string deviceSpatialInfo); + std::string extractAddress(const std::string deviceSpatialInfo); + std::string extractTimestamp(const std::string deviceSpatialInfo); std::map addressToDeviceSpatialInfoMap_; std::shared_ptr audioPolicyServerHandler_; std::string currentDeviceAddress_ = ""; diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index f271673101..9d0e5a0000 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -162,7 +162,7 @@ int32_t AudioSpatializationService::SetSpatializationEnabled(const sptr lock(spatializationServiceMutex_); preSettingSpatialAddress_ = address; std::string deviceSpatialInfo = EnCapsulateDeviceInfo(address); - UpdateDeviceSpatialInfo(addrss, deviceSpatialInfo); + UpdateDeviceSpatialInfo(address, deviceSpatialInfo); if (addressToSpatialEnabledMap_[address].spatializationEnabled == enable) { WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO); return SPATIALIZATION_SERVICE_OK; @@ -221,7 +221,7 @@ int32_t AudioSpatializationService::SetHeadTrackingEnabled(const sptr lock(spatializationServiceMutex_); preSettingSpatialAddress_ = address; std::string deviceSpatialInfo = EnCapsulateDeviceInfo(address); - UpdateDeviceSpatialInfo(addrss, deviceSpatialInfo); + UpdateDeviceSpatialInfo(address, deviceSpatialInfo); if (addressToSpatialEnabledMap_[address].headTrackingEnabled == enable) { WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO); return SPATIALIZATION_SERVICE_OK; @@ -630,7 +630,7 @@ void AudioSpatializationService::WriteSpatializationStateToDb(WriteToDbOperation for (const auto& entry : addressToDeviceSpatialInfoMap_) { ErrCode ret = settingProvider.PutStringValue( SPATIALIZATION_STATE_SETTINGKEY + "_device" + std::to_string(++i), entry.second); - CHECK_AND_RETURN_LOG(ret == SUCCESS, "Failed to write spatialization_state_device%{public}d to + CHECK_AND_RETURN_LOG(ret == SUCCESS, "Failed to write spatialization_state_device%{public}d to setting db: %{public}d", i, ret); } break; @@ -722,12 +722,11 @@ std::string AudioSpatializationService::EnCapsulateDeviceInfo(const std::string std::stringstream value; value << address; value << "|" << addressToSpatialEnabledMap_[address].spatializationEnabled; - value << "|" << addressToSpatialEnabledMap_[address].headTrackingEnabled - value << "|" << addressToSpatialDeviceStateMap_[address].isSpatializationSupported - value << "|" << addressToSpatialDeviceStateMap_[address].isSpatializationSupported + value << "|" << addressToSpatialEnabledMap_[address].headTrackingEnabled; + value << "|" << addressToSpatialDeviceStateMap_[address].isSpatializationSupported; + value << "|" << addressToSpatialDeviceStateMap_[address].isSpatializationSupported; value << "|" << addressToSpatialDeviceStateMap_[address].spatialDeviceType; value << "|" << GetCurrTimestamp(); - AUDIO_INFO_LOG("value is %{public}s", oss.str()); return value.str(); } -- Gitee From ea7f7761613080ef9208be728b541f9b8ed5873d Mon Sep 17 00:00:00 2001 From: lizihao Date: Mon, 26 Aug 2024 16:08:02 +0800 Subject: [PATCH 03/23] bugfix Signed-off-by: lizihao --- .../audio_spatialization_service.h | 3 +- .../audio_spatialization_service.cpp | 29 +++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h index c455517980..976a42b0bf 100644 --- a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h +++ b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h @@ -98,7 +98,8 @@ private: void UpdateHeadTrackingDeviceState(bool outputDeviceChange, std::string preDeviceAddress = ""); void HandleHeadTrackingDeviceChange(const std::unordered_map &changeInfo); void removeOldestDevice(); - void UpdateDeviceSpatialInfo(std::string address, std::string deviceSpatialInfo); + void UpdateDeviceSpatialMapInfo(const std::string address, const std::string deviceSpatialInfo); + void UpdateDeviceSpatialInfo(const std::string deviceSpatialInfo); std::string GetCurrTimestamp(); std::string EnCapsulateDeviceInfo(const std::string address); std::string extractAddress(const std::string deviceSpatialInfo); diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index 9d0e5a0000..acdc745d2f 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -161,9 +161,9 @@ int32_t AudioSpatializationService::SetSpatializationEnabled(const sptr lock(spatializationServiceMutex_); preSettingSpatialAddress_ = address; - std::string deviceSpatialInfo = EnCapsulateDeviceInfo(address); - UpdateDeviceSpatialInfo(address, deviceSpatialInfo); if (addressToSpatialEnabledMap_[address].spatializationEnabled == enable) { + std::string deviceSpatialInfo = EnCapsulateDeviceInfo(address); + UpdateDeviceSpatialMapInfo(address, deviceSpatialInfo); WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO); return SPATIALIZATION_SERVICE_OK; } @@ -220,9 +220,9 @@ int32_t AudioSpatializationService::SetHeadTrackingEnabled(const sptr lock(spatializationServiceMutex_); preSettingSpatialAddress_ = address; - std::string deviceSpatialInfo = EnCapsulateDeviceInfo(address); - UpdateDeviceSpatialInfo(address, deviceSpatialInfo); if (addressToSpatialEnabledMap_[address].headTrackingEnabled == enable) { + std::string deviceSpatialInfo = EnCapsulateDeviceInfo(address); + UpdateDeviceSpatialMapInfo(address, deviceSpatialInfo); WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO); return SPATIALIZATION_SERVICE_OK; } @@ -515,6 +515,25 @@ int32_t AudioSpatializationService::UpdateSpatializationSceneType() return SPATIALIZATION_SERVICE_OK; } +int32_t AudioSpatializationService::UpdateDeviceSpatialInfo(const std::string deviceSpatialInfo) +{ + std::stringstream ss(deviceSpatialInfo); + std::string token; + std::string address; + std::getline(ss, address, '|'); + std::getline(ss, token, '|'); + addressToSpatialEnabledMap_[address].spatializationEnabled = std::stoi(token); + std::getline(ss, token, '|'); + addressToSpatialEnabledMap_[address].headTrackingEnabled = std::stoi(token); + std::getline(ss, token, '|'); + addressToSpatialDeviceStateMap_[address].isSpatializationSupported = std::stoi(token); + std::getline(ss, token, '|'); + addressToSpatialDeviceStateMap_[address].isSpatializationSupported = std::stoi(token); + std::getline(ss, token, '|'); + addressToSpatialDeviceStateMap_[address].spatialDeviceType = static_cast(std::stoi(token)); + +} + void AudioSpatializationService::UpdateSpatialDeviceType(AudioSpatialDeviceType spatialDeviceType) { const sptr gsp = GetAudioServerProxy(); @@ -747,7 +766,7 @@ void AudioSpatializationService::removeOldestDevice() } } -void AudioSpatializationService::UpdateDeviceSpatialInfo(std::string address, std::string deviceSpatialInfo) +void AudioSpatializationService::UpdateDeviceSpatialMapInfo(std::string address, std::string deviceSpatialInfo) { if (!addressToDeviceSpatialInfoMap_.count(address)) { if (addressToDeviceSpatialInfoMap_.size() >= maxDevices_) { -- Gitee From 00c44893df7a61dbb6e6dd915c24351667674bf1 Mon Sep 17 00:00:00 2001 From: lizihao Date: Mon, 26 Aug 2024 16:26:28 +0800 Subject: [PATCH 04/23] bugfix Signed-off-by: lizihao --- .../service/spatialization/audio_spatialization_service.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index acdc745d2f..a49b0008e9 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -515,7 +515,7 @@ int32_t AudioSpatializationService::UpdateSpatializationSceneType() return SPATIALIZATION_SERVICE_OK; } -int32_t AudioSpatializationService::UpdateDeviceSpatialInfo(const std::string deviceSpatialInfo) +void AudioSpatializationService::UpdateDeviceSpatialInfo(const std::string deviceSpatialInfo) { std::stringstream ss(deviceSpatialInfo); std::string token; @@ -649,8 +649,8 @@ void AudioSpatializationService::WriteSpatializationStateToDb(WriteToDbOperation for (const auto& entry : addressToDeviceSpatialInfoMap_) { ErrCode ret = settingProvider.PutStringValue( SPATIALIZATION_STATE_SETTINGKEY + "_device" + std::to_string(++i), entry.second); - CHECK_AND_RETURN_LOG(ret == SUCCESS, "Failed to write spatialization_state_device%{public}d to - setting db: %{public}d", i, ret); + CHECK_AND_RETURN_LOG(ret == SUCCESS, "Failed to write spatialization_state_device%{public}d to" + "setting db: %{public}d", i, ret); } break; } -- Gitee From 930e835bfb39bfa646f0ec60403306e8c34bb2e7 Mon Sep 17 00:00:00 2001 From: lizihao Date: Mon, 26 Aug 2024 16:32:49 +0800 Subject: [PATCH 05/23] bugfix Signed-off-by: lizihao --- .../src/service/spatialization/audio_spatialization_service.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index a49b0008e9..2d72923eca 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -614,7 +614,7 @@ void AudioSpatializationService::InitSpatializationState() UpdateSpatializationSceneType(); } - for (int i = 1; i <= 10; ++i) { + for (int i = 1; i <= maxDevices_; ++i) { ret = settingProvider.GetStringValue(SPATIALIZATION_STATE_SETTINGKEY + "_device" + std::to_string(i), deviceSpatialInfo); if (ret != SUCCESS) { -- Gitee From 9ba1ea1aa95098808329b0ae7e563f0012bcce80 Mon Sep 17 00:00:00 2001 From: lizihao Date: Mon, 26 Aug 2024 16:50:39 +0800 Subject: [PATCH 06/23] codecheck Signed-off-by: lizihao --- .../src/service/spatialization/audio_spatialization_service.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index 2d72923eca..af8f7910c0 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -531,7 +531,6 @@ void AudioSpatializationService::UpdateDeviceSpatialInfo(const std::string devic addressToSpatialDeviceStateMap_[address].isSpatializationSupported = std::stoi(token); std::getline(ss, token, '|'); addressToSpatialDeviceStateMap_[address].spatialDeviceType = static_cast(std::stoi(token)); - } void AudioSpatializationService::UpdateSpatialDeviceType(AudioSpatialDeviceType spatialDeviceType) @@ -774,7 +773,6 @@ void AudioSpatializationService::UpdateDeviceSpatialMapInfo(std::string address, } } addressToDeviceSpatialInfoMap_[address] = deviceSpatialInfo; - } } // namespace AudioStandard } // namespace OHOS -- Gitee From 6fefdd69a69ca0ff3c5db278ae245d063bd8bc1a Mon Sep 17 00:00:00 2001 From: lizihao Date: Tue, 27 Aug 2024 10:16:49 +0800 Subject: [PATCH 07/23] bugfix Signed-off-by: lizihao --- .../service/spatialization/audio_spatialization_service.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index af8f7910c0..0b13c7296c 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -528,7 +528,7 @@ void AudioSpatializationService::UpdateDeviceSpatialInfo(const std::string devic std::getline(ss, token, '|'); addressToSpatialDeviceStateMap_[address].isSpatializationSupported = std::stoi(token); std::getline(ss, token, '|'); - addressToSpatialDeviceStateMap_[address].isSpatializationSupported = std::stoi(token); + addressToSpatialDeviceStateMap_[address].isHeadTrackingSupported = std::stoi(token); std::getline(ss, token, '|'); addressToSpatialDeviceStateMap_[address].spatialDeviceType = static_cast(std::stoi(token)); } @@ -742,7 +742,7 @@ std::string AudioSpatializationService::EnCapsulateDeviceInfo(const std::string value << "|" << addressToSpatialEnabledMap_[address].spatializationEnabled; value << "|" << addressToSpatialEnabledMap_[address].headTrackingEnabled; value << "|" << addressToSpatialDeviceStateMap_[address].isSpatializationSupported; - value << "|" << addressToSpatialDeviceStateMap_[address].isSpatializationSupported; + value << "|" << addressToSpatialDeviceStateMap_[address].isHeadTrackingSupported; value << "|" << addressToSpatialDeviceStateMap_[address].spatialDeviceType; value << "|" << GetCurrTimestamp(); return value.str(); -- Gitee From 2d13a97af76e5a5af5bd7599adaeb6f940ede4c3 Mon Sep 17 00:00:00 2001 From: lizihao Date: Tue, 27 Aug 2024 10:38:03 +0800 Subject: [PATCH 08/23] bugfix Signed-off-by: lizihao --- .../spatialization/audio_spatialization_service.h | 1 - .../spatialization/audio_spatialization_service.cpp | 13 ++----------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h index 976a42b0bf..86004d83ec 100644 --- a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h +++ b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h @@ -102,7 +102,6 @@ private: void UpdateDeviceSpatialInfo(const std::string deviceSpatialInfo); std::string GetCurrTimestamp(); std::string EnCapsulateDeviceInfo(const std::string address); - std::string extractAddress(const std::string deviceSpatialInfo); std::string extractTimestamp(const std::string deviceSpatialInfo); std::map addressToDeviceSpatialInfoMap_; std::shared_ptr audioPolicyServerHandler_; diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index 0b13c7296c..ce3955d348 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -521,6 +521,7 @@ void AudioSpatializationService::UpdateDeviceSpatialInfo(const std::string devic std::string token; std::string address; std::getline(ss, address, '|'); + addressToDeviceSpatialInfoMap_[address] = deviceSpatialInfo; std::getline(ss, token, '|'); addressToSpatialEnabledMap_[address].spatializationEnabled = std::stoi(token); std::getline(ss, token, '|'); @@ -620,8 +621,7 @@ void AudioSpatializationService::InitSpatializationState() AUDIO_WARNING_LOG("Failed to read spatialization_state from setting db! Err: %{public}d", ret); break; } - std::string address = extractAddress(deviceSpatialInfo); - addressToDeviceSpatialInfoMap_[address] = deviceSpatialInfo; + UpdateDeviceSpatialInfo(deviceSpatialInfo); } UpdateSpatializationStateReal(false); isLoadedfromDb_ = true; @@ -717,15 +717,6 @@ std::string AudioSpatializationService::GetCurrTimestamp() return oss.str(); } -std::string AudioSpatializationService::extractAddress(const std::string deviceSpatialInfo) -{ - size_t pos = deviceSpatialInfo.find("|"); - if (pos != std::string::npos) { - return deviceSpatialInfo.substr(0, pos); - } - return ""; -} - std::string AudioSpatializationService::extractTimestamp(const std::string deviceSpatialInfo) { size_t pos = deviceSpatialInfo.rfind("|"); -- Gitee From df08d04d98f25856c74e5e79d8f503926ea55de7 Mon Sep 17 00:00:00 2001 From: lizihao Date: Tue, 27 Aug 2024 11:32:30 +0800 Subject: [PATCH 09/23] bugfix Signed-off-by: lizihao --- .../service/spatialization/audio_spatialization_service.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index ce3955d348..71d0890823 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -172,6 +172,8 @@ int32_t AudioSpatializationService::SetSpatializationEnabled(const sptr Date: Wed, 28 Aug 2024 14:01:52 +0800 Subject: [PATCH 10/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A3=80=E8=A7=86?= =?UTF-8?q?=E6=84=8F=E8=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lizihao --- .../audio_spatialization_service.h | 11 ++-- .../audio_spatialization_service.cpp | 58 +++++++++---------- 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h index 86004d83ec..a6c01f623c 100644 --- a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h +++ b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h @@ -35,6 +35,7 @@ namespace OHOS { namespace AudioStandard { +#define MAX_DEVICE_NUM 10 class AudioSpatializationService { public: static AudioSpatializationService& GetAudioSpatializationService() @@ -87,23 +88,23 @@ private: WRITE_SPATIALIZATION_SCENE = 1, WRITE_DEVICESPATIAL_INFO = 2, }; - const int32_t maxDevices_ = 10; int32_t UpdateSpatializationStateReal(bool outputDeviceChange, std::string preDeviceAddress = ""); int32_t UpdateSpatializationState(); int32_t UpdateSpatializationSceneType(); void UpdateSpatialDeviceType(AudioSpatialDeviceType audioSpatialDeviceType); void HandleSpatializationStateChange(bool outputDeviceChange); - void WriteSpatializationStateToDb(WriteToDbOperation operation); + void WriteSpatializationStateToDb(WriteToDbOperation operation, std::string address = ""); bool IsHeadTrackingDataRequestedForCurrentDevice(); void UpdateHeadTrackingDeviceState(bool outputDeviceChange, std::string preDeviceAddress = ""); void HandleHeadTrackingDeviceChange(const std::unordered_map &changeInfo); - void removeOldestDevice(); - void UpdateDeviceSpatialMapInfo(const std::string address, const std::string deviceSpatialInfo); - void UpdateDeviceSpatialInfo(const std::string deviceSpatialInfo); + void UpdateDeviceSpatialInfo(const uint32_t deviceID, const std::string deviceSpatialInfo); + uint32_t UpdateDeviceSpatialMapInfo(const std::string address, const std::string deviceSpatialInfo); + std::string RemoveOldestDevice(); std::string GetCurrTimestamp(); std::string EnCapsulateDeviceInfo(const std::string address); std::string extractTimestamp(const std::string deviceSpatialInfo); std::map addressToDeviceSpatialInfoMap_; + std::map addressToDeviceIDMap_; std::shared_ptr audioPolicyServerHandler_; std::string currentDeviceAddress_ = ""; std::string preSettingSpatialAddress_ = "NO_PREVIOUS_SET_DEVICE"; diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index 71d0890823..44e896ffaf 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -162,9 +162,6 @@ int32_t AudioSpatializationService::SetSpatializationEnabled(const sptr lock(spatializationServiceMutex_); preSettingSpatialAddress_ = address; if (addressToSpatialEnabledMap_[address].spatializationEnabled == enable) { - std::string deviceSpatialInfo = EnCapsulateDeviceInfo(address); - UpdateDeviceSpatialMapInfo(address, deviceSpatialInfo); - WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO); return SPATIALIZATION_SERVICE_OK; } addressToSpatialEnabledMap_[address].spatializationEnabled = enable; @@ -174,7 +171,7 @@ int32_t AudioSpatializationService::SetSpatializationEnabled(const sptr lock(spatializationServiceMutex_); preSettingSpatialAddress_ = address; if (addressToSpatialEnabledMap_[address].headTrackingEnabled == enable) { - std::string deviceSpatialInfo = EnCapsulateDeviceInfo(address); - UpdateDeviceSpatialMapInfo(address, deviceSpatialInfo); - WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO); return SPATIALIZATION_SERVICE_OK; } addressToSpatialEnabledMap_[address].headTrackingEnabled = enable; @@ -235,7 +229,7 @@ int32_t AudioSpatializationService::SetHeadTrackingEnabled(const sptr lock(spatializationServiceMutex_); + std::string deviceSpatialInfo = EnCapsulateDeviceInfo(macAddress); + UpdateDeviceSpatialMapInfo(macAddress, deviceSpatialInfo); + WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO, macAddress); if (currentDeviceAddress_ == macAddress) { AUDIO_INFO_LOG("no need to UpdateCurrentDevice"); return; @@ -519,13 +516,14 @@ int32_t AudioSpatializationService::UpdateSpatializationSceneType() return SPATIALIZATION_SERVICE_OK; } -void AudioSpatializationService::UpdateDeviceSpatialInfo(const std::string deviceSpatialInfo) +void AudioSpatializationService::UpdateDeviceSpatialInfo(const uint32_t deviceID, const std::string deviceSpatialInfo) { std::stringstream ss(deviceSpatialInfo); std::string token; std::string address; std::getline(ss, address, '|'); addressToDeviceSpatialInfoMap_[address] = deviceSpatialInfo; + addressToDeviceIDMap_[address] = deviceID; std::getline(ss, token, '|'); addressToSpatialEnabledMap_[address].spatializationEnabled = std::stoi(token); std::getline(ss, token, '|'); @@ -618,20 +616,21 @@ void AudioSpatializationService::InitSpatializationState() UpdateSpatializationSceneType(); } - for (int i = 1; i <= maxDevices_; ++i) { + for (uint32_t i = 1; i <= MAX_DEVICE_NUM; ++i) { ret = settingProvider.GetStringValue(SPATIALIZATION_STATE_SETTINGKEY + "_device" + std::to_string(i), deviceSpatialInfo); if (ret != SUCCESS) { - AUDIO_WARNING_LOG("Failed to read spatialization_state from setting db! Err: %{public}d", ret); + AUDIO_DEBUG_LOG("Failed to read spatialization_state_device%{public}d from setting db! Err: %{public}d", + i, ret); break; } - UpdateDeviceSpatialInfo(deviceSpatialInfo); + UpdateDeviceSpatialInfo(i, deviceSpatialInfo); } UpdateSpatializationStateReal(false); isLoadedfromDb_ = true; } -void AudioSpatializationService::WriteSpatializationStateToDb(WriteToDbOperation operation) +void AudioSpatializationService::WriteSpatializationStateToDb(WriteToDbOperation operation, const std::string address) { AudioSettingProvider &settingProvider = AudioSettingProvider::GetInstance(AUDIO_POLICY_SERVICE_ID); switch (operation) { @@ -648,13 +647,11 @@ void AudioSpatializationService::WriteSpatializationStateToDb(WriteToDbOperation break; } case WRITE_DEVICESPATIAL_INFO: { - int32_t i = 0; - for (const auto& entry : addressToDeviceSpatialInfoMap_) { - ErrCode ret = settingProvider.PutStringValue( - SPATIALIZATION_STATE_SETTINGKEY + "_device" + std::to_string(++i), entry.second); - CHECK_AND_RETURN_LOG(ret == SUCCESS, "Failed to write spatialization_state_device%{public}d to" - "setting db: %{public}d", i, ret); - } + uint32_t deviceID = addressToDeviceIDMap_[address]; + ErrCode ret = settingProvider.PutStringValue( SPATIALIZATION_STATE_SETTINGKEY + "_device" + + std::to_string(deviceID), addressToDeviceSpatialInfoMap_[address]); + CHECK_AND_RETURN_LOG(ret == SUCCESS, "Failed to write spatialization_state_device%{public}d to" + "setting db: %{public}d", deviceID, ret); break; } default: @@ -743,28 +740,29 @@ std::string AudioSpatializationService::EnCapsulateDeviceInfo(const std::string return value.str(); } -void AudioSpatializationService::removeOldestDevice() +std::string AudioSpatializationService::RemoveOldestDevice() { - std::string oldestAddr; - std::string oldestTimestamp; + std::string oldestAddr = ""; + std::string oldestTimestamp = ""; for (const auto& entry : addressToDeviceSpatialInfoMap_) { std::string currTimestamp = extractTimestamp(entry.second); - if (oldestTimestamp.empty() || currTimestamp < oldestTimestamp) { + if (oldestTimestamp.empty() || static_cast(currTimestamp) < static_cast(oldestTimestamp)) { oldestTimestamp = currTimestamp; oldestAddr = entry.first; } } - - if (!oldestAddr.empty()) { - addressToDeviceSpatialInfoMap_.erase(oldestAddr); - } + addressToDeviceSpatialInfoMap_.erase(oldestAddr); + return oldestAddr; } void AudioSpatializationService::UpdateDeviceSpatialMapInfo(std::string address, std::string deviceSpatialInfo) { if (!addressToDeviceSpatialInfoMap_.count(address)) { - if (addressToDeviceSpatialInfoMap_.size() >= maxDevices_) { - removeOldestDevice(); + if (addressToDeviceSpatialInfoMap_.size() >= MAX_DEVICE_NUM) { + std::string oldestAddr = RemoveOldestDevice(); + addressToDeviceIDMap_[address] = addressToDeviceIDMap_[oldestAddr]; + } else { + addressToDeviceIDMap_[address] = addressToDeviceSpatialInfoMap_.size() + 1; } } addressToDeviceSpatialInfoMap_[address] = deviceSpatialInfo; -- Gitee From aee1d848c70d356d194b19065729dd87ef3865af Mon Sep 17 00:00:00 2001 From: lizihao Date: Thu, 29 Aug 2024 13:38:06 +0800 Subject: [PATCH 11/23] bugfix Signed-off-by: lizihao --- .../spatialization/audio_spatialization_service.h | 2 +- .../spatialization/audio_spatialization_service.cpp | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h index a6c01f623c..b00ff0f280 100644 --- a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h +++ b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h @@ -98,7 +98,7 @@ private: void UpdateHeadTrackingDeviceState(bool outputDeviceChange, std::string preDeviceAddress = ""); void HandleHeadTrackingDeviceChange(const std::unordered_map &changeInfo); void UpdateDeviceSpatialInfo(const uint32_t deviceID, const std::string deviceSpatialInfo); - uint32_t UpdateDeviceSpatialMapInfo(const std::string address, const std::string deviceSpatialInfo); + void UpdateDeviceSpatialMapInfo(const std::string address, const std::string deviceSpatialInfo); std::string RemoveOldestDevice(); std::string GetCurrTimestamp(); std::string EnCapsulateDeviceInfo(const std::string address); diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index 44e896ffaf..2911cf548d 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -372,9 +372,11 @@ void AudioSpatializationService::UpdateCurrentDevice(const std::string macAddres { AUDIO_INFO_LOG("UpdateCurrentDevice Entered"); std::lock_guard lock(spatializationServiceMutex_); - std::string deviceSpatialInfo = EnCapsulateDeviceInfo(macAddress); - UpdateDeviceSpatialMapInfo(macAddress, deviceSpatialInfo); - WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO, macAddress); + if(!macAddress.empty()) { + std::string deviceSpatialInfo = EnCapsulateDeviceInfo(macAddress); + UpdateDeviceSpatialMapInfo(macAddress, deviceSpatialInfo); + WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO, macAddress); + } if (currentDeviceAddress_ == macAddress) { AUDIO_INFO_LOG("no need to UpdateCurrentDevice"); return; @@ -746,7 +748,7 @@ std::string AudioSpatializationService::RemoveOldestDevice() std::string oldestTimestamp = ""; for (const auto& entry : addressToDeviceSpatialInfoMap_) { std::string currTimestamp = extractTimestamp(entry.second); - if (oldestTimestamp.empty() || static_cast(currTimestamp) < static_cast(oldestTimestamp)) { + if (oldestTimestamp.empty() || std::stoul(currTimestamp) < std::stoul(oldestTimestamp)) { oldestTimestamp = currTimestamp; oldestAddr = entry.first; } -- Gitee From 496d2cbedf4972c17ac48bd38484b70151d59d29 Mon Sep 17 00:00:00 2001 From: lizihao Date: Mon, 2 Sep 2024 21:09:02 +0800 Subject: [PATCH 12/23] codecheck Signed-off-by: lizihao --- .../service/spatialization/audio_spatialization_service.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index 2911cf548d..504543588b 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -372,7 +372,7 @@ void AudioSpatializationService::UpdateCurrentDevice(const std::string macAddres { AUDIO_INFO_LOG("UpdateCurrentDevice Entered"); std::lock_guard lock(spatializationServiceMutex_); - if(!macAddress.empty()) { + if (!macAddress.empty()) { std::string deviceSpatialInfo = EnCapsulateDeviceInfo(macAddress); UpdateDeviceSpatialMapInfo(macAddress, deviceSpatialInfo); WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO, macAddress); @@ -650,7 +650,7 @@ void AudioSpatializationService::WriteSpatializationStateToDb(WriteToDbOperation } case WRITE_DEVICESPATIAL_INFO: { uint32_t deviceID = addressToDeviceIDMap_[address]; - ErrCode ret = settingProvider.PutStringValue( SPATIALIZATION_STATE_SETTINGKEY + "_device" + + ErrCode ret = settingProvider.PutStringValue(SPATIALIZATION_STATE_SETTINGKEY + "_device" + std::to_string(deviceID), addressToDeviceSpatialInfoMap_[address]); CHECK_AND_RETURN_LOG(ret == SUCCESS, "Failed to write spatialization_state_device%{public}d to" "setting db: %{public}d", deviceID, ret); -- Gitee From e65f76025e42b585b2a87f3584d69cb6cdd8a3dd Mon Sep 17 00:00:00 2001 From: lizihao Date: Tue, 3 Sep 2024 17:11:38 +0800 Subject: [PATCH 13/23] EncryptedAddress Signed-off-by: lizihao --- bundle.json | 3 +- services/audio_policy/BUILD.gn | 2 + .../audio_spatialization_service.h | 1 + .../audio_spatialization_service.cpp | 101 +++++++++++------- 4 files changed, 66 insertions(+), 41 deletions(-) diff --git a/bundle.json b/bundle.json index 10f87ad303..f1f0549c43 100644 --- a/bundle.json +++ b/bundle.json @@ -79,7 +79,8 @@ "third_party": [ "glib", "libsnd", - "libxml2" + "libxml2", + "openssl" ] }, "build": { diff --git a/services/audio_policy/BUILD.gn b/services/audio_policy/BUILD.gn index 8f6a955f9b..0900d888c9 100644 --- a/services/audio_policy/BUILD.gn +++ b/services/audio_policy/BUILD.gn @@ -62,6 +62,7 @@ config("audio_policy_public_config") { "../../frameworks/native/bluetoothclient", "../../interfaces/inner_api/native/audiocommon/include", "../../interfaces/inner_api/native/audiomanager/include", + "//third_partyopenssl/include/", ] cflags = [ @@ -180,6 +181,7 @@ ohos_shared_library("audio_policy_service") { "../audio_policy:audio_config.para.dac", "../audio_service:audio_client", "../audio_service:audio_common", + "//third_party/openssl:libcrypto_shared", ] external_deps = [ diff --git a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h index b00ff0f280..ff9a15bafb 100644 --- a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h +++ b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h @@ -103,6 +103,7 @@ private: std::string GetCurrTimestamp(); std::string EnCapsulateDeviceInfo(const std::string address); std::string extractTimestamp(const std::string deviceSpatialInfo); + std::string GetSha256EncryptHwHashAddress(const std::string& address); std::map addressToDeviceSpatialInfoMap_; std::map addressToDeviceIDMap_; std::shared_ptr audioPolicyServerHandler_; diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index 504543588b..13e44258cd 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -129,9 +129,10 @@ bool AudioSpatializationService::IsSpatializationEnabled() bool AudioSpatializationService::IsSpatializationEnabled(const std::string address) { std::lock_guard lock(spatializationServiceMutex_); - CHECK_AND_RETURN_RET_LOG(addressToSpatialEnabledMap_.count(address), false, + std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + CHECK_AND_RETURN_RET_LOG(addressToSpatialEnabledMap_.count(encryptedAddress), false, "specified address for set spatialization enabled is not in memory"); - return addressToSpatialEnabledMap_[address].spatializationEnabled; + return addressToSpatialEnabledMap_[encryptedAddress].spatializationEnabled; } int32_t AudioSpatializationService::SetSpatializationEnabled(const bool enable) @@ -157,14 +158,15 @@ int32_t AudioSpatializationService::SetSpatializationEnabled(const bool enable) int32_t AudioSpatializationService::SetSpatializationEnabled(const sptr &selectedAudioDevice, const bool enable) { - std::string address = selectedAudioDevice->macAddress_; - AUDIO_INFO_LOG("Device %{public}s Spatialization enabled is set to be: %{public}d", address.c_str(), enable); std::lock_guard lock(spatializationServiceMutex_); - preSettingSpatialAddress_ = address; - if (addressToSpatialEnabledMap_[address].spatializationEnabled == enable) { + std::string address = selectedAudioDevice->macAddress_; + std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + AUDIO_INFO_LOG("Device %{public}s Spatialization enabled is set to be: %{public}d", encryptedAddress.c_str(), enable); + preSettingSpatialAddress_ = encryptedAddress; + if (addressToSpatialEnabledMap_[encryptedAddress].spatializationEnabled == enable) { return SPATIALIZATION_SERVICE_OK; } - addressToSpatialEnabledMap_[address].spatializationEnabled = enable; + addressToSpatialEnabledMap_[encryptedAddress].spatializationEnabled = enable; HandleSpatializationEnabledChange(selectedAudioDevice, enable); if (UpdateSpatializationStateReal(false) != 0) { return ERROR; @@ -187,9 +189,10 @@ bool AudioSpatializationService::IsHeadTrackingEnabled() bool AudioSpatializationService::IsHeadTrackingEnabled(const std::string address) { std::lock_guard lock(spatializationServiceMutex_); - CHECK_AND_RETURN_RET_LOG(addressToSpatialEnabledMap_.count(address), false, + std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + CHECK_AND_RETURN_RET_LOG(addressToSpatialEnabledMap_.count(encryptedAddress), false, "specified address for set head tracking enabled is not in memory"); - return addressToSpatialEnabledMap_[address].headTrackingEnabled; + return addressToSpatialEnabledMap_[encryptedAddress].headTrackingEnabled; } int32_t AudioSpatializationService::SetHeadTrackingEnabled(const bool enable) @@ -215,14 +218,15 @@ int32_t AudioSpatializationService::SetHeadTrackingEnabled(const bool enable) int32_t AudioSpatializationService::SetHeadTrackingEnabled(const sptr &selectedAudioDevice, const bool enable) { - std::string address = selectedAudioDevice->macAddress_; - AUDIO_INFO_LOG("Device %{public}s Head tracking enabled is set to be: %{public}d", address.c_str(), enable); std::lock_guard lock(spatializationServiceMutex_); - preSettingSpatialAddress_ = address; - if (addressToSpatialEnabledMap_[address].headTrackingEnabled == enable) { + std::string address = selectedAudioDevice->macAddress_; + std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + AUDIO_INFO_LOG("Device %{public}s Head tracking enabled is set to be: %{public}d", encryptedAddress.c_str(), enable); + preSettingSpatialAddress_ = encryptedAddress; + if (addressToSpatialEnabledMap_[encryptedAddress].headTrackingEnabled == enable) { return SPATIALIZATION_SERVICE_OK; } - addressToSpatialEnabledMap_[address].headTrackingEnabled = enable; + addressToSpatialEnabledMap_[encryptedAddress].headTrackingEnabled = enable; HandleHeadTrackingEnabledChange(selectedAudioDevice, enable); if (UpdateSpatializationStateReal(false) != 0) { return ERROR; @@ -288,12 +292,12 @@ bool AudioSpatializationService::IsSpatializationSupported() bool AudioSpatializationService::IsSpatializationSupportedForDevice(const std::string address) { std::lock_guard lock(spatializationSupportedMutex_); - - if (!addressToSpatialDeviceStateMap_.count(address)) { + std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + if (!addressToSpatialDeviceStateMap_.count(encryptedAddress)) { AUDIO_INFO_LOG("specified address for spatialization is not in memory"); return false; } - return addressToSpatialDeviceStateMap_[address].isSpatializationSupported; + return addressToSpatialDeviceStateMap_[encryptedAddress].isSpatializationSupported; } bool AudioSpatializationService::IsHeadTrackingSupported() @@ -304,12 +308,12 @@ bool AudioSpatializationService::IsHeadTrackingSupported() bool AudioSpatializationService::IsHeadTrackingSupportedForDevice(const std::string address) { std::lock_guard lock(spatializationSupportedMutex_); - - if (!addressToSpatialDeviceStateMap_.count(address)) { + std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + if (!addressToSpatialDeviceStateMap_.count(encryptedAddress)) { AUDIO_INFO_LOG("specified address for head tracking is not in memory"); return false; } - return addressToSpatialDeviceStateMap_[address].isHeadTrackingSupported; + return addressToSpatialDeviceStateMap_[encryptedAddress].isHeadTrackingSupported; } int32_t AudioSpatializationService::UpdateSpatialDeviceState(const AudioSpatialDeviceState audioSpatialDeviceState) @@ -318,14 +322,15 @@ int32_t AudioSpatializationService::UpdateSpatialDeviceState(const AudioSpatialD "isSpatializationSupported = %{public}d, isHeadTrackingSupported = %{public}d", audioSpatialDeviceState.isSpatializationSupported, audioSpatialDeviceState.isHeadTrackingSupported); { + std::string encryptedAddress = GetSha256EncryptHwHashAddress(audioSpatialDeviceState.address); std::lock_guard lock(spatializationSupportedMutex_); - if (addressToSpatialDeviceStateMap_.count(audioSpatialDeviceState.address) > 0 && - IsAudioSpatialDeviceStateEqual(addressToSpatialDeviceStateMap_[audioSpatialDeviceState.address], + if (addressToSpatialDeviceStateMap_.count(encryptedAddress) > 0 && + IsAudioSpatialDeviceStateEqual(addressToSpatialDeviceStateMap_[encryptedAddress], audioSpatialDeviceState)) { AUDIO_INFO_LOG("no need to UpdateSpatialDeviceState"); return SPATIALIZATION_SERVICE_OK; } - addressToSpatialDeviceStateMap_[audioSpatialDeviceState.address] = audioSpatialDeviceState; + addressToSpatialDeviceStateMap_[encryptedAddress] = audioSpatialDeviceState; } AUDIO_INFO_LOG("currSpatialDeviceType_ = %{public}d, nextSpatialDeviceType_ = %{public}d", @@ -383,9 +388,9 @@ void AudioSpatializationService::UpdateCurrentDevice(const std::string macAddres } std::string preDeviceAddress = currentDeviceAddress_; currentDeviceAddress_ = macAddress; - - if (addressToSpatialDeviceStateMap_.find(currentDeviceAddress_) != addressToSpatialDeviceStateMap_.end()) { - auto nextSpatialDeviceType{ addressToSpatialDeviceStateMap_[currentDeviceAddress_].spatialDeviceType }; + std::string currEncryptedAddress_ = GetSha256EncryptHwHashAddress(currentDeviceAddress_); + if (addressToSpatialDeviceStateMap_.find(currEncryptedAddress_) != addressToSpatialDeviceStateMap_.end()) { + auto nextSpatialDeviceType{ addressToSpatialDeviceStateMap_[currEncryptedAddress_].spatialDeviceType }; AUDIO_INFO_LOG("currSpatialDeviceType_ = %{public}d, nextSpatialDeviceType_ = %{public}d", currSpatialDeviceType_, nextSpatialDeviceType); if (nextSpatialDeviceType != currSpatialDeviceType_) { @@ -459,15 +464,16 @@ int32_t AudioSpatializationService::UpdateSpatializationStateReal(bool outputDev { bool spatializationEnabled = false; bool headTrackingEnabled = false; + std::string currEncryptedAddress_ = GetSha256EncryptHwHashAddress(currentDeviceAddress_); if (preSettingSpatialAddress_ == "NO_PREVIOUS_SET_DEVICE") { spatializationEnabled = spatializationStateFlag_.spatializationEnabled && IsSpatializationSupported() && IsSpatializationSupportedForDevice(currentDeviceAddress_); headTrackingEnabled = spatializationStateFlag_.headTrackingEnabled && IsHeadTrackingSupported() && IsHeadTrackingSupportedForDevice(currentDeviceAddress_) && spatializationEnabled; } else { - spatializationEnabled = addressToSpatialEnabledMap_[currentDeviceAddress_].spatializationEnabled && + spatializationEnabled = addressToSpatialEnabledMap_[currEncryptedAddress_].spatializationEnabled && IsSpatializationSupported() && IsSpatializationSupportedForDevice(currentDeviceAddress_); - headTrackingEnabled = addressToSpatialEnabledMap_[currentDeviceAddress_].headTrackingEnabled && + headTrackingEnabled = addressToSpatialEnabledMap_[currEncryptedAddress_].headTrackingEnabled && IsHeadTrackingSupported() && IsHeadTrackingSupportedForDevice(currentDeviceAddress_) && spatializationEnabled; } @@ -649,9 +655,10 @@ void AudioSpatializationService::WriteSpatializationStateToDb(WriteToDbOperation break; } case WRITE_DEVICESPATIAL_INFO: { - uint32_t deviceID = addressToDeviceIDMap_[address]; + std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + uint32_t deviceID = addressToDeviceIDMap_[encryptedAddress]; ErrCode ret = settingProvider.PutStringValue(SPATIALIZATION_STATE_SETTINGKEY + "_device" + - std::to_string(deviceID), addressToDeviceSpatialInfoMap_[address]); + std::to_string(deviceID), addressToDeviceSpatialInfoMap_[encryptedAddress]); CHECK_AND_RETURN_LOG(ret == SUCCESS, "Failed to write spatialization_state_device%{public}d to" "setting db: %{public}d", deviceID, ret); break; @@ -720,6 +727,18 @@ std::string AudioSpatializationService::GetCurrTimestamp() return oss.str(); } +std::string AudioSpatializationService::GetSha256EncryptHwHashAddress(const std::string& address) +{ + unsigned char hash[SHA256_DIGEST_LENGTH]; + SHA256(reinterpret_cast(address.c_str()), address.sie(), hash); + std::stringstream ss; + for (int i = 0; i < SHA256_DIGEST_LENGTH; ++i) + { + ss << std::hex << std::setw(2) << std::setfill('0') << (int)hash[i]; + } + return ss.str(); +} + std::string AudioSpatializationService::extractTimestamp(const std::string deviceSpatialInfo) { size_t pos = deviceSpatialInfo.rfind("|"); @@ -732,12 +751,13 @@ std::string AudioSpatializationService::extractTimestamp(const std::string devic std::string AudioSpatializationService::EnCapsulateDeviceInfo(const std::string address) { std::stringstream value; - value << address; - value << "|" << addressToSpatialEnabledMap_[address].spatializationEnabled; - value << "|" << addressToSpatialEnabledMap_[address].headTrackingEnabled; - value << "|" << addressToSpatialDeviceStateMap_[address].isSpatializationSupported; - value << "|" << addressToSpatialDeviceStateMap_[address].isHeadTrackingSupported; - value << "|" << addressToSpatialDeviceStateMap_[address].spatialDeviceType; + std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + value << encryptedAddress; + value << "|" << addressToSpatialEnabledMap_[encryptedAddress].spatializationEnabled; + value << "|" << addressToSpatialEnabledMap_[encryptedAddress].headTrackingEnabled; + value << "|" << addressToSpatialDeviceStateMap_[encryptedAddress].isSpatializationSupported; + value << "|" << addressToSpatialDeviceStateMap_[encryptedAddress].isHeadTrackingSupported; + value << "|" << addressToSpatialDeviceStateMap_[encryptedAddress].spatialDeviceType; value << "|" << GetCurrTimestamp(); return value.str(); } @@ -759,15 +779,16 @@ std::string AudioSpatializationService::RemoveOldestDevice() void AudioSpatializationService::UpdateDeviceSpatialMapInfo(std::string address, std::string deviceSpatialInfo) { - if (!addressToDeviceSpatialInfoMap_.count(address)) { + std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + if (!addressToDeviceSpatialInfoMap_.count(encryptedAddress)) { if (addressToDeviceSpatialInfoMap_.size() >= MAX_DEVICE_NUM) { std::string oldestAddr = RemoveOldestDevice(); - addressToDeviceIDMap_[address] = addressToDeviceIDMap_[oldestAddr]; + addressToDeviceIDMap_[encryptedAddress] = addressToDeviceIDMap_[oldestAddr]; } else { - addressToDeviceIDMap_[address] = addressToDeviceSpatialInfoMap_.size() + 1; + addressToDeviceIDMap_[encryptedAddress] = addressToDeviceSpatialInfoMap_.size() + 1; } } - addressToDeviceSpatialInfoMap_[address] = deviceSpatialInfo; + addressToDeviceSpatialInfoMap_[encryptedAddress] = deviceSpatialInfo; } } // namespace AudioStandard } // namespace OHOS -- Gitee From 1ee15fd3f2471c3536f11f7df784b60a508be694 Mon Sep 17 00:00:00 2001 From: lizihao Date: Wed, 4 Sep 2024 10:00:36 +0800 Subject: [PATCH 14/23] codecheck Signed-off-by: lizihao --- .../spatialization/audio_spatialization_service.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index 13e44258cd..debf3f1f2a 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -16,6 +16,7 @@ #define LOG_TAG "AudioSpatializationService" #endif +#include #include "audio_spatialization_service.h" #include "iservice_registry.h" @@ -161,7 +162,8 @@ int32_t AudioSpatializationService::SetSpatializationEnabled(const sptr lock(spatializationServiceMutex_); std::string address = selectedAudioDevice->macAddress_; std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); - AUDIO_INFO_LOG("Device %{public}s Spatialization enabled is set to be: %{public}d", encryptedAddress.c_str(), enable); + AUDIO_INFO_LOG("Device %{public}s SpatializationEnabled is set to be: %{public}d", encryptedAddress.c_str(), + enable); preSettingSpatialAddress_ = encryptedAddress; if (addressToSpatialEnabledMap_[encryptedAddress].spatializationEnabled == enable) { return SPATIALIZATION_SERVICE_OK; @@ -221,7 +223,7 @@ int32_t AudioSpatializationService::SetHeadTrackingEnabled(const sptr lock(spatializationServiceMutex_); std::string address = selectedAudioDevice->macAddress_; std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); - AUDIO_INFO_LOG("Device %{public}s Head tracking enabled is set to be: %{public}d", encryptedAddress.c_str(), enable); + AUDIO_INFO_LOG("Device %{public}s HeadTrackingEnabled is set to be: %{public}d", encryptedAddress.c_str(), enable); preSettingSpatialAddress_ = encryptedAddress; if (addressToSpatialEnabledMap_[encryptedAddress].headTrackingEnabled == enable) { return SPATIALIZATION_SERVICE_OK; @@ -730,7 +732,7 @@ std::string AudioSpatializationService::GetCurrTimestamp() std::string AudioSpatializationService::GetSha256EncryptHwHashAddress(const std::string& address) { unsigned char hash[SHA256_DIGEST_LENGTH]; - SHA256(reinterpret_cast(address.c_str()), address.sie(), hash); + SHA256(reinterpret_cast(address.c_str()), address.size(), hash); std::stringstream ss; for (int i = 0; i < SHA256_DIGEST_LENGTH; ++i) { @@ -774,6 +776,7 @@ std::string AudioSpatializationService::RemoveOldestDevice() } } addressToDeviceSpatialInfoMap_.erase(oldestAddr); + AUDIO_INFO_LOG("Connection devices exceeded the limit, device %{public}s has been removed", oldestAddr.c_str()); return oldestAddr; } -- Gitee From c10140278a8d9b3c908b07dbfaec50e149ebb6d0 Mon Sep 17 00:00:00 2001 From: lizihao Date: Wed, 4 Sep 2024 10:10:52 +0800 Subject: [PATCH 15/23] codecheck Signed-off-by: lizihao --- .../service/spatialization/audio_spatialization_service.h | 2 +- .../service/spatialization/audio_spatialization_service.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h index ff9a15bafb..062532e107 100644 --- a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h +++ b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h @@ -102,7 +102,7 @@ private: std::string RemoveOldestDevice(); std::string GetCurrTimestamp(); std::string EnCapsulateDeviceInfo(const std::string address); - std::string extractTimestamp(const std::string deviceSpatialInfo); + std::string ExtractTimestamp(const std::string deviceSpatialInfo); std::string GetSha256EncryptHwHashAddress(const std::string& address); std::map addressToDeviceSpatialInfoMap_; std::map addressToDeviceIDMap_; diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index debf3f1f2a..8b6e0da94d 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -741,7 +741,7 @@ std::string AudioSpatializationService::GetSha256EncryptHwHashAddress(const std: return ss.str(); } -std::string AudioSpatializationService::extractTimestamp(const std::string deviceSpatialInfo) +std::string AudioSpatializationService::ExtractTimestamp(const std::string deviceSpatialInfo) { size_t pos = deviceSpatialInfo.rfind("|"); if (pos != std::string::npos) { @@ -769,7 +769,7 @@ std::string AudioSpatializationService::RemoveOldestDevice() std::string oldestAddr = ""; std::string oldestTimestamp = ""; for (const auto& entry : addressToDeviceSpatialInfoMap_) { - std::string currTimestamp = extractTimestamp(entry.second); + std::string currTimestamp = ExtractTimestamp(entry.second); if (oldestTimestamp.empty() || std::stoul(currTimestamp) < std::stoul(oldestTimestamp)) { oldestTimestamp = currTimestamp; oldestAddr = entry.first; -- Gitee From 73150707c6134f2306b09c12a9264366caf6fcaf Mon Sep 17 00:00:00 2001 From: lizihao Date: Wed, 4 Sep 2024 10:31:32 +0800 Subject: [PATCH 16/23] codecheck Signed-off-by: lizihao --- .../service/spatialization/audio_spatialization_service.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index 8b6e0da94d..d54f975de8 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -731,12 +731,12 @@ std::string AudioSpatializationService::GetCurrTimestamp() std::string AudioSpatializationService::GetSha256EncryptHwHashAddress(const std::string& address) { + const int32_t HexWidth = 2; unsigned char hash[SHA256_DIGEST_LENGTH]; SHA256(reinterpret_cast(address.c_str()), address.size(), hash); std::stringstream ss; - for (int i = 0; i < SHA256_DIGEST_LENGTH; ++i) - { - ss << std::hex << std::setw(2) << std::setfill('0') << (int)hash[i]; + for (int i = 0; i < SHA256_DIGEST_LENGTH; ++i) { + ss << std::hex << std::setw(HexWidth) << std::setfill('0') << (int)hash[i]; } return ss.str(); } -- Gitee From b11091ad770125042836852c79a32d781e607d70 Mon Sep 17 00:00:00 2001 From: lizihao Date: Wed, 4 Sep 2024 10:43:42 +0800 Subject: [PATCH 17/23] bugfix Signed-off-by: lizihao --- services/audio_policy/BUILD.gn | 2 +- .../service/spatialization/audio_spatialization_service.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/services/audio_policy/BUILD.gn b/services/audio_policy/BUILD.gn index 0900d888c9..0e0d7dccc1 100644 --- a/services/audio_policy/BUILD.gn +++ b/services/audio_policy/BUILD.gn @@ -62,7 +62,7 @@ config("audio_policy_public_config") { "../../frameworks/native/bluetoothclient", "../../interfaces/inner_api/native/audiocommon/include", "../../interfaces/inner_api/native/audiomanager/include", - "//third_partyopenssl/include/", + "//third_party/openssl/include/", ] cflags = [ diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index d54f975de8..ac8716930e 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -735,8 +735,8 @@ std::string AudioSpatializationService::GetSha256EncryptHwHashAddress(const std: unsigned char hash[SHA256_DIGEST_LENGTH]; SHA256(reinterpret_cast(address.c_str()), address.size(), hash); std::stringstream ss; - for (int i = 0; i < SHA256_DIGEST_LENGTH; ++i) { - ss << std::hex << std::setw(HexWidth) << std::setfill('0') << (int)hash[i]; + for (int32_t i = 0; i < SHA256_DIGEST_LENGTH; ++i) { + ss << std::hex << std::setw(HexWidth) << std::setfill('0') << (int32_t)hash[i]; } return ss.str(); } -- Gitee From 11ca8c78b6fcd00b1f9cf463046533624b59421c Mon Sep 17 00:00:00 2001 From: lizihao Date: Wed, 4 Sep 2024 11:11:59 +0800 Subject: [PATCH 18/23] codecheck Signed-off-by: lizihao --- services/audio_policy/BUILD.gn | 1 - 1 file changed, 1 deletion(-) diff --git a/services/audio_policy/BUILD.gn b/services/audio_policy/BUILD.gn index 0e0d7dccc1..77ab788ec7 100644 --- a/services/audio_policy/BUILD.gn +++ b/services/audio_policy/BUILD.gn @@ -62,7 +62,6 @@ config("audio_policy_public_config") { "../../frameworks/native/bluetoothclient", "../../interfaces/inner_api/native/audiocommon/include", "../../interfaces/inner_api/native/audiomanager/include", - "//third_party/openssl/include/", ] cflags = [ -- Gitee From 2753264b95f4412cf9cd9635d86b638eeba2e6c9 Mon Sep 17 00:00:00 2001 From: lizihao Date: Wed, 4 Sep 2024 06:18:33 +0000 Subject: [PATCH 19/23] codecheck Signed-off-by: lizihao --- .../service/spatialization/audio_spatialization_service.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h index 062532e107..17ca75dc45 100644 --- a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h +++ b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h @@ -103,7 +103,7 @@ private: std::string GetCurrTimestamp(); std::string EnCapsulateDeviceInfo(const std::string address); std::string ExtractTimestamp(const std::string deviceSpatialInfo); - std::string GetSha256EncryptHwHashAddress(const std::string& address); + std::string GetSha256EncryptAddress(const std::string& address); std::map addressToDeviceSpatialInfoMap_; std::map addressToDeviceIDMap_; std::shared_ptr audioPolicyServerHandler_; -- Gitee From 4152aad09b2967bc0aa3cc35f7b13ded6525e5f6 Mon Sep 17 00:00:00 2001 From: lizihao Date: Wed, 4 Sep 2024 07:45:17 +0000 Subject: [PATCH 20/23] codecheck Signed-off-by: lizihao --- .../audio_spatialization_service.cpp | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index ac8716930e..d3ce8e503e 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -130,7 +130,7 @@ bool AudioSpatializationService::IsSpatializationEnabled() bool AudioSpatializationService::IsSpatializationEnabled(const std::string address) { std::lock_guard lock(spatializationServiceMutex_); - std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + std::string encryptedAddress = GetSha256EncryptAddress(address); CHECK_AND_RETURN_RET_LOG(addressToSpatialEnabledMap_.count(encryptedAddress), false, "specified address for set spatialization enabled is not in memory"); return addressToSpatialEnabledMap_[encryptedAddress].spatializationEnabled; @@ -161,7 +161,7 @@ int32_t AudioSpatializationService::SetSpatializationEnabled(const sptr lock(spatializationServiceMutex_); std::string address = selectedAudioDevice->macAddress_; - std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + std::string encryptedAddress = GetSha256EncryptAddress(address); AUDIO_INFO_LOG("Device %{public}s SpatializationEnabled is set to be: %{public}d", encryptedAddress.c_str(), enable); preSettingSpatialAddress_ = encryptedAddress; @@ -191,7 +191,7 @@ bool AudioSpatializationService::IsHeadTrackingEnabled() bool AudioSpatializationService::IsHeadTrackingEnabled(const std::string address) { std::lock_guard lock(spatializationServiceMutex_); - std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + std::string encryptedAddress = GetSha256EncryptAddress(address); CHECK_AND_RETURN_RET_LOG(addressToSpatialEnabledMap_.count(encryptedAddress), false, "specified address for set head tracking enabled is not in memory"); return addressToSpatialEnabledMap_[encryptedAddress].headTrackingEnabled; @@ -222,7 +222,7 @@ int32_t AudioSpatializationService::SetHeadTrackingEnabled(const sptr lock(spatializationServiceMutex_); std::string address = selectedAudioDevice->macAddress_; - std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + std::string encryptedAddress = GetSha256EncryptAddress(address); AUDIO_INFO_LOG("Device %{public}s HeadTrackingEnabled is set to be: %{public}d", encryptedAddress.c_str(), enable); preSettingSpatialAddress_ = encryptedAddress; if (addressToSpatialEnabledMap_[encryptedAddress].headTrackingEnabled == enable) { @@ -294,7 +294,7 @@ bool AudioSpatializationService::IsSpatializationSupported() bool AudioSpatializationService::IsSpatializationSupportedForDevice(const std::string address) { std::lock_guard lock(spatializationSupportedMutex_); - std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + std::string encryptedAddress = GetSha256EncryptAddress(address); if (!addressToSpatialDeviceStateMap_.count(encryptedAddress)) { AUDIO_INFO_LOG("specified address for spatialization is not in memory"); return false; @@ -310,7 +310,7 @@ bool AudioSpatializationService::IsHeadTrackingSupported() bool AudioSpatializationService::IsHeadTrackingSupportedForDevice(const std::string address) { std::lock_guard lock(spatializationSupportedMutex_); - std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + std::string encryptedAddress = GetSha256EncryptAddress(address); if (!addressToSpatialDeviceStateMap_.count(encryptedAddress)) { AUDIO_INFO_LOG("specified address for head tracking is not in memory"); return false; @@ -324,7 +324,7 @@ int32_t AudioSpatializationService::UpdateSpatialDeviceState(const AudioSpatialD "isSpatializationSupported = %{public}d, isHeadTrackingSupported = %{public}d", audioSpatialDeviceState.isSpatializationSupported, audioSpatialDeviceState.isHeadTrackingSupported); { - std::string encryptedAddress = GetSha256EncryptHwHashAddress(audioSpatialDeviceState.address); + std::string encryptedAddress = GetSha256EncryptAddress(audioSpatialDeviceState.address); std::lock_guard lock(spatializationSupportedMutex_); if (addressToSpatialDeviceStateMap_.count(encryptedAddress) > 0 && IsAudioSpatialDeviceStateEqual(addressToSpatialDeviceStateMap_[encryptedAddress], @@ -390,7 +390,7 @@ void AudioSpatializationService::UpdateCurrentDevice(const std::string macAddres } std::string preDeviceAddress = currentDeviceAddress_; currentDeviceAddress_ = macAddress; - std::string currEncryptedAddress_ = GetSha256EncryptHwHashAddress(currentDeviceAddress_); + std::string currEncryptedAddress_ = GetSha256EncryptAddress(currentDeviceAddress_); if (addressToSpatialDeviceStateMap_.find(currEncryptedAddress_) != addressToSpatialDeviceStateMap_.end()) { auto nextSpatialDeviceType{ addressToSpatialDeviceStateMap_[currEncryptedAddress_].spatialDeviceType }; AUDIO_INFO_LOG("currSpatialDeviceType_ = %{public}d, nextSpatialDeviceType_ = %{public}d", @@ -466,7 +466,7 @@ int32_t AudioSpatializationService::UpdateSpatializationStateReal(bool outputDev { bool spatializationEnabled = false; bool headTrackingEnabled = false; - std::string currEncryptedAddress_ = GetSha256EncryptHwHashAddress(currentDeviceAddress_); + std::string currEncryptedAddress_ = GetSha256EncryptAddress(currentDeviceAddress_); if (preSettingSpatialAddress_ == "NO_PREVIOUS_SET_DEVICE") { spatializationEnabled = spatializationStateFlag_.spatializationEnabled && IsSpatializationSupported() && IsSpatializationSupportedForDevice(currentDeviceAddress_); @@ -657,7 +657,7 @@ void AudioSpatializationService::WriteSpatializationStateToDb(WriteToDbOperation break; } case WRITE_DEVICESPATIAL_INFO: { - std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + std::string encryptedAddress = GetSha256EncryptAddress(address); uint32_t deviceID = addressToDeviceIDMap_[encryptedAddress]; ErrCode ret = settingProvider.PutStringValue(SPATIALIZATION_STATE_SETTINGKEY + "_device" + std::to_string(deviceID), addressToDeviceSpatialInfoMap_[encryptedAddress]); @@ -729,7 +729,7 @@ std::string AudioSpatializationService::GetCurrTimestamp() return oss.str(); } -std::string AudioSpatializationService::GetSha256EncryptHwHashAddress(const std::string& address) +std::string AudioSpatializationService::GetSha256EncryptAddress(const std::string& address) { const int32_t HexWidth = 2; unsigned char hash[SHA256_DIGEST_LENGTH]; @@ -753,7 +753,7 @@ std::string AudioSpatializationService::ExtractTimestamp(const std::string devic std::string AudioSpatializationService::EnCapsulateDeviceInfo(const std::string address) { std::stringstream value; - std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + std::string encryptedAddress = GetSha256EncryptAddress(address); value << encryptedAddress; value << "|" << addressToSpatialEnabledMap_[encryptedAddress].spatializationEnabled; value << "|" << addressToSpatialEnabledMap_[encryptedAddress].headTrackingEnabled; @@ -782,7 +782,7 @@ std::string AudioSpatializationService::RemoveOldestDevice() void AudioSpatializationService::UpdateDeviceSpatialMapInfo(std::string address, std::string deviceSpatialInfo) { - std::string encryptedAddress = GetSha256EncryptHwHashAddress(address); + std::string encryptedAddress = GetSha256EncryptAddress(address); if (!addressToDeviceSpatialInfoMap_.count(encryptedAddress)) { if (addressToDeviceSpatialInfoMap_.size() >= MAX_DEVICE_NUM) { std::string oldestAddr = RemoveOldestDevice(); -- Gitee From 8ffefb39491b224cd5bcb1c377a8ac44abe927c7 Mon Sep 17 00:00:00 2001 From: lizihao Date: Wed, 4 Sep 2024 08:31:36 +0000 Subject: [PATCH 21/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9build.gn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lizihao --- services/audio_policy/BUILD.gn | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/audio_policy/BUILD.gn b/services/audio_policy/BUILD.gn index 77ab788ec7..a338386324 100644 --- a/services/audio_policy/BUILD.gn +++ b/services/audio_policy/BUILD.gn @@ -180,7 +180,6 @@ ohos_shared_library("audio_policy_service") { "../audio_policy:audio_config.para.dac", "../audio_service:audio_client", "../audio_service:audio_common", - "//third_party/openssl:libcrypto_shared", ] external_deps = [ @@ -225,7 +224,10 @@ ohos_shared_library("audio_policy_service") { "samgr:samgr_proxy", ] - public_external_deps = [ "libxml2:libxml2" ] + public_external_deps = [ + "libxml2:libxml2", + "openssl:libcrypto_shared", + ] if (audio_framework_config_policy_enable) { defines += [ "USE_CONFIG_POLICY" ] -- Gitee From 4032ea86793b09f54fb7b0a3f36aeff7330cedc5 Mon Sep 17 00:00:00 2001 From: lizihao Date: Wed, 4 Sep 2024 08:32:54 +0000 Subject: [PATCH 22/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9service.h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lizihao --- .../service/spatialization/audio_spatialization_service.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h index 17ca75dc45..5f328955ad 100644 --- a/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h +++ b/services/audio_policy/server/include/service/spatialization/audio_spatialization_service.h @@ -35,7 +35,6 @@ namespace OHOS { namespace AudioStandard { -#define MAX_DEVICE_NUM 10 class AudioSpatializationService { public: static AudioSpatializationService& GetAudioSpatializationService() @@ -88,6 +87,7 @@ private: WRITE_SPATIALIZATION_SCENE = 1, WRITE_DEVICESPATIAL_INFO = 2, }; + static constexpr uint32_t MAX_DEVICE_NUM = 10; int32_t UpdateSpatializationStateReal(bool outputDeviceChange, std::string preDeviceAddress = ""); int32_t UpdateSpatializationState(); int32_t UpdateSpatializationSceneType(); @@ -101,7 +101,7 @@ private: void UpdateDeviceSpatialMapInfo(const std::string address, const std::string deviceSpatialInfo); std::string RemoveOldestDevice(); std::string GetCurrTimestamp(); - std::string EnCapsulateDeviceInfo(const std::string address); + std::string EncapsulateDeviceInfo(const std::string address); std::string ExtractTimestamp(const std::string deviceSpatialInfo); std::string GetSha256EncryptAddress(const std::string& address); std::map addressToDeviceSpatialInfoMap_; -- Gitee From 0637b91b89b1e79f08ab306ce047d2d88c0687dd Mon Sep 17 00:00:00 2001 From: lizihao Date: Wed, 4 Sep 2024 08:36:17 +0000 Subject: [PATCH 23/23] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=95=8F=E6=84=9F?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lizihao --- .../audio_spatialization_service.cpp | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp index d3ce8e503e..b95b4d11b3 100644 --- a/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp +++ b/services/audio_policy/server/src/service/spatialization/audio_spatialization_service.cpp @@ -162,8 +162,7 @@ int32_t AudioSpatializationService::SetSpatializationEnabled(const sptr lock(spatializationServiceMutex_); std::string address = selectedAudioDevice->macAddress_; std::string encryptedAddress = GetSha256EncryptAddress(address); - AUDIO_INFO_LOG("Device %{public}s SpatializationEnabled is set to be: %{public}d", encryptedAddress.c_str(), - enable); + AUDIO_INFO_LOG("Device SpatializationEnabled is set to be: %{public}d", enable); preSettingSpatialAddress_ = encryptedAddress; if (addressToSpatialEnabledMap_[encryptedAddress].spatializationEnabled == enable) { return SPATIALIZATION_SERVICE_OK; @@ -173,7 +172,7 @@ int32_t AudioSpatializationService::SetSpatializationEnabled(const sptr lock(spatializationServiceMutex_); std::string address = selectedAudioDevice->macAddress_; std::string encryptedAddress = GetSha256EncryptAddress(address); - AUDIO_INFO_LOG("Device %{public}s HeadTrackingEnabled is set to be: %{public}d", encryptedAddress.c_str(), enable); + AUDIO_INFO_LOG("Device HeadTrackingEnabled is set to be: %{public}d", enable); preSettingSpatialAddress_ = encryptedAddress; if (addressToSpatialEnabledMap_[encryptedAddress].headTrackingEnabled == enable) { return SPATIALIZATION_SERVICE_OK; @@ -233,7 +232,7 @@ int32_t AudioSpatializationService::SetHeadTrackingEnabled(const sptr &selectedAudioDevice, const bool &enabled) { - AUDIO_INFO_LOG("device %{public}s Spatialization enabled callback is triggered: state is %{public}d", - selectedAudioDevice->macAddress_.c_str(), enabled); + AUDIO_INFO_LOG("device Spatialization enabled callback is triggered: state is %{public}d", enabled); if (audioPolicyServerHandler_ != nullptr) { audioPolicyServerHandler_->SendSpatializatonEnabledChangeForAnyDeviceEvent(selectedAudioDevice, enabled); } @@ -268,8 +266,7 @@ void AudioSpatializationService::HandleHeadTrackingEnabledChange(const bool &ena void AudioSpatializationService::HandleHeadTrackingEnabledChange(const sptr &selectedAudioDevice, const bool &enabled) { - AUDIO_INFO_LOG("device %{public}s Head tracking enabled callback is triggered: state is %{public}d", - selectedAudioDevice->macAddress_.c_str(), enabled); + AUDIO_INFO_LOG("device Head tracking enabled callback is triggered: state is %{public}d", enabled); if (audioPolicyServerHandler_ != nullptr) { audioPolicyServerHandler_->SendHeadTrackingEnabledChangeForAnyDeviceEvent(selectedAudioDevice, enabled); } @@ -380,7 +377,7 @@ void AudioSpatializationService::UpdateCurrentDevice(const std::string macAddres AUDIO_INFO_LOG("UpdateCurrentDevice Entered"); std::lock_guard lock(spatializationServiceMutex_); if (!macAddress.empty()) { - std::string deviceSpatialInfo = EnCapsulateDeviceInfo(macAddress); + std::string deviceSpatialInfo = EncapsulateDeviceInfo(macAddress); UpdateDeviceSpatialMapInfo(macAddress, deviceSpatialInfo); WriteSpatializationStateToDb(WRITE_DEVICESPATIAL_INFO, macAddress); } @@ -750,7 +747,7 @@ std::string AudioSpatializationService::ExtractTimestamp(const std::string devic return ""; } -std::string AudioSpatializationService::EnCapsulateDeviceInfo(const std::string address) +std::string AudioSpatializationService::EncapsulateDeviceInfo(const std::string address) { std::stringstream value; std::string encryptedAddress = GetSha256EncryptAddress(address); @@ -776,7 +773,6 @@ std::string AudioSpatializationService::RemoveOldestDevice() } } addressToDeviceSpatialInfoMap_.erase(oldestAddr); - AUDIO_INFO_LOG("Connection devices exceeded the limit, device %{public}s has been removed", oldestAddr.c_str()); return oldestAddr; } -- Gitee