• 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_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