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