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