• 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     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