xref: /haiku/src/add-ons/media/plugins/ffmpeg/MuxerTable.cpp (revision a3e794ae459fec76826407f8ba8c94cd3535f128)
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_VIDEO
42 			| media_file_format::B_KNOWS_RAW_AUDIO
43 			| media_file_format::B_KNOWS_ENCODED_VIDEO
44 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
45 		{ 0 },
46 		B_AVI_FORMAT_FAMILY,
47 		100,
48 		{ 0 },
49 		"video/x-asf",
50 		"ASF Movie",
51 		"asf",
52 		"asf",
53 		{ 0 }
54 	},
55 	{
56 		media_file_format::B_WRITABLE | media_file_format::B_READABLE
57 			| media_file_format::B_KNOWS_RAW_VIDEO
58 			| media_file_format::B_KNOWS_RAW_AUDIO
59 			| media_file_format::B_KNOWS_ENCODED_VIDEO
60 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
61 		{ 0 },
62 		B_AVI_FORMAT_FAMILY,
63 		100,
64 		{ 0 },
65 		"video/x-msvideo",
66 		"AVI (Audio Video Interleaved)",
67 		"avi",
68 		"avi",
69 		{ 0 }
70 	},
71 	{
72 		media_file_format::B_WRITABLE | media_file_format::B_READABLE
73 			| media_file_format::B_KNOWS_RAW_VIDEO
74 			| media_file_format::B_KNOWS_RAW_AUDIO
75 			| media_file_format::B_KNOWS_ENCODED_VIDEO
76 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
77 		{ 0 },
78 		B_QUICKTIME_FORMAT_FAMILY,
79 		100,
80 		{ 0 },
81 		"video/dv",
82 		"DV Movie",
83 		"dv",
84 		"dv",
85 		{ 0 }
86 	},
87 	{
88 		media_file_format::B_READABLE
89 			| media_file_format::B_KNOWS_RAW_AUDIO
90 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
91 		{ 0 },
92 		B_WAV_FORMAT_FAMILY,
93 		100,
94 		{ 0 },
95 		"audio/x-flac",
96 		"Free Lossless Audio",
97 		"flac",
98 		"flac",
99 		{ 0 }
100 	},
101 	{
102 		media_file_format::B_READABLE
103 			| media_file_format::B_KNOWS_RAW_VIDEO
104 			| media_file_format::B_KNOWS_RAW_AUDIO
105 			| media_file_format::B_KNOWS_ENCODED_VIDEO
106 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
107 		{ 0 },
108 		B_QUICKTIME_FORMAT_FAMILY,
109 		100,
110 		{ 0 },
111 		"video/x-flv",
112 		"Flash video",
113 		"flv",
114 		"flv",
115 		{ 0 }
116 	},
117 	{
118 		media_file_format::B_WRITABLE | media_file_format::B_READABLE
119 			| media_file_format::B_KNOWS_RAW_VIDEO
120 			| media_file_format::B_KNOWS_RAW_AUDIO
121 			| media_file_format::B_KNOWS_ENCODED_VIDEO
122 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
123 		{ 0 },
124 		B_ANY_FORMAT_FAMILY,
125 		100,
126 		{ 0 },
127 		"video/x-matroska",
128 		"Matroska movie",
129 		"mkv",
130 		"mkv",
131 		{ 0 }
132 	},
133 	{
134 		media_file_format::B_READABLE
135 			| media_file_format::B_KNOWS_RAW_VIDEO
136 			| media_file_format::B_KNOWS_RAW_AUDIO
137 			| media_file_format::B_KNOWS_ENCODED_VIDEO
138 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
139 		{ 0 },
140 		B_QUICKTIME_FORMAT_FAMILY,
141 		100,
142 		{ 0 },
143 		"video/x-mov",
144 		"Quicktime movie",
145 		"mov",
146 		"mov",
147 		{ 0 }
148 	},
149 	{
150 		media_file_format::B_READABLE
151 			| media_file_format::B_KNOWS_RAW_AUDIO
152 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
153 		{ 0 },
154 		B_MPEG_FORMAT_FAMILY,
155 		100,
156 		{ 0 },
157 		"audio/mpeg",
158 		"MPEG Layer 3",
159 		"mp3",
160 		"mp3",
161 		{ 0 }
162 	},
163 	{
164 		media_file_format::B_READABLE
165 			| media_file_format::B_KNOWS_ENCODED_VIDEO
166 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
167 		{ 0 },
168 		B_QUICKTIME_FORMAT_FAMILY,
169 		100,
170 		{ 0 },
171 		"video/mp4",
172 		"MPEG (Motion Picture Experts Group) format 4",
173 		"mp4",
174 		"mp4",
175 		{ 0 }
176 	},
177 	{
178 		media_file_format::B_READABLE
179 			| media_file_format::B_KNOWS_RAW_AUDIO
180 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
181 		{ 0 },
182 		B_QUICKTIME_FORMAT_FAMILY,
183 		50,
184 		{ 0 },
185 		"audio/mp4",
186 		"AAC in MPEG4 container",
187 		"aac",
188 		"aac",
189 		{ 0 }
190 	},
191 	{
192 		media_file_format::B_WRITABLE | media_file_format::B_READABLE
193 			| media_file_format::B_KNOWS_ENCODED_VIDEO
194 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
195 		{ 0 },
196 		B_MPEG_FORMAT_FAMILY,
197 		100,
198 		{ 0 },
199 		"video/mpeg",
200 		"MPEG (Motion Picture Experts Group)",
201 		"mpg",
202 		"mpg",
203 		{ 0 }
204 	},
205 	{
206 		media_file_format::B_READABLE
207 			| media_file_format::B_KNOWS_ENCODED_VIDEO
208 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
209 		{ 0 },
210 		B_AVI_FORMAT_FAMILY,
211 		100,
212 		{ 0 },
213 		"video/mpeg",
214 		"MPEG TS",
215 		"mpegts",
216 		"mpegts",
217 		{ 0 }
218 	},
219 	{
220 		media_file_format::B_READABLE
221 			| media_file_format::B_KNOWS_ENCODED_VIDEO
222 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
223 		{ 0 },
224 		B_MPEG_FORMAT_FAMILY,
225 		100,
226 		{ 0 },
227 		"video/mpeg",
228 		"MPEG",
229 		"mpeg",
230 		"mpeg",
231 		{ 0 }
232 	},
233 	{
234 		media_file_format::B_READABLE
235 			| media_file_format::B_KNOWS_ENCODED_VIDEO
236 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
237 		{ 0 },
238 		B_QUICKTIME_FORMAT_FAMILY,
239 		100,
240 		{ 0 },
241 		"video/nsv",
242 		"NSV (NullSoft Video file)",
243 		"nsv",
244 		"nsv",
245 		{ 0 }
246 	},
247 // TODO: This one rejects unknown codecs. We probably need to define
248 // a media_format_family for it so that Encoders can announce their support
249 // for it specifically.
250 	{
251 		media_file_format::B_WRITABLE | media_file_format::B_READABLE
252 			| media_file_format::B_KNOWS_ENCODED_VIDEO
253 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
254 		{ 0 },
255 		B_MISC_FORMAT_FAMILY,
256 		100,
257 		{ 0 },
258 		"audio/ogg",
259 		"Ogg Audio (Xiph.Org Foundation)",
260 		"ogg",
261 		"ogg",
262 		{ 0 }
263 	},
264 	{
265 		media_file_format::B_WRITABLE | media_file_format::B_READABLE
266 			| media_file_format::B_KNOWS_ENCODED_VIDEO
267 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
268 		{ 0 },
269 		B_MISC_FORMAT_FAMILY,
270 		50,
271 		{ 0 },
272 		"video/ogg",
273 		"Ogg Video (Xiph.Org Foundation)",
274 		"ogv",
275 		"ogv",
276 		{ 0 }
277 	},
278 	{
279 		media_file_format::B_READABLE
280 			| media_file_format::B_KNOWS_ENCODED_VIDEO
281 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
282 		{ 0 },
283 		B_AVI_FORMAT_FAMILY,
284 		100,
285 		{ 0 },
286 		"video/vnd.rn-realvideo",
287 		"RM (RealVideo clip)",
288 		"rm",
289 		"rm",
290 		{ 0 }
291 	},
292 	{
293 		media_file_format::B_READABLE
294 			| media_file_format::B_KNOWS_RAW_VIDEO
295 			| media_file_format::B_KNOWS_RAW_AUDIO
296 			| media_file_format::B_KNOWS_ENCODED_VIDEO
297 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
298 		{ 0 },
299 		B_QUICKTIME_FORMAT_FAMILY,
300 		100,
301 		{ 0 },
302 		"application/x-shockwave-flash",
303 		"Shockwave video",
304 		"swf",
305 		"swf",
306 		{ 0 }
307 	},
308 	{
309 		media_file_format::B_READABLE
310 			| media_file_format::B_KNOWS_ENCODED_VIDEO
311 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
312 		{ 0 },
313 		B_MPEG_FORMAT_FAMILY,
314 		100,
315 		{ 0 },
316 		"video/x-vob",
317 		"VOB movie",
318 		"vob",
319 		"vob",
320 		{ 0 }
321 	},
322 	{
323 		media_file_format::B_WRITABLE
324 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
325 		{ 0 },
326 		B_WAV_FORMAT_FAMILY,
327 		100,
328 		{ 0 },
329 		"audio/wav",
330 		"WAV Format",
331 		"wav",
332 		"wav",
333 		{ 0 }
334 	},
335 	{
336 		media_file_format::B_READABLE
337 			| media_file_format::B_KNOWS_ENCODED_VIDEO
338 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
339 		{ 0 },
340 		B_MISC_FORMAT_FAMILY,
341 		100,
342 		{ 0 },
343 		"video/webm",
344 		"WebM movie",
345 		"webm",
346 		"webm",
347 		{ 0 }
348 	},
349 	{
350 		media_file_format::B_READABLE
351 			| media_file_format::B_KNOWS_ENCODED_VIDEO
352 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
353 		{ 0 },
354 		B_MISC_FORMAT_FAMILY,
355 		50,
356 		{ 0 },
357 		"audio/webm",
358 		"WebM audio",
359 		"webm",
360 		"webm",
361 		{ 0 }
362 	},
363 	{
364 		media_file_format::B_READABLE
365 			| media_file_format::B_KNOWS_RAW_AUDIO
366 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
367 		{ 0 },
368 		B_MISC_FORMAT_FAMILY,
369 		100,
370 		{ 0 },
371 		"audio/xm",
372 		"Fast Tracker eXtended Module",
373 		"xm",
374 		"xm",
375 		{ 0 }
376 	},
377 	{
378 		media_file_format::B_READABLE
379 			| media_file_format::B_KNOWS_RAW_AUDIO
380 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
381 		{ 0 },
382 		B_MISC_FORMAT_FAMILY,
383 		100,
384 		{ 0 },
385 		"audio/s3m",
386 		"Scream Tracker 3",
387 		"s3m",
388 		"s3m",
389 		{ 0 }
390 	},
391 	{
392 		media_file_format::B_READABLE
393 			| media_file_format::B_KNOWS_RAW_AUDIO
394 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
395 		{ 0 },
396 		B_MISC_FORMAT_FAMILY,
397 		100,
398 		{ 0 },
399 		"audio/it",
400 		"Impulse Tracker",
401 		"it",
402 		"it",
403 		{ 0 }
404 	},
405 	{
406 		media_file_format::B_READABLE
407 			| media_file_format::B_KNOWS_RAW_AUDIO
408 			| media_file_format::B_KNOWS_ENCODED_AUDIO,
409 		{ 0 },
410 		B_MISC_FORMAT_FAMILY,
411 		100,
412 		{ 0 },
413 		"audio/x-mod",
414 		"Protracker MOD",
415 		"mod",
416 		"mod",
417 		{ 0 }
418 	},
419 };
420 
421 const size_t gMuxerCount = sizeof(gMuxerTable) / sizeof(media_file_format);
422 
423