• 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     AUDIO_CODEC_OPUS = 3
63 } AudioCodecType;
64 
65 typedef enum {
66     CONTENT_TYPE_UNKNOWN = 0,
67     CONTENT_TYPE_SPEECH = 1,
68     CONTENT_TYPE_MUSIC = 2,
69     CONTENT_TYPE_MOVIE = 3,
70     CONTENT_TYPE_SONIFICATION = 4,
71     CONTENT_TYPE_RINGTONE = 5
72 } ContentType;
73 
74 typedef enum {
75     STREAM_USAGE_UNKNOWN = 0,
76     STREAM_USAGE_MEDIA = 1,
77     STREAM_USAGE_VOICE_COMMUNICATION = 2,
78     STREAM_USAGE_VOICE_ASSISTANT = 4,
79     STREAM_USAGE_MMAP = 5,
80     STREAM_USAGE_NOTIFICATION_RINGTONE = 6
81 } StreamUsage;
82 
83 typedef enum {
84     NORMAL_MODE = 0,
85     MMAP_MODE = 1,
86 } PortOperationMode;
87 
88 typedef struct AudioCommonParam {
89     AudioSampleRate sampleRate = SAMPLE_RATE_8000;
90     AudioChannel channelMask = MONO;
91     AudioSampleFormat bitFormat = SAMPLE_U8;
92     AudioCodecType codecType = AUDIO_CODEC_AAC;
93     uint32_t frameSize = 0;
94 } AudioCommonParam;
95 
96 typedef struct AudioCaptureOptions {
97     SourceType sourceType = SOURCE_TYPE_INVALID;
98     PortOperationMode capturerFlags = NORMAL_MODE;
99 } AudioCaptureOptions;
100 
101 typedef struct AudioRenderOptions {
102     ContentType contentType = CONTENT_TYPE_UNKNOWN;
103     StreamUsage streamUsage = STREAM_USAGE_UNKNOWN;
104     PortOperationMode renderFlags = NORMAL_MODE;
105 } AudioRenderOptions;
106 
107 typedef struct AudioParamHDF {
108     AudioSampleRate sampleRate = SAMPLE_RATE_8000;
109     AudioChannel channelMask = MONO;
110     AudioSampleFormat bitFormat = SAMPLE_U8;
111     StreamUsage streamUsage = STREAM_USAGE_UNKNOWN;
112     uint32_t frameSize = 0;
113     uint32_t period = 0;
114     PortOperationMode renderFlags = NORMAL_MODE;
115     PortOperationMode capturerFlags = NORMAL_MODE;
116     std::string ext;
117 } AudioParamHDF;
118 
119 typedef struct {
120     AudioCommonParam comParam;
121     AudioCaptureOptions captureOpts;
122     AudioRenderOptions renderOpts;
123 } AudioParam;
124 
125 typedef enum {
126     STATE_UNKNOWN = -1,
127     STATE_CHANNEL_OPEN = 0,
128     STATE_CHANNEL_CLOSE = 1
129 } STATE;
130 
131 typedef enum {
132     CAP_UNKNOWN = 0,
133     CAP_SPK = 1,
134     CAP_MIC = 2,
135 } PortCapType;
136 
137 typedef struct {
138     int64_t tvSec;
139     int64_t tvNSec;
140 } CurrentTimeHDF;
141 
142 typedef enum {
143     REF,
144     MIC1,
145 } StreamType;
146 } // namespace DistributedHardware
147 } // namespace OHOS
148 #endif // OHOS_DAUDIO_AUDIO_PARAM_H
149