1 /*
2 * Copyright (c) 2023-2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 #ifndef LOG_TAG
16 #define LOG_TAG "AudioSpatializationManager"
17 #endif
18
19 #include "audio_spatialization_manager.h"
20
21 #include "iservice_registry.h"
22 #include "system_ability_definition.h"
23 #include "bundle_mgr_interface.h"
24
25 #include "audio_service_log.h"
26 #include "audio_errors.h"
27 #include "audio_manager_base.h"
28 #include "audio_server_death_recipient.h"
29 #include "audio_policy_manager.h"
30
31 namespace OHOS {
32 namespace AudioStandard {
33 using namespace std;
34
AudioSpatializationManager()35 AudioSpatializationManager::AudioSpatializationManager()
36 {
37 AUDIO_DEBUG_LOG("AudioSpatializationManager start");
38 }
39
~AudioSpatializationManager()40 AudioSpatializationManager::~AudioSpatializationManager()
41 {
42 AUDIO_DEBUG_LOG("AudioSpatializationManager::~AudioSpatializationManager");
43 }
44
GetInstance()45 AudioSpatializationManager *AudioSpatializationManager::GetInstance()
46 {
47 static AudioSpatializationManager audioSpatializationManager;
48 return &audioSpatializationManager;
49 }
50
IsSpatializationEnabled()51 bool AudioSpatializationManager::IsSpatializationEnabled()
52 {
53 return AudioPolicyManager::GetInstance().IsSpatializationEnabled();
54 }
55
IsSpatializationEnabled(const std::shared_ptr<AudioDeviceDescriptor> & selectedAudioDevice)56 bool AudioSpatializationManager::IsSpatializationEnabled(
57 const std::shared_ptr<AudioDeviceDescriptor> &selectedAudioDevice)
58 {
59 return AudioPolicyManager::GetInstance().IsSpatializationEnabled(selectedAudioDevice->macAddress_);
60 }
61
IsSpatializationEnabledForCurrentDevice()62 bool AudioSpatializationManager::IsSpatializationEnabledForCurrentDevice()
63 {
64 return AudioPolicyManager::GetInstance().IsSpatializationEnabledForCurrentDevice();
65 }
66
SetSpatializationEnabled(const bool enable)67 int32_t AudioSpatializationManager::SetSpatializationEnabled(const bool enable)
68 {
69 return AudioPolicyManager::GetInstance().SetSpatializationEnabled(enable);
70 }
71
SetSpatializationEnabled(const std::shared_ptr<AudioDeviceDescriptor> & selectedAudioDevice,const bool enable)72 int32_t AudioSpatializationManager::SetSpatializationEnabled(
73 const std::shared_ptr<AudioDeviceDescriptor> &selectedAudioDevice, const bool enable)
74 {
75 return AudioPolicyManager::GetInstance().SetSpatializationEnabled(selectedAudioDevice, enable);
76 }
77
IsHeadTrackingEnabled()78 bool AudioSpatializationManager::IsHeadTrackingEnabled()
79 {
80 return AudioPolicyManager::GetInstance().IsHeadTrackingEnabled();
81 }
82
IsHeadTrackingEnabled(const std::shared_ptr<AudioDeviceDescriptor> & selectedAudioDevice)83 bool AudioSpatializationManager::IsHeadTrackingEnabled(
84 const std::shared_ptr<AudioDeviceDescriptor> &selectedAudioDevice)
85 {
86 return AudioPolicyManager::GetInstance().IsHeadTrackingEnabled(selectedAudioDevice->macAddress_);
87 }
88
SetHeadTrackingEnabled(const bool enable)89 int32_t AudioSpatializationManager::SetHeadTrackingEnabled(const bool enable)
90 {
91 return AudioPolicyManager::GetInstance().SetHeadTrackingEnabled(enable);
92 }
93
SetHeadTrackingEnabled(const std::shared_ptr<AudioDeviceDescriptor> & selectedAudioDevice,const bool enable)94 int32_t AudioSpatializationManager::SetHeadTrackingEnabled(
95 const std::shared_ptr<AudioDeviceDescriptor> &selectedAudioDevice, const bool enable)
96 {
97 return AudioPolicyManager::GetInstance().SetHeadTrackingEnabled(selectedAudioDevice, enable);
98 }
99
RegisterSpatializationEnabledEventListener(const std::shared_ptr<AudioSpatializationEnabledChangeCallback> & callback)100 int32_t AudioSpatializationManager::RegisterSpatializationEnabledEventListener(
101 const std::shared_ptr<AudioSpatializationEnabledChangeCallback> &callback)
102 {
103 CHECK_AND_RETURN_RET_LOG(callback != nullptr, ERR_INVALID_PARAM, "callback is null");
104 return AudioPolicyManager::GetInstance().RegisterSpatializationEnabledEventListener(callback);
105 }
106
RegisterSpatializationEnabledForCurrentDeviceEventListener(const std::shared_ptr<AudioSpatializationEnabledChangeForCurrentDeviceCallback> & callback)107 int32_t AudioSpatializationManager::RegisterSpatializationEnabledForCurrentDeviceEventListener(
108 const std::shared_ptr<AudioSpatializationEnabledChangeForCurrentDeviceCallback> &callback)
109 {
110 CHECK_AND_RETURN_RET_LOG(callback != nullptr, ERR_INVALID_PARAM, "callback is null");
111 return AudioPolicyManager::GetInstance().RegisterSpatializationEnabledForCurrentDeviceEventListener(callback);
112 }
113
RegisterHeadTrackingEnabledEventListener(const std::shared_ptr<AudioHeadTrackingEnabledChangeCallback> & callback)114 int32_t AudioSpatializationManager::RegisterHeadTrackingEnabledEventListener(
115 const std::shared_ptr<AudioHeadTrackingEnabledChangeCallback> &callback)
116 {
117 CHECK_AND_RETURN_RET_LOG(callback != nullptr, ERR_INVALID_PARAM, "callback is null");
118 return AudioPolicyManager::GetInstance().RegisterHeadTrackingEnabledEventListener(callback);
119 }
120
UnregisterSpatializationEnabledEventListener()121 int32_t AudioSpatializationManager::UnregisterSpatializationEnabledEventListener()
122 {
123 return AudioPolicyManager::GetInstance().UnregisterSpatializationEnabledEventListener();
124 }
125
UnregisterSpatializationEnabledForCurrentDeviceEventListener()126 int32_t AudioSpatializationManager::UnregisterSpatializationEnabledForCurrentDeviceEventListener()
127 {
128 return AudioPolicyManager::GetInstance().UnregisterSpatializationEnabledForCurrentDeviceEventListener();
129 }
130
UnregisterHeadTrackingEnabledEventListener()131 int32_t AudioSpatializationManager::UnregisterHeadTrackingEnabledEventListener()
132 {
133 return AudioPolicyManager::GetInstance().UnregisterHeadTrackingEnabledEventListener();
134 }
135
IsSpatializationSupported()136 bool AudioSpatializationManager::IsSpatializationSupported()
137 {
138 return AudioPolicyManager::GetInstance().IsSpatializationSupported();
139 }
140
IsSpatializationSupportedForDevice(const std::shared_ptr<AudioDeviceDescriptor> & selectedAudioDevice)141 bool AudioSpatializationManager::IsSpatializationSupportedForDevice(
142 const std::shared_ptr<AudioDeviceDescriptor> &selectedAudioDevice)
143 {
144 return AudioPolicyManager::GetInstance().IsSpatializationSupportedForDevice(selectedAudioDevice->macAddress_);
145 }
146
IsHeadTrackingSupported()147 bool AudioSpatializationManager::IsHeadTrackingSupported()
148 {
149 return AudioPolicyManager::GetInstance().IsHeadTrackingSupported();
150 }
151
IsHeadTrackingSupportedForDevice(const std::shared_ptr<AudioDeviceDescriptor> & selectedAudioDevice)152 bool AudioSpatializationManager::IsHeadTrackingSupportedForDevice(
153 const std::shared_ptr<AudioDeviceDescriptor> &selectedAudioDevice)
154 {
155 return AudioPolicyManager::GetInstance().IsHeadTrackingSupportedForDevice(selectedAudioDevice->macAddress_);
156 }
157
UpdateSpatialDeviceState(const AudioSpatialDeviceState audioSpatialDeviceState)158 int32_t AudioSpatializationManager::UpdateSpatialDeviceState(const AudioSpatialDeviceState audioSpatialDeviceState)
159 {
160 return AudioPolicyManager::GetInstance().UpdateSpatialDeviceState(audioSpatialDeviceState);
161 }
162
GetSpatializationSceneType()163 AudioSpatializationSceneType AudioSpatializationManager::GetSpatializationSceneType()
164 {
165 return AudioPolicyManager::GetInstance().GetSpatializationSceneType();
166 }
167
SetSpatializationSceneType(const AudioSpatializationSceneType spatializationSceneType)168 int32_t AudioSpatializationManager::SetSpatializationSceneType(
169 const AudioSpatializationSceneType spatializationSceneType)
170 {
171 return AudioPolicyManager::GetInstance().SetSpatializationSceneType(spatializationSceneType);
172 }
173
IsHeadTrackingDataRequested(const std::string & macAddress)174 bool AudioSpatializationManager::IsHeadTrackingDataRequested(const std::string &macAddress)
175 {
176 return AudioPolicyManager::GetInstance().IsHeadTrackingDataRequested(macAddress);
177 }
178
RegisterHeadTrackingDataRequestedEventListener(const std::string & macAddress,const std::shared_ptr<HeadTrackingDataRequestedChangeCallback> & callback)179 int32_t AudioSpatializationManager::RegisterHeadTrackingDataRequestedEventListener(const std::string &macAddress,
180 const std::shared_ptr<HeadTrackingDataRequestedChangeCallback> &callback)
181 {
182 return AudioPolicyManager::GetInstance().RegisterHeadTrackingDataRequestedEventListener(macAddress, callback);
183 }
184
UnregisterHeadTrackingDataRequestedEventListener(const std::string & macAddress)185 int32_t AudioSpatializationManager::UnregisterHeadTrackingDataRequestedEventListener(const std::string &macAddress)
186 {
187 return AudioPolicyManager::GetInstance().UnregisterHeadTrackingDataRequestedEventListener(macAddress);
188 }
189 } // namespace AudioStandard
190 } // namespace OHOS
191