• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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