1 /* 2 * Copyright (c) 2022 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 16 #ifndef AUDIO_SYSTEM_MANAGER_ADAPTER_H 17 #define AUDIO_SYSTEM_MANAGER_ADAPTER_H 18 19 #include <vector> 20 #include <memory> 21 22 #include "audio_renderer_adapter.h" 23 24 namespace OHOS::NWeb { 25 26 enum class AudioAdapterStreamType : int32_t { 27 STREAM_DEFAULT = -1, 28 STREAM_VOICE_CALL = 0, 29 STREAM_MUSIC = 1, 30 STREAM_RING = 2, 31 STREAM_MEDIA = 3, 32 STREAM_VOICE_ASSISTANT = 4, 33 STREAM_SYSTEM = 5, 34 STREAM_ALARM = 6, 35 STREAM_NOTIFICATION = 7, 36 STREAM_BLUETOOTH_SCO = 8, 37 STREAM_ENFORCED_AUDIBLE = 9, 38 STREAM_DTMF = 10, 39 STREAM_TTS = 11, 40 STREAM_ACCESSIBILITY = 12, 41 STREAM_RECORDING = 13, 42 STREAM_ALL = 100 43 }; 44 45 enum AdapterDeviceFlag : int32_t { 46 NONE_DEVICES_FLAG = 0, 47 OUTPUT_DEVICES_FLAG = 1, 48 INPUT_DEVICES_FLAG = 2, 49 ALL_DEVICES_FLAG = 3, 50 DISTRIBUTED_OUTPUT_DEVICES_FLAG = 4, 51 DISTRIBUTED_INPUT_DEVICES_FLAG = 8, 52 ALL_DISTRIBUTED_DEVICES_FLAG = 12, 53 ALL_L_D_DEVICES_FLAG = 15, 54 DEVICE_FLAG_MAX 55 }; 56 57 class AudioInterruptAdapter { 58 public: 59 AudioInterruptAdapter() = default; 60 61 virtual ~AudioInterruptAdapter() = default; 62 63 virtual AudioAdapterStreamUsage GetStreamUsage() = 0; 64 65 virtual AudioAdapterContentType GetContentType() = 0; 66 67 virtual AudioAdapterStreamType GetStreamType() = 0; 68 69 virtual uint32_t GetSessionID() = 0; 70 71 virtual bool GetPauseWhenDucked() = 0; 72 }; 73 74 class AudioDeviceDescAdapter { 75 public: 76 AudioDeviceDescAdapter() = default; 77 78 virtual ~AudioDeviceDescAdapter() = default; 79 80 virtual int32_t GetDeviceId() = 0; 81 82 virtual std::string GetDeviceName() = 0; 83 }; 84 85 class AudioManagerCallbackAdapter { 86 public: 87 AudioManagerCallbackAdapter() = default; 88 89 virtual ~AudioManagerCallbackAdapter() = default; 90 91 virtual void OnSuspend() = 0; 92 93 virtual void OnResume() = 0; 94 }; 95 96 class AudioManagerDeviceChangeCallbackAdapter { 97 public: 98 AudioManagerDeviceChangeCallbackAdapter() = default; 99 100 virtual ~AudioManagerDeviceChangeCallbackAdapter() = default; 101 102 virtual void OnDeviceChange() = 0; 103 }; 104 105 class AudioSystemManagerAdapter { 106 public: 107 AudioSystemManagerAdapter() = default; 108 109 virtual ~AudioSystemManagerAdapter() = default; 110 111 virtual bool HasAudioOutputDevices() = 0; 112 113 virtual bool HasAudioInputDevices() = 0; 114 115 virtual int32_t RequestAudioFocus(const std::shared_ptr<AudioInterruptAdapter> audioInterrupt) = 0; 116 117 virtual int32_t AbandonAudioFocus(const std::shared_ptr<AudioInterruptAdapter> audioInterrupt) = 0; 118 119 virtual int32_t SetAudioManagerInterruptCallback(std::shared_ptr<AudioManagerCallbackAdapter> callback) = 0; 120 121 virtual int32_t UnsetAudioManagerInterruptCallback() = 0; 122 123 virtual std::vector<std::shared_ptr<AudioDeviceDescAdapter>> GetDevices(AdapterDeviceFlag flag) = 0; 124 125 virtual int32_t SelectAudioDeviceById(int32_t deviceId, bool isInput) = 0; 126 127 virtual int32_t SetDeviceChangeCallback(std::shared_ptr<AudioManagerDeviceChangeCallbackAdapter> callback) = 0; 128 129 virtual int32_t UnsetDeviceChangeCallback() = 0; 130 131 virtual std::shared_ptr<AudioDeviceDescAdapter> GetDefaultOutputDevice() = 0; 132 133 virtual std::shared_ptr<AudioDeviceDescAdapter> GetDefaultInputDevice() = 0; 134 135 virtual bool SetLanguage(const std::string& language) = 0; 136 }; 137 138 } // namespace OHOS::NWeb 139 140 #endif // AUDIO_RENDERER_ADAPTER_H 141