/* * Copyright (c) 2023 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.hdi.distributed_audio.audio.v1_0; import ohos.hdi.distributed_audio.audio.v1_0.AudioTypes; import ohos.hdi.distributed_audio.audio.v1_0.IAudioCallback; /** * @brief Provides capabilities for audio rendering, including controlling the rendering, setting audio attributes, * scenes, and volume, obtaining hardware latency, and rendering audio frames. * * @since 4.1 * @version 1.0 */ interface IAudioRender { GetLatency([out] unsigned int ms); RenderFrame([in] byte[] frame, [out] unsigned long replyBytes); GetRenderPosition([out] unsigned long frames, [out] struct AudioTimeStamp time); SetRenderSpeed([in] float speed); GetRenderSpeed([out] float speed); SetChannelMode([in] enum AudioChannelMode mode); GetChannelMode([out] enum AudioChannelMode mode); RegCallback([in] IAudioCallback audioCallback, [in] byte cookie); DrainBuffer([out] enum AudioDrainNotifyType type); IsSupportsDrain([out] boolean support); CheckSceneCapability([in] struct AudioSceneDescriptor scene, [out] boolean supported); SelectScene([in] struct AudioSceneDescriptor scene); SetMute([in] boolean mute); GetMute([out] boolean mute); SetVolume([in] float volume); GetVolume([out] float volume); GetGainThreshold([out] float min, [out] float max); GetGain([out] float gain); SetGain([in] float gain); GetFrameSize([out] unsigned long size); GetFrameCount([out] unsigned long count); SetSampleAttributes([in] struct AudioSampleAttributes attrs); GetSampleAttributes([out] struct AudioSampleAttributes attrs); GetCurrentChannelId([out] unsigned int channelId); SetExtraParams([in] String keyValueList); GetExtraParams([out] String keyValueList); ReqMmapBuffer([in] int reqSize, [out] struct AudioMmapBufferDescriptor desc); GetMmapPosition([out] unsigned long frames, [out] struct AudioTimeStamp time); AddAudioEffect([in] unsigned long effectid); RemoveAudioEffect([in] unsigned long effectid); GetFrameBufferSize([out] unsigned long bufferSize); Start(); Stop(); Pause(); Resume(); Flush(); TurnStandbyMode(); AudioDevDump([in] int range, [in] int fd); IsSupportsPauseAndResume([out] boolean supportPause, [out] boolean supportResume); }