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
10const 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
490const size_t gMuxerCount = sizeof(gMuxerTable) / sizeof(media_file_format);
491
492