/*
* Copyright (c) 2025 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package OHOS.AudioStandard;
import AudioServiceTypes;
sequenceable OHOS.IRemoteObject;
sequenceable audio_info..OHOS.AudioStandard.AudioPlaybackCaptureConfig;
sequenceable audio_info..OHOS.AudioStandard.AudioProcessConfig;
sequenceable audio_info..OHOS.AudioStandard.RestoreInfoIpc;
sequenceable audio_info..OHOS.AudioStandard.SinkInput;
sequenceable audio_effect..OHOS.AudioStandard.Library;
sequenceable audio_effect..OHOS.AudioStandard.Effect;
sequenceable audio_effect..OHOS.AudioStandard.EffectChain;
sequenceable audio_effect..OHOS.AudioStandard.EffectChainManagerParam;
sequenceable audio_effect..OHOS.AudioStandard.AudioSpatializationState;
sequenceable audio_effect..OHOS.AudioStandard.AudioEffectPropertyArray;
sequenceable hdi_adapter_type..OHOS.AudioStandard.IAudioSinkAttr;
sequenceable hdi_adapter_type..OHOS.AudioStandard.IAudioSourceAttr;
sequenceable audio_stutter..OHOS.AudioStandard.DataTransferMonitorParam;
sequenceable audio_interrupt_info..OHOS.AudioStandard.InterruptEventInternal;
sequenceable audio_engine_callback_types..OHOS.AudioStandard.AudioOutputPipeInfo;
sequenceable audio_engine_callback_types..OHOS.AudioStandard.AudioInputPipeInfo;
sequenceable audio_capturer_types..OHOS.AudioStandard.AudioWakeupTrackInfo;
interface IStandardAudioService {
[ipccode 0] void GetAudioParameter([in] String key, [out] String value);
void SetAudioParameter([in] String key, [in] String value);
void GetExtraParameters([in] String mainKey, [in] List<String> subKyes, [out] List<StringPair> parameters);
void SetExtraParameters([in] String key, [in] List<StringPair> kvpairs);
void SetMicrophoneMute([in] boolean isMute);
void SetAudioScene([in] int audioScene, [in] int a2dpOffloadFlag, [in] boolean scoExcludeFlag, [in] int phoneCallSceneType);
void UpdateActiveDevicesRoute([in] List<IntPair> activeDevices, [in] int a2dpOffloadFlag, [in] unsigned int pipeId, [in] String networkId);
void UpdateDualToneState([in] boolean enable, [in] int sessionId, [in] String dupSinkName);
void SetParameterCallback([in] IRemoteObject object);
void GetAudioParameter([in] String networkId, [in] int key, [in] String condition, [out] String value);
void SetAudioParameter([in] String networkId, [in] int key, [in] String condition, [in] String value);
void NotifyDeviceInfo([in] String networkId, [in] boolean connected);
void NotifyTaskIdProxy([in] String taskId, [in] boolean connected);
void CheckRemoteDeviceState([in] String networkId, [in] int deviceRole, [in] boolean isStartDevice);
void SetVoiceVolume([in] float volume);
void SetAudioMonoState([in] boolean audioMono);
void SetAudioBalanceValue([in] float audioBalance);
void CreateAudioProcess([in] AudioProcessConfig config, [out] int errorCode, [in] AudioPlaybackCaptureConfig filterConfig, [out] IRemoteObject client);
void LoadAudioEffectLibraries([in] List<Library> libraries, [in] List<Effect> effects, [out] List<Effect> successEffects, [out] boolean hasEffectsLoaded);
void CreateEffectChainManager([in] List<EffectChain> effectChains, [in] EffectChainManagerParam effectParam, [in] EffectChainManagerParam enhanceParam);
void SetOutputDeviceSink([in] int device, [in] String sinkName);
void SetActiveOutputDevice([in] int deviceType);
void CreatePlaybackCapturerManager([out] boolean isSuccess);
[oneway] void RegiestPolicyProvider([in] IRemoteObject object);
[oneway] void RegistCoreServiceProvider([in] IRemoteObject object);
void SetWakeupSourceCallback([in] IRemoteObject object);
void UpdateSpatializationState([in] AudioSpatializationState spatializationState);
void UpdateSpatialDeviceType([in] int spatialDeviceType);
void OffloadSetVolume([in] float volume, [in] unsigned int renderId);
void NotifyStreamVolumeChanged([in] int streamType, [in] float volume);
void SetSpatializationSceneType([in] int spatializationSceneType);
void GetMaxAmplitude([in] boolean isOutputDevice, [in] String deviceClass, [in] int sourceType, [out] float maxAmplitude);
void ResetRouteForDisconnect([in] int type);
void GetEffectLatency([in] String sessionId, [out] unsigned int latency);
void UpdateLatencyTimestamp([in] String timestamp, [in] boolean isRenderer);
void SetAsrAecMode([in] int asrAecMode); // AsrAecMode asrAecMode
void GetAsrAecMode([out] int asrAecMode); // AsrAecMode asrAecMode
void SetAsrNoiseSuppressionMode([in] int asrNoiseSuppressionMode); // AsrNoiseSuppressionMode asrNoiseSuppressionMode
void SetOffloadMode([in] unsigned int sessionId, [in] int state, [in] boolean isAppBack);
void UnsetOffloadMode([in] unsigned int sessionId);
void CheckHibernateState([in] boolean onHibernate);
void GetAsrNoiseSuppressionMode([out] int asrNoiseSuppressionMode); // AsrNoiseSuppressionMode asrNoiseSuppressionMode
void SetAsrWhisperDetectionMode([in] int asrWhisperDetectionMode); // AsrWhisperDetectionMode asrWhisperDetectionMode
void GetAsrWhisperDetectionMode([out] int asrWhisperDetectionMode);
void SetAsrVoiceControlMode([in] int asrVoiceControlMode, [in] boolean on);
void SetAsrVoiceMuteMode([in] int asrVoiceMuteMode, [in] boolean on); // AsrVoiceMuteMode asrVoiceMuteMode
void IsWhispering([out] int whisperRes);
void GetEffectOffloadEnabled([out] boolean isEffectOffloadEnabled);
void GetAudioEffectProperty([out] AudioEffectPropertyArray propertyArray, [in] int deviceType);
void SetAudioEffectProperty([in] AudioEffectPropertyArray propertyArray, [in] int deviceType);
void SuspendRenderSink([in] String sinkName);
void RestoreRenderSink([in] String sinkName);
void LoadHdiEffectModel();
void UpdateEffectBtOffloadSupported([in] boolean isSupported);
void SetSinkMuteForSwitchDevice([in] String deviceClass, [in] int durationUs, [in] boolean mute, [in] String networkId);
void SetRotationToEffect([in] unsigned int rotate);
void UpdateSessionConnectionState([in] int sessionID, [in] int state);
void SetNonInterruptMute([in] unsigned int sessionId, [in] boolean muteFlag);
void RestoreSession([in] unsigned int sessionID, [in] RestoreInfoIpc restoreInfoIpc);
void CreateIpcOfflineStream([out] int errorCode, [out] IRemoteObject client);
void GetOfflineAudioEffectChains([out] List<String> effectChains);
void GetStandbyStatus([in] unsigned int sessionId, [out] boolean isStandby, [out] long enterStandbyTime);
void GenerateSessionId([out] unsigned int sessionId);
void GetAllSinkInputs([out] List<SinkInput> sinkInputs);
// TODO remove void SetDefaultAdapterEnable([in] boolean isEnable);
void NotifyAccountsChanged();
void NotifyAudioPolicyReady();
void SetInnerCapLimit([in] unsigned int innerCapLimit);void LoadHdiAdapter([in] unsigned int devMgrType, [in] String adapterName);
void UnloadHdiAdapter([in] unsigned int devMgrType, [in] String adapterName, [in] boolean force);
void CheckCaptureLimit([in] AudioPlaybackCaptureConfig config, [out] int innerCapId);
void ReleaseCaptureLimit([in] int innerCapId);
void CreateHdiSinkPort([in] String deviceClass, [in] String idInfo, [in] IAudioSinkAttr attr, [out] unsigned int renderId);
void CreateSinkPort([in] unsigned int idBase, [in] unsigned int idType, [in] String idInfo, [in] IAudioSinkAttr attr, [out] unsigned int renderId);
void CreateHdiSourcePort([in] String deviceClass, [in] String idInfo, [in] IAudioSourceAttr attr, [out] unsigned int captureId);
void CreateSourcePort([in] unsigned int idBase, [in] unsigned int idType, [in] String idInfo, [in] IAudioSourceAttr attr, [out] unsigned int captureId);
void RegisterVADeviceController([in] String macAddress, [in] IRemoteObject controller);
void UnregisterVADeviceController([in] String macAddress);
void DestroyHdiPort([in] unsigned int id);
void SetDeviceConnectedFlag([in] boolean flag);
void SetDmDeviceType([in] unsigned short dmDeviceType, [in] int deviceType);
void RegisterDataTransferMonitorParam([in] int callbackId, [in] DataTransferMonitorParam param);
void UnregisterDataTransferMonitorParam([in] int callbackId);
void RegisterDataTransferCallback([in] IRemoteObject object);
void NotifySettingsDataReady();
void IsAcousticEchoCancelerSupported([in] int sourceType, [out] boolean isSupported);
void SetLatestMuteState([in] unsigned int sessionId, [in] boolean muteFlag);
void ForceStopAudioStream([in] int audioType);
void CreateAudioWorkgroup([in] IRemoteObject object, [out] int workgroupId);
void ReleaseAudioWorkgroup([in] int workgroupId);
void AddThreadToGroup([in] int workgroupId, [in] int tokenId);
void RemoveThreadFromGroup([in] int workgroupId, [in] int tokenId);
void StartGroup([in] int workgroupId, [in] unsigned long startTime, [in] unsigned long deadlineTime);
void StopGroup([in] int workgroupId);
void SetBtHdiInvalidState();
void SetKaraokeParameters([in] int deviceType, [in] String parameters, [out] boolean ret);
void IsAudioLoopbackSupported([in] int mode, [in] int deviceType, [out] boolean ret);
[oneway] void ImproveAudioWorkgroupPrio([in] Map<int, boolean> threads);
void RestoreAudioWorkgroupPrio([in] Map<int, int> threads);
void SetRenderWhitelist([in] List<String> list);
void GetVolumeBySessionId([in] unsigned int sessionId, [out] float volume);
void AddCaptureInjector([in] unsigned int sinkPortidx, [out] String rate, [out] String format,
[out] String channels, [out] String bufferSize);
void RemoveCaptureInjector([in] unsigned int sinkPortidx);
void RegisterCallbackHandle([in] IRemoteObject object);
void GetCurrentOutputPipeChangeInfos([out] List<sharedptr<AudioOutputPipeInfo>> pipeChangeInfos);
void GetCurrentInputPipeChangeInfos([out] List<sharedptr<AudioInputPipeInfo>> pipeChangeInfos);
void SetCallbackHandleEnable([in] unsigned int callbackId, [in] boolean enable);
void ReleaseActiveDeviceRoute([in] int deviceType, [in] int deviceFlag, [in] String networkId);
void SetAuxiliarySinkEnable([in] boolean isEnabled);
void ReportPlaybackCaptureUserChoice([in] unsigned int sessionId, [in] boolean choice);
[oneway] void ReportWakeupEvent([in] AudioWakeupTrackInfo audioWakeupTrackInfo);
void SetAncoRecordingConfigChanged([in] List<String> bundleNameList);
// WARNING: above functions correspond with AudioServerInterfaceCode
// undefined in AudioServerInterfaceCode
[ipccode 1000] void SetForegroundList([in] List<String> list);
void GetVolumeDataCount([in] String sinkName, [out] long ret);
void GetPrivacyTypeAudioServer([in] unsigned int sessionId, [out] int privacyType, [out] int ret);
void RegistAdapterManagerCallback([in] IRemoteObject object, [in] String networkId);
void UnRegistAdapterManagerCallback([in] String networkId);
void GetRemoteAudioParameter([in] String networkId, [in] int key, [in] String condition, [out] String value);
[oneway] void RequestUserPrivacyAuthority([in] unsigned int sessionId);
void SetAudioSceneForPipe([in] unsigned int pipeId, [in] int audioScene, [in] boolean scoExcludeFlag);
void CreateCallTransferProxy();
void NotifySensitiveRecordPermit([in] unsigned int sessionId, [in] boolean isPermitted);
}