xref: /haiku/src/add-ons/media/plugins/ffmpeg/MuxerTable.cpp (revision a127b88ecbfab58f64944c98aa47722a18e363b2)
1 /*
2  * Copyright 2009 Stephan Aßmus <superstippi@gmx.de>
3  * All rights reserved. Distributed under the terms of the MIT license.
4  */
5 
6 
7 #include "MuxerTable.h"
8 
9 
10 const media_file_format gMuxerTable[] = {
11 	{
12 		media_file_format::B_READABLE
13 			| media_file_format::B_KNOWS_ENCODED_VIDEO
14 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
15 		{ 0 },
16 		B_MISC_FORMAT_FAMILY,
17 		100,
18 		{ 0 },
19 		"video/3gpp",
20 		"3GPP video",
21 		"3gp",
22 		"3gp",
23 		{ 0 }
24 	},
25 	{
26 		media_file_format::B_READABLE
27 			| media_file_format::B_KNOWS_RAW_AUDIO
28 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
29 		{ 0 },
30 		B_WAV_FORMAT_FAMILY,
31 		100,
32 		{ 0 },
33 		"audio/ac3",
34 		"AC3",
35 		"ac3",
36 		"ac3",
37 		{ 0 }
38 	},
39 	{
40 		media_file_format::B_READABLE
41 			| media_file_format::B_KNOWS_RAW_AUDIO,
42 		{ 0 },
43 		B_AIFF_FORMAT_FAMILY,
44 		100,
45 		{ 0 },
46 		"audio/x-aiff",
47 		"Audio IFF",
48 		"aiff",
49 		"aiff",
50 		{ 0 }
51 	},
52 	{
53 		media_file_format::B_READABLE
54 			| media_file_format::B_KNOWS_RAW_VIDEO
55 			| media_file_format::B_KNOWS_RAW_AUDIO
56 			| media_file_format::B_KNOWS_ENCODED_VIDEO
57 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
58 		{ 0 },
59 		B_AVI_FORMAT_FAMILY,
60 		100,
61 		{ 0 },
62 		"video/x-asf",
63 		"ASF Movie",
64 		"asf",
65 		"asf",
66 		{ 0 }
67 	},
68 	{
69 		media_file_format::B_WRITABLE | media_file_format::B_READABLE
70 			| media_file_format::B_KNOWS_RAW_VIDEO
71 			| media_file_format::B_KNOWS_RAW_AUDIO
72 			| media_file_format::B_KNOWS_ENCODED_VIDEO
73 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
74 		{ 0 },
75 		B_AVI_FORMAT_FAMILY,
76 		100,
77 		{ 0 },
78 		"video/x-msvideo",
79 		"AVI (Audio Video Interleaved)",
80 		"avi",
81 		"avi",
82 		{ 0 }
83 	},
84 	{
85 		media_file_format::B_WRITABLE | media_file_format::B_READABLE
86 			| media_file_format::B_KNOWS_RAW_VIDEO
87 			| media_file_format::B_KNOWS_RAW_AUDIO
88 			| media_file_format::B_KNOWS_ENCODED_VIDEO
89 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
90 		{ 0 },
91 		B_QUICKTIME_FORMAT_FAMILY,
92 		100,
93 		{ 0 },
94 		"video/dv",
95 		"DV Movie",
96 		"dv",
97 		"dv",
98 		{ 0 }
99 	},
100 	{
101 		media_file_format::B_READABLE
102 			| media_file_format::B_KNOWS_RAW_AUDIO
103 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
104 		{ 0 },
105 		B_WAV_FORMAT_FAMILY,
106 		100,
107 		{ 0 },
108 		"audio/x-flac",
109 		"Free Lossless Audio",
110 		"flac",
111 		"flac",
112 		{ 0 }
113 	},
114 	{
115 		media_file_format::B_READABLE
116 			| media_file_format::B_KNOWS_RAW_VIDEO
117 			| media_file_format::B_KNOWS_RAW_AUDIO
118 			| media_file_format::B_KNOWS_ENCODED_VIDEO
119 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
120 		{ 0 },
121 		B_QUICKTIME_FORMAT_FAMILY,
122 		100,
123 		{ 0 },
124 		"video/x-flv",
125 		"Flash video",
126 		"flv",
127 		"flv",
128 		{ 0 }
129 	},
130 	{
131 		media_file_format::B_WRITABLE | media_file_format::B_READABLE
132 			| media_file_format::B_KNOWS_RAW_VIDEO
133 			| media_file_format::B_KNOWS_RAW_AUDIO
134 			| media_file_format::B_KNOWS_ENCODED_VIDEO
135 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
136 		{ 0 },
137 		B_ANY_FORMAT_FAMILY,
138 		100,
139 		{ 0 },
140 		"video/x-matroska",
141 		"Matroska movie",
142 		"mkv",
143 		"mkv",
144 		{ 0 }
145 	},
146 	{
147 		media_file_format::B_READABLE
148 			| media_file_format::B_KNOWS_RAW_VIDEO
149 			| media_file_format::B_KNOWS_RAW_AUDIO
150 			| media_file_format::B_KNOWS_ENCODED_VIDEO
151 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
152 		{ 0 },
153 		B_QUICKTIME_FORMAT_FAMILY,
154 		100,
155 		{ 0 },
156 		"video/x-mov",
157 		"Quicktime movie",
158 		"mov",
159 		"mov",
160 		{ 0 }
161 	},
162 	{
163 		media_file_format::B_READABLE
164 			| media_file_format::B_KNOWS_RAW_AUDIO
165 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
166 		{ 0 },
167 		B_MPEG_FORMAT_FAMILY,
168 		100,
169 		{ 0 },
170 		"audio/mpeg",
171 		"MPEG Layer 3",
172 		"mp3",
173 		"mp3",
174 		{ 0 }
175 	},
176 	{
177 		media_file_format::B_READABLE
178 			| media_file_format::B_KNOWS_ENCODED_VIDEO
179 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
180 		{ 0 },
181 		B_QUICKTIME_FORMAT_FAMILY,
182 		100,
183 		{ 0 },
184 		"video/mp4",
185 		"MPEG (Motion Picture Experts Group) format 4",
186 		"mp4",
187 		"mp4",
188 		{ 0 }
189 	},
190 	{
191 		media_file_format::B_READABLE
192 			| media_file_format::B_KNOWS_RAW_AUDIO
193 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
194 		{ 0 },
195 		B_QUICKTIME_FORMAT_FAMILY,
196 		50,
197 		{ 0 },
198 		"audio/mp4",
199 		"AAC in MPEG4 container",
200 		"aac",
201 		"aac",
202 		{ 0 }
203 	},
204 	{
205 		media_file_format::B_WRITABLE | media_file_format::B_READABLE
206 			| media_file_format::B_KNOWS_ENCODED_VIDEO
207 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
208 		{ 0 },
209 		B_MPEG_FORMAT_FAMILY,
210 		100,
211 		{ 0 },
212 		"video/mpeg",
213 		"MPEG (Motion Picture Experts Group)",
214 		"mpg",
215 		"mpg",
216 		{ 0 }
217 	},
218 	{
219 		media_file_format::B_READABLE
220 			| media_file_format::B_KNOWS_ENCODED_VIDEO
221 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
222 		{ 0 },
223 		B_AVI_FORMAT_FAMILY,
224 		100,
225 		{ 0 },
226 		"video/mpeg",
227 		"MPEG TS",
228 		"mpegts",
229 		"mpegts",
230 		{ 0 }
231 	},
232 	{
233 		media_file_format::B_READABLE
234 			| media_file_format::B_KNOWS_ENCODED_VIDEO
235 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
236 		{ 0 },
237 		B_MPEG_FORMAT_FAMILY,
238 		100,
239 		{ 0 },
240 		"video/mpeg",
241 		"MPEG",
242 		"mpeg",
243 		"mpeg",
244 		{ 0 }
245 	},
246 	{
247 		media_file_format::B_READABLE
248 			| media_file_format::B_KNOWS_ENCODED_VIDEO
249 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
250 		{ 0 },
251 		B_QUICKTIME_FORMAT_FAMILY,
252 		100,
253 		{ 0 },
254 		"video/nsv",
255 		"NSV (NullSoft Video file)",
256 		"nsv",
257 		"nsv",
258 		{ 0 }
259 	},
260 // TODO: This one rejects unknown codecs. We probably need to define
261 // a media_format_family for it so that Encoders can announce their support
262 // for it specifically.
263 	{
264 		media_file_format::B_WRITABLE | media_file_format::B_READABLE
265 			| media_file_format::B_KNOWS_ENCODED_VIDEO
266 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
267 		{ 0 },
268 		B_MISC_FORMAT_FAMILY,
269 		100,
270 		{ 0 },
271 		"audio/ogg",
272 		"Ogg Audio (Xiph.Org Foundation)",
273 		"ogg",
274 		"ogg",
275 		{ 0 }
276 	},
277 	{
278 		media_file_format::B_WRITABLE | media_file_format::B_READABLE
279 			| media_file_format::B_KNOWS_ENCODED_VIDEO
280 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
281 		{ 0 },
282 		B_MISC_FORMAT_FAMILY,
283 		50,
284 		{ 0 },
285 		"video/ogg",
286 		"Ogg Video (Xiph.Org Foundation)",
287 		"ogv",
288 		"ogv",
289 		{ 0 }
290 	},
291 	{
292 		media_file_format::B_READABLE
293 			| media_file_format::B_KNOWS_ENCODED_VIDEO
294 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
295 		{ 0 },
296 		B_AVI_FORMAT_FAMILY,
297 		100,
298 		{ 0 },
299 		"video/vnd.rn-realvideo",
300 		"RM (RealVideo clip)",
301 		"rm",
302 		"rm",
303 		{ 0 }
304 	},
305 	{
306 		media_file_format::B_READABLE
307 			| media_file_format::B_KNOWS_RAW_VIDEO
308 			| media_file_format::B_KNOWS_RAW_AUDIO
309 			| media_file_format::B_KNOWS_ENCODED_VIDEO
310 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
311 		{ 0 },
312 		B_QUICKTIME_FORMAT_FAMILY,
313 		100,
314 		{ 0 },
315 		"application/x-shockwave-flash",
316 		"Shockwave video",
317 		"swf",
318 		"swf",
319 		{ 0 }
320 	},
321 	{
322 		media_file_format::B_READABLE
323 			| media_file_format::B_KNOWS_ENCODED_VIDEO
324 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
325 		{ 0 },
326 		B_MPEG_FORMAT_FAMILY,
327 		100,
328 		{ 0 },
329 		"video/x-vob",
330 		"VOB movie",
331 		"vob",
332 		"vob",
333 		{ 0 }
334 	},
335 	{
336 		media_file_format::B_WRITABLE
337 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
338 		{ 0 },
339 		B_WAV_FORMAT_FAMILY,
340 		100,
341 		{ 0 },
342 		"audio/wav",
343 		"WAV Format",
344 		"wav",
345 		"wav",
346 		{ 0 }
347 	},
348 	{
349 		media_file_format::B_READABLE
350 			| media_file_format::B_KNOWS_ENCODED_VIDEO
351 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
352 		{ 0 },
353 		B_MISC_FORMAT_FAMILY,
354 		100,
355 		{ 0 },
356 		"video/webm",
357 		"WebM movie",
358 		"webm",
359 		"webm",
360 		{ 0 }
361 	},
362 	{
363 		media_file_format::B_READABLE
364 			| media_file_format::B_KNOWS_ENCODED_VIDEO
365 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
366 		{ 0 },
367 		B_MISC_FORMAT_FAMILY,
368 		50,
369 		{ 0 },
370 		"audio/webm",
371 		"WebM audio",
372 		"webm",
373 		"webm",
374 		{ 0 }
375 	},
376 	{
377 		media_file_format::B_READABLE
378 			| media_file_format::B_KNOWS_RAW_AUDIO
379 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
380 		{ 0 },
381 		B_MISC_FORMAT_FAMILY,
382 		100,
383 		{ 0 },
384 		"audio/xm",
385 		"Fast Tracker eXtended Module",
386 		"xm",
387 		"xm",
388 		{ 0 }
389 	},
390 	{
391 		media_file_format::B_READABLE
392 			| media_file_format::B_KNOWS_RAW_AUDIO
393 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
394 		{ 0 },
395 		B_MISC_FORMAT_FAMILY,
396 		100,
397 		{ 0 },
398 		"audio/s3m",
399 		"Scream Tracker 3",
400 		"s3m",
401 		"s3m",
402 		{ 0 }
403 	},
404 	{
405 		media_file_format::B_READABLE
406 			| media_file_format::B_KNOWS_RAW_AUDIO
407 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
408 		{ 0 },
409 		B_MISC_FORMAT_FAMILY,
410 		100,
411 		{ 0 },
412 		"audio/it",
413 		"Impulse Tracker",
414 		"it",
415 		"it",
416 		{ 0 }
417 	},
418 	{
419 		media_file_format::B_READABLE
420 			| media_file_format::B_KNOWS_RAW_AUDIO
421 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
422 		{ 0 },
423 		B_MISC_FORMAT_FAMILY,
424 		100,
425 		{ 0 },
426 		"audio/x-mod",
427 		"Protracker MOD",
428 		"mod",
429 		"mod",
430 		{ 0 }
431 	},
432 	{
433 		media_file_format::B_READABLE
434 			| media_file_format::B_KNOWS_RAW_AUDIO
435 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
436 		{ 0 },
437 		B_MISC_FORMAT_FAMILY,
438 		100,
439 		{ 0 },
440 		"audio/x-mptm",
441 		"OpenMPT Module",
442 		"mptm",
443 		"mptm",
444 		{ 0 }
445 	},
446 	{
447 		media_file_format::B_READABLE
448 			| media_file_format::B_KNOWS_RAW_AUDIO
449 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
450 		{ 0 },
451 		B_MISC_FORMAT_FAMILY,
452 		100,
453 		{ 0 },
454 		"audio/x-mo3",
455 		"Compressed Tracker audio",
456 		"mo3",
457 		"mo3",
458 		{ 0 }
459 	},
460 	{
461 		media_file_format::B_READABLE
462 			| media_file_format::B_KNOWS_RAW_AUDIO
463 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
464 		{ 0 },
465 		B_MISC_FORMAT_FAMILY,
466 		100,
467 		{ 0 },
468 		"audio/x-med",
469 		"Amiga MED/OctaMED Tracker Module",
470 		"med",
471 		"med",
472 		{ 0 }
473 	},
474 	{
475 		media_file_format::B_READABLE
476 			| media_file_format::B_KNOWS_RAW_AUDIO
477 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
478 		{ 0 },
479 		B_MISC_FORMAT_FAMILY,
480 		100,
481 		{ 0 },
482 		"audio/x-wavpack",
483 		"WavPack Lossless Audio",
484 		"wv",
485 		"wv",
486 		{ 0 }
487 	},
488 };
489 
490 const size_t gMuxerCount = sizeof(gMuxerTable) / sizeof(media_file_format);
491 
492