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