An audio player for macOS 10.8 and newer. https://kode54.net/cog
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1235 lines
49KB

  1. #include "vgmstream.h"
  2. /* Defines the list of accepted extensions. vgmstream doesn't use it internally so it's here
  3. * to inform plugins that need it. Common extensions are commented out to avoid stealing them. */
  4. /* Some extensions require external libraries and could be #ifdef, not worth. */
  5. /* Formats marked as "not parsed" mean they'll go through FFmpeg, the header/extension isn't
  6. * parsed by vgmstream and typically won't not be fully accurate. May have a .ext.pos pair for fun. */
  7. static const char* extension_list[] = {
  8. //"", /* vgmstream can play extensionless files too, but plugins must accept them manually */
  9. "04sw",
  10. "208",
  11. "2dx9",
  12. "2pfs",
  13. "800",
  14. "9tav",
  15. //"aac", //common
  16. "aa3", //FFmpeg/not parsed (ATRAC3/ATRAC3PLUS/MP3/LPCM/WMA)
  17. "aaap",
  18. "aax",
  19. "abk",
  20. //"ac3", //common, FFmpeg/not parsed (AC3)
  21. "ace", //fake extension for tri-Ace's .aac (renamed, to be removed)
  22. "acm",
  23. "ad", //txth/reserved [Xenosaga Freaks (PS2)]
  24. "adc", //txth/reserved [Tomb Raider The Last Revelation (DC), Tomb Raider Chronicles (DC)]
  25. "adm",
  26. "adp",
  27. "adpcm",
  28. "adpcmx",
  29. "ads",
  30. "adw",
  31. "adx",
  32. "afc",
  33. "afs2",
  34. "agsc",
  35. "ahx",
  36. "ahv",
  37. "ai",
  38. //"aif", //common
  39. "aif-Loop",
  40. "aifc", //common?
  41. "aifcl", //fake extension for .aif???
  42. //"aiff", //common
  43. "aiffl", //fake extension for .aif???
  44. "aix",
  45. "akb",
  46. "al2",
  47. "amts", //fake extension/header id for .stm (renamed? to be removed?)
  48. "ao",
  49. "apc",
  50. "as4",
  51. "asd",
  52. "asf",
  53. "asr",
  54. "ass",
  55. "ast",
  56. "at3",
  57. "at9",
  58. "atsl",
  59. "atsl3",
  60. "atsl4",
  61. "atx",
  62. "aud",
  63. "aus",
  64. "awb",
  65. "awc",
  66. "b1s",
  67. "baf",
  68. "baka",
  69. "bank",
  70. "bar",
  71. "bcstm",
  72. "bcwav",
  73. "bd3",
  74. "bdsp",
  75. "bfstm",
  76. "bfwav",
  77. "bfwavnsmbu", //fake extension for New Super Smash Bros U (renamed to fix bug)
  78. "bg00",
  79. "bgm",
  80. "bgw",
  81. "bh2pcm",
  82. "bik",
  83. "bika",
  84. "bik2",
  85. "bk2",
  86. "bmdx",
  87. "bms",
  88. "bnk",
  89. "bnm",
  90. "bns",
  91. "bnsf",
  92. "bo2",
  93. "brstm",
  94. "brstmspm",
  95. "btsnd",
  96. "bvg",
  97. "bwav",
  98. "caf",
  99. "capdsp",
  100. "cbd2",
  101. "ccc",
  102. "cd",
  103. "cfn", //fake extension for CAF (renamed, to be removed?)
  104. "ckb",
  105. "ckd",
  106. "cks",
  107. "cnk",
  108. "cpk",
  109. "cps",
  110. "csa", //txth/reserved [LEGO Racers 2 (PS2)]
  111. "csmp",
  112. "cvs",
  113. "cxs",
  114. "da",
  115. "dax",
  116. "dbm",
  117. "dcs",
  118. "ddsp",
  119. "de2",
  120. "dec",
  121. "dmsg",
  122. "ds2", //txth/reserved [Star Wars Bounty Hunter (GC)]
  123. "dsf",
  124. "dsp",
  125. "dspw",
  126. "dtk",
  127. "dvi",
  128. "dxh",
  129. "e4x",
  130. "eam",
  131. "eas",
  132. "eda", //txth/reserved [Project Eden (PS2)]
  133. "emff", //fake extension for .mul (to be removed)
  134. "enm",
  135. "eno",
  136. "ens",
  137. "enth",
  138. "exa",
  139. "ezw",
  140. "fag",
  141. "ffw",
  142. "filp",
  143. //"flac", //common
  144. "flx",
  145. "fsb",
  146. "fsv",
  147. "fwav",
  148. "g1l",
  149. "gbts",
  150. "gca",
  151. "gcm",
  152. "gcub",
  153. "gcw",
  154. "genh",
  155. "gin",
  156. "gms",
  157. "gsb",
  158. //"gsf", //conflicts with GBA gsf plugins?
  159. "gtd",
  160. "gwm",
  161. "h4m",
  162. "hab",
  163. "hca",
  164. "hdr",
  165. "hgc1",
  166. "his",
  167. "hlwav",
  168. "hps",
  169. "hsf",
  170. "hwas",
  171. "iab",
  172. "iadp",
  173. "idsp",
  174. "idvi", //fake extension/header id for .pcm (renamed, to be removed)
  175. "idx",
  176. "ikm",
  177. "ild",
  178. "ilv", //txth/reserved [Star Wars Episode III (PS2)]
  179. "imc",
  180. "int",
  181. "isd",
  182. "isws",
  183. "itl",
  184. "ivaud",
  185. "ivag",
  186. "ivb",
  187. "ivs", //txth/reserved [Burnout 2 (PS2)]
  188. "joe",
  189. "jstm",
  190. "kces",
  191. "kcey", //fake extension/header id for .pcm (renamed, to be removed)
  192. "khv", //fake extension/header id for .vas (renamed, to be removed)
  193. "km9",
  194. "kovs", //fake extension/header id for .kvs
  195. "kns",
  196. "kraw",
  197. "ktss", //fake extension/header id for .kns
  198. "kvs",
  199. "l",
  200. "l00", //txth/reserved [Disney's Dinosaur (PS2)]
  201. "laac", //fake extension for .aac (tri-Ace)
  202. "laif", //fake extension for .aif (various)
  203. "laiff", //fake extension for .aiff
  204. "laifc", //fake extension for .aifc
  205. "lac3", //fake extension for .ac3, FFmpeg/not parsed
  206. "lasf", //fake extension for .asf (various)
  207. "leg",
  208. "lflac", //fake extension for .flac, FFmpeg/not parsed
  209. "lin",
  210. "lm0",
  211. "lm1",
  212. "lm2",
  213. "lm3",
  214. "lm4",
  215. "lm5",
  216. "lm6",
  217. "lm7",
  218. "lmp2", //fake extension for .mp2, FFmpeg/not parsed
  219. "lmp3", //fake extension for .mp3, FFmpeg/not parsed
  220. "lmp4", //fake extension for .mp4
  221. "lmpc", //fake extension for .mpc, FFmpeg/not parsed
  222. "logg", //fake extension for .ogg
  223. "lopus", //fake extension for .opus
  224. "lpcm",
  225. "lpk",
  226. "lps",
  227. "lse",
  228. "lsf",
  229. "lstm", //fake extension for .stm
  230. "lwav", //fake extension for .wav
  231. "lwma", //fake extension for .wma, FFmpeg/not parsed
  232. "mab",
  233. "map",
  234. "matx",
  235. "mc3",
  236. "mca",
  237. "mcadpcm",
  238. "mcg",
  239. "mds",
  240. "mdsp",
  241. "med",
  242. "mi4",
  243. "mib",
  244. "mic",
  245. "mihb",
  246. "mnstr",
  247. "mogg",
  248. //"mp2", //common
  249. //"mp3", //common
  250. //"mp4", //common
  251. //"mpc", //common
  252. "mpdsp",
  253. "mpds",
  254. "mpf",
  255. "mps", //txth/reserved [Scandal (PS2)]
  256. "ms",
  257. "msa",
  258. "msb",
  259. "msd",
  260. "msf",
  261. "mss",
  262. "msv",
  263. "msvp",
  264. "mta2",
  265. "mtaf",
  266. "mul",
  267. "mus",
  268. "musc",
  269. "musx",
  270. "mvb", //txth/reserved [Porsche Challenge (PS1)]
  271. "mwv",
  272. "mxst",
  273. "myspd",
  274. "naac",
  275. "ndp",
  276. "ngca",
  277. "nlsd",
  278. "nop",
  279. "nps",
  280. "npsf", //fake extension/header id for .nps (in bigfiles)
  281. "nus3audio",
  282. "nus3bank",
  283. "nwa",
  284. "nwav",
  285. "nxa",
  286. //"ogg", //common
  287. "ogl",
  288. "oma", //FFmpeg/not parsed (ATRAC3/ATRAC3PLUS/MP3/LPCM/WMA)
  289. "omu",
  290. //"opus", //common
  291. "opusx",
  292. "otm",
  293. "ovb",
  294. "p04", //txth/reserved [Psychic Force 2012 (DC)]
  295. "p1d", //txth/reserved [Farming Simulator 18 (3DS)]
  296. "p2a", //txth/reserved [Thunderhawk Operation Phoenix (PS2)]
  297. "p2bt",
  298. "p3d",
  299. "past",
  300. "pcm",
  301. "pdt",
  302. "pk",
  303. "pnb",
  304. "pona",
  305. "pos",
  306. "ps2stm", //fake extension for .stm (renamed? to be removed?)
  307. "psh", //fake extension for .vsv (to be removed)
  308. "psnd",
  309. "psw", //fake extension for .wam (renamed, to be removed)
  310. "r",
  311. "rac", //txth/reserved [Manhunt (Xbox)]
  312. "rak",
  313. "ras",
  314. "raw",
  315. "rda", //FFmpeg/reserved [Rhythm Destruction (PC)]
  316. "rkv",
  317. "rnd",
  318. "rof",
  319. "rpgmvo",
  320. "rrds",
  321. "rsd",
  322. "rsf",
  323. "rsm",
  324. "rstm", //fake extension/header id for .rstm (in bigfiles)
  325. "rvws",
  326. "rwar",
  327. "rwav",
  328. "rws",
  329. "rwsd",
  330. "rwx",
  331. "rxw",
  332. "rxx", //txth/reserved [Full Auto (X360)]
  333. "s14",
  334. "sab",
  335. "sad",
  336. "sap",
  337. "sb0",
  338. "sb1",
  339. "sb2",
  340. "sb3",
  341. "sb4",
  342. "sb5",
  343. "sb6",
  344. "sb7",
  345. "sbr",
  346. "sbv",
  347. "sm0",
  348. "sm1",
  349. "sm2",
  350. "sm3",
  351. "sm4",
  352. "sm5",
  353. "sm6",
  354. "sm7",
  355. "sbin",
  356. "sc",
  357. "scd",
  358. "sd9",
  359. "sdf",
  360. "sdt",
  361. "seg",
  362. "sf0",
  363. "sfl",
  364. "sfs",
  365. "sfx",
  366. "sgb",
  367. "sgd",
  368. "sgx",
  369. "sl3",
  370. "slb", //txth/reserved [THE Nekomura no Hitobito (PS2)]
  371. "sli",
  372. "smc",
  373. "smp",
  374. "smpl", //fake extension/header id for .v0/v1 (renamed, to be removed)
  375. "smv",
  376. "snd",
  377. "snds",
  378. "sng",
  379. "sngw",
  380. "snr",
  381. "sns",
  382. "snu",
  383. "sod",
  384. "son",
  385. "spd",
  386. "spm",
  387. "sps",
  388. "spsd",
  389. "spw",
  390. "ss2",
  391. "ssm",
  392. "sss",
  393. "ster",
  394. "sth",
  395. //"stm", //common
  396. "stma", //fake extension/header id for .stm
  397. "str",
  398. "stream",
  399. "strm",
  400. "sts",
  401. "stx",
  402. "svag",
  403. "svs",
  404. "svg",
  405. "swag",
  406. "swav",
  407. "swd",
  408. "switch_audio"
  409. "sx",
  410. "sxd",
  411. "sxd2",
  412. "sxd3",
  413. "tec",
  414. "tgq",
  415. "thp",
  416. "tk5",
  417. "tmx",
  418. "tra",
  419. "tun",
  420. "txth",
  421. "txtp",
  422. "tydsp",
  423. "ue4opus",
  424. "ulw",
  425. "um3",
  426. "utk",
  427. "uv",
  428. "v0",
  429. //"v1", //dual channel with v0
  430. "va3",
  431. "vag",
  432. "vai",
  433. "vas",
  434. "vawx",
  435. "vb",
  436. "vbk",
  437. "vbx", //txth/reserved [THE Taxi 2 (PS2)]
  438. "vds",
  439. "vdm",
  440. "vgm", //txth/reserved [Maximo (PS2)]
  441. "vgs",
  442. "vgv",
  443. "vig",
  444. "vis",
  445. "vms",
  446. "vmu", //txth/reserved [Red Faction (PS2)]
  447. "voi",
  448. "vp6",
  449. "vpk",
  450. "vs",
  451. "vsf",
  452. "vsv",
  453. "vxn",
  454. "waa",
  455. "wac",
  456. "wad",
  457. "waf",
  458. "wam",
  459. "was",
  460. //"wav", //common
  461. "wavc",
  462. "wave",
  463. "wavebatch",
  464. "wavm",
  465. "wb",
  466. "wd",
  467. "wem",
  468. "wii",
  469. "wip", //txth/reserved [Colin McRae DiRT (PC)]
  470. "wma", //common
  471. "wmus",
  472. "wp2",
  473. "wpd",
  474. "wsd",
  475. "wsi",
  476. "wua",
  477. "wv2",
  478. "wv6",
  479. "wve",
  480. "wvs",
  481. "wvx",
  482. "x",
  483. "xa",
  484. "xa2",
  485. "xa30",
  486. "xag",
  487. "xau",
  488. "xen",
  489. "xma",
  490. "xma2",
  491. "xmu",
  492. "xnb",
  493. "xsf",
  494. "xsew",
  495. "xss",
  496. "xvag",
  497. "xvas",
  498. "xwav",//fake extension for .wav (renamed, to be removed)
  499. "xwb",
  500. "xmd",
  501. "xopus",
  502. "xps",
  503. "xwc",
  504. "xwm",
  505. "xwma",
  506. "xws",
  507. "xwv",
  508. "ydsp",
  509. "ymf",
  510. "zsd",
  511. "zsm",
  512. "zss",
  513. "zwdsp",
  514. "vgmstream" /* fake extension, catch-all for FFmpeg/txth/etc */
  515. //, NULL //end mark
  516. };
  517. /* List supported formats and return elements in the list, for plugins that need to know. */
  518. const char ** vgmstream_get_formats(size_t * size) {
  519. *size = sizeof(extension_list) / sizeof(char*);
  520. return extension_list;
  521. }
  522. /* internal description info */
  523. typedef struct {
  524. coding_t type;
  525. const char *description;
  526. } coding_info;
  527. typedef struct {
  528. layout_t type;
  529. const char *description;
  530. } layout_info;
  531. typedef struct {
  532. meta_t type;
  533. const char *description;
  534. } meta_info;
  535. static const coding_info coding_info_list[] = {
  536. {coding_PCM16LE, "Little Endian 16-bit PCM"},
  537. {coding_PCM16BE, "Big Endian 16-bit PCM"},
  538. {coding_PCM16_int, "16-bit PCM with 2 byte interleave (block)"},
  539. {coding_PCM8, "8-bit signed PCM"},
  540. {coding_PCM8_int, "8-bit signed PCM with 1 byte interleave (block)"},
  541. {coding_PCM8_U, "8-bit unsigned PCM"},
  542. {coding_PCM8_U_int, "8-bit unsigned PCM with 1 byte interleave (block)"},
  543. {coding_PCM8_SB, "8-bit PCM with sign bit"},
  544. {coding_PCM4, "4-bit signed PCM"},
  545. {coding_PCM4_U, "4-bit unsigned PCM"},
  546. {coding_ULAW, "8-bit u-Law"},
  547. {coding_ULAW_int, "8-bit u-Law with 1 byte interleave (block)"},
  548. {coding_ALAW, "8-bit a-Law"},
  549. {coding_PCMFLOAT, "32-bit float PCM"},
  550. {coding_CRI_ADX, "CRI ADX 4-bit ADPCM"},
  551. {coding_CRI_ADX_fixed, "CRI ADX 4-bit ADPCM (fixed coefficients)"},
  552. {coding_CRI_ADX_exp, "CRI ADX 4-bit ADPCM (exponential scale)"},
  553. {coding_CRI_ADX_enc_8, "CRI ADX 4-bit ADPCM (type 8 encryption)"},
  554. {coding_CRI_ADX_enc_9, "CRI ADX 4-bit ADPCM (type 9 encryption)"},
  555. {coding_NGC_DSP, "Nintendo DSP 4-bit ADPCM"},
  556. {coding_NGC_DSP_subint, "Nintendo DSP 4-bit ADPCM (subinterleave)"},
  557. {coding_NGC_DTK, "Nintendo DTK 4-bit ADPCM"},
  558. {coding_NGC_AFC, "Nintendo AFC 4-bit ADPCM"},
  559. {coding_G721, "CCITT G.721 4-bit ADPCM"},
  560. {coding_XA, "CD-ROM XA 4-bit ADPCM"},
  561. {coding_PSX, "Playstation 4-bit ADPCM"},
  562. {coding_PSX_badflags, "Playstation 4-bit ADPCM (bad flags)"},
  563. {coding_PSX_cfg, "Playstation 4-bit ADPCM (configurable)"},
  564. {coding_HEVAG, "Sony HEVAG 4-bit ADPCM"},
  565. {coding_EA_XA, "Electronic Arts EA-XA 4-bit ADPCM v1"},
  566. {coding_EA_XA_int, "Electronic Arts EA-XA 4-bit ADPCM v1 (mono/interleave)"},
  567. {coding_EA_XA_V2, "Electronic Arts EA-XA 4-bit ADPCM v2"},
  568. {coding_MAXIS_XA, "Maxis EA-XA 4-bit ADPCM"},
  569. {coding_EA_XAS_V0, "Electronic Arts EA-XAS 4-bit ADPCM v0"},
  570. {coding_EA_XAS_V1, "Electronic Arts EA-XAS 4-bit ADPCM v1"},
  571. {coding_IMA, "IMA 4-bit ADPCM"},
  572. {coding_IMA_int, "IMA 4-bit ADPCM (mono/interleave)"},
  573. {coding_DVI_IMA, "Intel DVI 4-bit IMA ADPCM"},
  574. {coding_DVI_IMA_int, "Intel DVI 4-bit IMA ADPCM (mono/interleave)"},
  575. {coding_3DS_IMA, "3DS IMA 4-bit ADPCM"},
  576. {coding_SNDS_IMA, "Heavy Iron .snds 4-bit IMA ADPCM"},
  577. {coding_OTNS_IMA, "Omikron: The Nomad Soul 4-bit IMA ADPCM"},
  578. {coding_WV6_IMA, "Gorilla Systems WV6 4-bit IMA ADPCM"},
  579. {coding_ALP_IMA, "High Voltage ALP 4-bit IMA ADPCM"},
  580. {coding_FFTA2_IMA, "Final Fantasy Tactics A2 4-bit IMA ADPCM"},
  581. {coding_BLITZ_IMA, "Blitz Games 4-bit IMA ADPCM"},
  582. {coding_MS_IMA, "Microsoft 4-bit IMA ADPCM"},
  583. {coding_XBOX_IMA, "XBOX 4-bit IMA ADPCM"},
  584. {coding_XBOX_IMA_mch, "XBOX 4-bit IMA ADPCM (multichannel)"},
  585. {coding_XBOX_IMA_int, "XBOX 4-bit IMA ADPCM (mono/interleave)"},
  586. {coding_NDS_IMA, "NDS-style 4-bit IMA ADPCM"},
  587. {coding_DAT4_IMA, "Eurocom DAT4 4-bit IMA ADPCM"},
  588. {coding_RAD_IMA, "Radical 4-bit IMA ADPCM"},
  589. {coding_RAD_IMA_mono, "Radical 4-bit IMA ADPCM (mono/interleave)"},
  590. {coding_APPLE_IMA4, "Apple Quicktime 4-bit IMA ADPCM"},
  591. {coding_FSB_IMA, "FSB 4-bit IMA ADPCM"},
  592. {coding_WWISE_IMA, "Audiokinetic Wwise 4-bit IMA ADPCM"},
  593. {coding_REF_IMA, "Reflections 4-bit IMA ADPCM"},
  594. {coding_AWC_IMA, "Rockstar AWC 4-bit IMA ADPCM"},
  595. {coding_UBI_IMA, "Ubisoft 4-bit IMA ADPCM"},
  596. {coding_H4M_IMA, "Hudson HVQM4 4-bit IMA ADPCM"},
  597. {coding_MSADPCM, "Microsoft 4-bit ADPCM"},
  598. {coding_MSADPCM_int, "Microsoft 4-bit ADPCM (mono/interleave)"},
  599. {coding_MSADPCM_ck, "Microsoft 4-bit ADPCM (Cricket Audio)"},
  600. {coding_WS, "Westwood Studios VBR ADPCM"},
  601. {coding_YAMAHA, "Yamaha 4-bit ADPCM"},
  602. {coding_YAMAHA_int, "Yamaha 4-bit ADPCM (mono/interleave)"},
  603. {coding_ASKA, "tri-Ace Aska 4-bit ADPCM"},
  604. {coding_NXAP, "Nex NXAP 4-bit ADPCM"},
  605. {coding_NDS_PROCYON, "Procyon Studio Digital Sound Elements NDS 4-bit APDCM"},
  606. {coding_L5_555, "Level-5 0x555 4-bit ADPCM"},
  607. {coding_LSF, "lsf 4-bit ADPCM"},
  608. {coding_MTAF, "Konami MTAF 4-bit ADPCM"},
  609. {coding_MTA2, "Konami MTA2 4-bit ADPCM"},
  610. {coding_MC3, "Paradigm MC3 3-bit ADPCM"},
  611. {coding_FADPCM, "FMOD FADPCM 4-bit ADPCM"},
  612. {coding_ASF, "Argonaut ASF 4-bit ADPCM"},
  613. {coding_DSA, "Ocean DSA 4-bit ADPCM"},
  614. {coding_XMD, "Konami XMD 4-bit ADPCM"},
  615. {coding_PCFX, "PC-FX 4-bit ADPCM"},
  616. {coding_OKI16, "OKI 4-bit ADPCM (16-bit output)"},
  617. {coding_SDX2, "Squareroot-delta-exact (SDX2) 8-bit DPCM"},
  618. {coding_SDX2_int, "Squareroot-delta-exact (SDX2) 8-bit DPCM with 1 byte interleave"},
  619. {coding_CBD2, "Cuberoot-delta-exact (CBD2) 8-bit DPCM"},
  620. {coding_CBD2_int, "Cuberoot-delta-exact (CBD2) 8-bit DPCM with 1 byte interleave"},
  621. {coding_SASSC, "Activision / EXAKT SASSC 8-bit DPCM"},
  622. {coding_DERF, "Xilam DERF 8-bit DPCM"},
  623. {coding_ACM, "InterPlay ACM"},
  624. {coding_NWA, "VisualArt's NWA DPCM"},
  625. {coding_CIRCUS_ADPCM, "Circus 8-bit ADPCM"},
  626. {coding_EA_MT, "Electronic Arts MicroTalk"},
  627. {coding_CRI_HCA, "CRI HCA"},
  628. #ifdef VGM_USE_VORBIS
  629. {coding_OGG_VORBIS, "Ogg Vorbis"},
  630. {coding_VORBIS_custom, "Custom Vorbis"},
  631. #endif
  632. #ifdef VGM_USE_MPEG
  633. {coding_MPEG_custom, "Custom MPEG Audio"},
  634. {coding_MPEG_ealayer3, "EALayer3"},
  635. {coding_MPEG_layer1, "MPEG Layer I Audio (MP1)"},
  636. {coding_MPEG_layer2, "MPEG Layer II Audio (MP2)"},
  637. {coding_MPEG_layer3, "MPEG Layer III Audio (MP3)"},
  638. #endif
  639. #ifdef VGM_USE_G7221
  640. {coding_G7221C, "ITU G.722.1 annex C (Polycom Siren 14)"},
  641. #endif
  642. #ifdef VGM_USE_G719
  643. {coding_G719, "ITU G.719 annex B (Polycom Siren 22)"},
  644. #endif
  645. #ifdef VGM_USE_MAIATRAC3PLUS
  646. {coding_AT3plus, "ATRAC3plus"},
  647. #endif
  648. #ifdef VGM_USE_ATRAC9
  649. {coding_ATRAC9, "ATRAC9"},
  650. #endif
  651. #ifdef VGM_USE_CELT
  652. {coding_CELT_FSB, "Custom CELT"},
  653. #endif
  654. #ifdef VGM_USE_FFMPEG
  655. {coding_FFmpeg, "FFmpeg"},
  656. #endif
  657. };
  658. static const layout_info layout_info_list[] = {
  659. {layout_none, "flat"},
  660. {layout_interleave, "interleave"},
  661. {layout_segmented, "segmented"},
  662. {layout_layered, "layered"},
  663. {layout_blocked_mxch, "blocked (MxCh)"},
  664. {layout_blocked_ast, "blocked (AST)"},
  665. {layout_blocked_halpst, "blocked (HALPST)"},
  666. {layout_blocked_xa, "blocked (XA)"},
  667. {layout_blocked_ea_schl, "blocked (EA SCHl)"},
  668. {layout_blocked_ea_1snh, "blocked (EA 1SNh)"},
  669. {layout_blocked_caf, "blocked (CAF)"},
  670. {layout_blocked_wsi, "blocked (WSI)"},
  671. {layout_blocked_xvas, "blocked (.xvas)"},
  672. {layout_blocked_str_snds, "blocked (.str SNDS)"},
  673. {layout_blocked_ws_aud, "blocked (Westwood Studios .aud)"},
  674. {layout_blocked_matx, "blocked (Matrix .matx)"},
  675. {layout_blocked_dec, "blocked (DEC)"},
  676. {layout_blocked_vs, "blocked (Melbourne House VS)"},
  677. {layout_blocked_mul, "blocked (MUL)"},
  678. {layout_blocked_gsb, "blocked (GSB)"},
  679. {layout_blocked_thp, "blocked (THP Movie Audio)"},
  680. {layout_blocked_filp, "blocked (FILP)"},
  681. {layout_blocked_ea_swvr, "blocked (EA SWVR)"},
  682. {layout_blocked_adm, "blocked (ADM)"},
  683. {layout_blocked_bdsp, "blocked (BDSP)"},
  684. {layout_blocked_ivaud, "blocked (IVAUD)"},
  685. {layout_blocked_ps2_iab, "blocked (IAB)"},
  686. {layout_blocked_vs_str, "blocked (STR VS)"},
  687. {layout_blocked_rws, "blocked (RWS)"},
  688. {layout_blocked_hwas, "blocked (HWAS)"},
  689. {layout_blocked_tra, "blocked (TRA)"},
  690. {layout_blocked_ea_sns, "blocked (EA SNS)"},
  691. {layout_blocked_awc, "blocked (AWC)"},
  692. {layout_blocked_vgs, "blocked (VGS)"},
  693. {layout_blocked_vawx, "blocked (VAWX)"},
  694. {layout_blocked_xvag_subsong, "blocked (XVAG subsong)"},
  695. {layout_blocked_ea_wve_au00, "blocked (EA WVE au00)"},
  696. {layout_blocked_ea_wve_ad10, "blocked (EA WVE Ad10)"},
  697. {layout_blocked_sthd, "blocked (STHD)"},
  698. {layout_blocked_h4m, "blocked (H4M)"},
  699. {layout_blocked_xa_aiff, "blocked (XA AIFF)"},
  700. {layout_blocked_vs_square, "blocked (Square VS)"},
  701. };
  702. static const meta_info meta_info_list[] = {
  703. {meta_RSTM, "Nintendo RSTM header"},
  704. {meta_STRM, "Nintendo STRM header"},
  705. {meta_ADX_03, "CRI ADX header type 03"},
  706. {meta_ADX_04, "CRI ADX header type 04"},
  707. {meta_ADX_05, "CRI ADX header type 05"},
  708. {meta_AIX, "CRI AIX header"},
  709. {meta_AAX, "CRI AAX header"},
  710. {meta_UTF_DSP, "CRI ADPCM_WII header"},
  711. {meta_AGSC, "Retro Studios AGSC header"},
  712. {meta_CSMP, "Retro Studios CSMP header"},
  713. {meta_RFRM, "Retro Studios RFRM header"},
  714. {meta_NGC_ADPDTK, "Nintendo ADP raw header"},
  715. {meta_RSF, "Retro Studios RSF raw header"},
  716. {meta_AFC, "Nintendo AFC header"},
  717. {meta_AST, "Nintendo AST header"},
  718. {meta_HALPST, "HAL Laboratory HALPST header"},
  719. {meta_DSP_RS03, "Retro Studios RS03 header"},
  720. {meta_DSP_STD, "Nintendo DSP header"},
  721. {meta_DSP_CSTR, "Namco Cstr header"},
  722. {meta_GCSW, "GCSW header"},
  723. {meta_PS2_SShd, "Sony ADS header"},
  724. {meta_NPS, "Namco NPSF header"},
  725. {meta_RWSD, "Nintendo RWSD header (single stream)"},
  726. {meta_RWAR, "Nintendo RWAR header (single RWAV stream)"},
  727. {meta_RWAV, "Nintendo RWAV header"},
  728. {meta_CWAV, "Nintendo CWAV header"},
  729. {meta_FWAV, "Nintendo FWAV header"},
  730. {meta_XA, "Sony XA header"},
  731. {meta_PS2_RXWS, "Sony RXWS header"},
  732. {meta_PS2_RAW, ".int PCM raw header"},
  733. {meta_PS2_OMU, "Alter Echo OMU Header"},
  734. {meta_DSP_STM, "Intelligent Systems STM header"},
  735. {meta_PS2_EXST, "Sony EXST header"},
  736. {meta_PS2_SVAG, "Konami SVAG header"},
  737. {meta_PS_HEADERLESS, "Headerless PS-ADPCM raw header"},
  738. {meta_PS2_MIB_MIH, "Sony MultiStream MIH+MIB header"},
  739. {meta_DSP_MPDSP, "Single DSP header stereo by .mpdsp extension"},
  740. {meta_PS2_MIC, "KOEI .MIC header"},
  741. {meta_DSP_JETTERS, "Double DSP header stereo by _lr.dsp extension"},
  742. {meta_DSP_MSS, "Double DSP header stereo by .mss extension"},
  743. {meta_DSP_GCM, "Double DSP header stereo by .gcm extension"},
  744. {meta_IDSP_TT, "Traveller's Tales IDSP header"},
  745. {meta_RSTM_SPM, "Nintendo RSTM header (brstmspm)"},
  746. {meta_RAW, "assumed RAW PCM file by .raw extension"},
  747. {meta_PS2_VAGi, "Sony VAGi header"},
  748. {meta_PS2_VAGp, "Sony VAGp header"},
  749. {meta_PS2_pGAV, "Sony pGAV header"},
  750. {meta_PSX_GMS, "assumed Grandia GMS file by .gms extension"},
  751. {meta_STR_WAV, "Blitz Games STR+WAV header"},
  752. {meta_PS2_ILD, "ILD header"},
  753. {meta_PS2_PNB, "assumed PNB (PsychoNauts Bgm File) by .pnb extension"},
  754. {meta_XBOX_WAVM, "Xbox WAVM raw header"},
  755. {meta_DSP_STR, "assumed Conan Gamecube STR File by .str extension"},
  756. {meta_EA_SCHL, "Electronic Arts SCHl header (variable)"},
  757. {meta_EA_SCHL_fixed, "Electronic Arts SCHl header (fixed)"},
  758. {meta_CAF, "tri-Crescendo CAF Header"},
  759. {meta_VPK, "SCE America VPK Header"},
  760. {meta_GENH, "GENH generic header"},
  761. {meta_DSP_SADB, "Procyon Studio SADB header"},
  762. {meta_SADL, "Procyon Studio SADL header"},
  763. {meta_PS2_BMDX, "Beatmania .bmdx header"},
  764. {meta_DSP_WSI, "Alone in the Dark .WSI header"},
  765. {meta_AIFC, "Apple AIFF-C (Audio Interchange File Format) header"},
  766. {meta_AIFF, "Apple AIFF (Audio Interchange File Format) header"},
  767. {meta_STR_SNDS, ".str SNDS SHDR chunk"},
  768. {meta_WS_AUD, "Westwood Studios .aud header"},
  769. {meta_WS_AUD_old, "Westwood Studios .aud (old) header"},
  770. {meta_PS2_IVB, "IVB/BVII header"},
  771. {meta_SVS, "Square SVS header"},
  772. {meta_RIFF_WAVE, "RIFF WAVE header"},
  773. {meta_RIFF_WAVE_POS, "RIFF WAVE header and .pos for looping"},
  774. {meta_NWA, "VisualArt's NWA header"},
  775. {meta_NWA_NWAINFOINI, "VisualArt's NWA header (NWAINFO.INI looping)"},
  776. {meta_NWA_GAMEEXEINI, "VisualArt's NWA header (Gameexe.ini looping)"},
  777. {meta_XSS, "Dino Crisis 3 XSS File"},
  778. {meta_HGC1, "Knights of the Temple 2 hgC1 Header"},
  779. {meta_AUS, "Capcom AUS Header"},
  780. {meta_RWS, "RenderWare RWS header"},
  781. {meta_EA_1SNH, "Electronic Arts 1SNh header"},
  782. {meta_EA_EACS, "Electronic Arts EACS header"},
  783. {meta_SL3, "Atari Melbourne House SL3 header"},
  784. {meta_FSB1, "FMOD Sample Bank (FSB1) Header"},
  785. {meta_FSB2, "FMOD Sample Bank (FSB2) Header"},
  786. {meta_FSB3, "FMOD Sample Bank (FSB3) Header"},
  787. {meta_FSB4, "FMOD Sample Bank (FSB4) Header"},
  788. {meta_FSB5, "FMOD Sample Bank (FSB5) Header"},
  789. {meta_RWX, "RWX Header"},
  790. {meta_XWB, "Microsoft XWB header"},
  791. {meta_PS2_XA30, "Reflections XA30 PS2 header"},
  792. {meta_MUSC, "Krome MUSC header"},
  793. {meta_MUSX_V004, "MUSX / Version 004 Header"},
  794. {meta_MUSX_V005, "MUSX / Version 005 Header"},
  795. {meta_MUSX_V006, "MUSX / Version 006 Header"},
  796. {meta_MUSX_V010, "MUSX / Version 010 Header"},
  797. {meta_MUSX_V201, "MUSX / Version 201 Header"},
  798. {meta_LEG, "Legaia 2 - Duel Saga LEG Header"},
  799. {meta_FILP, "Bio Hazard - Gun Survivor FILp Header"},
  800. {meta_IKM, "MiCROViSiON IKM header"},
  801. {meta_SFS, "Baroque SFS Header"},
  802. {meta_SAT_DVI, "Konami KCEN DVI. header"},
  803. {meta_DC_KCEY, "Konami KCEY KCEYCOMP header"},
  804. {meta_BG00, "Falcom BG00 Header"},
  805. {meta_PS2_RSTM, "Rockstar Games RSTM Header"},
  806. {meta_ACM, "InterPlay ACM Header"},
  807. {meta_MUS_ACM, "InterPlay MUS ACM header"},
  808. {meta_PS2_KCES, "Konami KCES Header"},
  809. {meta_PS2_DXH, "Tokobot Plus DXH Header"},
  810. {meta_VSV, "Square Enix .vsv Header"},
  811. {meta_RIFF_WAVE_labl, "RIFF WAVE header with loop markers"},
  812. {meta_RIFF_WAVE_smpl, "RIFF WAVE header with sample looping info"},
  813. {meta_RIFF_WAVE_wsmp, "RIFF WAVE header with wsmp looping info"},
  814. {meta_RIFX_WAVE, "RIFX WAVE header"},
  815. {meta_RIFX_WAVE_smpl, "RIFX WAVE header with sample looping info"},
  816. {meta_XNB, "Microsoft XNA Game Studio 4.0 header"},
  817. {meta_SCD_PCM, "Lunar: Eternal Blue .PCM header"},
  818. {meta_PS2_PCM, "Konami KCEJ East .PCM header"},
  819. {meta_PS2_RKV, "Legacy of Kain - Blood Omen 2 RKV PS2 header"},
  820. {meta_PS2_VAS, "Pro Baseball Spirits 5 VAS Header"},
  821. {meta_PS2_TEC, "assumed TECMO badflagged stream by .tec extension"},
  822. {meta_PS2_ENTH, ".enth Header"},
  823. {meta_SDT, "High Voltage .sdt header"},
  824. {meta_NGC_TYDSP, ".tydsp Header"},
  825. {meta_XBOX_WVS, "Metal Arms WVS Header (XBOX)"},
  826. {meta_NGC_WVS, "Metal Arms WVS Header (GameCube)"},
  827. {meta_XBOX_MATX, "assumed Matrix file by .matx extension"},
  828. {meta_DEC, "Falcom DEC RIFF header"},
  829. {meta_VS, "Melbourne House .VS header"},
  830. {meta_DC_STR, "Sega Stream Asset Builder header"},
  831. {meta_DC_STR_V2, "variant of Sega Stream Asset Builder header"},
  832. {meta_XBOX_XMU, "XMU header"},
  833. {meta_XBOX_XVAS, "Konami .XVAS header"},
  834. {meta_PS2_XA2, "Acclaim XA2 Header"},
  835. {meta_DC_IDVI, "Capcom IDVI header"},
  836. {meta_KRAW, "Geometry Wars: Galaxies KRAW header"},
  837. {meta_NGC_YMF, "YMF DSP Header"},
  838. {meta_PS2_CCC, "CCC Header"},
  839. {meta_FAG, "Radical .FAG Header"},
  840. {meta_PS2_MIHB, "Sony MultiStream MIC header"},
  841. {meta_DSP_WII_MUS, "mus header"},
  842. {meta_WII_SNG, "SNG DSP Header"},
  843. {meta_RSD2VAG, "Radical RSD2/VAG header"},
  844. {meta_RSD2PCMB, "Radical RSD2/PCMB header"},
  845. {meta_RSD2XADP, "Radical RSD2/XADP header"},
  846. {meta_RSD3VAG, "Radical RSD3/VAG header"},
  847. {meta_RSD3GADP, "Radical RSD3/GADP header"},
  848. {meta_RSD3PCM, "Radical RSD3/PCM header"},
  849. {meta_RSD3PCMB, "Radical RSD3/PCMB header"},
  850. {meta_RSD4PCMB, "Radical RSD4/PCMB header"},
  851. {meta_RSD4PCM, "Radical RSD4/PCM header"},
  852. {meta_RSD4RADP, "Radical RSD4/RADP header"},
  853. {meta_RSD4VAG, "Radical RSD4/VAG header"},
  854. {meta_RSD6XADP, "Radical RSD6/XADP header"},
  855. {meta_RSD6VAG, "Radical RSD6/VAG header"},
  856. {meta_RSD6WADP, "Radical RSD6/WADP header"},
  857. {meta_RSD6RADP, "Radical RSD6/RADP header"},
  858. {meta_RSD6XMA, "Radical RSD6/XMA header"},
  859. {meta_RSD6AT3P, "Radical RSD6/AT3+ header"},
  860. {meta_RSD6WMA, "Radical RSD6/WMA header"},
  861. {meta_DC_ASD, "ASD Header"},
  862. {meta_NAOMI_SPSD, "Naomi SPSD header"},
  863. {meta_FFXI_BGW, "Square Enix .BGW header"},
  864. {meta_FFXI_SPW, "Square Enix .SPW header"},
  865. {meta_PS2_ASS, "SystemSoft .ASS header"},
  866. {meta_NUB_IDSP, "Namco NUB IDSP header"},
  867. {meta_IDSP_NL, "Next Level IDSP header"},
  868. {meta_IDSP_IE, "Inevitable Entertainment IDSP Header"},
  869. {meta_UBI_JADE, "Ubisoft Jade RIFF header"},
  870. {meta_SEG, "Stormfront SEG header"},
  871. {meta_NDS_STRM_FFTA2, "Final Fantasy Tactics A2 RIFF Header"},
  872. {meta_STR_ASR, "Donkey Kong Jet Race KNON/WII Header"},
  873. {meta_ZWDSP, "Zack and Wiki custom DSP Header"},
  874. {meta_GCA, "GCA DSP Header"},
  875. {meta_SPT_SPD, "SPT+SPD DSP Header"},
  876. {meta_ISH_ISD, "ISH+ISD DSP Header"},
  877. {meta_GSP_GSB, "Tecmo GSP+GSB Header"},
  878. {meta_YDSP, "Yuke's DSP (YDSP) Header"},
  879. {meta_MSVP, "MSVP Header"},
  880. {meta_NGC_SSM, "SSM DSP Header"},
  881. {meta_PS2_JOE, "Asobo Studio .JOE header"},
  882. {meta_VGS, "Guitar Hero VGS Header"},
  883. {meta_DCS_WAV, "In Utero DCS+WAV header"},
  884. {meta_SMP, "Infernal Engine .smp header"},
  885. {meta_MUL, "Crystal Dynamics .MUL header"},
  886. {meta_THP, "THP Movie File Format Header"},
  887. {meta_STS_WII, "Shikigami no Shiro (WII) Header"},
  888. {meta_PS2_P2BT, "Pop'n'Music 7 Header"},
  889. {meta_PS2_GBTS, "Pop'n'Music 9 Header"},
  890. {meta_NGC_DSP_IADP, "IADP Header"},
  891. {meta_RSTM_shrunken, "Nintendo RSTM header, corrupted by Atlus"},
  892. {meta_RIFF_WAVE_MWV, "RIFF WAVE header with .mwv flavoring"},
  893. {meta_FFCC_STR, "Final Fantasy: Crystal Chronicles STR header"},
  894. {meta_SAT_BAKA, "BAKA header from Crypt Killer"},
  895. {meta_NDS_SWAV, "SWAV Header"},
  896. {meta_PS2_VSF, "Musashi: Samurai Legend VSF Header"},
  897. {meta_NDS_RRDS, "Ridger Racer DS Header"},
  898. {meta_PS2_TK5, "Tekken 5 Stream Header"},
  899. {meta_PS2_SND, "Might and Magic SSND Header"},
  900. {meta_PS2_VSF_TTA, "VSF with SMSS Header"},
  901. {meta_ADS, "dhSS Header"},
  902. {meta_PS2_MCG, "Gunvari MCG Header"},
  903. {meta_ZSD, "ZSD Header"},
  904. {meta_REDSPARK, "RedSpark Header"},
  905. {meta_IVAUD, "Rockstar .ivaud header"},
  906. {meta_DSP_WII_WSD, ".WSD header"},
  907. {meta_WII_NDP, "Icon Games NDP header"},
  908. {meta_PS2_SPS, "Ape Escape 2 SPS Header"},
  909. {meta_PS2_XA2_RRP, "Acclaim XA2 Header"},
  910. {meta_NDS_HWAS, "Vicarious Visions HWAS header"},
  911. {meta_NGC_LPS, "Rave Master LPS Header"},
  912. {meta_NAOMI_ADPCM, "NAOMI/NAOMI2 Arcade games ADPCM header"},
  913. {meta_SD9, "beatmania IIDX SD9 header"},
  914. {meta_2DX9, "beatmania IIDX 2DX9 header"},
  915. {meta_DSP_YGO, "Konami custom DSP Header"},
  916. {meta_PS2_VGV, "Rune: Viking Warlord VGV Header"},
  917. {meta_NGC_GCUB, "GCub Header"},
  918. {meta_NGC_SCK_DSP, "The Scorpion King SCK Header"},
  919. {meta_NGC_SWD, "PSF + Standard DSP Headers"},
  920. {meta_CAFF, "Apple Core Audio Format File header"},
  921. {meta_PC_MXST, "Lego Island MxSt Header"},
  922. {meta_SAB, "Team17 SAB header"},
  923. {meta_MAXIS_XA, "Maxis XAI/XAJ Header"},
  924. {meta_EXAKT_SC, "assumed Activision / EXAKT SC by extension"},
  925. {meta_WII_BNS, "Nintendo BNS header"},
  926. {meta_WII_WAS, "Sumo Digital iSWS header"},
  927. {meta_XBOX_HLWAV, "Half Life 2 bgm header"},
  928. {meta_STX, "Nintendo .stx header"},
  929. {meta_MYSPD, "U-Sing .MYSPD header"},
  930. {meta_HIS, "Her Interactive Sound header"},
  931. {meta_PS2_AST, "KOEI AST header"},
  932. {meta_CAPDSP, "Capcom DSP header"},
  933. {meta_DMSG, "RIFF/DMSGsegh header"},
  934. {meta_PONA_3DO, "Policenauts BGM header"},
  935. {meta_PONA_PSX, "Policenauts BGM header"},
  936. {meta_NGC_DSP_AAAP, "Acclaim Austin AAAp header"},
  937. {meta_NGC_DSP_KONAMI, "Konami DSP header"},
  938. {meta_PS2_STER, "STER Header"},
  939. {meta_BNSF, "Namco Bandai BNSF header"},
  940. {meta_PS2_WB, "Shooting Love. ~TRIZEAL~ WB header"},
  941. {meta_S14, "Namco .S14 raw header"},
  942. {meta_SSS, "Namco .SSS raw header"},
  943. {meta_PS2_GCM, "GCM 'MCG' Header"},
  944. {meta_PS2_SMPL, "Homura SMPL header"},
  945. {meta_PS2_MSA, "Success .MSA header"},
  946. {meta_NGC_PDT, "Hudson .PDT header"},
  947. {meta_NGC_RKV, "Legacy of Kain - Blood Omen 2 RKV GC header"},
  948. {meta_DSP_DDSP, ".DDSP header"},
  949. {meta_P3D, "Radical P3D header"},
  950. {meta_PS2_TK1, "Tekken TK5STRM1 Header"},
  951. {meta_NGC_DSP_MPDS, "MPDS DSP header"},
  952. {meta_DSP_STR_IG, "Infogrames .DSP header"},
  953. {meta_EA_SWVR, "Electronic Arts SWVR header"},
  954. {meta_PS2_B1S, "B1S header"},
  955. {meta_PS2_WAD, "WAD header"},
  956. {meta_DSP_XIII, "XIII dsp header"},
  957. {meta_DSP_CABELAS, "Cabelas games .DSP header"},
  958. {meta_PS2_ADM, "Dragon Quest V .ADM raw header"},
  959. {meta_PS2_LPCM, "LPCM header"},
  960. {meta_PS2_VMS, "VMS Header"},
  961. {meta_XAU, "XPEC XAU header"},
  962. {meta_GH3_BAR, "Guitar Hero III Mobile .bar"},
  963. {meta_FFW, "Freedom Fighters BGM header"},
  964. {meta_DSP_DSPW, "Capcom DSPW header"},
  965. {meta_PS2_JSTM, "JSTM Header"},
  966. {meta_XVAG, "Sony XVAG header"},
  967. {meta_PS3_CPS, "tri-Crescendo CPS Header"},
  968. {meta_SQEX_SCD, "Square-Enix SCD header"},
  969. {meta_NGC_NST_DSP, "Animaniacs NST header"},
  970. {meta_BAF, "Bizarre Creations .baf header"},
  971. {meta_MSF, "Sony MSF header"},
  972. {meta_NUB_VAG, "Namco NUB VAG header"},
  973. {meta_PS3_PAST, "SNDP header"},
  974. {meta_SGXD, "Sony SGXD header"},
  975. {meta_NGCA, "NGCA header"},
  976. {meta_WII_RAS, "RAS header"},
  977. {meta_PS2_SPM, "SPM header"},
  978. {meta_X360_TRA, "Terminal Reality .TRA raw header"},
  979. {meta_PS2_VGS, "Princess Soft VGS header"},
  980. {meta_PS2_IAB, "Runtime .IAB header"},
  981. {meta_VS_STR, "Square .VS STR* header"},
  982. {meta_LSF_N1NJ4N, ".lsf !n1nj4n header"},
  983. {meta_VAWX, "feelplus VAWX header"},
  984. {meta_PC_SNDS, "assumed Heavy Iron IMA by .snds extension"},
  985. {meta_PS2_WMUS, "assumed The Warriors Sony ADPCM by .wmus extension"},
  986. {meta_HYPERSCAN_KVAG, "Mattel Hyperscan KVAG"},
  987. {meta_IOS_PSND, "PSND Header"},
  988. {meta_BOS_ADP, "ADP! header"},
  989. {meta_OTNS_ADP, "Omikron: The Nomad Soul ADP header"},
  990. {meta_EB_SFX, "Excitebots .sfx header"},
  991. {meta_EB_SF0, "assumed Excitebots .sf0 by extension"},
  992. {meta_MTAF, "Konami MTAF header"},
  993. {meta_PS2_VAG1, "Konami VAG1 header"},
  994. {meta_PS2_VAG2, "Konami VAG2 header"},
  995. {meta_TUN, "Lego Racers ALP header"},
  996. {meta_WPD, "WPD 'DPW' header"},
  997. {meta_MN_STR, "Mini Ninjas 'STR' header"},
  998. {meta_MSS, "Guerilla MCSS header"},
  999. {meta_PS2_HSF, "Lowrider 'HSF' header"},
  1000. {meta_PS3_IVAG, "PS3 'IVAG' Header"},
  1001. {meta_PS2_2PFS, "Konami 2PFS header"},
  1002. {meta_RSD6OOGV, "RSD6/OOGV Header"},
  1003. {meta_UBI_CKD, "Ubisoft CKD RIFF header"},
  1004. {meta_PS2_VBK, "PS2 VBK Header"},
  1005. {meta_OTM, "Otomedius OTM Header"},
  1006. {meta_CSTM, "Nintendo CSTM Header"},
  1007. {meta_FSTM, "Nintendo FSTM Header"},
  1008. {meta_KT_WIIBGM, "Koei Tecmo WiiBGM Header"},
  1009. {meta_KTSS, "Koei Tecmo Nintendo Stream KTSS Header"},
  1010. {meta_IDSP_NUS3, "Namco NUS3 IDSP header"},
  1011. {meta_WIIU_BTSND, "Nintendo Wii U Menu Boot Sound"},
  1012. {meta_MCA, "Capcom MCA header"},
  1013. {meta_XB3D_ADX, "Xenoblade 3D ADX header"},
  1014. {meta_HCA, "CRI HCA header"},
  1015. {meta_PS2_SVAG_SNK, "SNK SVAG header"},
  1016. {meta_PS2_VDS_VDM, "Procyon Studio VDS/VDM header"},
  1017. {meta_FFMPEG, "FFmpeg supported file format"},
  1018. {meta_X360_CXS, "tri-Crescendo CXS header"},
  1019. {meta_AKB, "Square-Enix AKB header"},
  1020. {meta_NUB_XMA, "Namco NUB XMA header"},
  1021. {meta_X360_PASX, "Namco PASX header"},
  1022. {meta_XMA_RIFF, "Microsoft XMA RIFF header"},
  1023. {meta_X360_AST, "Capcom AST (X360) header"},
  1024. {meta_WWISE_RIFF, "Audiokinetic Wwise RIFF header"},
  1025. {meta_UBI_RAKI, "Ubisoft RAKI header"},
  1026. {meta_SXD, "Sony SXD header"},
  1027. {meta_OGL, "Shin'en OGL header"},
  1028. {meta_MC3, "Paradigm MC3 header"},
  1029. {meta_GTD, "GTD/GHS header"},
  1030. {meta_TA_AAC_X360, "tri-Ace AAC (X360) header"},
  1031. {meta_TA_AAC_PS3, "tri-Ace AAC (PS3) header"},
  1032. {meta_TA_AAC_MOBILE, "tri-Ace AAC (Mobile) header"},
  1033. {meta_MTA2, "Konami MTA2 header"},
  1034. {meta_NGC_ULW, "Criterion ULW raw header"},
  1035. {meta_PC_XA30, "Reflections XA30 PC header"},
  1036. {meta_WII_04SW, "Reflections 04SW header"},
  1037. {meta_TXTH, "TXTH generic header"},
  1038. {meta_EA_BNK, "Electronic Arts BNK header"},
  1039. {meta_SK_AUD, "Silicon Knights AUD header"},
  1040. {meta_AHX, "CRI AHX header"},
  1041. {meta_STM, "Angel Studios/Rockstar San Diego STMA header"},
  1042. {meta_BINK, "RAD Game Tools Bink header"},
  1043. {meta_EA_SNU, "Electronic Arts SNU header"},
  1044. {meta_AWC, "Rockstar AWC header"},
  1045. {meta_OPUS, "Nintendo Switch OPUS header"},
  1046. {meta_PC_AL2, "Illwinter Game Design AL2 raw header"},
  1047. {meta_PC_AST, "Capcom AST (PC) header"},
  1048. {meta_UBI_SB, "Ubisoft SBx header"},
  1049. {meta_NAAC, "Namco NAAC header"},
  1050. {meta_EZW, "EZ2DJ EZWAVE header"},
  1051. {meta_VXN, "Gameloft VXN header"},
  1052. {meta_EA_SNR_SNS, "Electronic Arts SNR+SNS header"},
  1053. {meta_EA_SPS, "Electronic Arts SPS header"},
  1054. {meta_NGC_VID1, "Neversoft VID1 header"},
  1055. {meta_PC_FLX, "Ultima IX .FLX header"},
  1056. {meta_MOGG, "Harmonix Music Systems MOGG Vorbis"},
  1057. {meta_OGG_VORBIS, "Ogg Vorbis header"},
  1058. {meta_OGG_SLI, "Ogg Vorbis header (.sli looping)"},
  1059. {meta_OPUS_SLI, "Ogg Opus header (.sli looping)"},
  1060. {meta_OGG_SFL, "Ogg Vorbis header (SFPL looping)"},
  1061. {meta_OGG_KOVS, "Ogg Vorbis header (KOVS)"},
  1062. {meta_OGG_encrypted, "Ogg Vorbis header (encrypted)"},
  1063. {meta_KMA9, "Koei Tecmo KMA9 header"},
  1064. {meta_XWC, "Starbreeze XWC header"},
  1065. {meta_SQEX_SAB, "Square-Enix SAB header"},
  1066. {meta_SQEX_MAB, "Square-Enix MAB header"},
  1067. {meta_WAF, "KID WAF header"},
  1068. {meta_WAVE, "EngineBlack .WAVE header"},
  1069. {meta_WAVE_segmented, "EngineBlack .WAVE header (segmented)"},
  1070. {meta_SMV, "Cho Aniki Zero .SMV header"},
  1071. {meta_NXAP, "Nex NXAP header"},
  1072. {meta_EA_WVE_AU00, "Electronic Arts WVE (au00) header"},
  1073. {meta_EA_WVE_AD10, "Electronic Arts WVE (Ad10) header"},
  1074. {meta_STHD, "Dream Factory STHD header"},
  1075. {meta_MP4, "MP4/AAC header"},
  1076. {meta_PCM_SRE, "Capcom .PCM+SRE header"},
  1077. {meta_DSP_MCADPCM, "Bethesda .mcadpcm header"},
  1078. {meta_UBI_LYN, "Ubisoft LyN RIFF header"},
  1079. {meta_MSB_MSH, "Sony MultiStream MSH+MSB header"},
  1080. {meta_TXTP, "TXTP generic header"},
  1081. {meta_SMC_SMH, "Genki SMC+SMH header"},
  1082. {meta_PPST, "Parappa PPST header"},
  1083. {meta_OPUS_PPP, "AT9 OPUS header"},
  1084. {meta_UBI_BAO, "Ubisoft BAO header"},
  1085. {meta_DSP_SWITCH_AUDIO, "UE4 Switch Audio header"},
  1086. {meta_TA_AAC_VITA, "tri-Ace AAC (Vita) header"},
  1087. {meta_DSP_SADF, "Procyon Studio SADF header"},
  1088. {meta_H4M, "Hudson HVQM4 header"},
  1089. {meta_ASF, "Argonaut ASF header"},
  1090. {meta_XMD, "Konami XMD header"},
  1091. {meta_CKS, "Cricket Audio CKS header"},
  1092. {meta_CKB, "Cricket Audio CKB header"},
  1093. {meta_WV6, "Gorilla Systems WV6 header"},
  1094. {meta_WAVEBATCH, "Firebrand Games WBAT header"},
  1095. {meta_HD3_BD3, "Sony HD3+BD3 header"},
  1096. {meta_BNK_SONY, "Sony BNK header"},
  1097. {meta_SCD_SSCF, "Square-Enix SCD (SSCF) header"},
  1098. {meta_DSP_VAG, ".VAG DSP header"},
  1099. {meta_DSP_ITL, ".ITL DSP header"},
  1100. {meta_A2M, "Artificial Mind & Movement A2M header"},
  1101. {meta_AHV, "Amuze AHV header"},
  1102. {meta_MSV, "Sony MultiStream MSV header"},
  1103. {meta_SDF, "Beyond Reality SDF header"},
  1104. {meta_SVG, "High Voltage SVG header"},
  1105. {meta_VIS, "Konami VIS header"},
  1106. {meta_VAI, "Asobo Studio .VAI header"},
  1107. {meta_AIF_ASOBO, "Asobo Studio .AIF header"},
  1108. {meta_AO, "AlphaOgg .AO header"},
  1109. {meta_APC, "Cryo APC header"},
  1110. {meta_WV2, "Infogrames North America WAV2 header"},
  1111. {meta_XAU_KONAMI, "Konami XAU header"},
  1112. {meta_DERF, "Xilam DERF header"},
  1113. {meta_UTK, "Maxis UTK header"},
  1114. {meta_NXA, "Entergram NXA header"},
  1115. {meta_ADPCM_CAPCOM, "Capcom .ADPCM header"},
  1116. {meta_UE4OPUS, "Epic Games UE4OPUS header"},
  1117. {meta_XWMA, "Microsoft XWMA RIFF header"},
  1118. {meta_VA3, "Konami VA3 header" },
  1119. {meta_XOPUS, "Exient XOPUS header"},
  1120. {meta_VS_SQUARE, "Square VS header"},
  1121. {meta_NWAV, "Chunsoft NWAV header"},
  1122. {meta_XPCM, "Circus XPCM header"},
  1123. {meta_MSF_TAMASOFT, "Tama-Soft MSF header"},
  1124. {meta_XPS_DAT, "From Software .XPS+DAT header"},
  1125. {meta_ZSND, "Vicarious Visions ZSND header"},
  1126. {meta_DSP_ADPCMX, "AQUASTYLE ADPY header"},
  1127. {meta_OGG_OPUS, "Ogg Opus header"},
  1128. {meta_IMC, "iNiS .IMC header"},
  1129. {meta_GIN, "Electronic Arts Gnsu header"},
  1130. {meta_DSF, "Ocean DSF header"},
  1131. {meta_208, "Ocean .208 header"},
  1132. {meta_DSP_DS2, "LucasArts .DS2 header"},
  1133. {meta_MUS_VC, "Vicious Cycle .MUS header"},
  1134. {meta_STRM_ABYLIGHT, "Abylight STRM header"},
  1135. {meta_MSF_KONAMI, "Konami MSF header"},
  1136. {meta_XWMA_KONAMI, "Konami XWMA header"},
  1137. {meta_9TAV, "Konami 9TAV header"},
  1138. {meta_BWAV, "Nintendo BWAV header"},
  1139. };
  1140. const char * get_vgmstream_coding_description(coding_t coding_type) {
  1141. int i, list_length;
  1142. list_length = sizeof(coding_info_list) / sizeof(coding_info);
  1143. for (i=0; i < list_length; i++) {
  1144. if (coding_info_list[i].type == coding_type)
  1145. return coding_info_list[i].description;
  1146. }
  1147. return NULL;
  1148. }
  1149. const char * get_vgmstream_layout_description(layout_t layout_type) {
  1150. int i, list_length;
  1151. list_length = sizeof(layout_info_list) / sizeof(layout_info);
  1152. for (i=0; i < list_length; i++) {
  1153. if (layout_info_list[i].type == layout_type)
  1154. return layout_info_list[i].description;
  1155. }
  1156. return NULL;
  1157. }
  1158. const char * get_vgmstream_meta_description(meta_t meta_type) {
  1159. int i, list_length;
  1160. list_length = sizeof(meta_info_list) / sizeof(meta_info);
  1161. for (i=0; i < list_length; i++) {
  1162. if (meta_info_list[i].type == meta_type)
  1163. return meta_info_list[i].description;
  1164. }
  1165. return NULL;
  1166. }