1/* 2 * Copyright (c) 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 16package OHOS.AudioStandard; 17 18import AudioServiceTypes; 19sequenceable OHOS.IRemoteObject; 20sequenceable audio_info..OHOS.AudioStandard.AudioPlaybackCaptureConfig; 21sequenceable audio_info..OHOS.AudioStandard.AudioProcessConfig; 22sequenceable audio_info..OHOS.AudioStandard.RestoreInfoIpc; 23sequenceable audio_info..OHOS.AudioStandard.SinkInput; 24sequenceable audio_effect..OHOS.AudioStandard.Library; 25sequenceable audio_effect..OHOS.AudioStandard.Effect; 26sequenceable audio_effect..OHOS.AudioStandard.EffectChain; 27sequenceable audio_effect..OHOS.AudioStandard.EffectChainManagerParam; 28sequenceable audio_effect..OHOS.AudioStandard.AudioSpatializationState; 29sequenceable audio_effect..OHOS.AudioStandard.AudioEffectPropertyArrayV3; 30sequenceable audio_effect..OHOS.AudioStandard.AudioEffectPropertyArray; 31sequenceable audio_effect..OHOS.AudioStandard.AudioEnhancePropertyArray; 32sequenceable hdi_adapter_type..OHOS.AudioStandard.IAudioSinkAttr; 33sequenceable hdi_adapter_type..OHOS.AudioStandard.IAudioSourceAttr; 34sequenceable audio_stutter..OHOS.AudioStandard.DataTransferMonitorParam; 35 36interface IStandardAudioService { 37 [ipccode 0] void GetAudioParameter([in] String key, [out] String value); 38 void SetAudioParameter([in] String key, [in] String value); 39 void GetExtraParameters([in] String mainKey, [in] List<String> subKyes, [out] List<StringPair> parameters); 40 void SetExtraParameters([in] String key, [in] List<StringPair> kvpairs); 41 void SetMicrophoneMute([in] boolean isMute); 42 void SetAudioScene([in] int audioScene, [in] int a2dpOffloadFlag, [in] boolean scoExcludeFlag); 43 void UpdateActiveDeviceRoute([in] int type, [in] int flag, [in] int a2dpOffloadFlag); 44 void UpdateActiveDevicesRoute([in] List<IntPair> activeDevices, [in] int a2dpOffloadFlag, [in] String deviceName); 45 void UpdateDualToneState([in] boolean enable, [in] int sessionId); 46 void GetTransactionId([in] int deviceType, [in] int deviceRole, [out] unsigned long transactionId); 47 void SetParameterCallback([in] IRemoteObject object); 48 void GetAudioParameter([in] String networkId, [in] int key, [in] String condition, [out] String value); 49 void SetAudioParameter([in] String networkId, [in] int key, [in] String condition, [in] String value); 50 void NotifyDeviceInfo([in] String networkId, [in] boolean connected); 51 void CheckRemoteDeviceState([in] String networkId, [in] int deviceRole, [in] boolean isStartDevice); 52 void SetVoiceVolume([in] float volume); 53 void SetAudioMonoState([in] boolean audioMono); 54 void SetAudioBalanceValue([in] float audioBalance); 55 void CreateAudioProcess([in] AudioProcessConfig config, [out] int errorCode, [in] AudioPlaybackCaptureConfig filterConfig, [out] IRemoteObject client); 56 void LoadAudioEffectLibraries([in] List<Library> libraries, [in] List<Effect> effects, [out] List<Effect> successEffects, [out] boolean hasEffectsLoaded); 57 void CreateEffectChainManager([in] List<EffectChain> effectChains, [in] EffectChainManagerParam effectParam, [in] EffectChainManagerParam enhanceParam); 58 void SetOutputDeviceSink([in] int device, [in] String sinkName); 59 void SetActiveOutputDevice([in] int deviceType); 60 void CreatePlaybackCapturerManager([out] boolean isSuccess); 61 [oneway] void RegiestPolicyProvider([in] IRemoteObject object); 62 [oneway] void RegistCoreServiceProvider([in] IRemoteObject object); 63 void SetWakeupSourceCallback([in] IRemoteObject object); 64 void UpdateSpatializationState([in] AudioSpatializationState spatializationState); 65 void UpdateSpatialDeviceType([in] int spatialDeviceType); 66 void OffloadSetVolume([in] float volume, [in] String deviceClass, [in] String networkId); 67 void NotifyStreamVolumeChanged([in] int streamType, [in] float volume); 68 void SetSpatializationSceneType([in] int spatializationSceneType); 69 void GetMaxAmplitude([in] boolean isOutputDevice, [in] String deviceClass, [in] int sourceType, [out] float maxAmplitude); 70 void ResetAudioEndpoint(); 71 void ResetRouteForDisconnect([in] int type); 72 void GetEffectLatency([in] String sessionId, [out] unsigned int latency); 73 void UpdateLatencyTimestamp([in] String timestamp, [in] boolean isRenderer); 74 void SetAsrAecMode([in] int asrAecMode); // AsrAecMode asrAecMode 75 void GetAsrAecMode([out] int asrAecMode); // AsrAecMode asrAecMode 76 void SetAsrNoiseSuppressionMode([in] int asrNoiseSuppressionMode); // AsrNoiseSuppressionMode asrNoiseSuppressionMode 77 void SetOffloadMode([in] unsigned int sessionId, [in] int state, [in] boolean isAppBack); 78 void UnsetOffloadMode([in] unsigned int sessionId); 79 void CheckHibernateState([in] boolean onHibernate); 80 void GetAsrNoiseSuppressionMode([out] int asrNoiseSuppressionMode); // AsrNoiseSuppressionMode asrNoiseSuppressionMode 81 void SetAsrWhisperDetectionMode([in] int asrWhisperDetectionMode); // AsrWhisperDetectionMode asrWhisperDetectionMode 82 void GetAsrWhisperDetectionMode([out] int asrWhisperDetectionMode); 83 void SetAsrVoiceControlMode([in] int asrVoiceControlMode, [in] boolean on); 84 void SetAsrVoiceMuteMode([in] int asrVoiceMuteMode, [in] boolean on); // AsrVoiceMuteMode asrVoiceMuteMode 85 void IsWhispering([out] int whisperRes); 86 void GetEffectOffloadEnabled([out] boolean isEffectOffloadEnabled); 87 void GetAudioEffectProperty([out] AudioEffectPropertyArrayV3 propertyArray, [in] int deviceType); 88 void SetAudioEffectProperty([in] AudioEffectPropertyArrayV3 propertyArray, [in] int deviceType); 89 void GetAudioEnhanceProperty([out] AudioEnhancePropertyArray propertyArray, [in] int deviceType); 90 void GetAudioEffectProperty([out] AudioEffectPropertyArray propertyArray); 91 void SetAudioEnhanceProperty([in] AudioEnhancePropertyArray propertyArray, [in] int deviceType); 92 void SetAudioEffectProperty([in] AudioEffectPropertyArray propertyArray); 93 void SuspendRenderSink([in] String sinkName); 94 void RestoreRenderSink([in] String sinkName); 95 void LoadHdiEffectModel(); 96 void UpdateEffectBtOffloadSupported([in] boolean isSupported); 97 void SetSinkMuteForSwitchDevice([in] String devceClass, [in] int durationUs, [in] boolean mute); 98 void SetRotationToEffect([in] unsigned int rotate); 99 void UpdateSessionConnectionState([in] int sessionID, [in] int state); 100 void SetNonInterruptMute([in] unsigned int sessionId, [in] boolean muteFlag); 101 void RestoreSession([in] unsigned int sessionID, [in] RestoreInfoIpc restoreInfoIpc); 102 void CreateIpcOfflineStream([out] int errorCode, [out] IRemoteObject client); 103 void GetOfflineAudioEffectChains([out] List<String> effectChains); 104 void GetStandbyStatus([in] unsigned int sessionId, [out] boolean isStandby, [out] long enterStandbyTime); 105 void GenerateSessionId([out] unsigned int sessionId); 106 void GetAllSinkInputs([out] List<SinkInput> sinkInputs); 107 void SetDefaultAdapterEnable([in] boolean isEnable); 108 void NotifyAccountsChanged(); 109 void NotifyAudioPolicyReady(); 110 void SetInnerCapLimit([in] unsigned int innerCapLimit);void LoadHdiAdapter([in] unsigned int devMgrType, [in] String adapterName); 111 void UnloadHdiAdapter([in] unsigned int devMgrType, [in] String adapterName, [in] boolean force); 112 void CheckCaptureLimit([in] AudioPlaybackCaptureConfig config, [out] int innerCapId); 113 void ReleaseCaptureLimit([in] int innerCapId); 114 void CreateHdiSinkPort([in] String deviceClass, [in] String idInfo, [in] IAudioSinkAttr attr, [out] unsigned int renderId); 115 void CreateSinkPort([in] unsigned int idBase, [in] unsigned int idType, [in] String idInfo, [in] IAudioSinkAttr attr, [out] unsigned int renderId); 116 void CreateHdiSourcePort([in] String deviceClass, [in] String idInfo, [in] IAudioSourceAttr attr, [out] unsigned int captureId); 117 void CreateSourcePort([in] unsigned int idBase, [in] unsigned int idType, [in] String idInfo, [in] IAudioSourceAttr attr, [out] unsigned int captureId); 118 void DestroyHdiPort([in] unsigned int id); 119 void SetDeviceConnectedFlag([in] boolean flag); 120 void SetDmDeviceType([in] unsigned short dmDeviceType, [in] int deviceType); 121 void RegisterDataTransferMonitorParam([in] int callbackId, [in] DataTransferMonitorParam param); 122 void UnregisterDataTransferMonitorParam([in] int callbackId); 123 void RegisterDataTransferCallback([in] IRemoteObject object); 124 void NotifySettingsDataReady(); 125 void IsAcousticEchoCancelerSupported([in] int sourceType, [out] boolean isSupported); 126 void SetSessionMuteState([in] unsigned int sessionId, [in] boolean insert, [in] boolean muteFlag); 127 void SetLatestMuteState([in] unsigned int sessionId, [in] boolean muteFlag); 128 void ForceStopAudioStream([in] int audioType); 129 void CreateAudioWorkgroup([in] int pid, [in] IRemoteObject object, [out] int workgroupId); 130 void ReleaseAudioWorkgroup([in] int pid, [in] int workgroupId); 131 void AddThreadToGroup([in] int pid, [in] int workgroupId, [in] int tokenId); 132 void RemoveThreadFromGroup([in] int pid, [in] int workgroupId, [in] int tokenId); 133 void StartGroup([in] int pid, [in] int workgroupId, [in] unsigned long startTime, [in] unsigned long deadlineTime); 134 void StopGroup([in] int pid, [in] int workgroupId); 135 void SetBtHdiInvalidState(); 136 void SetKaraokeParameters([in] String parameters, [out] boolean ret); 137 void IsAudioLoopbackSupported([in] int mode ,[out] boolean ret); 138 [oneway] void ImproveAudioWorkgroupPrio([in] int pid, [in] Map<int, boolean> threads); 139 void RestoreAudioWorkgroupPrio([in] int pid, [in] Map<int, int> threads); 140 void SetRenderWhitelist([in] List<String> list); 141 // WARNING: above functions correspond with AudioServerInterfaceCode 142 143 // undefined in AudioServerInterfaceCode 144 [ipccode 1000] void SetForegroundList([in] List<String> list); 145 void GetVolumeDataCount([in] String sinkName, [out] long ret); 146} 147