/*
* 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.IAudioCapture;
import ohos.hdi.distributed_audio.audio.v1_0.IAudioRender;
import ohos.hdi.distributed_audio.audio.v1_0.IAudioCallback;
/**
* @brief Provides audio adapter capabilities, including initializing ports, creating rendering and capturing tasks,
* and obtaining the port capability set.
*
* @see IAudioRender
* @see IAudioCapture
* @since 4.1
* @version 1.0
*/
interface IAudioAdapter {
InitAllPorts();
CreateRender([in] struct AudioDeviceDescriptor desc, [in] struct AudioSampleAttributes attrs,
[out] IAudioRender render, [out] unsigned int renderId);
DestroyRender([in] unsigned int renderId);
CreateCapture([in] struct AudioDeviceDescriptor desc, [in] struct AudioSampleAttributes attrs,
[out] IAudioCapture capture, [out] unsigned int captureId);
DestroyCapture([in] unsigned int captureId);
GetPortCapability([in] struct AudioPort port, [out] struct AudioPortCapability capability);
SetPassthroughMode([in] struct AudioPort port, [in] enum AudioPortPassthroughMode mode);
GetPassthroughMode([in] struct AudioPort port, [out] enum AudioPortPassthroughMode mode);
GetDeviceStatus([out] struct AudioDeviceStatus status);
UpdateAudioRoute([in] struct AudioRoute route, [out] int routeHandle);
ReleaseAudioRoute([in] int routeHandle);
SetMicMute([in] boolean mute);
GetMicMute([out] boolean mute);
SetVoiceVolume([in] float volume);
SetExtraParams([in] enum AudioExtParamKey key, [in] String condition, [in] String value);
GetExtraParams([in] enum AudioExtParamKey key, [in] String condition, [out] String value);
RegExtraParamObserver([in] IAudioCallback audioCallback, [in] byte cookie);
}