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     AddAudioServerSinkPlugins();
97     AddFFmpegAudioEncodersPlugins();
98     AddG711muAudioEncoderPlugins();
99     AddLbvcAudioEncoderPlugins();
100     AddOpusAudioEncoderPlugins();
101     AddAmrwbAudioEncoderPlugins();
102     AddAmrnbAudioEncoderPlugins();
103     AddMp3AudioEncoderPlugins();
104     AddFFmpegMuxerPlugins();
105 }
106 
AddDataSourceStreamPlugins()107 void PluginList::AddDataSourceStreamPlugins()
108 {
109     PluginDescription dataSourceStreamPlugin;
110     dataSourceStreamPlugin.pluginName = "DataStreamSource";
111     dataSourceStreamPlugin.packageName = "DataStreamSource";
112     dataSourceStreamPlugin.pluginType = PluginType::SOURCE;
113     dataSourceStreamPlugin.cap = "stream";
114     dataSourceStreamPlugin.rank = DEFAULT_RANK;
115     pluginDescriptionList_.push_back(dataSourceStreamPlugin);
116 }
117 
AddFileFdSourcePlugins()118 void PluginList::AddFileFdSourcePlugins()
119 {
120     PluginDescription fileFdSourcePlugin;
121     fileFdSourcePlugin.pluginName = "FileFdSource";
122     fileFdSourcePlugin.packageName = "FileFdSource";
123     fileFdSourcePlugin.pluginType = PluginType::SOURCE;
124     fileFdSourcePlugin.cap = "fd";
125     fileFdSourcePlugin.rank = DEFAULT_RANK;
126     pluginDescriptionList_.push_back(fileFdSourcePlugin);
127 }
128 
AddFileSourcePlugins()129 void PluginList::AddFileSourcePlugins()
130 {
131     PluginDescription fileSourcePlugin;
132     fileSourcePlugin.pluginName = "FileSource";
133     fileSourcePlugin.packageName = "FileSource";
134     fileSourcePlugin.pluginType = PluginType::SOURCE;
135     fileSourcePlugin.cap = "file";
136     fileSourcePlugin.rank = DEFAULT_RANK;
137     pluginDescriptionList_.push_back(fileSourcePlugin);
138 }
139 
AddHttpSourcePlugins()140 void PluginList::AddHttpSourcePlugins()
141 {
142     PluginDescription httpSourcePlugin;
143     httpSourcePlugin.pluginName = "HttpSource";
144     httpSourcePlugin.packageName = "HttpSource";
145     httpSourcePlugin.pluginType = PluginType::SOURCE;
146     httpSourcePlugin.cap = "http";
147     httpSourcePlugin.rank = DEFAULT_RANK;
148     pluginDescriptionList_.push_back(httpSourcePlugin);
149 
150     PluginDescription httpsSourcePlugin;
151     httpsSourcePlugin.pluginName = "HttpSource";
152     httpsSourcePlugin.packageName = "HttpSource";
153     httpsSourcePlugin.pluginType = PluginType::SOURCE;
154     httpsSourcePlugin.cap = "https";
155     httpsSourcePlugin.rank = DEFAULT_RANK;
156     pluginDescriptionList_.push_back(httpsSourcePlugin);
157 }
158 
AddAacDemuxerPlugin()159 void PluginList::AddAacDemuxerPlugin()
160 {
161     PluginDescription aacDemuxerPlugin;
162     aacDemuxerPlugin.pluginName = "avdemux_aac";
163     aacDemuxerPlugin.packageName = "FFmpegDemuxer";
164     aacDemuxerPlugin.pluginType = PluginType::DEMUXER;
165     aacDemuxerPlugin.cap = "";
166     aacDemuxerPlugin.rank = DEFAULT_RANK;
167     pluginDescriptionList_.push_back(aacDemuxerPlugin);
168 }
169 
AddAmrDemuxerPlugin()170 void PluginList::AddAmrDemuxerPlugin()
171 {
172     PluginDescription amrDemuxerPlugin;
173     amrDemuxerPlugin.pluginName = "avdemux_amr";
174     amrDemuxerPlugin.packageName = "FFmpegDemuxer";
175     amrDemuxerPlugin.pluginType = PluginType::DEMUXER;
176     amrDemuxerPlugin.cap = "";
177     amrDemuxerPlugin.rank = DEFAULT_RANK;
178     pluginDescriptionList_.push_back(amrDemuxerPlugin);
179 }
180 
AddAmrnbDemuxerPlugin()181 void PluginList::AddAmrnbDemuxerPlugin()
182 {
183     PluginDescription amrnbDemuxerPlugin;
184     amrnbDemuxerPlugin.pluginName = "avdemux_amrnb";
185     amrnbDemuxerPlugin.packageName = "FFmpegDemuxer";
186     amrnbDemuxerPlugin.pluginType = PluginType::DEMUXER;
187     amrnbDemuxerPlugin.cap = "";
188     amrnbDemuxerPlugin.rank = DEFAULT_RANK;
189     pluginDescriptionList_.push_back(amrnbDemuxerPlugin);
190 }
191 
AddAmrwbDemuxerPlugin()192 void PluginList::AddAmrwbDemuxerPlugin()
193 {
194     PluginDescription amrwbDemuxerPlugin;
195     amrwbDemuxerPlugin.pluginName = "avdemux_amrwb";
196     amrwbDemuxerPlugin.packageName = "FFmpegDemuxer";
197     amrwbDemuxerPlugin.pluginType = PluginType::DEMUXER;
198     amrwbDemuxerPlugin.cap = "";
199     amrwbDemuxerPlugin.rank = DEFAULT_RANK;
200     pluginDescriptionList_.push_back(amrwbDemuxerPlugin);
201 }
202 
AddApeDemuxerPlugin()203 void PluginList::AddApeDemuxerPlugin()
204 {
205     PluginDescription apeDemuxerPlugin;
206     apeDemuxerPlugin.pluginName = "avdemux_ape";
207     apeDemuxerPlugin.packageName = "FFmpegDemuxer";
208     apeDemuxerPlugin.pluginType = PluginType::DEMUXER;
209     apeDemuxerPlugin.cap = "";
210     apeDemuxerPlugin.rank = DEFAULT_RANK;
211     pluginDescriptionList_.push_back(apeDemuxerPlugin);
212 }
213 
AddAsfDemuxerPlugin()214 void PluginList::AddAsfDemuxerPlugin()
215 {
216     PluginDescription asfDemuxerPlugin;
217     asfDemuxerPlugin.pluginName = "avdemux_asf";
218     asfDemuxerPlugin.packageName = "FFmpegDemuxer";
219     asfDemuxerPlugin.pluginType = PluginType::DEMUXER;
220     asfDemuxerPlugin.cap = "";
221     asfDemuxerPlugin.rank = DEFAULT_RANK;
222     pluginDescriptionList_.push_back(asfDemuxerPlugin);
223 }
224 
AddAsfoDemuxerPlugin()225 void PluginList::AddAsfoDemuxerPlugin()
226 {
227     PluginDescription asfoDemuxerPlugin;
228     asfoDemuxerPlugin.pluginName = "avdemux_asf_o";
229     asfoDemuxerPlugin.packageName = "FFmpegDemuxer";
230     asfoDemuxerPlugin.pluginType = PluginType::DEMUXER;
231     asfoDemuxerPlugin.cap = "";
232     asfoDemuxerPlugin.rank = DEFAULT_RANK;
233     pluginDescriptionList_.push_back(asfoDemuxerPlugin);
234 }
235 
AddFlacDemuxerPlugin()236 void PluginList::AddFlacDemuxerPlugin()
237 {
238     PluginDescription flacDemuxerPlugin;
239     flacDemuxerPlugin.pluginName = "avdemux_flac";
240     flacDemuxerPlugin.packageName = "FFmpegDemuxer";
241     flacDemuxerPlugin.pluginType = PluginType::DEMUXER;
242     flacDemuxerPlugin.cap = "";
243     flacDemuxerPlugin.rank = DEFAULT_RANK;
244     pluginDescriptionList_.push_back(flacDemuxerPlugin);
245 }
246 
AddFlvDemuxerPlugin()247 void PluginList::AddFlvDemuxerPlugin()
248 {
249     PluginDescription flvDemuxerPlugin;
250     flvDemuxerPlugin.pluginName = "avdemux_flv";
251     flvDemuxerPlugin.packageName = "FFmpegDemuxer";
252     flvDemuxerPlugin.pluginType = PluginType::DEMUXER;
253     flvDemuxerPlugin.cap = "";
254     flvDemuxerPlugin.rank = DEFAULT_RANK;
255     pluginDescriptionList_.push_back(flvDemuxerPlugin);
256 }
257 
AddMatroskaDemuxerPlugin()258 void PluginList::AddMatroskaDemuxerPlugin()
259 {
260     PluginDescription matroskaDemuxerPlugin;
261     matroskaDemuxerPlugin.pluginName = "avdemux_matroska,webm";
262     matroskaDemuxerPlugin.packageName = "FFmpegDemuxer";
263     matroskaDemuxerPlugin.pluginType = PluginType::DEMUXER;
264     matroskaDemuxerPlugin.cap = "";
265     matroskaDemuxerPlugin.rank = DEFAULT_RANK;
266     pluginDescriptionList_.push_back(matroskaDemuxerPlugin);
267 }
268 
AddMovDemuxerPlugin()269 void PluginList::AddMovDemuxerPlugin()
270 {
271     PluginDescription movDemuxerPlugin;
272     movDemuxerPlugin.pluginName = "avdemux_mov,mp4,m4a,3gp,3g2,mj2";
273     movDemuxerPlugin.packageName = "FFmpegDemuxer";
274     movDemuxerPlugin.pluginType = PluginType::DEMUXER;
275     movDemuxerPlugin.cap = "";
276     movDemuxerPlugin.rank = DEFAULT_RANK;
277     pluginDescriptionList_.push_back(movDemuxerPlugin);
278 }
279 
AddMp3DemuxerPlugin()280 void PluginList::AddMp3DemuxerPlugin()
281 {
282     PluginDescription mp3DemuxerPlugin;
283     mp3DemuxerPlugin.pluginName = "avdemux_mp3";
284     mp3DemuxerPlugin.packageName = "FFmpegDemuxer";
285     mp3DemuxerPlugin.pluginType = PluginType::DEMUXER;
286     mp3DemuxerPlugin.cap = "";
287     mp3DemuxerPlugin.rank = DEFAULT_RANK;
288     pluginDescriptionList_.push_back(mp3DemuxerPlugin);
289 }
290 
AddMpegDemuxerPlugin()291 void PluginList::AddMpegDemuxerPlugin()
292 {
293     PluginDescription mpegDemuxerPlugin;
294     mpegDemuxerPlugin.pluginName = "avdemux_mpeg";
295     mpegDemuxerPlugin.packageName = "FFmpegDemuxer";
296     mpegDemuxerPlugin.pluginType = PluginType::DEMUXER;
297     mpegDemuxerPlugin.cap = "";
298     mpegDemuxerPlugin.rank = DEFAULT_RANK;
299     pluginDescriptionList_.push_back(mpegDemuxerPlugin);
300 }
301 
AddMpegtsDemuxerPlugin()302 void PluginList::AddMpegtsDemuxerPlugin()
303 {
304     PluginDescription mpegtsDemuxerPlugin;
305     mpegtsDemuxerPlugin.pluginName = "avdemux_mpegts";
306     mpegtsDemuxerPlugin.packageName = "FFmpegDemuxer";
307     mpegtsDemuxerPlugin.pluginType = PluginType::DEMUXER;
308     mpegtsDemuxerPlugin.cap = "";
309     mpegtsDemuxerPlugin.rank = DEFAULT_RANK;
310     pluginDescriptionList_.push_back(mpegtsDemuxerPlugin);
311 }
312 
AddAviDemuxerPlugin()313 void PluginList::AddAviDemuxerPlugin()
314 {
315     PluginDescription aviDemuxerPlugin;
316     aviDemuxerPlugin.pluginName = "avdemux_avi";
317     aviDemuxerPlugin.packageName = "FFmpegDemuxer";
318     aviDemuxerPlugin.pluginType = PluginType::DEMUXER;
319     aviDemuxerPlugin.cap = "";
320     aviDemuxerPlugin.rank = DEFAULT_RANK;
321     pluginDescriptionList_.push_back(aviDemuxerPlugin);
322 }
323 
AddSrtDemuxerPlugin()324 void PluginList::AddSrtDemuxerPlugin()
325 {
326     PluginDescription srtDemuxerPlugin;
327     srtDemuxerPlugin.pluginName = "avdemux_srt";
328     srtDemuxerPlugin.packageName = "FFmpegDemuxer";
329     srtDemuxerPlugin.pluginType = PluginType::DEMUXER;
330     srtDemuxerPlugin.cap = "";
331     srtDemuxerPlugin.rank = DEFAULT_RANK;
332     pluginDescriptionList_.push_back(srtDemuxerPlugin);
333 }
334 
AddWebvttDemuxerPlugin()335 void PluginList::AddWebvttDemuxerPlugin()
336 {
337     PluginDescription vttDemuxerPlugin;
338     vttDemuxerPlugin.pluginName = "avdemux_webvtt";
339     vttDemuxerPlugin.packageName = "FFmpegDemuxer";
340     vttDemuxerPlugin.pluginType = PluginType::DEMUXER;
341     vttDemuxerPlugin.cap = "";
342     vttDemuxerPlugin.rank = DEFAULT_RANK;
343     pluginDescriptionList_.push_back(vttDemuxerPlugin);
344 }
345 
AddOggDemuxerPlugin()346 void PluginList::AddOggDemuxerPlugin()
347 {
348     PluginDescription oggDemuxerPlugin;
349     oggDemuxerPlugin.pluginName = "avdemux_ogg";
350     oggDemuxerPlugin.packageName = "FFmpegDemuxer";
351     oggDemuxerPlugin.pluginType = PluginType::DEMUXER;
352     oggDemuxerPlugin.cap = "";
353     oggDemuxerPlugin.rank = DEFAULT_RANK;
354     pluginDescriptionList_.push_back(oggDemuxerPlugin);
355 }
356 
AddWavDemuxerPlugin()357 void PluginList::AddWavDemuxerPlugin()
358 {
359     PluginDescription wavDemuxerPlugin;
360     wavDemuxerPlugin.pluginName = "avdemux_wav";
361     wavDemuxerPlugin.packageName = "FFmpegDemuxer";
362     wavDemuxerPlugin.pluginType = PluginType::DEMUXER;
363     wavDemuxerPlugin.cap = "";
364     wavDemuxerPlugin.rank = DEFAULT_RANK;
365     pluginDescriptionList_.push_back(wavDemuxerPlugin);
366 }
367 
AddFFmpegDemuxerPlugins()368 void PluginList::AddFFmpegDemuxerPlugins()
369 {
370     AddAacDemuxerPlugin();
371     AddAmrDemuxerPlugin();
372     AddAmrnbDemuxerPlugin();
373     AddAmrwbDemuxerPlugin();
374     AddApeDemuxerPlugin();
375     AddAsfDemuxerPlugin();
376     AddAsfoDemuxerPlugin();
377     AddFlacDemuxerPlugin();
378     AddFlvDemuxerPlugin();
379     AddMatroskaDemuxerPlugin();
380     AddMovDemuxerPlugin();
381     AddMp3DemuxerPlugin();
382     AddMpegDemuxerPlugin();
383     AddMpegtsDemuxerPlugin();
384     AddAviDemuxerPlugin();
385     AddSrtDemuxerPlugin();
386     AddWebvttDemuxerPlugin();
387     AddOggDemuxerPlugin();
388     AddWavDemuxerPlugin();
389 }
390 
AddMpegAudioDecoderPlugin()391 void PluginList::AddMpegAudioDecoderPlugin()
392 {
393     PluginDescription mpegAudioDecoderPlugin;
394     mpegAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Mpeg";
395     mpegAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
396     mpegAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
397     mpegAudioDecoderPlugin.cap = "audio/mpeg";
398     mpegAudioDecoderPlugin.rank = DEFAULT_RANK;
399     pluginDescriptionList_.push_back(mpegAudioDecoderPlugin);
400 }
401 
AddAacAudioDecoderPlugin()402 void PluginList::AddAacAudioDecoderPlugin()
403 {
404     PluginDescription aacAudioDecoderPlugin;
405     aacAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.AAC";
406     aacAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
407     aacAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
408     aacAudioDecoderPlugin.cap = "audio/mp4a-latm";
409     aacAudioDecoderPlugin.rank = DEFAULT_RANK;
410     pluginDescriptionList_.push_back(aacAudioDecoderPlugin);
411 }
412 
AddFFmpegAudioDecodersPlugins()413 void PluginList::AddFFmpegAudioDecodersPlugins()
414 {
415     AddMpegAudioDecoderPlugin();
416     AddAacAudioDecoderPlugin();
417 
418     PluginDescription flacAudioDecoderPlugin;
419     flacAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Flac";
420     flacAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
421     flacAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
422     flacAudioDecoderPlugin.cap = "audio/flac";
423     flacAudioDecoderPlugin.rank = DEFAULT_RANK;
424     pluginDescriptionList_.push_back(flacAudioDecoderPlugin);
425 
426     PluginDescription vorbisAudioDecoderPlugin;
427     vorbisAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Vorbis";
428     vorbisAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
429     vorbisAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
430     vorbisAudioDecoderPlugin.cap = "audio/vorbis";
431     vorbisAudioDecoderPlugin.rank = DEFAULT_RANK;
432     pluginDescriptionList_.push_back(vorbisAudioDecoderPlugin);
433 
434     PluginDescription amrnbAudioDecoderPlugin;
435     amrnbAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Amrnb";
436     amrnbAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
437     amrnbAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
438     amrnbAudioDecoderPlugin.cap = "audio/3gpp";
439     amrnbAudioDecoderPlugin.rank = DEFAULT_RANK;
440     pluginDescriptionList_.push_back(amrnbAudioDecoderPlugin);
441 
442     PluginDescription amrwbAudioDecoderPlugin;
443     amrwbAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Amrwb";
444     amrwbAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
445     amrwbAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
446     amrwbAudioDecoderPlugin.cap = "audio/amr-wb";
447     amrwbAudioDecoderPlugin.rank = DEFAULT_RANK;
448     pluginDescriptionList_.push_back(amrwbAudioDecoderPlugin);
449 
450     PluginDescription apeAudioDecoderPlugin;
451     apeAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Ape";
452     apeAudioDecoderPlugin.packageName = "FFmpegAudioDecoders";
453     apeAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
454     apeAudioDecoderPlugin.cap = "audio/x-ape";
455     apeAudioDecoderPlugin.rank = DEFAULT_RANK;
456     pluginDescriptionList_.push_back(apeAudioDecoderPlugin);
457 }
458 
AddAudioVividDecodersPlugins()459 void PluginList::AddAudioVividDecodersPlugins()
460 {
461     PluginDescription audioVividDecoderPlugin;
462     audioVividDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Vivid";
463     audioVividDecoderPlugin.packageName = "AudioVividDecoder";
464     audioVividDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
465     audioVividDecoderPlugin.cap = "audio/av3a";
466     audioVividDecoderPlugin.rank = DEFAULT_RANK;
467     pluginDescriptionList_.push_back(audioVividDecoderPlugin);
468 }
469 
AddG711muAudioDecoderPlugins()470 void PluginList::AddG711muAudioDecoderPlugins()
471 {
472     PluginDescription g711muAudioDecoderPlugin;
473     g711muAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.G711mu";
474     g711muAudioDecoderPlugin.packageName = "G711muAudioDecoder";
475     g711muAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
476     g711muAudioDecoderPlugin.cap = "audio/g711mu";
477     g711muAudioDecoderPlugin.rank = DEFAULT_RANK;
478     pluginDescriptionList_.push_back(g711muAudioDecoderPlugin);
479 }
480 
AddLbvcAudioDecoderPlugins()481 void PluginList::AddLbvcAudioDecoderPlugins()
482 {
483     PluginDescription lbvcAudioDecoderPlugin;
484     lbvcAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.LBVC";
485     lbvcAudioDecoderPlugin.packageName = "LbvcAudioDecoder";
486     lbvcAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
487     lbvcAudioDecoderPlugin.cap = "audio/lbvc";
488     lbvcAudioDecoderPlugin.rank = DEFAULT_RANK;
489     pluginDescriptionList_.push_back(lbvcAudioDecoderPlugin);
490 }
491 
AddOpusAudioDecoderPlugins()492 void PluginList::AddOpusAudioDecoderPlugins()
493 {
494     PluginDescription opusAudioDecoderPlugin;
495     opusAudioDecoderPlugin.pluginName = "OH.Media.Codec.Decoder.Audio.Opus";
496     opusAudioDecoderPlugin.packageName = "OpusAudioDecoder";
497     opusAudioDecoderPlugin.pluginType = PluginType::AUDIO_DECODER;
498     opusAudioDecoderPlugin.cap = "audio/opus";
499     opusAudioDecoderPlugin.rank = DEFAULT_RANK;
500     pluginDescriptionList_.push_back(opusAudioDecoderPlugin);
501 }
502 
AddAudioServerSinkPlugins()503 void PluginList::AddAudioServerSinkPlugins()
504 {
505     PluginDescription audioServerSinkPlugin;
506     audioServerSinkPlugin.pluginName = "AudioServerSink";
507     audioServerSinkPlugin.packageName = "AudioServerSink";
508     audioServerSinkPlugin.pluginType = PluginType::AUDIO_SINK;
509     audioServerSinkPlugin.cap = "audio/raw";
510     audioServerSinkPlugin.rank = DEFAULT_RANK;
511     pluginDescriptionList_.push_back(audioServerSinkPlugin);
512 }
513 
AddFFmpegAudioEncodersPlugins()514 void PluginList::AddFFmpegAudioEncodersPlugins()
515 {
516     PluginDescription aacAudioEncoderPlugin;
517     aacAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.AAC";
518     aacAudioEncoderPlugin.packageName = "FFmpegAudioEncoders";
519     aacAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
520     aacAudioEncoderPlugin.cap = "audio/mp4a-latm";
521     aacAudioEncoderPlugin.rank = DEFAULT_RANK;
522     pluginDescriptionList_.push_back(aacAudioEncoderPlugin);
523 
524     PluginDescription flacAudioEncoderPlugin;
525     flacAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Flac";
526     flacAudioEncoderPlugin.packageName = "FFmpegAudioEncoders";
527     flacAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
528     flacAudioEncoderPlugin.cap = "audio/flac";
529     flacAudioEncoderPlugin.rank = DEFAULT_RANK;
530     pluginDescriptionList_.push_back(flacAudioEncoderPlugin);
531 }
532 
AddAudioVendorAacEncodersPlugin()533 void PluginList::AddAudioVendorAacEncodersPlugin()
534 {
535     PluginDescription AacEncoderPlugin;
536     AacEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Vendor.AAC";
537     AacEncoderPlugin.packageName = "AudioVendorAacEncoder";
538     AacEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
539     AacEncoderPlugin.cap = "audio/mp4a-latm";
540     AacEncoderPlugin.rank = DEFAULT_RANK + 1; // larger than default aac plugin
541     pluginDescriptionList_.push_back(AacEncoderPlugin);
542 }
543 
AddG711muAudioEncoderPlugins()544 void PluginList::AddG711muAudioEncoderPlugins()
545 {
546     PluginDescription g711muAudioEncoderPlugin;
547     g711muAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.G711mu";
548     g711muAudioEncoderPlugin.packageName = "G711muAudioEncoder";
549     g711muAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
550     g711muAudioEncoderPlugin.cap = "audio/g711mu";
551     g711muAudioEncoderPlugin.rank = DEFAULT_RANK;
552     pluginDescriptionList_.push_back(g711muAudioEncoderPlugin);
553 }
554 
AddLbvcAudioEncoderPlugins()555 void PluginList::AddLbvcAudioEncoderPlugins()
556 {
557     PluginDescription lbvcAudioEncoderPlugin;
558     lbvcAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.LBVC";
559     lbvcAudioEncoderPlugin.packageName = "LbvcAudioEncoder";
560     lbvcAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
561     lbvcAudioEncoderPlugin.cap = "audio/lbvc";
562     lbvcAudioEncoderPlugin.rank = DEFAULT_RANK;
563     pluginDescriptionList_.push_back(lbvcAudioEncoderPlugin);
564 }
565 
AddOpusAudioEncoderPlugins()566 void PluginList::AddOpusAudioEncoderPlugins()
567 {
568     PluginDescription opusAudioEncoderPlugin;
569     opusAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Opus";
570     opusAudioEncoderPlugin.packageName = "OpusAudioEncoder";
571     opusAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
572     opusAudioEncoderPlugin.cap = "audio/opus";
573     opusAudioEncoderPlugin.rank = DEFAULT_RANK;
574     pluginDescriptionList_.push_back(opusAudioEncoderPlugin);
575 }
576 
AddAmrwbAudioEncoderPlugins()577 void PluginList::AddAmrwbAudioEncoderPlugins()
578 {
579     PluginDescription amrwbAudioEncoderPlugin;
580     amrwbAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Amrwb";
581     amrwbAudioEncoderPlugin.packageName = "AmrWbAudioEncoder";
582     amrwbAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
583     amrwbAudioEncoderPlugin.cap = "audio/amrwb";
584     amrwbAudioEncoderPlugin.rank = DEFAULT_RANK;
585     pluginDescriptionList_.push_back(amrwbAudioEncoderPlugin);
586 }
AddAmrnbAudioEncoderPlugins()587 void PluginList::AddAmrnbAudioEncoderPlugins()
588 {
589     PluginDescription amrnbAudioEncoderPlugin;
590     amrnbAudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Amrnb";
591     amrnbAudioEncoderPlugin.packageName = "AmrNbAudioEncoder";
592     amrnbAudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
593     amrnbAudioEncoderPlugin.cap = "audio/amrnb";
594     amrnbAudioEncoderPlugin.rank = DEFAULT_RANK;
595     pluginDescriptionList_.push_back(amrnbAudioEncoderPlugin);
596 }
597 
AddMp3AudioEncoderPlugins()598 void PluginList::AddMp3AudioEncoderPlugins()
599 {
600     PluginDescription mp3AudioEncoderPlugin;
601     mp3AudioEncoderPlugin.pluginName = "OH.Media.Codec.Encoder.Audio.Mp3";
602     mp3AudioEncoderPlugin.packageName = "Mp3AudioEncoder";
603     mp3AudioEncoderPlugin.pluginType = PluginType::AUDIO_ENCODER;
604     mp3AudioEncoderPlugin.cap = "audio/mpeg";
605     mp3AudioEncoderPlugin.rank = DEFAULT_RANK;
606     pluginDescriptionList_.push_back(mp3AudioEncoderPlugin);
607 }
608 
AddFFmpegMuxerPlugins()609 void PluginList::AddFFmpegMuxerPlugins()
610 {
611     PluginDescription mp4MuxerPlugin;
612     mp4MuxerPlugin.pluginName = "ffmpegMux_mp4";
613     mp4MuxerPlugin.packageName = "FFmpegMuxer";
614     mp4MuxerPlugin.pluginType = PluginType::MUXER;
615     mp4MuxerPlugin.cap = "media/mp4";
616     mp4MuxerPlugin.rank = DEFAULT_RANK;
617     pluginDescriptionList_.push_back(mp4MuxerPlugin);
618 
619     PluginDescription m4aMuxerPlugin;
620     m4aMuxerPlugin.pluginName = "ffmpegMux_ipod";
621     m4aMuxerPlugin.packageName = "FFmpegMuxer";
622     m4aMuxerPlugin.pluginType = PluginType::MUXER;
623     m4aMuxerPlugin.cap = "media/m4a";
624     m4aMuxerPlugin.rank = DEFAULT_RANK;
625     pluginDescriptionList_.push_back(m4aMuxerPlugin);
626 
627     PluginDescription amrMuxerPlugin;
628     amrMuxerPlugin.pluginName = "ffmpegMux_amr";
629     amrMuxerPlugin.packageName = "FFmpegMuxer";
630     amrMuxerPlugin.pluginType = PluginType::MUXER;
631     amrMuxerPlugin.cap = "media/amr";
632     amrMuxerPlugin.rank = DEFAULT_RANK;
633     pluginDescriptionList_.push_back(amrMuxerPlugin);
634 
635     PluginDescription mp3MuxerPlugin;
636     mp3MuxerPlugin.pluginName = "ffmpegMux_mp3";
637     mp3MuxerPlugin.packageName = "FFmpegMuxer";
638     mp3MuxerPlugin.pluginType = PluginType::MUXER;
639     mp3MuxerPlugin.cap = "media/mp3";
640     mp3MuxerPlugin.rank = DEFAULT_RANK;
641     pluginDescriptionList_.push_back(mp3MuxerPlugin);
642 
643     PluginDescription wavMuxerPlugin;
644     wavMuxerPlugin.pluginName = "ffmpegMux_wav";
645     wavMuxerPlugin.packageName = "FFmpegMuxer";
646     wavMuxerPlugin.pluginType = PluginType::MUXER;
647     wavMuxerPlugin.cap = "media/wav";
648     wavMuxerPlugin.rank = DEFAULT_RANK;
649     pluginDescriptionList_.push_back(wavMuxerPlugin);
650 }
651 
652 } // namespace Plugins
653 } // namespace Media
654 } // namespace OHOS