16ac391b3SStephan Aßmus /* 26ac391b3SStephan Aßmus * Copyright 2009 Stephan Aßmus <superstippi@gmx.de> 36ac391b3SStephan Aßmus * All rights reserved. Distributed under the terms of the MIT license. 46ac391b3SStephan Aßmus */ 56ac391b3SStephan Aßmus 66ac391b3SStephan Aßmus 76ac391b3SStephan Aßmus #include "MuxerTable.h" 86ac391b3SStephan Aßmus 96ac391b3SStephan Aßmus 106ac391b3SStephan Aßmus const media_file_format gMuxerTable[] = { 116ac391b3SStephan Aßmus { 12626d341cSAdrien Destugues media_file_format::B_READABLE 13d946ade0SAdrien Destugues | media_file_format::B_KNOWS_ENCODED_VIDEO 14d946ade0SAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 15d946ade0SAdrien Destugues { 0 }, 16d946ade0SAdrien Destugues B_MISC_FORMAT_FAMILY, 17d946ade0SAdrien Destugues 100, 18d946ade0SAdrien Destugues { 0 }, 19d946ade0SAdrien Destugues "video/3gpp", 20d946ade0SAdrien Destugues "3GPP video", 21d946ade0SAdrien Destugues "3gp", 22d946ade0SAdrien Destugues "3gp", 23d946ade0SAdrien Destugues { 0 } 24d946ade0SAdrien Destugues }, 25d946ade0SAdrien Destugues { 26d946ade0SAdrien Destugues media_file_format::B_READABLE 27626d341cSAdrien Destugues | media_file_format::B_KNOWS_RAW_AUDIO 28626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 29626d341cSAdrien Destugues { 0 }, 30626d341cSAdrien Destugues B_WAV_FORMAT_FAMILY, 31626d341cSAdrien Destugues 100, 32626d341cSAdrien Destugues { 0 }, 33626d341cSAdrien Destugues "audio/ac3", 34626d341cSAdrien Destugues "AC3", 35626d341cSAdrien Destugues "ac3", 36626d341cSAdrien Destugues "ac3", 37626d341cSAdrien Destugues { 0 } 38626d341cSAdrien Destugues }, 39626d341cSAdrien Destugues { 40626d341cSAdrien Destugues media_file_format::B_READABLE 41626d341cSAdrien Destugues | media_file_format::B_KNOWS_RAW_VIDEO 42626d341cSAdrien Destugues | media_file_format::B_KNOWS_RAW_AUDIO 43626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_VIDEO 44626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 45626d341cSAdrien Destugues { 0 }, 46626d341cSAdrien Destugues B_AVI_FORMAT_FAMILY, 47626d341cSAdrien Destugues 100, 48626d341cSAdrien Destugues { 0 }, 49626d341cSAdrien Destugues "video/x-asf", 50626d341cSAdrien Destugues "ASF Movie", 51626d341cSAdrien Destugues "asf", 52626d341cSAdrien Destugues "asf", 53626d341cSAdrien Destugues { 0 } 54626d341cSAdrien Destugues }, 55626d341cSAdrien Destugues { 56626d341cSAdrien Destugues media_file_format::B_WRITABLE | media_file_format::B_READABLE 576ac391b3SStephan Aßmus | media_file_format::B_KNOWS_RAW_VIDEO 586ac391b3SStephan Aßmus | media_file_format::B_KNOWS_RAW_AUDIO 596ac391b3SStephan Aßmus | media_file_format::B_KNOWS_ENCODED_VIDEO 606ac391b3SStephan Aßmus | media_file_format::B_KNOWS_ENCODED_AUDIO, 616ac391b3SStephan Aßmus { 0 }, 626ac391b3SStephan Aßmus B_AVI_FORMAT_FAMILY, 636ac391b3SStephan Aßmus 100, 646ac391b3SStephan Aßmus { 0 }, 656ac391b3SStephan Aßmus "video/x-msvideo", 666ac391b3SStephan Aßmus "AVI (Audio Video Interleaved)", 674384acf6SStephan Aßmus "avi", 686ac391b3SStephan Aßmus "avi", 696ac391b3SStephan Aßmus { 0 } 706ac391b3SStephan Aßmus }, 7154897d5cSStephan Aßmus { 72626d341cSAdrien Destugues media_file_format::B_WRITABLE | media_file_format::B_READABLE 73ead61989SStephan Aßmus | media_file_format::B_KNOWS_RAW_VIDEO 74ead61989SStephan Aßmus | media_file_format::B_KNOWS_RAW_AUDIO 75ead61989SStephan Aßmus | media_file_format::B_KNOWS_ENCODED_VIDEO 76ead61989SStephan Aßmus | media_file_format::B_KNOWS_ENCODED_AUDIO, 77ead61989SStephan Aßmus { 0 }, 78626d341cSAdrien Destugues B_QUICKTIME_FORMAT_FAMILY, 79eca9668aSStephan Aßmus 100, 80eca9668aSStephan Aßmus { 0 }, 81626d341cSAdrien Destugues "video/dv", 82626d341cSAdrien Destugues "DV Movie", 83eca9668aSStephan Aßmus "dv", 84eca9668aSStephan Aßmus "dv", 85eca9668aSStephan Aßmus { 0 } 86eca9668aSStephan Aßmus }, 87eca9668aSStephan Aßmus { 88626d341cSAdrien Destugues media_file_format::B_READABLE 89626d341cSAdrien Destugues | media_file_format::B_KNOWS_RAW_AUDIO 90626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 91626d341cSAdrien Destugues { 0 }, 92626d341cSAdrien Destugues B_WAV_FORMAT_FAMILY, 93626d341cSAdrien Destugues 100, 94626d341cSAdrien Destugues { 0 }, 95626d341cSAdrien Destugues "audio/x-flac", 96626d341cSAdrien Destugues "Free Lossless Audio", 97626d341cSAdrien Destugues "flac", 98626d341cSAdrien Destugues "flac", 99626d341cSAdrien Destugues { 0 } 100626d341cSAdrien Destugues }, 101626d341cSAdrien Destugues { 102626d341cSAdrien Destugues media_file_format::B_READABLE 103eca9668aSStephan Aßmus | media_file_format::B_KNOWS_RAW_VIDEO 104eca9668aSStephan Aßmus | media_file_format::B_KNOWS_RAW_AUDIO 105eca9668aSStephan Aßmus | media_file_format::B_KNOWS_ENCODED_VIDEO 106eca9668aSStephan Aßmus | media_file_format::B_KNOWS_ENCODED_AUDIO, 107eca9668aSStephan Aßmus { 0 }, 108626d341cSAdrien Destugues B_QUICKTIME_FORMAT_FAMILY, 109626d341cSAdrien Destugues 100, 110626d341cSAdrien Destugues { 0 }, 111626d341cSAdrien Destugues "video/x-flv", 112626d341cSAdrien Destugues "Flash video", 113626d341cSAdrien Destugues "flv", 114626d341cSAdrien Destugues "flv", 115626d341cSAdrien Destugues { 0 } 116626d341cSAdrien Destugues }, 117626d341cSAdrien Destugues { 118626d341cSAdrien Destugues media_file_format::B_WRITABLE | media_file_format::B_READABLE 119626d341cSAdrien Destugues | media_file_format::B_KNOWS_RAW_VIDEO 120626d341cSAdrien Destugues | media_file_format::B_KNOWS_RAW_AUDIO 121626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_VIDEO 122626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 123626d341cSAdrien Destugues { 0 }, 1245e0e1689SAdrien Destugues B_ANY_FORMAT_FAMILY, 125ead61989SStephan Aßmus 100, 126ead61989SStephan Aßmus { 0 }, 127ead61989SStephan Aßmus "video/x-matroska", 128626d341cSAdrien Destugues "Matroska movie", 129ead61989SStephan Aßmus "mkv", 130ead61989SStephan Aßmus "mkv", 131ead61989SStephan Aßmus { 0 } 132ead61989SStephan Aßmus }, 133ead61989SStephan Aßmus { 134626d341cSAdrien Destugues media_file_format::B_READABLE 135626d341cSAdrien Destugues | media_file_format::B_KNOWS_RAW_VIDEO 136626d341cSAdrien Destugues | media_file_format::B_KNOWS_RAW_AUDIO 137626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_VIDEO 138626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 139626d341cSAdrien Destugues { 0 }, 140626d341cSAdrien Destugues B_QUICKTIME_FORMAT_FAMILY, 141626d341cSAdrien Destugues 100, 142626d341cSAdrien Destugues { 0 }, 143626d341cSAdrien Destugues "video/x-mov", 144626d341cSAdrien Destugues "Quicktime movie", 145626d341cSAdrien Destugues "mov", 146626d341cSAdrien Destugues "mov", 147626d341cSAdrien Destugues { 0 } 148626d341cSAdrien Destugues }, 149626d341cSAdrien Destugues { 150626d341cSAdrien Destugues media_file_format::B_READABLE 151626d341cSAdrien Destugues | media_file_format::B_KNOWS_RAW_AUDIO 152626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 153626d341cSAdrien Destugues { 0 }, 154626d341cSAdrien Destugues B_MPEG_FORMAT_FAMILY, 155626d341cSAdrien Destugues 100, 156626d341cSAdrien Destugues { 0 }, 157626d341cSAdrien Destugues "audio/mpeg", 158626d341cSAdrien Destugues "MPEG Layer 3", 159626d341cSAdrien Destugues "mp3", 160626d341cSAdrien Destugues "mp3", 161626d341cSAdrien Destugues { 0 } 162626d341cSAdrien Destugues }, 163626d341cSAdrien Destugues { 164626d341cSAdrien Destugues media_file_format::B_READABLE 165626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_VIDEO 166626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 167626d341cSAdrien Destugues { 0 }, 168626d341cSAdrien Destugues B_QUICKTIME_FORMAT_FAMILY, 169626d341cSAdrien Destugues 100, 170626d341cSAdrien Destugues { 0 }, 171626d341cSAdrien Destugues "video/mp4", 172626d341cSAdrien Destugues "MPEG (Motion Picture Experts Group) format 4", 173626d341cSAdrien Destugues "mp4", 174626d341cSAdrien Destugues "mp4", 175626d341cSAdrien Destugues { 0 } 176626d341cSAdrien Destugues }, 177626d341cSAdrien Destugues { 178626d341cSAdrien Destugues media_file_format::B_WRITABLE | media_file_format::B_READABLE 17954897d5cSStephan Aßmus | media_file_format::B_KNOWS_ENCODED_VIDEO 18054897d5cSStephan Aßmus | media_file_format::B_KNOWS_ENCODED_AUDIO, 18154897d5cSStephan Aßmus { 0 }, 18254897d5cSStephan Aßmus B_MPEG_FORMAT_FAMILY, 18354897d5cSStephan Aßmus 100, 18454897d5cSStephan Aßmus { 0 }, 18554897d5cSStephan Aßmus "video/mpeg", 18654897d5cSStephan Aßmus "MPEG (Motion Picture Experts Group)", 18754897d5cSStephan Aßmus "mpg", 18854897d5cSStephan Aßmus "mpg", 18954897d5cSStephan Aßmus { 0 } 19054897d5cSStephan Aßmus }, 191626d341cSAdrien Destugues { 192626d341cSAdrien Destugues media_file_format::B_READABLE 193626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_VIDEO 194626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 195626d341cSAdrien Destugues { 0 }, 196626d341cSAdrien Destugues B_AVI_FORMAT_FAMILY, 197626d341cSAdrien Destugues 100, 198626d341cSAdrien Destugues { 0 }, 199626d341cSAdrien Destugues "video/mpeg", 200626d341cSAdrien Destugues "MPEG TS", 201626d341cSAdrien Destugues "mpegts", 202626d341cSAdrien Destugues "mpegts", 203626d341cSAdrien Destugues { 0 } 204626d341cSAdrien Destugues }, 205626d341cSAdrien Destugues { 206626d341cSAdrien Destugues media_file_format::B_READABLE 207626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_VIDEO 208626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 209626d341cSAdrien Destugues { 0 }, 210626d341cSAdrien Destugues B_MPEG_FORMAT_FAMILY, 211626d341cSAdrien Destugues 100, 212626d341cSAdrien Destugues { 0 }, 213626d341cSAdrien Destugues "video/mpeg", 214626d341cSAdrien Destugues "MPEG", 215626d341cSAdrien Destugues "mpeg", 216626d341cSAdrien Destugues "mpeg", 217626d341cSAdrien Destugues { 0 } 218626d341cSAdrien Destugues }, 219626d341cSAdrien Destugues { 220626d341cSAdrien Destugues media_file_format::B_READABLE 221626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_VIDEO 222626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 223626d341cSAdrien Destugues { 0 }, 224626d341cSAdrien Destugues B_QUICKTIME_FORMAT_FAMILY, 225626d341cSAdrien Destugues 100, 226626d341cSAdrien Destugues { 0 }, 227626d341cSAdrien Destugues "video/nsv", 228626d341cSAdrien Destugues "NSV (NullSoft Video file)", 229626d341cSAdrien Destugues "nsv", 230626d341cSAdrien Destugues "nsv", 231626d341cSAdrien Destugues { 0 } 232626d341cSAdrien Destugues }, 2336780c24dSStephan Aßmus // TODO: This one rejects unknown codecs. We probably need to define 2346780c24dSStephan Aßmus // a media_format_family for it so that Encoders can announce their support 2356780c24dSStephan Aßmus // for it specifically. 23673e5249cSStephan Aßmus { 237626d341cSAdrien Destugues media_file_format::B_WRITABLE | media_file_format::B_READABLE 23873e5249cSStephan Aßmus | media_file_format::B_KNOWS_ENCODED_VIDEO 23973e5249cSStephan Aßmus | media_file_format::B_KNOWS_ENCODED_AUDIO, 24073e5249cSStephan Aßmus { 0 }, 24173e5249cSStephan Aßmus B_MISC_FORMAT_FAMILY, 24273e5249cSStephan Aßmus 100, 24373e5249cSStephan Aßmus { 0 }, 244626d341cSAdrien Destugues "audio/ogg", 24573e5249cSStephan Aßmus "Ogg (Xiph.Org Foundation)", 24673e5249cSStephan Aßmus "ogg", 24773e5249cSStephan Aßmus "ogg", 24873e5249cSStephan Aßmus { 0 } 24973e5249cSStephan Aßmus }, 2506d15d130SStephan Aßmus { 251626d341cSAdrien Destugues media_file_format::B_READABLE 252626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_VIDEO 253626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 254626d341cSAdrien Destugues { 0 }, 255626d341cSAdrien Destugues B_AVI_FORMAT_FAMILY, 256626d341cSAdrien Destugues 100, 257626d341cSAdrien Destugues { 0 }, 258626d341cSAdrien Destugues "video/vnd.rn-realvideo", 259626d341cSAdrien Destugues "RM (RealVideo clip)", 260626d341cSAdrien Destugues "rm", 261626d341cSAdrien Destugues "rm", 262626d341cSAdrien Destugues { 0 } 263626d341cSAdrien Destugues }, 264626d341cSAdrien Destugues { 265626d341cSAdrien Destugues media_file_format::B_READABLE 266626d341cSAdrien Destugues | media_file_format::B_KNOWS_RAW_VIDEO 267626d341cSAdrien Destugues | media_file_format::B_KNOWS_RAW_AUDIO 268626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_VIDEO 269626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 270626d341cSAdrien Destugues { 0 }, 271626d341cSAdrien Destugues B_QUICKTIME_FORMAT_FAMILY, 272626d341cSAdrien Destugues 100, 273626d341cSAdrien Destugues { 0 }, 274626d341cSAdrien Destugues "application/x-shockwave-flash", 275626d341cSAdrien Destugues "Shockwave video", 276626d341cSAdrien Destugues "swf", 277626d341cSAdrien Destugues "swf", 278626d341cSAdrien Destugues { 0 } 279626d341cSAdrien Destugues }, 280626d341cSAdrien Destugues { 281626d341cSAdrien Destugues media_file_format::B_READABLE 282626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_VIDEO 283626d341cSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 284626d341cSAdrien Destugues { 0 }, 285626d341cSAdrien Destugues B_MPEG_FORMAT_FAMILY, 286626d341cSAdrien Destugues 100, 287626d341cSAdrien Destugues { 0 }, 288626d341cSAdrien Destugues "video/x-vob", 289626d341cSAdrien Destugues "VOB movie", 290626d341cSAdrien Destugues "vob", 291626d341cSAdrien Destugues "vob", 292626d341cSAdrien Destugues { 0 } 293626d341cSAdrien Destugues }, 294626d341cSAdrien Destugues { 2956d15d130SStephan Aßmus media_file_format::B_WRITABLE 2966d15d130SStephan Aßmus | media_file_format::B_KNOWS_ENCODED_AUDIO, 2976d15d130SStephan Aßmus { 0 }, 2986d15d130SStephan Aßmus B_WAV_FORMAT_FAMILY, 2996d15d130SStephan Aßmus 100, 3006d15d130SStephan Aßmus { 0 }, 301626d341cSAdrien Destugues "audio/wav", 3026d15d130SStephan Aßmus "WAV Format", 3036d15d130SStephan Aßmus "wav", 3046d15d130SStephan Aßmus "wav", 3056d15d130SStephan Aßmus { 0 } 3066d15d130SStephan Aßmus }, 307d946ade0SAdrien Destugues { 308d946ade0SAdrien Destugues media_file_format::B_READABLE 309d946ade0SAdrien Destugues | media_file_format::B_KNOWS_ENCODED_VIDEO 310d946ade0SAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 311d946ade0SAdrien Destugues { 0 }, 312d946ade0SAdrien Destugues B_MISC_FORMAT_FAMILY, 313d946ade0SAdrien Destugues 100, 314d946ade0SAdrien Destugues { 0 }, 315d946ade0SAdrien Destugues "video/webm", 316d946ade0SAdrien Destugues "WebM movie", 317d946ade0SAdrien Destugues "webm", 318d946ade0SAdrien Destugues "webm", 319d946ade0SAdrien Destugues { 0 } 320d946ade0SAdrien Destugues }, 321*0f7e19ceSAdrien Destugues { 322*0f7e19ceSAdrien Destugues media_file_format::B_READABLE 323*0f7e19ceSAdrien Destugues | media_file_format::B_KNOWS_RAW_AUDIO 324*0f7e19ceSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 325*0f7e19ceSAdrien Destugues { 0 }, 326*0f7e19ceSAdrien Destugues B_MISC_FORMAT_FAMILY, 327*0f7e19ceSAdrien Destugues 100, 328*0f7e19ceSAdrien Destugues { 0 }, 329*0f7e19ceSAdrien Destugues "audio/xm", 330*0f7e19ceSAdrien Destugues "Fast Tracker eXtended Module", 331*0f7e19ceSAdrien Destugues "xm", 332*0f7e19ceSAdrien Destugues "xm", 333*0f7e19ceSAdrien Destugues { 0 } 334*0f7e19ceSAdrien Destugues }, 335*0f7e19ceSAdrien Destugues { 336*0f7e19ceSAdrien Destugues media_file_format::B_READABLE 337*0f7e19ceSAdrien Destugues | media_file_format::B_KNOWS_RAW_AUDIO 338*0f7e19ceSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 339*0f7e19ceSAdrien Destugues { 0 }, 340*0f7e19ceSAdrien Destugues B_MISC_FORMAT_FAMILY, 341*0f7e19ceSAdrien Destugues 100, 342*0f7e19ceSAdrien Destugues { 0 }, 343*0f7e19ceSAdrien Destugues "audio/s3m", 344*0f7e19ceSAdrien Destugues "Scream Tracker 3", 345*0f7e19ceSAdrien Destugues "s3m", 346*0f7e19ceSAdrien Destugues "s3m", 347*0f7e19ceSAdrien Destugues { 0 } 348*0f7e19ceSAdrien Destugues }, 349*0f7e19ceSAdrien Destugues { 350*0f7e19ceSAdrien Destugues media_file_format::B_READABLE 351*0f7e19ceSAdrien Destugues | media_file_format::B_KNOWS_RAW_AUDIO 352*0f7e19ceSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 353*0f7e19ceSAdrien Destugues { 0 }, 354*0f7e19ceSAdrien Destugues B_MISC_FORMAT_FAMILY, 355*0f7e19ceSAdrien Destugues 100, 356*0f7e19ceSAdrien Destugues { 0 }, 357*0f7e19ceSAdrien Destugues "audio/it", 358*0f7e19ceSAdrien Destugues "Impulse Tracker", 359*0f7e19ceSAdrien Destugues "it", 360*0f7e19ceSAdrien Destugues "it", 361*0f7e19ceSAdrien Destugues { 0 } 362*0f7e19ceSAdrien Destugues }, 363*0f7e19ceSAdrien Destugues { 364*0f7e19ceSAdrien Destugues media_file_format::B_READABLE 365*0f7e19ceSAdrien Destugues | media_file_format::B_KNOWS_RAW_AUDIO 366*0f7e19ceSAdrien Destugues | media_file_format::B_KNOWS_ENCODED_AUDIO, 367*0f7e19ceSAdrien Destugues { 0 }, 368*0f7e19ceSAdrien Destugues B_MISC_FORMAT_FAMILY, 369*0f7e19ceSAdrien Destugues 100, 370*0f7e19ceSAdrien Destugues { 0 }, 371*0f7e19ceSAdrien Destugues "audio/x-mod", 372*0f7e19ceSAdrien Destugues "Protracker MOD", 373*0f7e19ceSAdrien Destugues "mod", 374*0f7e19ceSAdrien Destugues "mod", 375*0f7e19ceSAdrien Destugues { 0 } 376*0f7e19ceSAdrien Destugues }, 3776ac391b3SStephan Aßmus }; 3786ac391b3SStephan Aßmus 3796ac391b3SStephan Aßmus const size_t gMuxerCount = sizeof(gMuxerTable) / sizeof(media_file_format); 3806ac391b3SStephan Aßmus 381