• 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 OHOS_DAUDIO_AUDIO_PARAM_H
17 #define OHOS_DAUDIO_AUDIO_PARAM_H
18 
19 #include <string>
20 
21 namespace OHOS {
22 namespace DistributedHardware {
23 typedef enum {
24     SAMPLE_RATE_8000 = 8000,
25     SAMPLE_RATE_11025 = 11025,
26     SAMPLE_RATE_12000 = 12000,
27     SAMPLE_RATE_16000 = 16000,
28     SAMPLE_RATE_22050 = 22050,
29     SAMPLE_RATE_24000 = 24000,
30     SAMPLE_RATE_32000 = 32000,
31     SAMPLE_RATE_44100 = 44100,
32     SAMPLE_RATE_48000 = 48000,
33     SAMPLE_RATE_64000 = 64000,
34     SAMPLE_RATE_96000 = 96000
35 } AudioSampleRate;
36 
37 typedef enum {
38     SOURCE_TYPE_INVALID = -1,
39     SOURCE_TYPE_MIC,
40     SOURCE_TYPE_VOICE_CALL = 4,
41     SOURCE_TYPE_VOICE_COMMUNICATION = 7
42 } SourceType;
43 
44 typedef enum {
45     MONO = 1,
46     STEREO = 2
47 } AudioChannel;
48 
49 typedef enum {
50     SAMPLE_U8 = 0,
51     SAMPLE_S16LE = 1,
52     SAMPLE_S24LE = 2,
53     SAMPLE_S32LE = 3,
54     SAMPLE_F32LE = 4,
55     INVALID_WIDTH = -1
56 } AudioSampleFormat;
57 
58 typedef enum {
59     AUDIO_CODEC_AAC = 0,
60     AUDIO_CODEC_FLAC = 1,
61     AUDIO_CODEC_AAC_EN = 2
62 } AudioCodecType;
63 
64 typedef enum {
65     CONTENT_TYPE_UNKNOWN = 0,
66     CONTENT_TYPE_SPEECH = 1,
67     CONTENT_TYPE_MUSIC = 2,
68     CONTENT_TYPE_MOVIE = 3,
69     CONTENT_TYPE_SONIFICATION = 4,
70     CONTENT_TYPE_RINGTONE = 5
71 } ContentType;
72 
73 typedef enum {
74     STREAM_USAGE_UNKNOWN = 0,
75     STREAM_USAGE_MEDIA = 1,
76     STREAM_USAGE_VOICE_COMMUNICATION = 2,
77     STREAM_USAGE_VOICE_ASSISTANT = 4,
78     STREAM_USAGE_MMAP = 5,
79     STREAM_USAGE_NOTIFICATION_RINGTONE = 6
80 } StreamUsage;
81 
82 typedef enum {
83     NORMAL_MODE = 0,
84     MMAP_MODE = 1,
85 } PortOperationMode;
86 
87 typedef struct AudioCommonParam {
88     AudioSampleRate sampleRate = SAMPLE_RATE_8000;
89     AudioChannel channelMask = MONO;
90     AudioSampleFormat bitFormat = SAMPLE_U8;
91     AudioCodecType codecType = AUDIO_CODEC_AAC;
92     uint32_t frameSize = 0;
93 } AudioCommonParam;
94 
95 typedef struct AudioCaptureOptions {
96     SourceType sourceType = SOURCE_TYPE_INVALID;
97     PortOperationMode capturerFlags = NORMAL_MODE;
98 } AudioCaptureOptions;
99 
100 typedef struct AudioRenderOptions {
101     ContentType contentType = CONTENT_TYPE_UNKNOWN;
102     StreamUsage streamUsage = STREAM_USAGE_UNKNOWN;
103     PortOperationMode renderFlags = NORMAL_MODE;
104 } AudioRenderOptions;
105 
106 typedef struct AudioParamHDF {
107     AudioSampleRate sampleRate = SAMPLE_RATE_8000;
108     AudioChannel channelMask = MONO;
109     AudioSampleFormat bitFormat = SAMPLE_U8;
110     StreamUsage streamUsage = STREAM_USAGE_UNKNOWN;
111     uint32_t frameSize = 0;
112     uint32_t period = 0;
113     PortOperationMode renderFlags = NORMAL_MODE;
114     PortOperationMode capturerFlags = NORMAL_MODE;
115     std::string ext;
116 } AudioParamHDF;
117 
118 typedef struct {
119     AudioCommonParam comParam;
120     AudioCaptureOptions captureOpts;
121     AudioRenderOptions renderOpts;
122 } AudioParam;
123 
124 typedef enum {
125     STATE_UNKNOWN = -1,
126     STATE_CHANNEL_OPEN = 0,
127     STATE_CHANNEL_CLOSE = 1
128 } STATE;
129 
130 typedef enum {
131     CAP_UNKNOWN = 0,
132     CAP_SPK = 1,
133     CAP_MIC = 2,
134 } PortCapType;
135 
136 typedef struct {
137     int64_t tvSec;
138     int64_t tvNSec;
139 } CurrentTimeHDF;
140 
141 typedef enum {
142     REF,
143     MIC1,
144 } StreamType;
145 } // namespace DistributedHardware
146 } // namespace OHOS
147 #endif // OHOS_DAUDIO_AUDIO_PARAM_H
148