1 /*
2 * Copyright (c) 2023-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 "plugin/plugin_list.h"
17
18 #define DEFAULT_RANK 100
19
20 namespace OHOS {
21 namespace Media {
22 namespace Plugins {
~PluginList()23 PluginList::~PluginList()
24 {
25 pluginDescriptionList_.clear();
26 }
27
GetInstance()28 PluginList &PluginList::GetInstance()
29 {
30 static PluginList pluginList;
31 return pluginList;
32 }
33
GetAllPlugins()34 std::vector<PluginDescription> PluginList::GetAllPlugins()
35 {
36 return pluginDescriptionList_;
37 }
38
GetPluginsByCap(PluginType pluginType,std::string needCap)39 std::vector<PluginDescription> PluginList::GetPluginsByCap(PluginType pluginType, std::string needCap)
40 {
41 std::vector<PluginDescription> matchedPlugins;
42 std::vector<PluginDescription>::iterator it;
43 for (it = pluginDescriptionList_.begin(); it != pluginDescriptionList_.end(); it++) {
44 PluginDescription temp = *it;
45 if (temp.pluginType == pluginType &&
46 strcmp(temp.cap.c_str(), needCap.c_str()) == 0) {
47 matchedPlugins.push_back(temp);
48 }
49 }
50 std::sort(matchedPlugins.begin(), matchedPlugins.end(),
51 [](PluginDescription a, PluginDescription b) {
52 return a.rank > b.rank;
53 });
54 return matchedPlugins;
55 }
56
GetPluginByName(std::string name)57 PluginDescription PluginList::GetPluginByName(std::string name)
58 {
59 std::vector<PluginDescription>::iterator it;
60 PluginDescription bestMatchedPlugin;
61 for (it = pluginDescriptionList_.begin(); it != pluginDescriptionList_.end(); it++) {
62 PluginDescription temp = *it;
63 if (strcmp((*it).pluginName.c_str(), name.c_str()) == 0) {
64 bestMatchedPlugin = (*it);
65 }
66 }
67 return bestMatchedPlugin;
68 }
69
GetPluginsByType(PluginType pluginType)70 std::vector<PluginDescription> PluginList::GetPluginsByType(PluginType pluginType)
71 {
72 std::vector<PluginDescription> matchedPlugins;
73 std::vector<PluginDescription>::iterator it;
74 for (it = pluginDescriptionList_.begin(); it != pluginDescriptionList_.end(); it++) {
75 PluginDescription temp = *it;
76 if (temp.pluginType == pluginType) {
77 matchedPlugins.push_back(temp);
78 }
79 }
80 return matchedPlugins;
81 }
82
PluginList()83 PluginList::PluginList()
84 {
85 AddDataSourceStreamPlugins();
86 AddFileFdSourcePlugins();
87 AddFileSourcePlugins();
88 AddHttpSourcePlugins();
89 AddFFmpegDemuxerPlugins();
90 AddFFmpegAudioDecodersPlugins();
91 AddAudioVividDecodersPlugins();
92 AddAudioVendorAacEncodersPlugin();
93 AddG711muAudioDecoderPlugins();
94 AddLbvcAudioDecoderPlugins();
95 AddOpusAudioDecoderPlugins();
96 AddRawAudioDecoderPlugins();
97 AddAudioServerSinkPlugins();
98 AddFFmpegAudioEncodersPlugins();
99 AddG711muAudioEncoderPlugins();
100 AddLbvcAudioEncoderPlugins();
101 AddOpusAudioEncoderPlugins();
102 AddAmrwbAudioEncoderPlugins();
103 AddAmrnbAudioEncoderPlugins();
104 AddMp3AudioEncoderPlugins();
105 AddFFmpegMuxerPlugins();
106 #ifdef SUPPORT_CODEC_COOK
107 AddCookAudioDecoderPlugins();
108 #endif
109 #ifdef SUPPORT_CODEC_AC3
110 AddAc3AudioDecoderPlugins();
111 #endif
112 }
113
AddDataSourceStreamPlugins()114 void PluginList::AddDataSourceStreamPlugins()
115 {
116 PluginDescription dataSourceStreamPlugin;
117 dataSourceStreamPlugin.pluginName = "DataStreamSource";
118 dataSourceStreamPlugin.packageName = "DataStreamSource";
119 dataSourceStreamPlugin.pluginType = PluginType::SOURCE;
120 dataSourceStreamPlugin.cap = "stream";
121 dataSourceStreamPlugin.rank = DEFAULT_RANK;
122 pluginDescriptionList_.push_back(dataSourceStreamPlugin);
123 }
124
AddFileFdSourcePlugins()125 void PluginList::AddFileFdSourcePlugins()
126 {
127 PluginDescription fileFdSourcePlugin;
128 fileFdSourcePlugin.pluginName = "FileFdSource";
129 fileFdSourcePlugin.packageName = "FileFdSource";
130 fileFdSourcePlugin.pluginType = PluginType::SOURCE;
131 fileFdSourcePlugin.cap = "fd";
132 fileFdSourcePlugin.rank = DEFAULT_RANK;
133 pluginDescriptionList_.push_back(fileFdSourcePlugin);
134 }
135
AddFileSourcePlugins()136 void PluginList::AddFileSourcePlugins()
137 {
138 PluginDescription fileSourcePlugin;
139 fileSourcePlugin.pluginName = "FileSource";
140 fileSourcePlugin.packageName = "FileSource";
141 fileSourcePlugin.pluginType = PluginType::SOURCE;
142 fileSourcePlugin.cap = "file";
143 fileSourcePlugin.rank = DEFAULT_RANK;
144 pluginDescriptionList_.push_back(fileSourcePlugin);
145 }
146
AddHttpSourcePlugins()147 void PluginList::AddHttpSourcePlugins()
148 {
149 PluginDescription httpSourcePlugin;
150 httpSourcePlugin.pluginName = "HttpSource";
151 httpSourcePlugin.packageName = "HttpSource";
152 httpSourcePlugin.pluginType = PluginType::SOURCE;
153 httpSourcePlugin.cap = "http";
154 httpSourcePlugin.rank = DEFAULT_RANK;
155 pluginDescriptionList_.push_back(httpSourcePlugin);
156
157 PluginDescription httpsSourcePlugin;
158 httpsSourcePlugin.pluginName = "HttpSource";
159 httpsSourcePlugin.packageName = "HttpSource";
160 httpsSourcePlugin.pluginType = PluginType::SOURCE;
161 httpsSourcePlugin.cap = "https";
162 httpsSourcePlugin.rank = DEFAULT_RANK;
163 pluginDescriptionList_.push_back(httpsSourcePlugin);
164 }
165
AddAacDemuxerPlugin()166 void PluginList::AddAacDemuxerPlugin()
167 {
168 PluginDescription aacDemuxerPlugin;
169 aacDemuxerPlugin.pluginName = "avdemux_aac";
170 aacDemuxerPlugin.packageName = "FFmpegDemuxer";
171 aacDemuxerPlugin.pluginType = PluginType::DEMUXER;
172 aacDemuxerPlugin.cap = "";
173 aacDemuxerPlugin.rank = DEFAULT_RANK;
174 pluginDescriptionList_.push_back(aacDemuxerPlugin);
175 }
176
AddAmrDemuxerPlugin()177 void PluginList::AddAmrDemuxerPlugin()
178 {
179 PluginDescription amrDemuxerPlugin;
180 amrDemuxerPlugin.pluginName = "avdemux_amr";
181 amrDemuxerPlugin.packageName = "FFmpegDemuxer";
182 amrDemuxerPlugin.pluginType = PluginType::DEMUXER;
183 amrDemuxerPlugin.cap = "";
184 amrDemuxerPlugin.rank = DEFAULT_RANK;
185 pluginDescriptionList_.push_back(amrDemuxerPlugin);
186 }
187
AddAmrnbDemuxerPlugin()188 void PluginList::AddAmrnbDemuxerPlugin()
189 {
190 PluginDescription amrnbDemuxerPlugin;
191 amrnbDemuxerPlugin.pluginName = "avdemux_amrnb";
192 amrnbDemuxerPlugin.packageName = "FFmpegDemuxer";
193 amrnbDemuxerPlugin.pluginType = PluginType::DEMUXER;
194 amrnbDemuxerPlugin.cap = "";
195 amrnbDemuxerPlugin.rank = DEFAULT_RANK;
196 pluginDescriptionList_.push_back(amrnbDemuxerPlugin);
197 }
198
AddAmrwbDemuxerPlugin()199 void PluginList::AddAmrwbDemuxerPlugin()
200 {
201 PluginDescription amrwbDemuxerPlugin;
202 amrwbDemuxerPlugin.pluginName = "avdemux_amrwb";
203 amrwbDemuxerPlugin.packageName = "FFmpegDemuxer";
204 amrwbDemuxerPlugin.pluginType = PluginType::DEMUXER;
205 amrwbDemuxerPlugin.cap = "";
206 amrwbDemuxerPlugin.rank = DEFAULT_RANK;
207 pluginDescriptionList_.push_back(amrwbDemuxerPlugin);
208 }
209
AddApeDemuxerPlugin()210 void PluginList::AddApeDemuxerPlugin()
211 {
212 PluginDescription apeDemuxerPlugin;
213 apeDemuxerPlugin.pluginName = "avdemux_ape";
214 apeDemuxerPlugin.packageName = "FFmpegDemuxer";
215 apeDemuxerPlugin.pluginType = PluginType::DEMUXER;
216 apeDemuxerPlugin.cap = "";
217 apeDemuxerPlugin.rank = DEFAULT_RANK;
218 pluginDescriptionList_.push_back(apeDemuxerPlugin);
219 }
220
AddAsfDemuxerPlugin()221 void PluginList::AddAsfDemuxerPlugin()
222 {
223 PluginDescription asfDemuxerPlugin;
224 asfDemuxerPlugin.pluginName = "avdemux_asf";
225 asfDemuxerPlugin.packageName = "FFmpegDemuxer";
226 asfDemuxerPlugin.pluginType = PluginType::DEMUXER;
227 asfDemuxerPlugin.cap = "";
228 asfDemuxerPlugin.rank = DEFAULT_RANK;
229 pluginDescriptionList_.push_back(asfDemuxerPlugin);
230 }
231
AddAsfoDemuxerPlugin()232 void PluginList::AddAsfoDemuxerPlugin()
233 {
234 PluginDescription asfoDemuxerPlugin;
235 asfoDemuxerPlugin.pluginName = "avdemux_asf_o";
236 asfoDemuxerPlugin.packageName = "FFmpegDemuxer";
237 asfoDemuxerPlugin.pluginType = PluginType::DEMUXER;
238 asfoDemuxerPlugin.cap = "";
239 asfoDemuxerPlugin.rank = DEFAULT_RANK;
240 pluginDescriptionList_.push_back(asfoDemuxerPlugin);
241 }
242
AddFlacDemuxerPlugin()243 void PluginList::AddFlacDemuxerPlugin()
244 {
245 PluginDescription flacDemuxerPlugin;
246 flacDemuxerPlugin.pluginName = "avdemux_flac";
247 flacDemuxerPlugin.packageName = "FFmpegDemuxer";
248 flacDemuxerPlugin.pluginType = PluginType::DEMUXER;
249 flacDemuxerPlugin.cap = "";
250 flacDemuxerPlugin.rank = DEFAULT_RANK;
251 pluginDescriptionList_.push_back(flacDemuxerPlugin);
252 }
253
AddFlvDemuxerPlugin()254 void PluginList::AddFlvDemuxerPlugin()
255 {
256 PluginDescription flvDemuxerPlugin;
257 flvDemuxerPlugin.pluginName = "avdemux_flv";
258 flvDemuxerPlugin.packageName = "FFmpegDemuxer";
259 flvDemuxerPlugin.pluginType = PluginType::DEMUXER;
260 flvDemuxerPlugin.cap = "";
261 flvDemuxerPlugin.rank = DEFAULT_RANK;
262 pluginDescriptionList_.push_back(flvDemuxerPlugin);
263 }
264
AddMatroskaDemuxerPlugin()265 void PluginList::AddMatroskaDemuxerPlugin()
266 {
267 PluginDescription matroskaDemuxerPlugin;
268 matroskaDemuxerPlugin.pluginName = "avdemux_matroska,webm";
269 matroskaDemuxerPlugin.packageName = "FFmpegDemuxer";
270 matroskaDemuxerPlugin.pluginType = PluginType::DEMUXER;
271 matroskaDemuxerPlugin.cap = "";
272 matroskaDemuxerPlugin.rank = DEFAULT_RANK;
273 pluginDescriptionList_.push_back(matroskaDemuxerPlugin);
274 }
275
AddMovDemuxerPlugin()276 void PluginList::AddMovDemuxerPlugin()
277 {
278 PluginDescription movDemuxerPlugin;
279 movDemuxerPlugin.pluginName = "avdemux_mov,mp4,m4a,3gp,3g2,mj2";
280 movDemuxerPlugin.packageName = "FFmpegDemuxer";
281 movDemuxerPlugin.pluginType = PluginType::DEMUXER;
282 movDemuxerPlugin.cap = "";
283 movDemuxerPlugin.rank = DEFAULT_RANK;
284 pluginDescriptionList_.push_back(movDemuxerPlugin);
285 }
286
AddMp3DemuxerPlugin()287 void PluginList::AddMp3DemuxerPlugin()
288 {
289 PluginDescription mp3DemuxerPlugin;
290 mp3DemuxerPlugin.pluginName = "avdemux_mp3";
291 mp3DemuxerPlugin.packageName = "FFmpegDemuxer";
292 mp3DemuxerPlugin.pluginType = PluginType::DEMUXER;
293 mp3DemuxerPlugin.cap = "";
294 mp3DemuxerPlugin.rank = DEFAULT_RANK;
295 pluginDescriptionList_.push_back(mp3DemuxerPlugin);
296 }
297
AddMpegDemuxerPlugin()298 void PluginList::AddMpegDemuxerPlugin()
299 {
300 PluginDescription mpegDemuxerPlugin;
301 mpegDemuxerPlugin.pluginName = "avdemux_mpeg";
302 mpegDemuxerPlugin.packageName = "FFmpegDemuxer";
303 mpegDemuxerPlugin.pluginType = PluginType::DEMUXER;
304 mpegDemuxerPlugin.cap = "";
305 mpegDemuxerPlugin.rank = DEFAULT_RANK;
306 pluginDescriptionList_.push_back(mpegDemuxerPlugin);
307 }
308
AddMpegtsDemuxerPlugin()309 void PluginList::AddMpegtsDemuxerPlugin()
310 {
311 PluginDescription mpegtsDemuxerPlugin;
312 mpegtsDemuxerPlugin.pluginName = "avdemux_mpegts";
313 mpegtsDemuxerPlugin.packageName = "FFmpegDemuxer";
314 mpegtsDemuxerPlugin.pluginType = PluginType::DEMUXER;
315 mpegtsDemuxerPlugin.cap = "";
316 mpegtsDemuxerPlugin.rank = DEFAULT_RANK;
317 pluginDescriptionList_.push_back(mpegtsDemuxerPlugin);
318 }
319
AddAviDemuxerPlugin()320 void PluginList::AddAviDemuxerPlugin()
321 {
322 PluginDescription aviDemuxerPlugin;
323 aviDemuxerPlugin.pluginName = "avdemux_avi";
324 aviDemuxerPlugin.packageName = "FFmpegDemuxer";
325 aviDemuxerPlugin.pluginType = PluginType::DEMUXER;
326 aviDemuxerPlugin.cap = "";
327 aviDemuxerPlugin.rank = DEFAULT_RANK;
328 pluginDescriptionList_.push_back(aviDemuxerPlugin);
329 }
330
AddSrtDemuxerPlugin()331 void PluginList::AddSrtDemuxerPlugin()
332 {
333 PluginDescription srtDemuxerPlugin;
334 srtDemuxerPlugin.pluginName = "avdemux_srt";
335 srtDemuxerPlugin.packageName = "FFmpegDemuxer";
336 srtDemuxerPlugin.pluginType = PluginType::DEMUXER;
337 srtDemuxerPlugin.cap = "";
338 srtDemuxerPlugin.rank = DEFAULT_RANK;
339 pluginDescriptionList_.push_back(srtDemuxerPlugin);
340 }
341
AddWebvttDemuxerPlugin()342 void PluginList::AddWebvttDemuxerPlugin()
343 {
344 PluginDescription vttDemuxerPlugin;
345 vttDemuxerPlugin.pluginName = "avdemux_webvtt";
346 vttDemuxerPlugin.packageName = "FFmpegDemuxer";
347 vttDemuxerPlugin.pluginType = PluginType::DEMUXER;
348 vttDemuxerPlugin.cap = "";
349 vttDemuxerPlugin.rank = DEFAULT_RANK;
350 pluginDescriptionList_.push_back(vttDemuxerPlugin);
351 }
352
AddOggDemuxerPlugin()353 void PluginList::AddOggDemuxerPlugin()
354 {
355 PluginDescription oggDemuxerPlugin;
356 oggDemuxerPlugin.pluginName = "avdemux_ogg";
357 oggDemuxerPlugin.packageName = "FFmpegDemuxer";
358 oggDemuxerPlugin.pluginType = PluginType::DEMUXER;
359 oggDemuxerPlugin.cap = "";
360 oggDemuxerPlugin.rank = DEFAULT_RANK;
361 pluginDescriptionList_.push_back(oggDemuxerPlugin);
362 }
363
AddWavDemuxerPlugin()364 void PluginList::AddWavDemuxerPlugin()
365 {
366 PluginDescription wavDemuxerPlugin;
367 wavDemuxerPlugin.pluginName = "avdemux_wav";
368 wavDemuxerPlugin.packageName = "FFmpegDemuxer";
369 wavDemuxerPlugin.pluginType = PluginType::DEMUXER;
370 wavDemuxerPlugin.cap = "";
371 wavDemuxerPlugin.rank = DEFAULT_RANK;
372 pluginDescriptionList_.push_back(wavDemuxerPlugin);
373 }
374
375 #ifdef SUPPORT_CODEC_RM
AddRmDemuxerPlugin()376 void PluginList::AddRmDemuxerPlugin()
377 {
378 PluginDescription rmDemuxerPlugin;
379 rmDemuxerPlugin.pluginName = "avdemux_rm";
380 rmDemuxerPlugin.packageName = "FFmpegDemuxer";
381 rmDemuxerPlugin.pluginType = PluginType::DEMUXER;
382 rmDemuxerPlugin.cap = "";
383 rmDemuxerPlugin.rank = DEFAULT_RANK;
384 pluginDescriptionList_.push_back(rmDemuxerPlugin);
385 }
386 #endif
387
388 #ifdef SUPPORT_CODEC_AC3
AddAc3DemuxerPlugin()389 void PluginList::AddAc3DemuxerPlugin()
390 {
391 PluginDescription ac3DemuxerPlugin;
392 ac3DemuxerPlugin.pluginName = "avdemux_ac3";
393 ac3DemuxerPlugin.packageName = "FFmpegDemuxer";
394 ac3DemuxerPlugin.pluginType = PluginType::DEMUXER;
395 ac3DemuxerPlugin.cap = "";
396 ac3DemuxerPlugin.rank = DEFAULT_RANK;
397 pluginDescriptionList_.push_back(ac3DemuxerPlugin);
398 }
399 #endif
400
AddFFmpegDemuxerPlugins()401 void PluginList::AddFFmpegDemuxerPlugins()
402 {
403 AddAacDemuxerPlugin();
404 AddAmrDemuxerPlugin();
405 AddAmrnbDemuxerPlugin();
406 AddAmrwbDemuxerPlugin();
407 AddApeDemuxerPlugin();
408 AddAsfDemuxerPlugin();
409 AddAsfoDemuxerPlugin();
410 AddFlacDemuxerPlugin();
411 AddFlvDemuxerPlugin();
412 AddMatroskaDemuxerPlugin();
413 AddMovDemuxerPlugin();
414 AddMp3DemuxerPlugin();
415 AddMpegDemuxerPlugin();
416 AddMpegtsDemuxerPlugin();
417 AddAviDemuxerPlugin();
418 AddSrtDemuxerPlugin();
419 AddWebvttDemuxerPlugin();
420 AddOggDemuxerPlugin();
421 AddWavDemuxerPlugin();
422 #ifdef SUPPORT_CODEC_RM
423 AddRmDemuxerPlugin();
424 #endif
425 #ifdef SUPPORT_CODEC_AC3
426 AddAc3DemuxerPlugin();
427 #endif
428 }
429
AddMpegAudioDecoderPlugin()430 void PluginList::AddMpegAudioDecoderPlugin()
431 {
432 PluginDescription mpegAudioDecoderPlugin;
433 mpegAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Mpeg";
434 mpegAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
435 mpegAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
436 mpegAudioDecoderPlugin.cap = "audio/mpeg";
437 mpegAudioDecoderPlugin.rank = DEFAULT_RANK;
438 pluginDescriptionList_.push_back(mpegAudioDecoderPlugin);
439 }
440
AddAacAudioDecoderPlugin()441 void PluginList::AddAacAudioDecoderPlugin()
442 {
443 PluginDescription aacAudioDecoderPlugin;
444 aacAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.AAC";
445 aacAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
446 aacAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
447 aacAudioDecoderPlugin.cap = "audio/mp4a-latm";
448 aacAudioDecoderPlugin.rank = DEFAULT_RANK;
449 pluginDescriptionList_.push_back(aacAudioDecoderPlugin);
450 }
451
AddFFmpegAudioDecodersPlugins()452 void PluginList::AddFFmpegAudioDecodersPlugins()
453 {
454 AddMpegAudioDecoderPlugin();
455 AddAacAudioDecoderPlugin();
456
457 PluginDescription flacAudioDecoderPlugin;
458 flacAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Flac";
459 flacAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
460 flacAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
461 flacAudioDecoderPlugin.cap = "audio/flac";
462 flacAudioDecoderPlugin.rank = DEFAULT_RANK;
463 pluginDescriptionList_.push_back(flacAudioDecoderPlugin);
464
465 PluginDescription vorbisAudioDecoderPlugin;
466 vorbisAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Vorbis";
467 vorbisAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
468 vorbisAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
469 vorbisAudioDecoderPlugin.cap = "audio/vorbis";
470 vorbisAudioDecoderPlugin.rank = DEFAULT_RANK;
471 pluginDescriptionList_.push_back(vorbisAudioDecoderPlugin);
472
473 PluginDescription amrnbAudioDecoderPlugin;
474 amrnbAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Amrnb";
475 amrnbAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
476 amrnbAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
477 amrnbAudioDecoderPlugin.cap = "audio/3gpp";
478 amrnbAudioDecoderPlugin.rank = DEFAULT_RANK;
479 pluginDescriptionList_.push_back(amrnbAudioDecoderPlugin);
480
481 PluginDescription amrwbAudioDecoderPlugin;
482 amrwbAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Amrwb";
483 amrwbAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
484 amrwbAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
485 amrwbAudioDecoderPlugin.cap = "audio/amr-wb";
486 amrwbAudioDecoderPlugin.rank = DEFAULT_RANK;
487 pluginDescriptionList_.push_back(amrwbAudioDecoderPlugin);
488
489 PluginDescription apeAudioDecoderPlugin;
490 apeAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Ape";
491 apeAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
492 apeAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
493 apeAudioDecoderPlugin.cap = "audio/x-ape";
494 apeAudioDecoderPlugin.rank = DEFAULT_RANK;
495 pluginDescriptionList_.push_back(apeAudioDecoderPlugin);
496 }
497
AddAudioVividDecodersPlugins()498 void PluginList::AddAudioVividDecodersPlugins()
499 {
500 PluginDescription audioVividDecoderPlugin;
501 audioVividDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Vivid";
502 audioVividDecoderPlugin.packageName = "AudioVividDecoder";
503 audioVividDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
504 audioVividDecoderPlugin.cap = "audio/av3a";
505 audioVividDecoderPlugin.rank = DEFAULT_RANK;
506 pluginDescriptionList_.push_back(audioVividDecoderPlugin);
507 }
508
AddG711muAudioDecoderPlugins()509 void PluginList::AddG711muAudioDecoderPlugins()
510 {
511 PluginDescription g711muAudioDecoderPlugin;
512 g711muAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.G711mu";
513 g711muAudioDecoderPlugin.packageName = "G711muAudioDecoder";
514 g711muAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
515 g711muAudioDecoderPlugin.cap = "audio/g711mu";
516 g711muAudioDecoderPlugin.rank = DEFAULT_RANK;
517 pluginDescriptionList_.push_back(g711muAudioDecoderPlugin);
518 }
519
AddLbvcAudioDecoderPlugins()520 void PluginList::AddLbvcAudioDecoderPlugins()
521 {
522 PluginDescription lbvcAudioDecoderPlugin;
523 lbvcAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.LBVC";
524 lbvcAudioDecoderPlugin.packageName = "LbvcAudioDecoder";
525 lbvcAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
526 lbvcAudioDecoderPlugin.cap = "audio/lbvc";
527 lbvcAudioDecoderPlugin.rank = DEFAULT_RANK;
528 pluginDescriptionList_.push_back(lbvcAudioDecoderPlugin);
529 }
530
AddOpusAudioDecoderPlugins()531 void PluginList::AddOpusAudioDecoderPlugins()
532 {
533 PluginDescription opusAudioDecoderPlugin;
534 opusAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Opus";
535 opusAudioDecoderPlugin.packageName = "OpusAudioDecoder";
536 opusAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
537 opusAudioDecoderPlugin.cap = "audio/opus";
538 opusAudioDecoderPlugin.rank = DEFAULT_RANK;
539 pluginDescriptionList_.push_back(opusAudioDecoderPlugin);
540 }
541
AddRawAudioDecoderPlugins()542 void PluginList::AddRawAudioDecoderPlugins()
543 {
544 PluginDescription opusAudioDecoderPlugin;
545 opusAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Raw";
546 opusAudioDecoderPlugin.packageName = "RawAudioDecoder";
547 opusAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
548 opusAudioDecoderPlugin.cap = "audio/raw";
549 opusAudioDecoderPlugin.rank = DEFAULT_RANK;
550 pluginDescriptionList_.push_back(opusAudioDecoderPlugin);
551 }
552
553 #ifdef SUPPORT_CODEC_COOK
AddCookAudioDecoderPlugins()554 void PluginList::AddCookAudioDecoderPlugins()
555 {
556 PluginDescription cookAudioDecoderPlugin;
557 cookAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.COOK";
558 cookAudioDecoderPlugin.packageName = "CookAudioDecoder";
559 cookAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
560 cookAudioDecoderPlugin.cap = "audio/cook";
561 cookAudioDecoderPlugin.rank = DEFAULT_RANK;
562 pluginDescriptionList_.push_back(cookAudioDecoderPlugin);
563 }
564 #endif
565
566 #ifdef SUPPORT_CODEC_AC3
AddAc3AudioDecoderPlugins()567 void PluginList::AddAc3AudioDecoderPlugins()
568 {
569 PluginDescription ac3AudioDecoderPlugin;
570 ac3AudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.AC3";
571 ac3AudioDecoderPlugin.packageName = "Ac3AudioDecoder";
572 ac3AudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
573 ac3AudioDecoderPlugin.cap = "audio/ac3";
574 ac3AudioDecoderPlugin.rank = DEFAULT_RANK;
575 pluginDescriptionList_.push_back(ac3AudioDecoderPlugin);
576 }
577 #endif
578
AddAudioServerSinkPlugins()579 void PluginList::AddAudioServerSinkPlugins()
580 {
581 PluginDescription audioServerSinkPlugin;
582 audioServerSinkPlugin.pluginName = "AudioServerSink";
583 audioServerSinkPlugin.packageName = "AudioServerSink";
584 audioServerSinkPlugin.pluginType = PluginType::AUDIO_SINK;
585 audioServerSinkPlugin.cap = "audio/raw";
586 audioServerSinkPlugin.rank = DEFAULT_RANK;
587 pluginDescriptionList_.push_back(audioServerSinkPlugin);
588 }
589
AddFFmpegAudioEncodersPlugins()590 void PluginList::AddFFmpegAudioEncodersPlugins()
591 {
592 PluginDescription aacAudioEncoderPlugin;
593 aacAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.AAC";
594 aacAudioEncoderPlugin.packageName = "FFmpegAudioEncoders";
595 aacAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
596 aacAudioEncoderPlugin.cap = "audio/mp4a-latm";
597 aacAudioEncoderPlugin.rank = DEFAULT_RANK;
598 pluginDescriptionList_.push_back(aacAudioEncoderPlugin);
599
600 PluginDescription flacAudioEncoderPlugin;
601 flacAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Flac";
602 flacAudioEncoderPlugin.packageName = "FFmpegAudioEncoders";
603 flacAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
604 flacAudioEncoderPlugin.cap = "audio/flac";
605 flacAudioEncoderPlugin.rank = DEFAULT_RANK;
606 pluginDescriptionList_.push_back(flacAudioEncoderPlugin);
607 }
608
AddAudioVendorAacEncodersPlugin()609 void PluginList::AddAudioVendorAacEncodersPlugin()
610 {
611 PluginDescription AacEncoderPlugin;
612 AacEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Vendor.AAC";
613 AacEncoderPlugin.packageName = "AudioVendorAacEncoder";
614 AacEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
615 AacEncoderPlugin.cap = "audio/mp4a-latm";
616 AacEncoderPlugin.rank = DEFAULT_RANK + 1; // larger than default aac plugin
617 pluginDescriptionList_.push_back(AacEncoderPlugin);
618 }
619
AddG711muAudioEncoderPlugins()620 void PluginList::AddG711muAudioEncoderPlugins()
621 {
622 PluginDescription g711muAudioEncoderPlugin;
623 g711muAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.G711mu";
624 g711muAudioEncoderPlugin.packageName = "G711muAudioEncoder";
625 g711muAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
626 g711muAudioEncoderPlugin.cap = "audio/g711mu";
627 g711muAudioEncoderPlugin.rank = DEFAULT_RANK;
628 pluginDescriptionList_.push_back(g711muAudioEncoderPlugin);
629 }
630
AddLbvcAudioEncoderPlugins()631 void PluginList::AddLbvcAudioEncoderPlugins()
632 {
633 PluginDescription lbvcAudioEncoderPlugin;
634 lbvcAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.LBVC";
635 lbvcAudioEncoderPlugin.packageName = "LbvcAudioEncoder";
636 lbvcAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
637 lbvcAudioEncoderPlugin.cap = "audio/lbvc";
638 lbvcAudioEncoderPlugin.rank = DEFAULT_RANK;
639 pluginDescriptionList_.push_back(lbvcAudioEncoderPlugin);
640 }
641
AddOpusAudioEncoderPlugins()642 void PluginList::AddOpusAudioEncoderPlugins()
643 {
644 PluginDescription opusAudioEncoderPlugin;
645 opusAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Opus";
646 opusAudioEncoderPlugin.packageName = "OpusAudioEncoder";
647 opusAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
648 opusAudioEncoderPlugin.cap = "audio/opus";
649 opusAudioEncoderPlugin.rank = DEFAULT_RANK;
650 pluginDescriptionList_.push_back(opusAudioEncoderPlugin);
651 }
652
AddAmrwbAudioEncoderPlugins()653 void PluginList::AddAmrwbAudioEncoderPlugins()
654 {
655 PluginDescription amrwbAudioEncoderPlugin;
656 amrwbAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Amrwb";
657 amrwbAudioEncoderPlugin.packageName = "AmrWbAudioEncoder";
658 amrwbAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
659 amrwbAudioEncoderPlugin.cap = "audio/amr-wb";
660 amrwbAudioEncoderPlugin.rank = DEFAULT_RANK;
661 pluginDescriptionList_.push_back(amrwbAudioEncoderPlugin);
662 }
AddAmrnbAudioEncoderPlugins()663 void PluginList::AddAmrnbAudioEncoderPlugins()
664 {
665 PluginDescription amrnbAudioEncoderPlugin;
666 amrnbAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Amrnb";
667 amrnbAudioEncoderPlugin.packageName = "AmrNbAudioEncoder";
668 amrnbAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
669 amrnbAudioEncoderPlugin.cap = "audio/3gpp";
670 amrnbAudioEncoderPlugin.rank = DEFAULT_RANK;
671 pluginDescriptionList_.push_back(amrnbAudioEncoderPlugin);
672 }
673
AddMp3AudioEncoderPlugins()674 void PluginList::AddMp3AudioEncoderPlugins()
675 {
676 PluginDescription mp3AudioEncoderPlugin;
677 mp3AudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Mp3";
678 mp3AudioEncoderPlugin.packageName = "Mp3AudioEncoder";
679 mp3AudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
680 mp3AudioEncoderPlugin.cap = "audio/mpeg";
681 mp3AudioEncoderPlugin.rank = DEFAULT_RANK;
682 pluginDescriptionList_.push_back(mp3AudioEncoderPlugin);
683 }
684
AddFFmpegMuxerPlugins()685 void PluginList::AddFFmpegMuxerPlugins()
686 {
687 PluginDescription mp4MuxerPlugin;
688 mp4MuxerPlugin.pluginName = "ffmpegMux_mp4";
689 mp4MuxerPlugin.packageName = "FFmpegMuxer";
690 mp4MuxerPlugin.pluginType = PluginType::MUXER;
691 mp4MuxerPlugin.cap = "media/mp4";
692 mp4MuxerPlugin.rank = DEFAULT_RANK;
693 pluginDescriptionList_.push_back(mp4MuxerPlugin);
694
695 PluginDescription m4aMuxerPlugin;
696 m4aMuxerPlugin.pluginName = "ffmpegMux_ipod";
697 m4aMuxerPlugin.packageName = "FFmpegMuxer";
698 m4aMuxerPlugin.pluginType = PluginType::MUXER;
699 m4aMuxerPlugin.cap = "media/m4a";
700 m4aMuxerPlugin.rank = DEFAULT_RANK;
701 pluginDescriptionList_.push_back(m4aMuxerPlugin);
702
703 PluginDescription amrMuxerPlugin;
704 amrMuxerPlugin.pluginName = "ffmpegMux_amr";
705 amrMuxerPlugin.packageName = "FFmpegMuxer";
706 amrMuxerPlugin.pluginType = PluginType::MUXER;
707 amrMuxerPlugin.cap = "media/amr";
708 amrMuxerPlugin.rank = DEFAULT_RANK;
709 pluginDescriptionList_.push_back(amrMuxerPlugin);
710
711 PluginDescription mp3MuxerPlugin;
712 mp3MuxerPlugin.pluginName = "ffmpegMux_mp3";
713 mp3MuxerPlugin.packageName = "FFmpegMuxer";
714 mp3MuxerPlugin.pluginType = PluginType::MUXER;
715 mp3MuxerPlugin.cap = "media/mp3";
716 mp3MuxerPlugin.rank = DEFAULT_RANK;
717 pluginDescriptionList_.push_back(mp3MuxerPlugin);
718
719 PluginDescription wavMuxerPlugin;
720 wavMuxerPlugin.pluginName = "ffmpegMux_wav";
721 wavMuxerPlugin.packageName = "FFmpegMuxer";
722 wavMuxerPlugin.pluginType = PluginType::MUXER;
723 wavMuxerPlugin.cap = "media/wav";
724 wavMuxerPlugin.rank = DEFAULT_RANK;
725 pluginDescriptionList_.push_back(wavMuxerPlugin);
726
727 PluginDescription aacMuxerPlugin;
728 aacMuxerPlugin.pluginName = "ffmpegMux_adts";
729 aacMuxerPlugin.packageName = "FFmpegMuxer";
730 aacMuxerPlugin.pluginType = PluginType::MUXER;
731 aacMuxerPlugin.cap = "media/aac";
732 aacMuxerPlugin.rank = DEFAULT_RANK;
733 pluginDescriptionList_.push_back(aacMuxerPlugin);
734 }
735
736 } // namespace Plugins
737 } // namespace Media
738 } // namespace OHOS