1 /*
2 * Copyright (C) 2023 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 #include "audio_codeclist_info.h"
17 #include "avcodec_mime_type.h"
18 #include "avcodec_codec_name.h"
19 #include "hdi_codec.h"
20
21 namespace OHOS {
22 namespace MediaAVCodec {
23 const std::vector<int32_t> AUDIO_SAMPLE_RATE = {8000, 11025, 12000, 16000, 22050, 24000,
24 32000, 44100, 48000, 64000, 88200, 96000};
25 constexpr int MAX_AUDIO_CHANNEL_COUNT = 8;
26 constexpr int MAX_SUPPORT_AUDIO_INSTANCE = 16;
27
28 constexpr int MIN_BIT_RATE_MP3 = 32000;
29 constexpr int MAX_BIT_RATE_MP3 = 320000;
30 constexpr int MAX_BIT_RATE_OPUS = 510000;
31 constexpr int MIN_BIT_RATE_MP3_ENCODE = 8000;
32 constexpr int MAX_CHANNEL_COUNT_MP3 = 2;
33 constexpr int MAX_CHANNEL_COUNT_APE = 2;
34
35 constexpr int MIN_BIT_RATE_AAC = 8000;
36 constexpr int MAX_BIT_RATE_AAC = 960000;
37 const std::vector<int32_t> AUDIO_VORBIS_SAMPLE_RATE = {8000, 11025, 12000, 16000, 22050, 24000,
38 32000, 44100, 48000, 64000, 88200, 96000};
39 const std::vector<int32_t> AUDIO_AMRNB_SAMPLE_RATE = {8000};
40
41 const std::vector<int32_t> AUDIO_AMRWB_SAMPLE_RATE = {16000};
42
43 const std::vector<int32_t> AUDIO_G711MU_SAMPLE_RATE = {8000};
44
45 const std::vector<int32_t> AUDIO_FLAC_SAMPLE_RATE = {8000, 11025, 12000, 16000, 22050, 24000, 32000,
46 44100, 48000, 64000, 88200, 96000, 192000};
47
48 const std::vector<int32_t> AUDIO_MP3_EN_SAMPLE_RATE = {8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000};
49 const std::vector<int32_t> AUDIO_LBVC_SAMPLE_RATE = {16000};
50
51 constexpr int MAX_BIT_RATE_FLAC = 2100000;
52 constexpr int MAX_BIT_RATE_APE = 2100000;
53 constexpr int MIN_BIT_RATE_VORBIS = 32000;
54 constexpr int MAX_BIT_RATE_VORBIS = 500000;
55
56 constexpr int MAX_BIT_RATE_AMRWB = 23850;
57 constexpr int MAX_BIT_RATE_AMRNB = 12200;
58
59 constexpr int MIN_BIT_RATE_AAC_ENCODER = 8000;
60 constexpr int MAX_BIT_RATE_AAC_ENCODER = 448000;
61
62 #ifdef AV_CODEC_AUDIO_VIVID_CAPACITY
63 constexpr int MAX_BIT_RATE_LBVC = 6000;
64 const std::vector<int32_t> AUDIO_VIVID_SAMPLE_RATE = {32000, 44100, 48000, 96000, 192000};
65 constexpr int MIN_BIT_RATE_VIVID_DECODER = 16000;
66 constexpr int MAX_BIT_RATE_VIVID_DECODER = 3075000;
67 constexpr int MAX_CHANNEL_COUNT_VIVID = 16;
68 #endif
69 constexpr int MAX_BIT_RATE_G711MU_DECODER = 64000;
70 constexpr int MAX_BIT_RATE_G711MU_ENCODER = 64000;
71
GetMP3DecoderCapability()72 CapabilityData AudioCodeclistInfo::GetMP3DecoderCapability()
73 {
74 CapabilityData audioMp3Capability;
75 audioMp3Capability.codecName = AVCodecCodecName::AUDIO_DECODER_MP3_NAME;
76 audioMp3Capability.codecType = AVCODEC_TYPE_AUDIO_DECODER;
77 audioMp3Capability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_MPEG;
78 audioMp3Capability.isVendor = false;
79 audioMp3Capability.bitrate = Range(MIN_BIT_RATE_MP3, MAX_BIT_RATE_MP3);
80 audioMp3Capability.channels = Range(1, MAX_CHANNEL_COUNT_MP3);
81 audioMp3Capability.sampleRate = AUDIO_SAMPLE_RATE;
82 audioMp3Capability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
83 return audioMp3Capability;
84 }
85
GetMP3EncoderCapability()86 CapabilityData AudioCodeclistInfo::GetMP3EncoderCapability()
87 {
88 CapabilityData audioMp3Capability;
89 audioMp3Capability.codecName = AVCodecCodecName::AUDIO_ENCODER_MP3_NAME;
90 audioMp3Capability.codecType = AVCODEC_TYPE_AUDIO_ENCODER;
91 audioMp3Capability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_MPEG;
92 audioMp3Capability.isVendor = false;
93 audioMp3Capability.bitrate = Range(MIN_BIT_RATE_MP3_ENCODE, MAX_BIT_RATE_MP3);
94 audioMp3Capability.channels = Range(1, MAX_CHANNEL_COUNT_MP3);
95 audioMp3Capability.sampleRate = AUDIO_MP3_EN_SAMPLE_RATE;
96 audioMp3Capability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
97 return audioMp3Capability;
98 }
99
GetAacDecoderCapability()100 CapabilityData AudioCodeclistInfo::GetAacDecoderCapability()
101 {
102 CapabilityData audioAacCapability;
103 audioAacCapability.codecName = AVCodecCodecName::AUDIO_DECODER_AAC_NAME;
104 audioAacCapability.codecType = AVCODEC_TYPE_AUDIO_DECODER;
105 audioAacCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AAC;
106 audioAacCapability.isVendor = false;
107 audioAacCapability.bitrate = Range(MIN_BIT_RATE_AAC, MAX_BIT_RATE_AAC);
108 audioAacCapability.channels = Range(1, MAX_AUDIO_CHANNEL_COUNT);
109 audioAacCapability.sampleRate = AUDIO_SAMPLE_RATE;
110 audioAacCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
111 return audioAacCapability;
112 }
113
GetOpusDecoderCapability()114 CapabilityData AudioCodeclistInfo::GetOpusDecoderCapability()
115 {
116 CapabilityData audioOpusCapability;
117 audioOpusCapability.codecName = AVCodecCodecName::AUDIO_DECODER_OPUS_NAME;
118 audioOpusCapability.codecType = AVCODEC_TYPE_AUDIO_DECODER;
119 audioOpusCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_OPUS;
120 audioOpusCapability.isVendor = false;
121 audioOpusCapability.bitrate = Range(1, MAX_BIT_RATE_OPUS);
122 audioOpusCapability.channels = Range(1, MAX_AUDIO_CHANNEL_COUNT);
123 audioOpusCapability.sampleRate = AUDIO_SAMPLE_RATE;
124 audioOpusCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
125 return audioOpusCapability;
126 }
127
GetFlacDecoderCapability()128 CapabilityData AudioCodeclistInfo::GetFlacDecoderCapability()
129 {
130 CapabilityData audioFlacCapability;
131 audioFlacCapability.codecName = AVCodecCodecName::AUDIO_DECODER_FLAC_NAME;
132 audioFlacCapability.codecType = AVCODEC_TYPE_AUDIO_DECODER;
133 audioFlacCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_FLAC;
134 audioFlacCapability.isVendor = false;
135 audioFlacCapability.bitrate = Range(1, MAX_BIT_RATE_FLAC);
136 audioFlacCapability.channels = Range(1, MAX_AUDIO_CHANNEL_COUNT);
137 audioFlacCapability.sampleRate = AUDIO_FLAC_SAMPLE_RATE;
138 audioFlacCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
139 return audioFlacCapability;
140 }
141
GetVorbisDecoderCapability()142 CapabilityData AudioCodeclistInfo::GetVorbisDecoderCapability()
143 {
144 CapabilityData audioVorbisCapability;
145 audioVorbisCapability.codecName = AVCodecCodecName::AUDIO_DECODER_VORBIS_NAME;
146 audioVorbisCapability.codecType = AVCODEC_TYPE_AUDIO_DECODER;
147 audioVorbisCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_VORBIS;
148 audioVorbisCapability.isVendor = false;
149 audioVorbisCapability.bitrate = Range(MIN_BIT_RATE_VORBIS, MAX_BIT_RATE_VORBIS);
150 audioVorbisCapability.channels = Range(1, MAX_AUDIO_CHANNEL_COUNT);
151 audioVorbisCapability.sampleRate = AUDIO_VORBIS_SAMPLE_RATE;
152 audioVorbisCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
153 return audioVorbisCapability;
154 }
155
GetAmrnbDecoderCapability()156 CapabilityData AudioCodeclistInfo::GetAmrnbDecoderCapability()
157 {
158 CapabilityData audioAmrnbCapability;
159 audioAmrnbCapability.codecName = AVCodecCodecName::AUDIO_DECODER_AMRNB_NAME;
160 audioAmrnbCapability.codecType = AVCODEC_TYPE_AUDIO_DECODER;
161 audioAmrnbCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AMRNB;
162 audioAmrnbCapability.isVendor = false;
163 audioAmrnbCapability.bitrate = Range(1, MAX_BIT_RATE_AMRNB);
164 audioAmrnbCapability.channels = Range(1, 1);
165 audioAmrnbCapability.sampleRate = AUDIO_AMRNB_SAMPLE_RATE;
166 audioAmrnbCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
167 return audioAmrnbCapability;
168 }
169
GetAmrwbDecoderCapability()170 CapabilityData AudioCodeclistInfo::GetAmrwbDecoderCapability()
171 {
172 CapabilityData audioAmrwbCapability;
173 audioAmrwbCapability.codecName = AVCodecCodecName::AUDIO_DECODER_AMRWB_NAME;
174 audioAmrwbCapability.codecType = AVCODEC_TYPE_AUDIO_DECODER;
175 audioAmrwbCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AMRWB;
176 audioAmrwbCapability.isVendor = false;
177 audioAmrwbCapability.bitrate = Range(1, MAX_BIT_RATE_AMRWB);
178 audioAmrwbCapability.channels = Range(1, 1);
179 audioAmrwbCapability.sampleRate = AUDIO_AMRWB_SAMPLE_RATE;
180 audioAmrwbCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
181 return audioAmrwbCapability;
182 }
183
GetAPEDecoderCapability()184 CapabilityData AudioCodeclistInfo::GetAPEDecoderCapability()
185 {
186 CapabilityData audioApeCapability;
187 audioApeCapability.codecName = AVCodecCodecName::AUDIO_DECODER_APE_NAME;
188 audioApeCapability.codecType = AVCODEC_TYPE_AUDIO_DECODER;
189 audioApeCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_APE;
190 audioApeCapability.isVendor = false;
191 audioApeCapability.bitrate = Range(0, MAX_BIT_RATE_APE);
192 audioApeCapability.channels = Range(1, MAX_CHANNEL_COUNT_APE);
193 audioApeCapability.sampleRate = AUDIO_SAMPLE_RATE;
194 audioApeCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
195 return audioApeCapability;
196 }
197
198 #ifdef AV_CODEC_AUDIO_VIVID_CAPACITY
GetVividDecoderCapability()199 CapabilityData AudioCodeclistInfo::GetVividDecoderCapability()
200 {
201 CapabilityData audioVividCapability;
202 audioVividCapability.codecName = AVCodecCodecName::AUDIO_DECODER_VIVID_NAME;
203 audioVividCapability.codecType = AVCODEC_TYPE_AUDIO_DECODER;
204 audioVividCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_VIVID;
205 audioVividCapability.isVendor = false;
206 audioVividCapability.bitrate = Range(MIN_BIT_RATE_VIVID_DECODER, MAX_BIT_RATE_VIVID_DECODER);
207 audioVividCapability.channels = Range(1, MAX_CHANNEL_COUNT_VIVID);
208 audioVividCapability.sampleRate = AUDIO_VIVID_SAMPLE_RATE;
209 audioVividCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
210 return audioVividCapability;
211 }
212
GetAmrnbEncoderCapability()213 CapabilityData AudioCodeclistInfo::GetAmrnbEncoderCapability()
214 {
215 CapabilityData audioAmrnbCapability;
216 audioAmrnbCapability.codecName = AVCodecCodecName::AUDIO_ENCODER_AMRNB_NAME;
217 audioAmrnbCapability.codecType = AVCODEC_TYPE_AUDIO_ENCODER;
218 audioAmrnbCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AMRNB;
219 audioAmrnbCapability.isVendor = false;
220 audioAmrnbCapability.bitrate = Range(1, MAX_BIT_RATE_AMRNB);
221 audioAmrnbCapability.channels = Range(1, 1);
222 audioAmrnbCapability.sampleRate = AUDIO_AMRNB_SAMPLE_RATE;
223 audioAmrnbCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
224 return audioAmrnbCapability;
225 }
226
GetAmrwbEncoderCapability()227 CapabilityData AudioCodeclistInfo::GetAmrwbEncoderCapability()
228 {
229 CapabilityData audioAmrwbCapability;
230 audioAmrwbCapability.codecName = AVCodecCodecName::AUDIO_ENCODER_AMRWB_NAME;
231 audioAmrwbCapability.codecType = AVCODEC_TYPE_AUDIO_ENCODER;
232 audioAmrwbCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AMRWB;
233 audioAmrwbCapability.isVendor = false;
234 audioAmrwbCapability.bitrate = Range(1, MAX_BIT_RATE_AMRWB);
235 audioAmrwbCapability.channels = Range(1, 1);
236 audioAmrwbCapability.sampleRate = AUDIO_AMRWB_SAMPLE_RATE;
237 audioAmrwbCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
238 return audioAmrwbCapability;
239 }
240
GetLbvcDecoderCapability()241 CapabilityData AudioCodeclistInfo::GetLbvcDecoderCapability()
242 {
243 CapabilityData audioLbvcCapability;
244
245 std::shared_ptr<Media::Plugins::Hdi::HdiCodec> hdiCodec_;
246 hdiCodec_ = std::make_shared<Media::Plugins::Hdi::HdiCodec>();
247 if (!hdiCodec_->IsSupportCodecType("OMX.audio.decoder.lbvc")) {
248 audioLbvcCapability.codecName = "";
249 audioLbvcCapability.mimeType = "";
250 audioLbvcCapability.maxInstance = 0;
251 audioLbvcCapability.codecType = AVCODEC_TYPE_NONE;
252 audioLbvcCapability.isVendor = false;
253 audioLbvcCapability.bitrate = Range(0, 0);
254 audioLbvcCapability.channels = Range(0, 0);
255 audioLbvcCapability.sampleRate = {0};
256 return audioLbvcCapability;
257 }
258 audioLbvcCapability.codecName = AVCodecCodecName::AUDIO_DECODER_LBVC_NAME;
259 audioLbvcCapability.codecType = AVCODEC_TYPE_AUDIO_DECODER;
260 audioLbvcCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_LBVC;
261 audioLbvcCapability.isVendor = true;
262 audioLbvcCapability.bitrate = Range(MAX_BIT_RATE_LBVC, MAX_BIT_RATE_LBVC);
263 audioLbvcCapability.channels = Range(1, 1);
264 audioLbvcCapability.sampleRate = AUDIO_LBVC_SAMPLE_RATE;
265 audioLbvcCapability.maxInstance = 1;
266 return audioLbvcCapability;
267 }
268
GetLbvcEncoderCapability()269 CapabilityData AudioCodeclistInfo::GetLbvcEncoderCapability()
270 {
271 CapabilityData audioLbvcCapability;
272
273 std::shared_ptr<Media::Plugins::Hdi::HdiCodec> hdiCodec_;
274 hdiCodec_ = std::make_shared<Media::Plugins::Hdi::HdiCodec>();
275 if (!hdiCodec_->IsSupportCodecType("OMX.audio.encoder.lbvc")) {
276 audioLbvcCapability.codecName = "";
277 audioLbvcCapability.mimeType = "";
278 audioLbvcCapability.maxInstance = 0;
279 audioLbvcCapability.codecType = AVCODEC_TYPE_NONE;
280 audioLbvcCapability.isVendor = false;
281 audioLbvcCapability.bitrate = Range(0, 0);
282 audioLbvcCapability.channels = Range(0, 0);
283 audioLbvcCapability.sampleRate = {0};
284 return audioLbvcCapability;
285 }
286 audioLbvcCapability.codecName = AVCodecCodecName::AUDIO_ENCODER_LBVC_NAME;
287 audioLbvcCapability.codecType = AVCODEC_TYPE_AUDIO_ENCODER;
288 audioLbvcCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_LBVC;
289 audioLbvcCapability.isVendor = true;
290 audioLbvcCapability.bitrate = Range(MAX_BIT_RATE_LBVC, MAX_BIT_RATE_LBVC);
291 audioLbvcCapability.channels = Range(1, 1);
292 audioLbvcCapability.sampleRate = AUDIO_LBVC_SAMPLE_RATE;
293 audioLbvcCapability.maxInstance = 1;
294 return audioLbvcCapability;
295 }
296 #endif
297
GetAacEncoderCapability()298 CapabilityData AudioCodeclistInfo::GetAacEncoderCapability()
299 {
300 CapabilityData audioAacCapability;
301 audioAacCapability.codecName = AVCodecCodecName::AUDIO_ENCODER_AAC_NAME;
302 audioAacCapability.codecType = AVCODEC_TYPE_AUDIO_ENCODER;
303 audioAacCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_AAC;
304 audioAacCapability.isVendor = false;
305 audioAacCapability.bitrate = Range(MIN_BIT_RATE_AAC_ENCODER, MAX_BIT_RATE_AAC_ENCODER);
306 audioAacCapability.channels = Range(1, MAX_AUDIO_CHANNEL_COUNT);
307 audioAacCapability.sampleRate = AUDIO_SAMPLE_RATE;
308 audioAacCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
309 audioAacCapability.profiles = { AAC_PROFILE_LC };
310 return audioAacCapability;
311 }
312
GetOpusEncoderCapability()313 CapabilityData AudioCodeclistInfo::GetOpusEncoderCapability()
314 {
315 CapabilityData audioOpusCapability;
316 audioOpusCapability.codecName = AVCodecCodecName::AUDIO_ENCODER_OPUS_NAME;
317 audioOpusCapability.codecType = AVCODEC_TYPE_AUDIO_ENCODER;
318 audioOpusCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_OPUS;
319 audioOpusCapability.isVendor = false;
320 audioOpusCapability.bitrate = Range(1, MAX_BIT_RATE_OPUS);
321 audioOpusCapability.channels = Range(1, MAX_AUDIO_CHANNEL_COUNT);
322 audioOpusCapability.sampleRate = AUDIO_SAMPLE_RATE;
323 audioOpusCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
324 return audioOpusCapability;
325 }
326
GetFlacEncoderCapability()327 CapabilityData AudioCodeclistInfo::GetFlacEncoderCapability()
328 {
329 CapabilityData audioFlacCapability;
330 audioFlacCapability.codecName = AVCodecCodecName::AUDIO_ENCODER_FLAC_NAME;
331 audioFlacCapability.codecType = AVCODEC_TYPE_AUDIO_ENCODER;
332 audioFlacCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_FLAC;
333 audioFlacCapability.isVendor = false;
334 audioFlacCapability.bitrate = Range(1, MAX_BIT_RATE_FLAC);
335 audioFlacCapability.channels = Range(1, MAX_AUDIO_CHANNEL_COUNT);
336 audioFlacCapability.sampleRate = AUDIO_SAMPLE_RATE;
337 audioFlacCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
338 return audioFlacCapability;
339 }
340
GetG711muDecoderCapability()341 CapabilityData AudioCodeclistInfo::GetG711muDecoderCapability()
342 {
343 CapabilityData audioG711muDecoderCapability;
344 audioG711muDecoderCapability.codecName = AVCodecCodecName::AUDIO_DECODER_G711MU_NAME;
345 audioG711muDecoderCapability.codecType = AVCODEC_TYPE_AUDIO_DECODER;
346 audioG711muDecoderCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_G711MU;
347 audioG711muDecoderCapability.isVendor = false;
348 audioG711muDecoderCapability.bitrate = Range(1, MAX_BIT_RATE_G711MU_DECODER);
349 audioG711muDecoderCapability.channels = Range(1, 1);
350 audioG711muDecoderCapability.sampleRate = AUDIO_G711MU_SAMPLE_RATE;
351 audioG711muDecoderCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
352 return audioG711muDecoderCapability;
353 }
354
GetG711muEncoderCapability()355 CapabilityData AudioCodeclistInfo::GetG711muEncoderCapability()
356 {
357 CapabilityData audioG711muEncoderCapability;
358 audioG711muEncoderCapability.codecName = AVCodecCodecName::AUDIO_ENCODER_G711MU_NAME;
359 audioG711muEncoderCapability.codecType = AVCODEC_TYPE_AUDIO_ENCODER;
360 audioG711muEncoderCapability.mimeType = AVCodecMimeType::MEDIA_MIMETYPE_AUDIO_G711MU;
361 audioG711muEncoderCapability.isVendor = false;
362 audioG711muEncoderCapability.bitrate = Range(1, MAX_BIT_RATE_G711MU_ENCODER);
363 audioG711muEncoderCapability.channels = Range(1, 1);
364 audioG711muEncoderCapability.sampleRate = AUDIO_G711MU_SAMPLE_RATE;
365 audioG711muEncoderCapability.maxInstance = MAX_SUPPORT_AUDIO_INSTANCE;
366 return audioG711muEncoderCapability;
367 }
368
AudioCodeclistInfo()369 AudioCodeclistInfo::AudioCodeclistInfo()
370 {
371 audioCapabilities_ = {GetMP3DecoderCapability(), GetAacDecoderCapability(), GetFlacDecoderCapability(),
372 GetOpusDecoderCapability(), GetVorbisDecoderCapability(), GetAmrnbDecoderCapability(),
373 GetAmrwbDecoderCapability(), GetG711muDecoderCapability(), GetAacEncoderCapability(),
374 GetFlacEncoderCapability(), GetOpusEncoderCapability(), GetG711muEncoderCapability(),
375 GetAPEDecoderCapability(), GetMP3EncoderCapability(),
376 #ifdef AV_CODEC_AUDIO_VIVID_CAPACITY
377 GetVividDecoderCapability(), GetAmrnbEncoderCapability(), GetAmrwbEncoderCapability(),
378 GetLbvcDecoderCapability(), GetLbvcEncoderCapability(),
379 #endif
380 };
381 }
382
~AudioCodeclistInfo()383 AudioCodeclistInfo::~AudioCodeclistInfo()
384 {
385 audioCapabilities_.clear();
386 }
387
GetInstance()388 AudioCodeclistInfo &AudioCodeclistInfo::GetInstance()
389 {
390 static AudioCodeclistInfo audioCodecList;
391 return audioCodecList;
392 }
393
GetAudioCapabilities() const394 std::vector<CapabilityData> AudioCodeclistInfo::GetAudioCapabilities() const noexcept
395 {
396 return audioCapabilities_;
397 }
398 } // namespace MediaAVCodec
399 } // namespace OHOS