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