* Copyright (c) 2022 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.
*/
#ifndef AUDIO_SYSTEM_MANAGER_ADAPTER_H
#define AUDIO_SYSTEM_MANAGER_ADAPTER_H
#include <vector>
#include <memory>
#include "audio_renderer_adapter.h"
namespace OHOS::NWeb {
enum class AudioAdapterStreamType : int32_t {
STREAM_DEFAULT = -1,
STREAM_VOICE_CALL = 0,
STREAM_MUSIC = 1,
STREAM_RING = 2,
STREAM_MEDIA = 3,
STREAM_VOICE_ASSISTANT = 4,
STREAM_SYSTEM = 5,
STREAM_ALARM = 6,
STREAM_NOTIFICATION = 7,
STREAM_BLUETOOTH_SCO = 8,
STREAM_ENFORCED_AUDIBLE = 9,
STREAM_DTMF = 10,
STREAM_TTS = 11,
STREAM_ACCESSIBILITY = 12,
STREAM_RECORDING = 13,
STREAM_ALL = 100
};
enum AdapterDeviceFlag : int32_t {
NONE_DEVICES_FLAG = 0,
OUTPUT_DEVICES_FLAG = 1,
INPUT_DEVICES_FLAG = 2,
ALL_DEVICES_FLAG = 3,
DISTRIBUTED_OUTPUT_DEVICES_FLAG = 4,
DISTRIBUTED_INPUT_DEVICES_FLAG = 8,
ALL_DISTRIBUTED_DEVICES_FLAG = 12,
ALL_L_D_DEVICES_FLAG = 15,
DEVICE_FLAG_MAX
};
class AudioInterruptAdapter {
public:
AudioInterruptAdapter() = default;
virtual ~AudioInterruptAdapter() = default;
virtual AudioAdapterStreamUsage GetStreamUsage() = 0;
virtual AudioAdapterContentType GetContentType() = 0;
virtual AudioAdapterStreamType GetStreamType() = 0;
virtual uint32_t GetSessionID() = 0;
virtual bool GetPauseWhenDucked() = 0;
};
class AudioDeviceDescAdapter {
public:
AudioDeviceDescAdapter() = default;
virtual ~AudioDeviceDescAdapter() = default;
virtual int32_t GetDeviceId() = 0;
virtual std::string GetDeviceName() = 0;
};
class AudioManagerCallbackAdapter {
public:
AudioManagerCallbackAdapter() = default;
virtual ~AudioManagerCallbackAdapter() = default;
virtual void OnSuspend() = 0;
virtual void OnResume() = 0;
};
class AudioManagerDeviceChangeCallbackAdapter {
public:
AudioManagerDeviceChangeCallbackAdapter() = default;
virtual ~AudioManagerDeviceChangeCallbackAdapter() = default;
virtual void OnDeviceChange() = 0;
};
class AudioSystemManagerAdapter {
public:
AudioSystemManagerAdapter() = default;
virtual ~AudioSystemManagerAdapter() = default;
virtual bool HasAudioOutputDevices() = 0;
virtual bool HasAudioInputDevices() = 0;
virtual int32_t RequestAudioFocus(const std::shared_ptr<AudioInterruptAdapter> audioInterrupt) = 0;
virtual int32_t AbandonAudioFocus(const std::shared_ptr<AudioInterruptAdapter> audioInterrupt) = 0;
virtual int32_t SetAudioManagerInterruptCallback(std::shared_ptr<AudioManagerCallbackAdapter> callback) = 0;
virtual int32_t UnsetAudioManagerInterruptCallback() = 0;
virtual std::vector<std::shared_ptr<AudioDeviceDescAdapter>> GetDevices(AdapterDeviceFlag flag) = 0;
virtual int32_t SelectAudioDeviceById(int32_t deviceId, bool isInput) = 0;
virtual int32_t SetDeviceChangeCallback(std::shared_ptr<AudioManagerDeviceChangeCallbackAdapter> callback) = 0;
virtual int32_t UnsetDeviceChangeCallback() = 0;
virtual std::shared_ptr<AudioDeviceDescAdapter> GetDefaultOutputDevice() = 0;
virtual std::shared_ptr<AudioDeviceDescAdapter> GetDefaultInputDevice() = 0;
virtual bool SetLanguage(const std::string& language) = 0;
};
}
#endif