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 16 #ifndef ST_AUDIO_POLICY_CLIENT_H 17 #define ST_AUDIO_POLICY_CLIENT_H 18 19 #include "ipc_types.h" 20 #include "iremote_broker.h" 21 #include "iremote_proxy.h" 22 #include "iremote_stub.h" 23 #include "audio_system_manager.h" 24 #include "audio_interrupt_info.h" 25 #include "audio_stream_manager.h" 26 27 namespace OHOS { 28 namespace AudioStandard { 29 static const int32_t UPDATE_CALLBACK_CLIENT = 0; 30 static const int32_t API_VERSION_MAX = 1000; 31 32 enum class AudioPolicyClientCode { 33 ON_VOLUME_KEY_EVENT = 0, 34 ON_FOCUS_INFO_CHANGED, 35 ON_FOCUS_REQUEST_CHANGED, 36 ON_FOCUS_ABANDON_CHANGED, 37 ON_DEVICE_CHANGE, 38 ON_APP_VOLUME_CHANGE, 39 ON_RINGERMODE_UPDATE, 40 ON_MIC_STATE_UPDATED, 41 ON_ACTIVE_OUTPUT_DEVICE_UPDATED, 42 ON_ACTIVE_INPUT_DEVICE_UPDATED, 43 ON_RENDERERSTATE_CHANGE, 44 ON_CAPTURERSTATE_CHANGE, 45 ON_RENDERER_DEVICE_CHANGE, 46 ON_RECREATE_RENDERER_STREAM_EVENT, 47 ON_RECREATE_CAPTURER_STREAM_EVENT, 48 ON_HEAD_TRACKING_DEVICE_CHANGE, 49 ON_SPATIALIZATION_ENABLED_CHANGE, 50 ON_SPATIALIZATION_ENABLED_CHANGE_FOR_ANY_DEVICE, 51 ON_HEAD_TRACKING_ENABLED_CHANGE, 52 ON_HEAD_TRACKING_ENABLED_CHANGE_FOR_ANY_DEVICE, 53 ON_NN_STATE_CHANGE, 54 ON_AUDIO_SESSION_DEACTIVE, 55 ON_MICRO_PHONE_BLOCKED, 56 ON_AUDIO_SCENE_CHANGED, 57 ON_SPATIALIZATION_ENABLED_CHANGE_FOR_CURRENT_DEVICE, 58 ON_DISTRIBUTED_OUTPUT_CHANGE, 59 AUDIO_POLICY_CLIENT_CODE_MAX = ON_DISTRIBUTED_OUTPUT_CHANGE, 60 }; 61 class IAudioPolicyClient : public IRemoteBroker { 62 public: 63 virtual void OnVolumeKeyEvent(VolumeEvent volumeEvent) = 0; 64 virtual void OnAudioFocusInfoChange(const std::list<std::pair<AudioInterrupt, AudioFocuState>> &focusInfoList) = 0; 65 virtual void OnAudioFocusRequested(const AudioInterrupt &requestFocus) = 0; 66 virtual void OnAudioFocusAbandoned(const AudioInterrupt &abandonFocus) = 0; 67 virtual void OnDeviceChange(const DeviceChangeAction &deviceChangeAction) = 0; 68 virtual void OnMicrophoneBlocked(const MicrophoneBlockedInfo µphoneBlockedInfo) = 0; 69 virtual void OnRingerModeUpdated(const AudioRingerMode &ringerMode) = 0; 70 virtual void OnAppVolumeChanged(int32_t appUid, const VolumeEvent& volumeEvent) = 0; 71 virtual void OnMicStateUpdated(const MicStateChangeEvent &micStateChangeEvent) = 0; 72 virtual void OnPreferredOutputDeviceUpdated(const AudioRendererInfo &rendererInfo, 73 const std::vector<std::shared_ptr<AudioDeviceDescriptor>> &desc) = 0; 74 virtual void OnPreferredInputDeviceUpdated(const AudioCapturerInfo &capturerInfo, 75 const std::vector<std::shared_ptr<AudioDeviceDescriptor>> &desc) = 0; 76 virtual void OnRendererStateChange( 77 std::vector<std::shared_ptr<AudioRendererChangeInfo>> &audioRendererChangeInfos) = 0; 78 virtual void OnCapturerStateChange( 79 std::vector<std::shared_ptr<AudioCapturerChangeInfo>> &audioCapturerChangeInfos) = 0; 80 virtual void OnRendererDeviceChange(const uint32_t sessionId, 81 const AudioDeviceDescriptor &deviceInfo, const AudioStreamDeviceChangeReasonExt reason) = 0; 82 virtual void OnDistribuitedOutputChange(const AudioDeviceDescriptor &deviceDesc, bool isRemote) = 0; 83 virtual void OnRecreateRendererStreamEvent(const uint32_t sessionId, const int32_t streamFlag, 84 const AudioStreamDeviceChangeReasonExt reason) = 0; 85 virtual void OnRecreateCapturerStreamEvent(const uint32_t sessionId, const int32_t streamFlag, 86 const AudioStreamDeviceChangeReasonExt reason) = 0; 87 virtual void OnHeadTrackingDeviceChange(const std::unordered_map<std::string, bool> &changeInfo) = 0; 88 virtual void OnSpatializationEnabledChange(const bool &enabled) = 0; 89 virtual void OnSpatializationEnabledChangeForAnyDevice( 90 const std::shared_ptr<AudioDeviceDescriptor> &deviceDescriptor, const bool &enabled) = 0; 91 virtual void OnSpatializationEnabledChangeForCurrentDevice(const bool &enabled) = 0; 92 virtual void OnHeadTrackingEnabledChange(const bool &enabled) = 0; 93 virtual void OnHeadTrackingEnabledChangeForAnyDevice( 94 const std::shared_ptr<AudioDeviceDescriptor> &deviceDescriptor, const bool &enabled) = 0; 95 virtual void OnNnStateChange(const int32_t &nnState) = 0; 96 virtual void OnAudioSessionDeactive(const AudioSessionDeactiveEvent &deactiveEvent) = 0; 97 virtual void OnAudioSceneChange(const AudioScene &audioScene) = 0; 98 99 bool hasBTPermission_ = true; 100 bool hasSystemPermission_ = true; 101 int32_t apiVersion_ = API_VERSION_MAX; 102 103 public: 104 DECLARE_INTERFACE_DESCRIPTOR(u"IAudioPolicyClient"); 105 }; 106 } // namespace AudioStandard 107 } // namespace OHOS 108 #endif // ST_AUDIO_POLICY_CLIENT_H 109