• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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