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 AddL2hcEncodersPlugins();
93 AddL2hcDecodersPlugins();
94 AddAudioVendorAacEncodersPlugin();
95 AddG711muAudioDecoderPlugins();
96 AddG711aAudioDecoderPlugins();
97 AddLbvcAudioDecoderPlugins();
98 AddOpusAudioDecoderPlugins();
99 AddRawAudioDecoderPlugins();
100 AddAudioServerSinkPlugins();
101 AddFFmpegAudioEncodersPlugins();
102 AddG711muAudioEncoderPlugins();
103 AddLbvcAudioEncoderPlugins();
104 AddOpusAudioEncoderPlugins();
105 AddAmrwbAudioEncoderPlugins();
106 AddAmrnbAudioEncoderPlugins();
107 AddMp3AudioEncoderPlugins();
108 AddFFmpegMuxerPlugins();
109 AddFFmpegFlacMuxerplugins();
110 AddAc3AudioDecoderPlugins();
111 #ifdef SUPPORT_CODEC_COOK
112 AddCookAudioDecoderPlugins();
113 #endif
114 }
115
AddDataSourceStreamPlugins()116 void PluginList::AddDataSourceStreamPlugins()
117 {
118 PluginDescription dataSourceStreamPlugin;
119 dataSourceStreamPlugin.pluginName = "DataStreamSource";
120 dataSourceStreamPlugin.packageName = "DataStreamSource";
121 dataSourceStreamPlugin.pluginType = PluginType::SOURCE;
122 dataSourceStreamPlugin.cap = "stream";
123 dataSourceStreamPlugin.rank = DEFAULT_RANK;
124 pluginDescriptionList_.push_back(dataSourceStreamPlugin);
125 }
126
AddFileFdSourcePlugins()127 void PluginList::AddFileFdSourcePlugins()
128 {
129 PluginDescription fileFdSourcePlugin;
130 fileFdSourcePlugin.pluginName = "FileFdSource";
131 fileFdSourcePlugin.packageName = "FileFdSource";
132 fileFdSourcePlugin.pluginType = PluginType::SOURCE;
133 fileFdSourcePlugin.cap = "fd";
134 fileFdSourcePlugin.rank = DEFAULT_RANK;
135 pluginDescriptionList_.push_back(fileFdSourcePlugin);
136 }
137
AddFileSourcePlugins()138 void PluginList::AddFileSourcePlugins()
139 {
140 PluginDescription fileSourcePlugin;
141 fileSourcePlugin.pluginName = "FileSource";
142 fileSourcePlugin.packageName = "FileSource";
143 fileSourcePlugin.pluginType = PluginType::SOURCE;
144 fileSourcePlugin.cap = "file";
145 fileSourcePlugin.rank = DEFAULT_RANK;
146 pluginDescriptionList_.push_back(fileSourcePlugin);
147 }
148
AddHttpSourcePlugins()149 void PluginList::AddHttpSourcePlugins()
150 {
151 PluginDescription httpSourcePlugin;
152 httpSourcePlugin.pluginName = "HttpSource";
153 httpSourcePlugin.packageName = "HttpSource";
154 httpSourcePlugin.pluginType = PluginType::SOURCE;
155 httpSourcePlugin.cap = "http";
156 httpSourcePlugin.rank = DEFAULT_RANK;
157 pluginDescriptionList_.push_back(httpSourcePlugin);
158
159 PluginDescription httpsSourcePlugin;
160 httpsSourcePlugin.pluginName = "HttpSource";
161 httpsSourcePlugin.packageName = "HttpSource";
162 httpsSourcePlugin.pluginType = PluginType::SOURCE;
163 httpsSourcePlugin.cap = "https";
164 httpsSourcePlugin.rank = DEFAULT_RANK;
165 pluginDescriptionList_.push_back(httpsSourcePlugin);
166 }
167
AddAacDemuxerPlugin()168 void PluginList::AddAacDemuxerPlugin()
169 {
170 PluginDescription aacDemuxerPlugin;
171 aacDemuxerPlugin.pluginName = "avdemux_aac";
172 aacDemuxerPlugin.packageName = "FFmpegDemuxer";
173 aacDemuxerPlugin.pluginType = PluginType::DEMUXER;
174 aacDemuxerPlugin.cap = "";
175 aacDemuxerPlugin.rank = DEFAULT_RANK;
176 pluginDescriptionList_.push_back(aacDemuxerPlugin);
177 }
178
AddAmrDemuxerPlugin()179 void PluginList::AddAmrDemuxerPlugin()
180 {
181 PluginDescription amrDemuxerPlugin;
182 amrDemuxerPlugin.pluginName = "avdemux_amr";
183 amrDemuxerPlugin.packageName = "FFmpegDemuxer";
184 amrDemuxerPlugin.pluginType = PluginType::DEMUXER;
185 amrDemuxerPlugin.cap = "";
186 amrDemuxerPlugin.rank = DEFAULT_RANK;
187 pluginDescriptionList_.push_back(amrDemuxerPlugin);
188 }
189
AddAmrnbDemuxerPlugin()190 void PluginList::AddAmrnbDemuxerPlugin()
191 {
192 PluginDescription amrnbDemuxerPlugin;
193 amrnbDemuxerPlugin.pluginName = "avdemux_amrnb";
194 amrnbDemuxerPlugin.packageName = "FFmpegDemuxer";
195 amrnbDemuxerPlugin.pluginType = PluginType::DEMUXER;
196 amrnbDemuxerPlugin.cap = "";
197 amrnbDemuxerPlugin.rank = DEFAULT_RANK;
198 pluginDescriptionList_.push_back(amrnbDemuxerPlugin);
199 }
200
AddAmrwbDemuxerPlugin()201 void PluginList::AddAmrwbDemuxerPlugin()
202 {
203 PluginDescription amrwbDemuxerPlugin;
204 amrwbDemuxerPlugin.pluginName = "avdemux_amrwb";
205 amrwbDemuxerPlugin.packageName = "FFmpegDemuxer";
206 amrwbDemuxerPlugin.pluginType = PluginType::DEMUXER;
207 amrwbDemuxerPlugin.cap = "";
208 amrwbDemuxerPlugin.rank = DEFAULT_RANK;
209 pluginDescriptionList_.push_back(amrwbDemuxerPlugin);
210 }
211
AddApeDemuxerPlugin()212 void PluginList::AddApeDemuxerPlugin()
213 {
214 PluginDescription apeDemuxerPlugin;
215 apeDemuxerPlugin.pluginName = "avdemux_ape";
216 apeDemuxerPlugin.packageName = "FFmpegDemuxer";
217 apeDemuxerPlugin.pluginType = PluginType::DEMUXER;
218 apeDemuxerPlugin.cap = "";
219 apeDemuxerPlugin.rank = DEFAULT_RANK;
220 pluginDescriptionList_.push_back(apeDemuxerPlugin);
221 }
222
AddAsfDemuxerPlugin()223 void PluginList::AddAsfDemuxerPlugin()
224 {
225 PluginDescription asfDemuxerPlugin;
226 asfDemuxerPlugin.pluginName = "avdemux_asf";
227 asfDemuxerPlugin.packageName = "FFmpegDemuxer";
228 asfDemuxerPlugin.pluginType = PluginType::DEMUXER;
229 asfDemuxerPlugin.cap = "";
230 asfDemuxerPlugin.rank = DEFAULT_RANK;
231 pluginDescriptionList_.push_back(asfDemuxerPlugin);
232 }
233
AddAsfoDemuxerPlugin()234 void PluginList::AddAsfoDemuxerPlugin()
235 {
236 PluginDescription asfoDemuxerPlugin;
237 asfoDemuxerPlugin.pluginName = "avdemux_asf_o";
238 asfoDemuxerPlugin.packageName = "FFmpegDemuxer";
239 asfoDemuxerPlugin.pluginType = PluginType::DEMUXER;
240 asfoDemuxerPlugin.cap = "";
241 asfoDemuxerPlugin.rank = DEFAULT_RANK;
242 pluginDescriptionList_.push_back(asfoDemuxerPlugin);
243 }
244
AddFlacDemuxerPlugin()245 void PluginList::AddFlacDemuxerPlugin()
246 {
247 PluginDescription flacDemuxerPlugin;
248 flacDemuxerPlugin.pluginName = "avdemux_flac";
249 flacDemuxerPlugin.packageName = "FFmpegDemuxer";
250 flacDemuxerPlugin.pluginType = PluginType::DEMUXER;
251 flacDemuxerPlugin.cap = "";
252 flacDemuxerPlugin.rank = DEFAULT_RANK;
253 pluginDescriptionList_.push_back(flacDemuxerPlugin);
254 }
255
AddFlvDemuxerPlugin()256 void PluginList::AddFlvDemuxerPlugin()
257 {
258 PluginDescription flvDemuxerPlugin;
259 flvDemuxerPlugin.pluginName = "avdemux_flv";
260 flvDemuxerPlugin.packageName = "FFmpegDemuxer";
261 flvDemuxerPlugin.pluginType = PluginType::DEMUXER;
262 flvDemuxerPlugin.cap = "";
263 flvDemuxerPlugin.rank = DEFAULT_RANK;
264 pluginDescriptionList_.push_back(flvDemuxerPlugin);
265 }
266
AddMatroskaDemuxerPlugin()267 void PluginList::AddMatroskaDemuxerPlugin()
268 {
269 PluginDescription matroskaDemuxerPlugin;
270 matroskaDemuxerPlugin.pluginName = "avdemux_matroska,webm";
271 matroskaDemuxerPlugin.packageName = "FFmpegDemuxer";
272 matroskaDemuxerPlugin.pluginType = PluginType::DEMUXER;
273 matroskaDemuxerPlugin.cap = "";
274 matroskaDemuxerPlugin.rank = DEFAULT_RANK;
275 pluginDescriptionList_.push_back(matroskaDemuxerPlugin);
276 }
277
AddMovDemuxerPlugin()278 void PluginList::AddMovDemuxerPlugin()
279 {
280 PluginDescription movDemuxerPlugin;
281 movDemuxerPlugin.pluginName = "avdemux_mov,mp4,m4a,3gp,3g2,mj2";
282 movDemuxerPlugin.packageName = "FFmpegDemuxer";
283 movDemuxerPlugin.pluginType = PluginType::DEMUXER;
284 movDemuxerPlugin.cap = "";
285 movDemuxerPlugin.rank = DEFAULT_RANK;
286 pluginDescriptionList_.push_back(movDemuxerPlugin);
287 }
288
AddMp3DemuxerPlugin()289 void PluginList::AddMp3DemuxerPlugin()
290 {
291 PluginDescription mp3DemuxerPlugin;
292 mp3DemuxerPlugin.pluginName = "avdemux_mp3";
293 mp3DemuxerPlugin.packageName = "FFmpegDemuxer";
294 mp3DemuxerPlugin.pluginType = PluginType::DEMUXER;
295 mp3DemuxerPlugin.cap = "";
296 mp3DemuxerPlugin.rank = DEFAULT_RANK;
297 pluginDescriptionList_.push_back(mp3DemuxerPlugin);
298 }
299
AddMpegDemuxerPlugin()300 void PluginList::AddMpegDemuxerPlugin()
301 {
302 PluginDescription mpegDemuxerPlugin;
303 mpegDemuxerPlugin.pluginName = "avdemux_mpeg";
304 mpegDemuxerPlugin.packageName = "FFmpegDemuxer";
305 mpegDemuxerPlugin.pluginType = PluginType::DEMUXER;
306 mpegDemuxerPlugin.cap = "";
307 mpegDemuxerPlugin.rank = DEFAULT_RANK;
308 pluginDescriptionList_.push_back(mpegDemuxerPlugin);
309 }
310
AddMpegtsDemuxerPlugin()311 void PluginList::AddMpegtsDemuxerPlugin()
312 {
313 PluginDescription mpegtsDemuxerPlugin;
314 mpegtsDemuxerPlugin.pluginName = "avdemux_mpegts";
315 mpegtsDemuxerPlugin.packageName = "FFmpegDemuxer";
316 mpegtsDemuxerPlugin.pluginType = PluginType::DEMUXER;
317 mpegtsDemuxerPlugin.cap = "";
318 mpegtsDemuxerPlugin.rank = DEFAULT_RANK;
319 pluginDescriptionList_.push_back(mpegtsDemuxerPlugin);
320 }
321
AddAviDemuxerPlugin()322 void PluginList::AddAviDemuxerPlugin()
323 {
324 PluginDescription aviDemuxerPlugin;
325 aviDemuxerPlugin.pluginName = "avdemux_avi";
326 aviDemuxerPlugin.packageName = "FFmpegDemuxer";
327 aviDemuxerPlugin.pluginType = PluginType::DEMUXER;
328 aviDemuxerPlugin.cap = "";
329 aviDemuxerPlugin.rank = DEFAULT_RANK;
330 pluginDescriptionList_.push_back(aviDemuxerPlugin);
331 }
332
AddSrtDemuxerPlugin()333 void PluginList::AddSrtDemuxerPlugin()
334 {
335 PluginDescription srtDemuxerPlugin;
336 srtDemuxerPlugin.pluginName = "avdemux_srt";
337 srtDemuxerPlugin.packageName = "FFmpegDemuxer";
338 srtDemuxerPlugin.pluginType = PluginType::DEMUXER;
339 srtDemuxerPlugin.cap = "";
340 srtDemuxerPlugin.rank = DEFAULT_RANK;
341 pluginDescriptionList_.push_back(srtDemuxerPlugin);
342 }
343
AddWebvttDemuxerPlugin()344 void PluginList::AddWebvttDemuxerPlugin()
345 {
346 PluginDescription vttDemuxerPlugin;
347 vttDemuxerPlugin.pluginName = "avdemux_webvtt";
348 vttDemuxerPlugin.packageName = "FFmpegDemuxer";
349 vttDemuxerPlugin.pluginType = PluginType::DEMUXER;
350 vttDemuxerPlugin.cap = "";
351 vttDemuxerPlugin.rank = DEFAULT_RANK;
352 pluginDescriptionList_.push_back(vttDemuxerPlugin);
353 }
354
355 #ifdef SUPPORT_DEMUXER_LRC
AddLrcDemuxerPlugin()356 void PluginList::AddLrcDemuxerPlugin()
357 {
358 PluginDescription lrcDemuxerPlugin;
359 lrcDemuxerPlugin.pluginName = "avdemux_lrc";
360 lrcDemuxerPlugin.packageName = "FFmpegDemuxer";
361 lrcDemuxerPlugin.pluginType = PluginType::DEMUXER;
362 lrcDemuxerPlugin.cap = "";
363 lrcDemuxerPlugin.rank = DEFAULT_RANK;
364 pluginDescriptionList_.push_back(lrcDemuxerPlugin);
365 }
366 #endif
367
368 #ifdef SUPPORT_DEMUXER_SAMI
AddSamiDemuxerPlugin()369 void PluginList::AddSamiDemuxerPlugin()
370 {
371 PluginDescription samiDemuxerPlugin;
372 samiDemuxerPlugin.pluginName = "avdemux_sami";
373 samiDemuxerPlugin.packageName = "FFmpegDemuxer";
374 samiDemuxerPlugin.pluginType = PluginType::DEMUXER;
375 samiDemuxerPlugin.cap = "";
376 samiDemuxerPlugin.rank = DEFAULT_RANK;
377 pluginDescriptionList_.push_back(samiDemuxerPlugin);
378 }
379 #endif
380
381 #ifdef SUPPORT_DEMUXER_ASS
AddAssDemuxerPlugin()382 void PluginList::AddAssDemuxerPlugin()
383 {
384 PluginDescription assDemuxerPlugin;
385 assDemuxerPlugin.pluginName = "avdemux_ass";
386 assDemuxerPlugin.packageName = "FFmpegDemuxer";
387 assDemuxerPlugin.pluginType = PluginType::DEMUXER;
388 assDemuxerPlugin.cap = "";
389 assDemuxerPlugin.rank = DEFAULT_RANK;
390 pluginDescriptionList_.push_back(assDemuxerPlugin);
391 }
392 #endif
393
AddOggDemuxerPlugin()394 void PluginList::AddOggDemuxerPlugin()
395 {
396 PluginDescription oggDemuxerPlugin;
397 oggDemuxerPlugin.pluginName = "avdemux_ogg";
398 oggDemuxerPlugin.packageName = "FFmpegDemuxer";
399 oggDemuxerPlugin.pluginType = PluginType::DEMUXER;
400 oggDemuxerPlugin.cap = "";
401 oggDemuxerPlugin.rank = DEFAULT_RANK;
402 pluginDescriptionList_.push_back(oggDemuxerPlugin);
403 }
404
AddWavDemuxerPlugin()405 void PluginList::AddWavDemuxerPlugin()
406 {
407 PluginDescription wavDemuxerPlugin;
408 wavDemuxerPlugin.pluginName = "avdemux_wav";
409 wavDemuxerPlugin.packageName = "FFmpegDemuxer";
410 wavDemuxerPlugin.pluginType = PluginType::DEMUXER;
411 wavDemuxerPlugin.cap = "";
412 wavDemuxerPlugin.rank = DEFAULT_RANK;
413 pluginDescriptionList_.push_back(wavDemuxerPlugin);
414 }
415
416 #ifdef SUPPORT_CODEC_RM
AddRmDemuxerPlugin()417 void PluginList::AddRmDemuxerPlugin()
418 {
419 PluginDescription rmDemuxerPlugin;
420 rmDemuxerPlugin.pluginName = "avdemux_rm";
421 rmDemuxerPlugin.packageName = "FFmpegDemuxer";
422 rmDemuxerPlugin.pluginType = PluginType::DEMUXER;
423 rmDemuxerPlugin.cap = "";
424 rmDemuxerPlugin.rank = DEFAULT_RANK;
425 pluginDescriptionList_.push_back(rmDemuxerPlugin);
426 }
427 #endif
428
AddAc3DemuxerPlugin()429 void PluginList::AddAc3DemuxerPlugin()
430 {
431 PluginDescription ac3DemuxerPlugin;
432 ac3DemuxerPlugin.pluginName = "avdemux_ac3";
433 ac3DemuxerPlugin.packageName = "FFmpegDemuxer";
434 ac3DemuxerPlugin.pluginType = PluginType::DEMUXER;
435 ac3DemuxerPlugin.cap = "";
436 ac3DemuxerPlugin.rank = DEFAULT_RANK;
437 pluginDescriptionList_.push_back(ac3DemuxerPlugin);
438 }
439
AddFFmpegDemuxerPlugins()440 void PluginList::AddFFmpegDemuxerPlugins()
441 {
442 AddAacDemuxerPlugin();
443 AddAmrDemuxerPlugin();
444 AddAmrnbDemuxerPlugin();
445 AddAmrwbDemuxerPlugin();
446 AddApeDemuxerPlugin();
447 AddAsfDemuxerPlugin();
448 AddAsfoDemuxerPlugin();
449 AddFlacDemuxerPlugin();
450 AddFlvDemuxerPlugin();
451 AddMatroskaDemuxerPlugin();
452 AddMovDemuxerPlugin();
453 AddMp3DemuxerPlugin();
454 AddMpegDemuxerPlugin();
455 AddMpegtsDemuxerPlugin();
456 AddAviDemuxerPlugin();
457 AddSrtDemuxerPlugin();
458 AddWebvttDemuxerPlugin();
459 AddOggDemuxerPlugin();
460 AddWavDemuxerPlugin();
461 AddAc3DemuxerPlugin();
462 #ifdef SUPPORT_CODEC_RM
463 AddRmDemuxerPlugin();
464 #endif
465 #ifdef SUPPORT_DEMUXER_LRC
466 AddLrcDemuxerPlugin();
467 #endif
468 #ifdef SUPPORT_DEMUXER_SAMI
469 AddSamiDemuxerPlugin();
470 #endif
471 #ifdef SUPPORT_DEMUXER_ASS
472 AddAssDemuxerPlugin();
473 #endif
474 }
475
AddMpegAudioDecoderPlugin()476 void PluginList::AddMpegAudioDecoderPlugin()
477 {
478 PluginDescription mpegAudioDecoderPlugin;
479 mpegAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Mpeg";
480 mpegAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
481 mpegAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
482 mpegAudioDecoderPlugin.cap = "audio/mpeg";
483 mpegAudioDecoderPlugin.rank = DEFAULT_RANK;
484 pluginDescriptionList_.push_back(mpegAudioDecoderPlugin);
485 }
486
AddAacAudioDecoderPlugin()487 void PluginList::AddAacAudioDecoderPlugin()
488 {
489 PluginDescription aacAudioDecoderPlugin;
490 aacAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.AAC";
491 aacAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
492 aacAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
493 aacAudioDecoderPlugin.cap = "audio/mp4a-latm";
494 aacAudioDecoderPlugin.rank = DEFAULT_RANK;
495 pluginDescriptionList_.push_back(aacAudioDecoderPlugin);
496 }
497
AddFFmpegAudioDecodersPlugins()498 void PluginList::AddFFmpegAudioDecodersPlugins()
499 {
500 AddMpegAudioDecoderPlugin();
501 AddAacAudioDecoderPlugin();
502
503 PluginDescription flacAudioDecoderPlugin;
504 flacAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Flac";
505 flacAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
506 flacAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
507 flacAudioDecoderPlugin.cap = "audio/flac";
508 flacAudioDecoderPlugin.rank = DEFAULT_RANK;
509 pluginDescriptionList_.push_back(flacAudioDecoderPlugin);
510
511 PluginDescription vorbisAudioDecoderPlugin;
512 vorbisAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Vorbis";
513 vorbisAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
514 vorbisAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
515 vorbisAudioDecoderPlugin.cap = "audio/vorbis";
516 vorbisAudioDecoderPlugin.rank = DEFAULT_RANK;
517 pluginDescriptionList_.push_back(vorbisAudioDecoderPlugin);
518
519 PluginDescription amrnbAudioDecoderPlugin;
520 amrnbAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Amrnb";
521 amrnbAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
522 amrnbAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
523 amrnbAudioDecoderPlugin.cap = "audio/3gpp";
524 amrnbAudioDecoderPlugin.rank = DEFAULT_RANK;
525 pluginDescriptionList_.push_back(amrnbAudioDecoderPlugin);
526
527 PluginDescription amrwbAudioDecoderPlugin;
528 amrwbAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Amrwb";
529 amrwbAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
530 amrwbAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
531 amrwbAudioDecoderPlugin.cap = "audio/amr-wb";
532 amrwbAudioDecoderPlugin.rank = DEFAULT_RANK;
533 pluginDescriptionList_.push_back(amrwbAudioDecoderPlugin);
534
535 PluginDescription apeAudioDecoderPlugin;
536 apeAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Ape";
537 apeAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
538 apeAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
539 apeAudioDecoderPlugin.cap = "audio/x-ape";
540 apeAudioDecoderPlugin.rank = DEFAULT_RANK;
541 pluginDescriptionList_.push_back(apeAudioDecoderPlugin);
542 }
543
AddAudioVividDecodersPlugins()544 void PluginList::AddAudioVividDecodersPlugins()
545 {
546 PluginDescription audioVividDecoderPlugin;
547 audioVividDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Vivid";
548 audioVividDecoderPlugin.packageName = "AudioVividDecoder";
549 audioVividDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
550 audioVividDecoderPlugin.cap = "audio/av3a";
551 audioVividDecoderPlugin.rank = DEFAULT_RANK;
552 pluginDescriptionList_.push_back(audioVividDecoderPlugin);
553 }
554
AddL2hcEncodersPlugins()555 void PluginList::AddL2hcEncodersPlugins()
556 {
557 PluginDescription l2hcEncoderPlugin;
558 l2hcEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.L2HC";
559 l2hcEncoderPlugin.packageName = "AudioL2hcEncoder";
560 l2hcEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
561 l2hcEncoderPlugin.cap = "audio/l2hc";
562 l2hcEncoderPlugin.rank = DEFAULT_RANK;
563 pluginDescriptionList_.push_back(l2hcEncoderPlugin);
564 }
565
AddL2hcDecodersPlugins()566 void PluginList::AddL2hcDecodersPlugins()
567 {
568 PluginDescription l2hcDecoderPlugin;
569 l2hcDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.L2HC";
570 l2hcDecoderPlugin.packageName = "AudioL2hcDecoder";
571 l2hcDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
572 l2hcDecoderPlugin.cap = "audio/l2hc";
573 l2hcDecoderPlugin.rank = DEFAULT_RANK;
574 pluginDescriptionList_.push_back(l2hcDecoderPlugin);
575 }
576
AddG711muAudioDecoderPlugins()577 void PluginList::AddG711muAudioDecoderPlugins()
578 {
579 PluginDescription g711muAudioDecoderPlugin;
580 g711muAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.G711mu";
581 g711muAudioDecoderPlugin.packageName = "G711muAudioDecoder";
582 g711muAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
583 g711muAudioDecoderPlugin.cap = "audio/g711mu";
584 g711muAudioDecoderPlugin.rank = DEFAULT_RANK;
585 pluginDescriptionList_.push_back(g711muAudioDecoderPlugin);
586 }
587
AddG711aAudioDecoderPlugins()588 void PluginList::AddG711aAudioDecoderPlugins()
589 {
590 PluginDescription g711aAudioDecoderPlugin;
591 g711aAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.G711a";
592 g711aAudioDecoderPlugin.packageName = "G711aAudioDecoder";
593 g711aAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
594 g711aAudioDecoderPlugin.cap = "audio/g711a";
595 g711aAudioDecoderPlugin.rank = DEFAULT_RANK;
596 pluginDescriptionList_.push_back(g711aAudioDecoderPlugin);
597 }
598
AddLbvcAudioDecoderPlugins()599 void PluginList::AddLbvcAudioDecoderPlugins()
600 {
601 PluginDescription lbvcAudioDecoderPlugin;
602 lbvcAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.LBVC";
603 lbvcAudioDecoderPlugin.packageName = "LbvcAudioDecoder";
604 lbvcAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
605 lbvcAudioDecoderPlugin.cap = "audio/lbvc";
606 lbvcAudioDecoderPlugin.rank = DEFAULT_RANK;
607 pluginDescriptionList_.push_back(lbvcAudioDecoderPlugin);
608 }
609
AddOpusAudioDecoderPlugins()610 void PluginList::AddOpusAudioDecoderPlugins()
611 {
612 PluginDescription opusAudioDecoderPlugin;
613 opusAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Opus";
614 opusAudioDecoderPlugin.packageName = "OpusAudioDecoder";
615 opusAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
616 opusAudioDecoderPlugin.cap = "audio/opus";
617 opusAudioDecoderPlugin.rank = DEFAULT_RANK;
618 pluginDescriptionList_.push_back(opusAudioDecoderPlugin);
619 }
620
AddRawAudioDecoderPlugins()621 void PluginList::AddRawAudioDecoderPlugins()
622 {
623 PluginDescription opusAudioDecoderPlugin;
624 opusAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Raw";
625 opusAudioDecoderPlugin.packageName = "RawAudioDecoder";
626 opusAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
627 opusAudioDecoderPlugin.cap = "audio/raw";
628 opusAudioDecoderPlugin.rank = DEFAULT_RANK;
629 pluginDescriptionList_.push_back(opusAudioDecoderPlugin);
630 }
631
632 #ifdef SUPPORT_CODEC_COOK
AddCookAudioDecoderPlugins()633 void PluginList::AddCookAudioDecoderPlugins()
634 {
635 PluginDescription cookAudioDecoderPlugin;
636 cookAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.COOK";
637 cookAudioDecoderPlugin.packageName = "CookAudioDecoder";
638 cookAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
639 cookAudioDecoderPlugin.cap = "audio/cook";
640 cookAudioDecoderPlugin.rank = DEFAULT_RANK;
641 pluginDescriptionList_.push_back(cookAudioDecoderPlugin);
642 }
643 #endif
644
AddAc3AudioDecoderPlugins()645 void PluginList::AddAc3AudioDecoderPlugins()
646 {
647 PluginDescription ac3AudioDecoderPlugin;
648 ac3AudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.AC3";
649 ac3AudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
650 ac3AudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
651 ac3AudioDecoderPlugin.cap = "audio/ac3";
652 ac3AudioDecoderPlugin.rank = DEFAULT_RANK;
653 pluginDescriptionList_.push_back(ac3AudioDecoderPlugin);
654 }
655
AddAudioServerSinkPlugins()656 void PluginList::AddAudioServerSinkPlugins()
657 {
658 PluginDescription audioServerSinkPlugin;
659 audioServerSinkPlugin.pluginName = "AudioServerSink";
660 audioServerSinkPlugin.packageName = "AudioServerSink";
661 audioServerSinkPlugin.pluginType = PluginType::AUDIO_SINK;
662 audioServerSinkPlugin.cap = "audio/raw";
663 audioServerSinkPlugin.rank = DEFAULT_RANK;
664 pluginDescriptionList_.push_back(audioServerSinkPlugin);
665 }
666
AddFFmpegAudioEncodersPlugins()667 void PluginList::AddFFmpegAudioEncodersPlugins()
668 {
669 PluginDescription aacAudioEncoderPlugin;
670 aacAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.AAC";
671 aacAudioEncoderPlugin.packageName = "FFmpegAudioEncoders";
672 aacAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
673 aacAudioEncoderPlugin.cap = "audio/mp4a-latm";
674 aacAudioEncoderPlugin.rank = DEFAULT_RANK;
675 pluginDescriptionList_.push_back(aacAudioEncoderPlugin);
676
677 PluginDescription flacAudioEncoderPlugin;
678 flacAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Flac";
679 flacAudioEncoderPlugin.packageName = "FFmpegAudioEncoders";
680 flacAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
681 flacAudioEncoderPlugin.cap = "audio/flac";
682 flacAudioEncoderPlugin.rank = DEFAULT_RANK;
683 pluginDescriptionList_.push_back(flacAudioEncoderPlugin);
684 }
685
AddAudioVendorAacEncodersPlugin()686 void PluginList::AddAudioVendorAacEncodersPlugin()
687 {
688 PluginDescription AacEncoderPlugin;
689 AacEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Vendor.AAC";
690 AacEncoderPlugin.packageName = "AudioVendorAacEncoder";
691 AacEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
692 AacEncoderPlugin.cap = "audio/mp4a-latm";
693 AacEncoderPlugin.rank = DEFAULT_RANK + 1; // larger than default aac plugin
694 pluginDescriptionList_.push_back(AacEncoderPlugin);
695 }
696
AddG711muAudioEncoderPlugins()697 void PluginList::AddG711muAudioEncoderPlugins()
698 {
699 PluginDescription g711muAudioEncoderPlugin;
700 g711muAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.G711mu";
701 g711muAudioEncoderPlugin.packageName = "G711muAudioEncoder";
702 g711muAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
703 g711muAudioEncoderPlugin.cap = "audio/g711mu";
704 g711muAudioEncoderPlugin.rank = DEFAULT_RANK;
705 pluginDescriptionList_.push_back(g711muAudioEncoderPlugin);
706 }
707
AddLbvcAudioEncoderPlugins()708 void PluginList::AddLbvcAudioEncoderPlugins()
709 {
710 PluginDescription lbvcAudioEncoderPlugin;
711 lbvcAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.LBVC";
712 lbvcAudioEncoderPlugin.packageName = "LbvcAudioEncoder";
713 lbvcAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
714 lbvcAudioEncoderPlugin.cap = "audio/lbvc";
715 lbvcAudioEncoderPlugin.rank = DEFAULT_RANK;
716 pluginDescriptionList_.push_back(lbvcAudioEncoderPlugin);
717 }
718
AddOpusAudioEncoderPlugins()719 void PluginList::AddOpusAudioEncoderPlugins()
720 {
721 PluginDescription opusAudioEncoderPlugin;
722 opusAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Opus";
723 opusAudioEncoderPlugin.packageName = "OpusAudioEncoder";
724 opusAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
725 opusAudioEncoderPlugin.cap = "audio/opus";
726 opusAudioEncoderPlugin.rank = DEFAULT_RANK;
727 pluginDescriptionList_.push_back(opusAudioEncoderPlugin);
728 }
729
AddAmrwbAudioEncoderPlugins()730 void PluginList::AddAmrwbAudioEncoderPlugins()
731 {
732 PluginDescription amrwbAudioEncoderPlugin;
733 amrwbAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Amrwb";
734 amrwbAudioEncoderPlugin.packageName = "AmrWbAudioEncoder";
735 amrwbAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
736 amrwbAudioEncoderPlugin.cap = "audio/amr-wb";
737 amrwbAudioEncoderPlugin.rank = DEFAULT_RANK;
738 pluginDescriptionList_.push_back(amrwbAudioEncoderPlugin);
739 }
AddAmrnbAudioEncoderPlugins()740 void PluginList::AddAmrnbAudioEncoderPlugins()
741 {
742 PluginDescription amrnbAudioEncoderPlugin;
743 amrnbAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Amrnb";
744 amrnbAudioEncoderPlugin.packageName = "AmrNbAudioEncoder";
745 amrnbAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
746 amrnbAudioEncoderPlugin.cap = "audio/3gpp";
747 amrnbAudioEncoderPlugin.rank = DEFAULT_RANK;
748 pluginDescriptionList_.push_back(amrnbAudioEncoderPlugin);
749 }
750
AddMp3AudioEncoderPlugins()751 void PluginList::AddMp3AudioEncoderPlugins()
752 {
753 PluginDescription mp3AudioEncoderPlugin;
754 mp3AudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Mp3";
755 mp3AudioEncoderPlugin.packageName = "Mp3AudioEncoder";
756 mp3AudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
757 mp3AudioEncoderPlugin.cap = "audio/mpeg";
758 mp3AudioEncoderPlugin.rank = DEFAULT_RANK;
759 pluginDescriptionList_.push_back(mp3AudioEncoderPlugin);
760 }
761
AddFFmpegFlacMuxerplugins()762 void PluginList::AddFFmpegFlacMuxerplugins()
763 {
764 PluginDescription flacMuxerPlugin;
765 flacMuxerPlugin.pluginName = "ffmpegMux_flac";
766 flacMuxerPlugin.packageName = "FFmpegMuxer";
767 flacMuxerPlugin.pluginType = PluginType::MUXER;
768 flacMuxerPlugin.cap = "media/flac";
769 flacMuxerPlugin.rank = DEFAULT_RANK;
770 pluginDescriptionList_.push_back(flacMuxerPlugin);
771 }
772
AddFFmpegMuxerPlugins()773 void PluginList::AddFFmpegMuxerPlugins()
774 {
775 PluginDescription mp4MuxerPlugin;
776 mp4MuxerPlugin.pluginName = "ffmpegMux_mp4";
777 mp4MuxerPlugin.packageName = "FFmpegMuxer";
778 mp4MuxerPlugin.pluginType = PluginType::MUXER;
779 mp4MuxerPlugin.cap = "media/mp4";
780 mp4MuxerPlugin.rank = DEFAULT_RANK;
781 pluginDescriptionList_.push_back(mp4MuxerPlugin);
782
783 PluginDescription m4aMuxerPlugin;
784 m4aMuxerPlugin.pluginName = "ffmpegMux_ipod";
785 m4aMuxerPlugin.packageName = "FFmpegMuxer";
786 m4aMuxerPlugin.pluginType = PluginType::MUXER;
787 m4aMuxerPlugin.cap = "media/m4a";
788 m4aMuxerPlugin.rank = DEFAULT_RANK;
789 pluginDescriptionList_.push_back(m4aMuxerPlugin);
790
791 PluginDescription amrMuxerPlugin;
792 amrMuxerPlugin.pluginName = "ffmpegMux_amr";
793 amrMuxerPlugin.packageName = "FFmpegMuxer";
794 amrMuxerPlugin.pluginType = PluginType::MUXER;
795 amrMuxerPlugin.cap = "media/amr";
796 amrMuxerPlugin.rank = DEFAULT_RANK;
797 pluginDescriptionList_.push_back(amrMuxerPlugin);
798
799 PluginDescription mp3MuxerPlugin;
800 mp3MuxerPlugin.pluginName = "ffmpegMux_mp3";
801 mp3MuxerPlugin.packageName = "FFmpegMuxer";
802 mp3MuxerPlugin.pluginType = PluginType::MUXER;
803 mp3MuxerPlugin.cap = "media/mp3";
804 mp3MuxerPlugin.rank = DEFAULT_RANK;
805 pluginDescriptionList_.push_back(mp3MuxerPlugin);
806
807 PluginDescription wavMuxerPlugin;
808 wavMuxerPlugin.pluginName = "ffmpegMux_wav";
809 wavMuxerPlugin.packageName = "FFmpegMuxer";
810 wavMuxerPlugin.pluginType = PluginType::MUXER;
811 wavMuxerPlugin.cap = "media/wav";
812 wavMuxerPlugin.rank = DEFAULT_RANK;
813 pluginDescriptionList_.push_back(wavMuxerPlugin);
814
815 PluginDescription aacMuxerPlugin;
816 aacMuxerPlugin.pluginName = "ffmpegMux_adts";
817 aacMuxerPlugin.packageName = "FFmpegMuxer";
818 aacMuxerPlugin.pluginType = PluginType::MUXER;
819 aacMuxerPlugin.cap = "media/aac";
820 aacMuxerPlugin.rank = DEFAULT_RANK;
821 pluginDescriptionList_.push_back(aacMuxerPlugin);
822 }
823
824 } // namespace Plugins
825 } // namespace Media
826 } // namespace OHOS