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_manager_proxy.h"
29 #include "audio_server_death_recipient.h"
30 #include "audio_policy_manager.h"
31
32 namespace OHOS {
33 namespace AudioStandard {
34 using namespace std;
35
AudioSpatializationManager()36 AudioSpatializationManager::AudioSpatializationManager()
37 {
38 AUDIO_DEBUG_LOG("AudioSpatializationManager start");
39 }
40
~AudioSpatializationManager()41 AudioSpatializationManager::~AudioSpatializationManager()
42 {
43 AUDIO_DEBUG_LOG("AudioSpatializationManager::~AudioSpatializationManager");
44 }
45
GetInstance()46 AudioSpatializationManager *AudioSpatializationManager::GetInstance()
47 {
48 static AudioSpatializationManager audioSpatializationManager;
49 return &audioSpatializationManager;
50 }
51
IsSpatializationEnabled()52 bool AudioSpatializationManager::IsSpatializationEnabled()
53 {
54 return AudioPolicyManager::GetInstance().IsSpatializationEnabled();
55 }
56
IsSpatializationEnabled(const std::shared_ptr<AudioDeviceDescriptor> & selectedAudioDevice)57 bool AudioSpatializationManager::IsSpatializationEnabled(
58 const std::shared_ptr<AudioDeviceDescriptor> &selectedAudioDevice)
59 {
60 return AudioPolicyManager::GetInstance().IsSpatializationEnabled(selectedAudioDevice->macAddress_);
61 }
62
IsSpatializationEnabledForCurrentDevice()63 bool AudioSpatializationManager::IsSpatializationEnabledForCurrentDevice()
64 {
65 return AudioPolicyManager::GetInstance().IsSpatializationEnabledForCurrentDevice();
66 }
67
SetSpatializationEnabled(const bool enable)68 int32_t AudioSpatializationManager::SetSpatializationEnabled(const bool enable)
69 {
70 return AudioPolicyManager::GetInstance().SetSpatializationEnabled(enable);
71 }
72
SetSpatializationEnabled(const std::shared_ptr<AudioDeviceDescriptor> & selectedAudioDevice,const bool enable)73 int32_t AudioSpatializationManager::SetSpatializationEnabled(
74 const std::shared_ptr<AudioDeviceDescriptor> &selectedAudioDevice, const bool enable)
75 {
76 return AudioPolicyManager::GetInstance().SetSpatializationEnabled(selectedAudioDevice, enable);
77 }
78
IsHeadTrackingEnabled()79 bool AudioSpatializationManager::IsHeadTrackingEnabled()
80 {
81 return AudioPolicyManager::GetInstance().IsHeadTrackingEnabled();
82 }
83
IsHeadTrackingEnabled(const std::shared_ptr<AudioDeviceDescriptor> & selectedAudioDevice)84 bool AudioSpatializationManager::IsHeadTrackingEnabled(
85 const std::shared_ptr<AudioDeviceDescriptor> &selectedAudioDevice)
86 {
87 return AudioPolicyManager::GetInstance().IsHeadTrackingEnabled(selectedAudioDevice->macAddress_);
88 }
89
SetHeadTrackingEnabled(const bool enable)90 int32_t AudioSpatializationManager::SetHeadTrackingEnabled(const bool enable)
91 {
92 return AudioPolicyManager::GetInstance().SetHeadTrackingEnabled(enable);
93 }
94
SetHeadTrackingEnabled(const std::shared_ptr<AudioDeviceDescriptor> & selectedAudioDevice,const bool enable)95 int32_t AudioSpatializationManager::SetHeadTrackingEnabled(
96 const std::shared_ptr<AudioDeviceDescriptor> &selectedAudioDevice, const bool enable)
97 {
98 return AudioPolicyManager::GetInstance().SetHeadTrackingEnabled(selectedAudioDevice, enable);
99 }
100
RegisterSpatializationEnabledEventListener(const std::shared_ptr<AudioSpatializationEnabledChangeCallback> & callback)101 int32_t AudioSpatializationManager::RegisterSpatializationEnabledEventListener(
102 const std::shared_ptr<AudioSpatializationEnabledChangeCallback> &callback)
103 {
104 CHECK_AND_RETURN_RET_LOG(callback != nullptr, ERR_INVALID_PARAM, "callback is null");
105 return AudioPolicyManager::GetInstance().RegisterSpatializationEnabledEventListener(callback);
106 }
107
RegisterSpatializationEnabledForCurrentDeviceEventListener(const std::shared_ptr<AudioSpatializationEnabledChangeForCurrentDeviceCallback> & callback)108 int32_t AudioSpatializationManager::RegisterSpatializationEnabledForCurrentDeviceEventListener(
109 const std::shared_ptr<AudioSpatializationEnabledChangeForCurrentDeviceCallback> &callback)
110 {
111 CHECK_AND_RETURN_RET_LOG(callback != nullptr, ERR_INVALID_PARAM, "callback is null");
112 return AudioPolicyManager::GetInstance().RegisterSpatializationEnabledForCurrentDeviceEventListener(callback);
113 }
114
RegisterHeadTrackingEnabledEventListener(const std::shared_ptr<AudioHeadTrackingEnabledChangeCallback> & callback)115 int32_t AudioSpatializationManager::RegisterHeadTrackingEnabledEventListener(
116 const std::shared_ptr<AudioHeadTrackingEnabledChangeCallback> &callback)
117 {
118 CHECK_AND_RETURN_RET_LOG(callback != nullptr, ERR_INVALID_PARAM, "callback is null");
119 return AudioPolicyManager::GetInstance().RegisterHeadTrackingEnabledEventListener(callback);
120 }
121
UnregisterSpatializationEnabledEventListener()122 int32_t AudioSpatializationManager::UnregisterSpatializationEnabledEventListener()
123 {
124 return AudioPolicyManager::GetInstance().UnregisterSpatializationEnabledEventListener();
125 }
126
UnregisterSpatializationEnabledForCurrentDeviceEventListener()127 int32_t AudioSpatializationManager::UnregisterSpatializationEnabledForCurrentDeviceEventListener()
128 {
129 return AudioPolicyManager::GetInstance().UnregisterSpatializationEnabledForCurrentDeviceEventListener();
130 }
131
UnregisterHeadTrackingEnabledEventListener()132 int32_t AudioSpatializationManager::UnregisterHeadTrackingEnabledEventListener()
133 {
134 return AudioPolicyManager::GetInstance().UnregisterHeadTrackingEnabledEventListener();
135 }
136
IsSpatializationSupported()137 bool AudioSpatializationManager::IsSpatializationSupported()
138 {
139 return AudioPolicyManager::GetInstance().IsSpatializationSupported();
140 }
141
IsSpatializationSupportedForDevice(const std::shared_ptr<AudioDeviceDescriptor> & selectedAudioDevice)142 bool AudioSpatializationManager::IsSpatializationSupportedForDevice(
143 const std::shared_ptr<AudioDeviceDescriptor> &selectedAudioDevice)
144 {
145 return AudioPolicyManager::GetInstance().IsSpatializationSupportedForDevice(selectedAudioDevice->macAddress_);
146 }
147
IsHeadTrackingSupported()148 bool AudioSpatializationManager::IsHeadTrackingSupported()
149 {
150 return AudioPolicyManager::GetInstance().IsHeadTrackingSupported();
151 }
152
IsHeadTrackingSupportedForDevice(const std::shared_ptr<AudioDeviceDescriptor> & selectedAudioDevice)153 bool AudioSpatializationManager::IsHeadTrackingSupportedForDevice(
154 const std::shared_ptr<AudioDeviceDescriptor> &selectedAudioDevice)
155 {
156 return AudioPolicyManager::GetInstance().IsHeadTrackingSupportedForDevice(selectedAudioDevice->macAddress_);
157 }
158
UpdateSpatialDeviceState(const AudioSpatialDeviceState audioSpatialDeviceState)159 int32_t AudioSpatializationManager::UpdateSpatialDeviceState(const AudioSpatialDeviceState audioSpatialDeviceState)
160 {
161 return AudioPolicyManager::GetInstance().UpdateSpatialDeviceState(audioSpatialDeviceState);
162 }
163
GetSpatializationSceneType()164 AudioSpatializationSceneType AudioSpatializationManager::GetSpatializationSceneType()
165 {
166 return AudioPolicyManager::GetInstance().GetSpatializationSceneType();
167 }
168
SetSpatializationSceneType(const AudioSpatializationSceneType spatializationSceneType)169 int32_t AudioSpatializationManager::SetSpatializationSceneType(
170 const AudioSpatializationSceneType spatializationSceneType)
171 {
172 return AudioPolicyManager::GetInstance().SetSpatializationSceneType(spatializationSceneType);
173 }
174
IsHeadTrackingDataRequested(const std::string & macAddress)175 bool AudioSpatializationManager::IsHeadTrackingDataRequested(const std::string &macAddress)
176 {
177 return AudioPolicyManager::GetInstance().IsHeadTrackingDataRequested(macAddress);
178 }
179
RegisterHeadTrackingDataRequestedEventListener(const std::string & macAddress,const std::shared_ptr<HeadTrackingDataRequestedChangeCallback> & callback)180 int32_t AudioSpatializationManager::RegisterHeadTrackingDataRequestedEventListener(const std::string &macAddress,
181 const std::shared_ptr<HeadTrackingDataRequestedChangeCallback> &callback)
182 {
183 return AudioPolicyManager::GetInstance().RegisterHeadTrackingDataRequestedEventListener(macAddress, callback);
184 }
185
UnregisterHeadTrackingDataRequestedEventListener(const std::string & macAddress)186 int32_t AudioSpatializationManager::UnregisterHeadTrackingDataRequestedEventListener(const std::string &macAddress)
187 {
188 return AudioPolicyManager::GetInstance().UnregisterHeadTrackingDataRequestedEventListener(macAddress);
189 }
190 } // namespace AudioStandard
191 } // namespace OHOS
192