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