1 /* 2 * Copyright (c) 2021-2024 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 16 #ifndef I_AUDIO_POLICY_BASE_H 17 #define I_AUDIO_POLICY_BASE_H 18 19 #include "audio_interrupt_callback.h" 20 #include "audio_policy_ipc_interface_code.h" 21 #include "ipc_types.h" 22 #include "iremote_broker.h" 23 #include "iremote_proxy.h" 24 #include "iremote_stub.h" 25 #include "audio_system_manager.h" 26 #include "audio_effect.h" 27 #include "microphone_descriptor.h" 28 29 namespace OHOS { 30 namespace AudioStandard { 31 using InternalDeviceType = DeviceType; 32 using InternalAudioCapturerOptions = AudioCapturerOptions; 33 34 class IAudioPolicy : public IRemoteBroker { 35 public: 36 37 virtual int32_t GetMaxVolumeLevel(AudioVolumeType volumeType) = 0; 38 39 virtual int32_t GetMinVolumeLevel(AudioVolumeType volumeType) = 0; 40 41 virtual int32_t SetSystemVolumeLevelLegacy(AudioVolumeType volumeType, int32_t volumeLevel) = 0; 42 43 virtual int32_t SetSystemVolumeLevel(AudioVolumeType volumeType, int32_t volumeLevel, int32_t volumeFlag = 0) = 0; 44 45 virtual AudioStreamType GetSystemActiveVolumeType(const int32_t clientUid) = 0; 46 47 virtual int32_t GetSystemVolumeLevel(AudioVolumeType volumeType) = 0; 48 49 virtual int32_t SetLowPowerVolume(int32_t streamId, float volume) = 0; 50 51 virtual float GetLowPowerVolume(int32_t streamId) = 0; 52 53 virtual float GetSingleStreamVolume(int32_t streamId) = 0; 54 55 virtual int32_t SetStreamMuteLegacy(AudioVolumeType volumeType, bool mute) = 0; 56 57 virtual int32_t SetStreamMute(AudioVolumeType volumeType, bool mute) = 0; 58 59 virtual bool GetStreamMute(AudioVolumeType volumeType) = 0; 60 61 virtual bool IsStreamActive(AudioVolumeType volumeType) = 0; 62 63 virtual std::vector<sptr<AudioDeviceDescriptor>> GetDevices(DeviceFlag deviceFlag) = 0; 64 65 virtual std::vector<sptr<AudioDeviceDescriptor>> GetDevicesInner(DeviceFlag deviceFlag) = 0; 66 67 virtual int32_t SetDeviceActive(InternalDeviceType deviceType, bool active) = 0; 68 69 virtual int32_t NotifyCapturerAdded(AudioCapturerInfo capturerInfo, AudioStreamInfo streamInfo, 70 uint32_t sessionId) = 0; 71 72 virtual bool IsDeviceActive(InternalDeviceType deviceType) = 0; 73 74 virtual DeviceType GetActiveOutputDevice() = 0; 75 76 virtual DeviceType GetActiveInputDevice() = 0; 77 78 #ifdef FEATURE_DTMF_TONE 79 virtual std::shared_ptr<ToneInfo> GetToneConfig(int32_t ltonetype) = 0; 80 81 virtual std::vector<int32_t> GetSupportedTones() = 0; 82 #endif 83 84 virtual int32_t SetRingerModeLegacy(AudioRingerMode ringMode) = 0; 85 86 virtual int32_t SetRingerMode(AudioRingerMode ringMode) = 0; 87 88 virtual AudioRingerMode GetRingerMode() = 0; 89 90 virtual int32_t SetAudioScene(AudioScene scene) = 0; 91 92 virtual int32_t SetMicrophoneMute(bool isMute) = 0; 93 94 virtual int32_t SetMicrophoneMuteAudioConfig(bool isMute) = 0; 95 96 virtual int32_t SetMicrophoneMutePersistent(const bool isMute, const PolicyType type) = 0; 97 98 virtual bool GetPersistentMicMuteState() = 0; 99 100 virtual bool IsMicrophoneMuteLegacy() = 0; 101 102 virtual bool IsMicrophoneMute() = 0; 103 104 virtual AudioScene GetAudioScene() = 0; 105 106 virtual int32_t ActivateAudioSession(const AudioSessionStrategy &strategy) = 0; 107 108 virtual int32_t DeactivateAudioSession() = 0; 109 110 virtual bool IsAudioSessionActivated() = 0; 111 112 virtual int32_t SetAudioInterruptCallback(const uint32_t sessionID, const sptr<IRemoteObject> &object, 113 uint32_t clientUid, const int32_t zoneID = 0 /* default value: 0 -- local device */) = 0; 114 115 virtual int32_t UnsetAudioInterruptCallback(const uint32_t sessionID, 116 const int32_t zoneID = 0 /* default value: 0 -- local device */) = 0; 117 118 virtual int32_t ActivateAudioInterrupt(const AudioInterrupt &audioInterrupt, 119 const int32_t zoneID = 0 /* default value: 0 -- local device */, 120 const bool isUpdatedAudioStrategy = false /* default value: false -- is update audio strategy */) = 0; 121 122 virtual int32_t DeactivateAudioInterrupt(const AudioInterrupt &audioInterrupt, 123 const int32_t zoneID = 0 /* default value: 0 -- local device */) = 0; 124 125 virtual int32_t SetAudioManagerInterruptCallback(const int32_t clientId, const sptr<IRemoteObject> &object) = 0; 126 127 virtual int32_t UnsetAudioManagerInterruptCallback(const int32_t clientId) = 0; 128 129 virtual int32_t SetQueryClientTypeCallback(const sptr<IRemoteObject> &object) = 0; 130 131 virtual int32_t RequestAudioFocus(const int32_t clientId, const AudioInterrupt &audioInterrupt) = 0; 132 133 virtual int32_t AbandonAudioFocus(const int32_t clientId, const AudioInterrupt &audioInterrupt) = 0; 134 135 virtual AudioStreamType GetStreamInFocus(const int32_t zoneID = 0 /* default value: 0 -- local device */) = 0; 136 137 virtual int32_t GetSessionInfoInFocus(AudioInterrupt &audioInterrupt, 138 const int32_t zoneID = 0 /* default value: 0 -- local device */) = 0; 139 140 virtual bool CheckRecordingCreate(uint32_t appTokenId, uint64_t appFullTokenId, int32_t appUid, 141 SourceType sourceType = SOURCE_TYPE_MIC) = 0; 142 143 virtual bool CheckRecordingStateChange(uint32_t appTokenId, uint64_t appFullTokenId, int32_t appUid, 144 AudioPermissionState state) = 0; 145 146 virtual int32_t ReconfigureAudioChannel(const uint32_t &count, DeviceType deviceType) = 0; 147 148 virtual int32_t GetAudioLatencyFromXml() = 0; 149 150 virtual uint32_t GetSinkLatencyFromXml() = 0; 151 152 virtual int32_t GetPreferredOutputStreamType(AudioRendererInfo &rendererInfo) = 0; 153 154 virtual int32_t GetPreferredInputStreamType(AudioCapturerInfo &capturerInfo) = 0; 155 156 virtual int32_t RegisterTracker(AudioMode &mode, 157 AudioStreamChangeInfo &streamChangeInfo, const sptr<IRemoteObject> &object) = 0; 158 159 virtual int32_t UpdateTracker(AudioMode &mode, AudioStreamChangeInfo &streamChangeInfo) = 0; 160 161 virtual int32_t GetCurrentRendererChangeInfos( 162 std::vector<std::unique_ptr<AudioRendererChangeInfo>> &audioRendererChangeInfos) = 0; 163 164 virtual int32_t GetCurrentCapturerChangeInfos( 165 std::vector<std::unique_ptr<AudioCapturerChangeInfo>> &audioCapturerChangeInfos) = 0; 166 167 virtual int32_t UpdateStreamState(const int32_t clientUid, StreamSetState streamSetState, 168 StreamUsage streamUsage) = 0; 169 170 virtual int32_t SelectOutputDevice(sptr<AudioRendererFilter> audioRendererFilter, 171 std::vector<sptr<AudioDeviceDescriptor>> audioDeviceDescriptors) = 0; 172 173 virtual std::string GetSelectedDeviceInfo(int32_t uid, int32_t pid, AudioStreamType streamType) = 0; 174 175 virtual int32_t SelectInputDevice(sptr<AudioCapturerFilter> audioCapturerFilter, 176 std::vector<sptr<AudioDeviceDescriptor>> audioDeviceDescriptors) = 0; 177 178 virtual int32_t GetVolumeGroupInfos(std::string networkId, std::vector<sptr<VolumeGroupInfo>> &infos) = 0; 179 180 virtual int32_t GetNetworkIdByGroupId(int32_t groupId, std::string &networkId) = 0; 181 182 virtual bool IsAudioRendererLowLatencySupported(const AudioStreamInfo &audioStreamInfo) = 0; 183 184 virtual std::vector<sptr<AudioDeviceDescriptor>> GetPreferredOutputDeviceDescriptors( 185 AudioRendererInfo &rendererInfo) = 0; 186 187 virtual std::vector<sptr<AudioDeviceDescriptor>> GetPreferredInputDeviceDescriptors( 188 AudioCapturerInfo &captureInfo) = 0; 189 190 virtual int32_t SetClientCallbacksEnable(const CallbackChange &callbackchange, const bool &enable) = 0; 191 192 virtual int32_t GetAudioFocusInfoList(std::list<std::pair<AudioInterrupt, AudioFocuState>> &focusInfoList, 193 const int32_t zoneID = 0 /* default value: 0 -- local device */) = 0; 194 195 virtual int32_t SetSystemSoundUri(const std::string &key, const std::string &uri) = 0; 196 197 virtual std::string GetSystemSoundUri(const std::string &key) = 0; 198 199 virtual float GetMinStreamVolume(void) = 0; 200 201 virtual float GetMaxStreamVolume(void) = 0; 202 203 virtual int32_t CheckMaxRendererInstances() = 0; 204 205 virtual bool IsVolumeUnadjustable(void) = 0; 206 207 virtual int32_t AdjustVolumeByStep(VolumeAdjustType adjustType) = 0; 208 209 virtual int32_t AdjustSystemVolumeByStep(AudioVolumeType volumeType, VolumeAdjustType adjustType) = 0; 210 211 virtual float GetSystemVolumeInDb(AudioVolumeType volumeType, int32_t volumeLevel, DeviceType deviceType) = 0; 212 213 virtual int32_t QueryEffectSceneMode(SupportedEffectConfig &supportedEffectConfig) = 0; 214 215 virtual int32_t SetPlaybackCapturerFilterInfos(const AudioPlaybackCaptureConfig &config, uint32_t appTokenId) = 0; 216 217 virtual int32_t SetCaptureSilentState(bool state) = 0; 218 219 virtual int32_t GetHardwareOutputSamplingRate(const sptr<AudioDeviceDescriptor> &desc) = 0; 220 221 virtual std::vector<sptr<MicrophoneDescriptor>> GetAudioCapturerMicrophoneDescriptors(int32_t sessionId) = 0; 222 223 virtual std::vector<sptr<MicrophoneDescriptor>> GetAvailableMicrophones() = 0; 224 225 virtual int32_t SetDeviceAbsVolumeSupported(const std::string &macAddress, const bool support) = 0; 226 227 virtual bool IsAbsVolumeScene() = 0; 228 229 virtual bool IsVgsVolumeSupported() = 0; 230 231 virtual int32_t SetA2dpDeviceVolume(const std::string &macAddress, const int32_t volume, bool updateUi) = 0; 232 233 virtual std::vector<std::unique_ptr<AudioDeviceDescriptor>> GetAvailableDevices(AudioDeviceUsage usage) = 0; 234 235 virtual int32_t SetAvailableDeviceChangeCallback(const int32_t clientId, const AudioDeviceUsage usage, 236 const sptr<IRemoteObject> &object) = 0; 237 238 virtual int32_t UnsetAvailableDeviceChangeCallback(const int32_t clientId, AudioDeviceUsage usage) = 0; 239 240 virtual int32_t ConfigDistributedRoutingRole(const sptr<AudioDeviceDescriptor> descriptor, CastType type) = 0; 241 242 virtual int32_t SetDistributedRoutingRoleCallback(const sptr<IRemoteObject> &object) = 0; 243 244 virtual int32_t UnsetDistributedRoutingRoleCallback() = 0; 245 246 virtual bool IsSpatializationEnabled() = 0; 247 248 virtual bool IsSpatializationEnabled(const std::string address) = 0; 249 250 virtual int32_t SetSpatializationEnabled(const bool enable) = 0; 251 252 virtual int32_t SetSpatializationEnabled(const sptr<AudioDeviceDescriptor> &selectedAudioDevice, 253 const bool enable) = 0; 254 255 virtual bool IsHeadTrackingEnabled() = 0; 256 257 virtual bool IsHeadTrackingEnabled(const std::string address) = 0; 258 259 virtual int32_t SetHeadTrackingEnabled(const bool enable) = 0; 260 261 virtual int32_t SetHeadTrackingEnabled(const sptr<AudioDeviceDescriptor> &selectedAudioDevice, 262 const bool enable) = 0; 263 264 virtual AudioSpatializationState GetSpatializationState(const StreamUsage streamUsage) = 0; 265 266 virtual bool IsSpatializationSupported() = 0; 267 268 virtual bool IsSpatializationSupportedForDevice(const std::string address) = 0; 269 270 virtual bool IsHeadTrackingSupported() = 0; 271 272 virtual bool IsHeadTrackingSupportedForDevice(const std::string address) = 0; 273 274 virtual int32_t UpdateSpatialDeviceState(const AudioSpatialDeviceState audioSpatialDeviceState) = 0; 275 276 virtual int32_t RegisterSpatializationStateEventListener(const uint32_t sessionID, const StreamUsage streamUsage, 277 const sptr<IRemoteObject> &object) = 0; 278 279 virtual int32_t UnregisterSpatializationStateEventListener(const uint32_t sessionID) = 0; 280 281 virtual int32_t RegisterPolicyCallbackClient(const sptr<IRemoteObject> &object, 282 const int32_t zoneID = 0 /* default value: 0 -- local device */) = 0; 283 284 virtual int32_t CreateAudioInterruptZone(const std::set<int32_t> &pids, 285 const int32_t zoneID = 0 /* default value: 0 -- local device */) = 0; 286 287 virtual int32_t AddAudioInterruptZonePids(const std::set<int32_t> &pids, 288 const int32_t zoneID = 0 /* default value: 0 -- local device */) = 0; 289 290 virtual int32_t RemoveAudioInterruptZonePids(const std::set<int32_t> &pids, 291 const int32_t zoneID = 0 /* default value: 0 -- local device */) = 0; 292 293 virtual int32_t ReleaseAudioInterruptZone(const int32_t zoneID = 0 /* default value: 0 -- local device */) = 0; 294 295 virtual int32_t SetCallDeviceActive(InternalDeviceType deviceType, bool active, std::string address) = 0; 296 297 virtual std::unique_ptr<AudioDeviceDescriptor> GetActiveBluetoothDevice() = 0; 298 299 virtual ConverterConfig GetConverterConfig() = 0; 300 301 virtual void FetchOutputDeviceForTrack(AudioStreamChangeInfo &streamChangeInfo, 302 const AudioStreamDeviceChangeReasonExt reason) = 0; 303 304 virtual void FetchInputDeviceForTrack(AudioStreamChangeInfo &streamChangeInfo) = 0; 305 306 virtual bool IsHighResolutionExist(void) = 0; 307 308 virtual int32_t SetHighResolutionExist(bool highResExist) = 0; 309 310 virtual AudioSpatializationSceneType GetSpatializationSceneType() = 0; 311 312 virtual int32_t SetSpatializationSceneType(const AudioSpatializationSceneType spatializationSceneType) = 0; 313 314 virtual float GetMaxAmplitude(const int32_t deviceId) = 0; 315 316 virtual int32_t DisableSafeMediaVolume() = 0; 317 318 virtual bool IsHeadTrackingDataRequested(const std::string &macAddress) = 0; 319 320 virtual int32_t SetAudioDeviceRefinerCallback(const sptr<IRemoteObject> &object) = 0; 321 322 virtual int32_t UnsetAudioDeviceRefinerCallback() = 0; 323 324 virtual int32_t TriggerFetchDevice(AudioStreamDeviceChangeReasonExt reason) = 0; 325 326 virtual int32_t SetPreferredDevice(const PreferredType preferredType, 327 const sptr<AudioDeviceDescriptor> &desc) = 0; 328 329 virtual int32_t SetAudioConcurrencyCallback(const uint32_t sessionID, const sptr<IRemoteObject> &object) = 0; 330 331 virtual int32_t UnsetAudioConcurrencyCallback(const uint32_t sessionID) = 0; 332 333 virtual int32_t ActivateAudioConcurrency(const AudioPipeType &pipeType) = 0; 334 335 virtual int32_t MoveToNewPipe(const uint32_t sessionId, const AudioPipeType pipeType) = 0; 336 337 virtual int32_t InjectInterruption(const std::string networkId, InterruptEvent &event) = 0; 338 339 virtual void SaveRemoteInfo(const std::string &networkId, DeviceType deviceType) = 0; 340 341 virtual int32_t SetDefaultOutputDevice(const DeviceType deviceType, const uint32_t sessionID, 342 const StreamUsage streamUsage, bool isRunning) = 0; 343 344 virtual int32_t LoadSplitModule(const std::string &splitArgs, const std::string &networkId) = 0; 345 346 virtual int32_t SetVoiceRingtoneMute(bool isMute) = 0; 347 348 public: 349 DECLARE_INTERFACE_DESCRIPTOR(u"IAudioPolicy"); 350 }; 351 } // namespace AudioStandard 352 } // namespace OHOS 353 #endif // I_AUDIO_POLICY_BASE_H 354