1 /*
2 * Copyright (c) 2025 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 HPAE_INFO_H
17 #define HPAE_INFO_H
18 #include "audio_effect.h"
19 namespace OHOS {
20 namespace AudioStandard {
21 namespace HPAE {
22 enum HpaeStreamClassType {
23 HPAE_STREAM_CLASS_TYPE_INVALID = -1,
24 HPAE_STREAM_CLASS_TYPE_PLAY,
25 HPAE_STREAM_CLASS_TYPE_RECORD,
26 };
27
28 enum HpaeNodeType {
29 HPAE_NODE_TYPE_INVALID = -1,
30 HPAE_NODE_TYPE_SOURCE_INPUT,
31 HPAE_NODE_TYPE_SOURCE_OUTPUT,
32 HPAE_NODE_TYPE_SINK_INPUT,
33 HPAE_NODE_TYPE_SINK_OUTPUT,
34 HPAE_NODE_TYPE_PLUGIN,
35 };
36
37 struct HpaeEffectInfo {
38 StreamUsage streamUsage = STREAM_USAGE_INVALID;
39 AudioVolumeType systemVolumeType = STREAM_MUSIC;
40 AudioEffectScene effectScene = SCENE_OTHERS;
41 AudioEffectMode effectMode = EFFECT_NONE;
42 AudioEnhanceScene enhanceScene = SCENE_NONE;
43 AudioEnhanceMode enhanceMode = ENHANCE_NONE;
44 AudioEffectScene lastEffectScene = SCENE_OTHERS;
45 };
46
47 enum FadeType {
48 DEFAULT_FADE = 0, // default one frame fade
49 SHORT_FADE, // short 5ms fade
50 NONE_FADE // do not fade
51 };
52
53 enum HpaeSessionState {
54 HPAE_SESSION_INVALID = -1,
55 HPAE_SESSION_NEW,
56 HPAE_SESSION_PREPARED,
57 HPAE_SESSION_RUNNING,
58 HPAE_SESSION_PAUSING,
59 HPAE_SESSION_PAUSED,
60 HPAE_SESSION_STOPPING,
61 HPAE_SESSION_STOPPED,
62 HPAE_SESSION_RELEASED
63 };
64
65 // use for sink or source state
66 enum StreamManagerState {
67 STREAM_MANAGER_INVALID = -1,
68 STREAM_MANAGER_NEW,
69 STREAM_MANAGER_IDLE,
70 STREAM_MANAGER_RUNNING,
71 STREAM_MANAGER_SUSPENDED,
72 STREAM_MANAGER_RELEASED
73 };
74
75 enum MoveSessionType {
76 MOVE_SINGLE,
77 MOVE_ALL,
78 MOVE_PREFER,
79 };
80
81 struct HpaeStreamInfo {
82 uint32_t sessionId = 0;
83 size_t frameLen = 0;
84 HpaeNodeType nodeType = HPAE_NODE_TYPE_INVALID;
85 AudioStreamType streamType = STREAM_DEFAULT;
86 FadeType fadeType = NONE_FADE;
87 AudioPipeType pipeType = PIPE_TYPE_UNKNOWN;
88 AudioSamplingRate samplingRate = SAMPLE_RATE_8000;
89 AudioSampleFormat format = INVALID_WIDTH;
90 AudioChannel channels = CHANNEL_UNKNOW;
91 uint64_t channelLayout = 0ULL;
92 HpaeStreamClassType streamClassType = HPAE_STREAM_CLASS_TYPE_INVALID;
93 SourceType sourceType = SOURCE_TYPE_INVALID;
94 int32_t uid = -1;
95 int32_t pid = 0;
96 uint32_t tokenId = 0;
97 HpaeEffectInfo effectInfo;
98 std::string deviceName;
99 bool isMoveAble = true;
100 AudioPrivacyType privacyType = PRIVACY_TYPE_PUBLIC;
101 };
102
103 struct HpaeSinkInfo {
104 uint32_t sinkId;
105 std::string deviceNetId;
106 std::string deviceClass;
107 std::string adapterName;
108 std::string lib;
109 std::string filePath;
110 std::string deviceName;
111 size_t frameLen = 0;
112 AudioSamplingRate samplingRate = SAMPLE_RATE_8000;
113 AudioSampleFormat format = INVALID_WIDTH;
114 AudioChannel channels = CHANNEL_UNKNOW;
115 uint32_t suspendTime = 0; // in ms
116 uint64_t channelLayout = 0ULL;
117 int32_t deviceType = 0;
118 float volume = 0.0f;
119 uint32_t openMicSpeaker = 0;
120 uint32_t renderInIdleState = 0;
121 uint32_t sourceType = 0;
122 uint32_t offloadEnable = 0;
123 uint32_t fixedLatency = 0;
124 uint32_t sinkLatency = 0;
125 std::string splitMode;
126 bool needEmptyChunk = true;
127 };
128
129 enum HpaeEcType {
130 HPAE_EC_TYPE_NONE,
131 HPAE_EC_TYPE_SAME_ADAPTER,
132 HPAE_EC_TYPE_DIFF_ADAPTER
133 };
134
135 enum HpaeMicRefSwitch {
136 HPAE_REF_OFF = 0,
137 HPAE_REF_ON
138 };
139
140 struct HpaeSourceInfo {
141 uint32_t sourceId;
142 std::string deviceNetId;
143 std::string deviceClass;
144 std::string adapterName;
145 std::string sourceName;
146 SourceType sourceType;
147 std::string filePath;
148 std::string deviceName;
149 size_t frameLen = 0;
150 AudioSamplingRate samplingRate = SAMPLE_RATE_8000;
151 AudioSampleFormat format = INVALID_WIDTH;
152 AudioChannel channels = CHANNEL_UNKNOW;
153 uint64_t channelLayout = 0ULL;
154 int32_t deviceType = 0;
155 float volume = 0.0f;
156 HpaeEcType ecType = HPAE_EC_TYPE_NONE;
157 size_t ecFrameLen = 0;
158 std::string ecAdapterName;
159 AudioSamplingRate ecSamplingRate = SAMPLE_RATE_8000;
160 AudioSampleFormat ecFormat = INVALID_WIDTH;
161 AudioChannel ecChannels = CHANNEL_UNKNOW;
162 HpaeMicRefSwitch micRef = HPAE_REF_OFF;
163 size_t micRefFrameLen = 0;
164 AudioSamplingRate micRefSamplingRate = SAMPLE_RATE_8000;
165 AudioSampleFormat micRefFormat = INVALID_WIDTH;
166 AudioChannel micRefChannels = CHANNEL_UNKNOW;
167 uint32_t openMicSpeaker = 0;
168 };
169
GetSizeFromFormat(int32_t format)170 static inline int32_t GetSizeFromFormat(int32_t format)
171 {
172 return format != SAMPLE_F32LE ? ((format) + 1) : (4); // float 4
173 }
174
175 } // namespace HPAE
176 } // namespace AudioStandard
177 } // namespace OHOS
178 #endif