• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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