Commit Graph

372 Commits

Author SHA1 Message Date
bnnm
229783f5f0 Make decoder init functions for G722.1/G719 2017-10-14 12:41:59 +02:00
bnnm
c770490b3d Add AL2 meta + A-law decoder [Conquest of Elysium 3 (PC)] 2017-10-08 17:51:54 +02:00
bnnm
874694bd0a Tweak XMA1 and Wwise XWMA sample counts, XMA2 looping, XMA1 channels 2017-10-08 17:34:07 +02:00
bnnm
16786b78d4 Add .opus [Lego City Undercover] 2017-09-30 01:27:47 +02:00
bnnm
abaefd17cd Rename wwise_opus to switch_opus as it's apparently so 2017-09-30 00:16:40 +02:00
bnnm
c63866aad6 Fix Wwise Opus abrupt end 2017-09-29 23:29:06 +02:00
bnnm
8aae6ed794 Fix multichannel EA-XMA [Dante's Inferno (X360)] 2017-09-29 23:28:27 +02:00
bnnm
0bb62ce57d Minor comments/documentation 2017-09-29 23:26:42 +02:00
bnnm
f25d559f68 Add Wwise Opus 2017-09-24 18:55:25 +02:00
bnnm
a8370b4892 Add EA-XMA for EA SNU [Dante's Inferno (X360)]
only 1/2ch works correctly as multichannel layout need to be
investigated
2017-09-24 18:52:09 +02:00
bnnm
be8357926d Fix compiling with codecs disabled 2017-09-24 18:45:39 +02:00
bnnm
6da7a86cc4 Add FFmpeg custom IO callbacks for data transmogrifiers
Those are custom read/seeks that can transform data on the fly, for
games that use variations of regular FFmpeg codecs. When FFmpeg tries to
read N bytes, the code may read less/more but still fill the buffer with
N transformed bytes. Must handle "real" (data) and "virtual"
(transformed) offset/sizes.

Works with fake headers too, but "virtual" offset/size now include the
fake header, as I found hard to keep in mind when the header_size was
being added/substracted (could be clearer).
2017-09-24 18:40:59 +02:00
bnnm
952962f91b Fix AWC MP3 channel desync in some songs [Red Read Redemption (PS3)] 2017-09-17 03:36:01 +02:00
bnnm
9ed189ffe8 Fix Ogg leak 2017-09-17 03:35:24 +02:00
bnnm
ab4e1234d9 Remove unneeded MT info 2017-08-28 20:42:37 +02:00
bnnm
41b22c2699 Add AWC PCM/IMA (non-encrypted only) [GTA5 (PC)] 2017-08-28 16:07:09 +02:00
bnnm
953022b983 Add AWC MP3 [Red Dead Redemption (PS3), GTA5 (PS3)] 2017-08-28 15:14:24 +02:00
bnnm
5d12d6fb67 Add big endian mode to coding_PCM16LE_int and rename to coding_PCM16_int 2017-08-27 22:17:13 +02:00
bnnm
7875090f0f Improve PCMFLOAT 2017-08-27 21:54:43 +02:00
bnnm
adb225c180 Add EA SNU + EA-XAS decoder + SNS blocks [Dead Space, The Godfather 2] 2017-08-20 02:18:48 +02:00
bnnm
c953685c80 Rename ea_decoder to ea_xa_decoder 2017-08-20 02:12:15 +02:00
bnnm
0103f449d0 Pass stream_index to FFmpeg manually for flexibility 2017-08-19 10:28:28 +02:00
bnnm
5cddab629d Add FFmpeg audio stream selection 2017-08-18 18:56:43 +02:00
bnnm
6642607d0e Add FSB5 PCMFLOAT + decoder [Anima Gate of Memories (PC)] 2017-08-18 18:54:21 +02:00
bnnm
272b55cb3e Add DSP hist utils 2017-08-12 18:39:56 +02:00
bnnm
90aef437ea comments 2017-08-05 17:59:35 +02:00
bnnm
aaa2613802 Add EALayer3 v1 decoder for SCHl [EA games for PS2/Wii/X360/PS3] 2017-08-05 17:54:50 +02:00
bnnm
fadb999207 Add AHX type 0x08 decryption, with .ahxkey files (16b*3, start/mult/add) 2017-08-04 21:48:55 +02:00
bnnm
66219f6b37 Use sample buffers per stream in MPEG custom decoder
Simplifies the code somewhat and allows more flexibility for new custom
modes (like EALayer3, that can output PCM blocks before decoding
anything)
2017-08-04 21:29:58 +02:00
bnnm
cb05313b13 Add P3D MPEG decoder [Prototype 1/2 (PS3)], fix debug crap 2017-07-29 23:53:45 +02:00
bnnm
d54492cb95 Update MPEG "interleaved" decoder: now "custom", restructured, added AHX
To support future MPEGs of uncertain layout and frame variations (namely
EALayer3) the code has been restructured: mpeg_decoder does stream
procesing and decoding, while mpeg_custom_utils_x does init and parsing
(write to data buffer + update offsets), per MPEG subtype. Internals
have changed but still gives byte-exact results.
AHX has been adapted to this format as a test. Some modes
(P3D/EALayer3/LyN/AWC) are defined for later development but will fail
on init ATM.
2017-07-29 23:14:04 +02:00
bnnm
6308818b77 Simplify MPEG coding/layouts to allow blocked layouts and future changes 2017-07-29 13:05:23 +02:00
bnnm
54ef2b5190 Add Silicon Knights .AUD + SK Vorbis [Eternal Darkness (GC)] 2017-07-29 11:46:53 +02:00
bnnm
fcf8a9485c Fix outbuf only being partially cleared when trying to read after EOF 2017-07-29 01:25:35 +02:00
bnnm
925934c53c Rename Vorbis files and cleanup 2017-07-28 23:43:49 +02:00
bnnm
bc8e2e9204 Unify fsb/wwise/ogl Vorbis decoders into a single decoder with subtypes 2017-07-28 23:26:58 +02:00
Christopher Snowhill
cad12760f2 Include system math.h header instead of possible project local header. 2017-07-23 17:08:20 -07:00
bnnm
523daaf18d Modify eacs_ima to not depend on get_high_nibble, document it's 2ch DVI 2017-07-23 17:08:10 +02:00
bnnm
a88cd8ca1b Add ima_bytes_to_samples helper 2017-07-23 12:49:10 +02:00
bnnm
366e3fcb9c Make XBOX_int write sample hist and skip last nibble to fix some files
Fixes Gauntlet Dark Legacy (Xbox) scratchy sound and the output is now
byte-exact in EA SCHl streams
2017-07-23 04:31:09 +02:00
bnnm
1fb02da34d Remove EA hack in XBOX decoder and modify XBOX_int (mono) for EA SCHl 2017-07-23 04:21:07 +02:00
bnnm
604f5ef507 Make EA-XA v2 decode using v1 table for clarity (no byte-diffs) 2017-07-21 21:03:51 +02:00
bnnm
2c61528241 Fix EAXA v1 not clamping ouput PCM hist, leading to small deviations
Now it's byte-exact vs EA's tools; EAXA v2 doesn't actually need it as
the encoder ensures no clamping is needed (for performance?)
2017-07-21 20:37:25 +02:00
bnnm
5fe6033442 Fix/improve EAXA naming scheme and detection/handling
EA's MT/MicroTalk is not the early version of EAXA as I thought, but a
rarely used VBR codec (ex. FIFA 2001/2002 PS2) seemingly related to
Westwood VBR ADPCM
2017-07-21 19:19:58 +02:00
bnnm
cce72d7aa5 Add EA SCHl Saturn + MT10 mono/int; changed Maxis_ADPCM to Maxis_MT10
Also fixed some issues with ADPCM hist in EA SCHl blocks
2017-07-08 00:27:36 +02:00
bnnm
68071467c2 Add MPEG to EA SCHl [Harry Potter and the Chamber of Secrets (PS2)] 2017-07-01 23:55:10 +02:00
bnnm
d85c033c9d rename some EA related things (cleanup)
- eaxa_decoder to ea_decoder
- ea_header to ea_schl
- ea_block* to ea_schl_block*
2017-07-01 23:27:35 +02:00
bnnm
bf34339b41 redo EA SCHl support [EA games from roughly 1997~2010]
* tested most variations using EA's tools
* added looping [Need for Speed II PC]
* added DSP support [3DS games]
* fixed PCM/EAXA/MT in some cases [PS2/GC/XBOX/Wii games]
* fixed sample rate/codec defaults, num_samples in some cases
* documented more header patches and other details (ex. "EA ADPCM" is
now EA MT/MicroTalk, as per EA's tools)
* (dev) some internals adapted for EA stuff
2017-07-01 23:02:24 +02:00
bnnm
86cb660f76 Define MPEG interleave type to improve and simplify some internals 2017-06-25 02:09:12 +02:00
bnnm
64500f025d Add PC XA30 + IMA decoder [Driver: Parallel Lines (PC)] 2017-06-24 23:30:10 +02:00
bnnm
3ca2ac1ee8 Fix segfault when reading MTA2 files after EOF (ex. trunkated) 2017-06-11 22:38:05 +02:00
bnnm
7e42eeca58 Add u-Law decoder + ULW meta [Burnout 1 GC] 2017-06-09 22:26:09 +02:00
bnnm
4263533ba9 Move FFmpeg code from ffmpeg.c to ffmpeg_decoder.c for consistency 2017-05-19 17:21:22 +02:00
bnnm
625c18a87e Add MTA2 decoder/meta support [Metal Gear Solid 4 (PS3)] 2017-05-18 19:16:44 +02:00
bnnm
2d5fece2af Added simple MTAF block skip; meta cleanup [Metal Gear Solid 3 HD] 2017-05-18 19:06:22 +02:00
Christopher Snowhill
70ea05cec2 We're sticking with C89 for now. 2017-05-13 16:48:35 -07:00
Christopher Snowhill
4e54a82900 Merge pull request #89 from Thealexbarney/adx
Improve ADX support
2017-05-13 16:42:23 -07:00
Alex Barney
5d43080167 ADX decoding accuracy improvements
Can't factor out a bit shift like you can division because of negative numbers.
Coefficients should be rounded toward 0, not negative infinity
2017-05-13 18:16:32 -05:00
Alex Barney
89cdaa83e9 Add support for encoding type 4 ADX 2017-05-13 17:37:24 -05:00
Alex Barney
ab647cc155 Add support for type 2 ADX files 2017-05-13 16:04:30 -05:00
Alex Barney
ef1499f480 Add support for varying ADX frame sizes 2017-05-13 15:17:27 -05:00
bnnm
64b4631ded Add some missing #ifdef VGM_USE_VORBIS 2017-05-12 19:25:20 +02:00
bnnm
8c39ad62cb Rename unix to audacious (folder and makefiles) 2017-05-01 17:08:52 +02:00
bnnm
1e793e577e Move HEVAG decoder to its own file 2017-05-01 16:58:33 +02:00
bnnm
1885f6e889 Autoupdate Audacious makefiles with .c list and git version on build 2017-05-01 13:33:45 +02:00
bnnm
16cc0c4131 Update Audacious scripts 2017-05-01 11:00:56 +02:00
bnnm
6cf0195d25 Move reset/seek/free code to decoders (vgmstream.c cleanup) 2017-04-29 22:37:15 +02:00
bnnm
4a83de7dae Added MC3 decoder/meta [MX Rider, Spy Hunter, T3] (thanks to daemon1) 2017-04-28 17:26:25 +02:00
bnnm
f153479383 Add OGL Vorbis decoder/meta [Jett Rocket (Wii), FAST Racing NEO (WiiU)] 2017-04-22 19:25:54 +02:00
bnnm
460beeb141 Remove unneeded TODO 2017-04-22 16:23:40 +02:00
bnnm
0bade4a931 Fix XMA1 parsing bugs 2017-04-22 13:11:11 +02:00
bnnm
a5e190eb89 Add wma_get_samples util 2017-04-22 11:30:24 +02:00
bnnm
4d4c5e140b Minor renames (xma_sample_data, ffmpeg_make_riff_xma_from_fmt) 2017-04-15 23:58:19 +02:00
bnnm
8479f96367 Import math.h for Vorbis 2017-04-15 23:22:50 +02:00
bnnm
5ec65f9587 Rename ffmpeg_decoder_utils.c to coding_utils.c and don't need FFmpeg
I feel they are general-purpose enough that shouldn't depend on FFmpeg
(ex. xma_samples should work whether FFmpeg, libav, or
super_multi_decoder is enabled)
2017-04-15 23:19:06 +02:00
bnnm
70f5dc4684 Fix Wwise Vorbis with header triad and remove disable flag 2017-04-15 23:03:26 +02:00
bnnm
ddf974a31a Remove FSB Vorbis disable flag 2017-04-15 22:59:36 +02:00
bnnm
54d1995dc8 Fix segfault when resetting non-looping Vorbis/MPEG files
Also, apparently reset shouldn't reset the streamfiles
2017-04-14 01:22:53 +02:00
bnnm
34999ddec9 Fixed bug when seeking in Wwise IMAs 2017-04-13 16:55:40 +02:00
bnnm
f067d4ddb9 Added Wwise Vorbis decoder and packed codebooks 2017-04-13 15:04:46 +02:00
bnnm
a468898855 Added Wwise IMA decoder; ms_ima_bytes_to_samples
There are some minor issues with seeking in odd samples to be fixed
2017-04-11 19:59:29 +02:00
bnnm
680ff51e64 Add extra XMA parsing utils 2017-04-08 13:32:11 +02:00
bnnm
b7ffd11fca Add/use atrac3_bytes_to_samples 2017-04-07 21:18:07 +02:00
bnnm
3619b14f8e Add Wwise XWMA [Halo 4 X360]; update xma_get_samples to read WMAPRO
Also ffmpeg_make_riff_xwma doesn't actually need num_samples and use
x_bytes_to_samples in Wwise
2017-04-07 20:21:55 +02:00
bnnm
d6f6798569 Add pcm/dsp/ps_bytes_to_samples helpers 2017-04-07 16:23:43 +02:00
bnnm
fc71e88019 Add pre-compiled FSB Vorbis setup/codebooks 2017-03-26 15:54:25 +02:00
bnnm
bed84fca2d Add alt loading mechanisms for FSB Vorbis setup/codebooks 2017-03-26 15:53:56 +02:00
bnnm
efdb885a79 Fix crash bug introduced when adding looping 2017-03-26 14:07:50 +02:00
Christopher Snowhill
886a25ca95 Try activating FSB Vorbis. 2017-03-25 18:47:17 -07:00
bnnm
ab05279629 Fix FSB vorbis looping 2017-03-25 19:05:18 +01:00
bnnm
01391f4d6d Add FSB Vorbis decoder 2017-03-25 14:57:44 +01:00
bnnm
bcf93deecd Extend ffmpeg's make_riff_xma_from_fmt/fmt_chunk_swap_endian for XMA1 2017-03-19 00:43:31 +01:00
bnnm
d6ce0f0ae3 Fix SGXD typo (SGDX to SGXD) 2017-03-18 15:07:58 +01:00
Christopher Snowhill
00523fb5ab Merge pull request #74 from bnnm/fsb-mpeg-bfstm
FSB MPEG, BFSTM
2017-03-13 18:29:50 -07:00
bnnm
0e10b75beb Fix interleaved FSB MPEG decoding
Padding doesn't apply to Layer II FSBs, and it needed to manually get
info from MPEG frames since mpg123 functions weren't always working.
2017-03-13 20:04:09 +01:00
Christopher Snowhill
698269dd14 Convert Japanese comments from EUCJP to UTF-8. 2017-03-12 22:19:22 -07:00
bnnm
1a0da46703 Some more IMA cleanup (no functional changes) 2017-03-10 18:08:12 +01:00
bnnm
b8a25dbc27 Some IMA cleanup (no functional changes) 2017-03-09 21:47:23 +01:00
bnnm
2cdef093cb Added FFmpeg fake atrac3plus RIFF 2017-03-09 19:13:05 +01:00
bnnm
af0c31d61f Minor tweaks/log 2017-03-05 17:35:45 +01:00
bnnm
d2a31378c2 move xma_get_samples from xma.c to FFmpeg utils (needed by XWB)
xma.c now uses ffmpeg's fmt_chunk_swap_endian, too
2017-02-25 19:52:07 +01:00
bnnm
fbb9af5410 Tweak FFmpeg XMA1 fake RIFF 2017-02-25 17:29:25 +01:00
bnnm
04f2cb0344 Moved FFmpeg RIFF utils to their own file
I'm going to add more later so it was getting kind of unwieldy
2017-02-25 13:54:05 +01:00
bnnm
248ec021d8 Add FFmpeg fake riff helpers: XMA1, XWMA, XMA2 tweaks 2017-02-25 12:25:10 +01:00
bnnm
7f98f5b4f6 Remove MPEG sample rate check and channel/sample rate pointer updates
Rarely used, frame sample rate/channels are now exposed, and FFmpeg will
end up playing any MP3 anyway.
Encoders may modify sample rate to adjust looping to frame boundaries,
too.
2017-02-19 21:16:09 +01:00
bnnm
0101572718 Add multichannel MPEG decoder
Supports fixed-size frames (for XVAG) or variable/padded frames (for
FSB), but FSB support has some bugs so it's not used yet.
2017-02-19 20:20:13 +01:00
bnnm
e0d129e06c Prepare MPEG stuff for multichannel 2017-02-18 18:27:21 +01:00
bnnm
7418b61793 Hide buffer and mpeg_bytes_to_samples MPEG internals; cleanup
Also removes VBR check from metas; it's only needed because
mpeg_bytes_to_samples doesn't work with VBR, but now it'll return 0,
which would be validated later.
2017-02-18 00:17:38 +01:00
bnnm
2e41586e68 Move AHX MPEG init code to mpeg_decoder and other cleanup 2017-02-17 18:35:58 +01:00
bnnm
df84602e85 Move reset/seek/free MPEG code to mpeg_decoder (for later changes) 2017-02-17 17:20:40 +01:00
bnnm
9317ce9cc2 Add ffmpeg_set_skip_samples to manually fix encoder delay in some cases 2017-02-12 13:17:01 +01:00
bnnm
cc181f5e0d Added FSB multichannel IMA 2017-02-04 23:17:56 +01:00
bnnm
b7ee1f8f02 Add todo/note in XBOX IMAs 2017-02-04 19:37:00 +01:00
bnnm
6cd991ebf6 Added FSB multichannel IMA
Variation of the XBOX IMA used in >2ch FSB (interleaved header)
2017-02-04 19:19:51 +01:00
bnnm
068284ff09 Add dsp_read_coefs_le 2017-01-25 22:20:01 +01:00
bnnm
a809a7c628 Add Omikron: The Nomad Soul IMA ADPCM coding and meta 2017-01-25 20:25:39 +01:00
bnnm
1d95cfc138 Normalize coding style to understand IMAs better + highlight differences
There are no functional differences, all IMAs give byte-exact results
compared to prev versions
2017-01-25 20:19:13 +01:00
Christopher Snowhill
05a33eee1e And this fixes that broken decoder in the event of starting on odd samples. 2017-01-16 22:26:08 -08:00
bnnm
2d52bc2921 Wrong func definition 2017-01-14 22:41:37 +01:00
bnnm
376b4acbb2 Minor func rename (ffmpeg_make_riff_xma2_from_fmt) 2017-01-14 22:25:15 +01:00
bnnm
14d2363670 Moved dsp_read_coefs_be to ngc_dsp_decoder.c 2017-01-13 23:56:48 +01:00
bnnm
f5750ba2cc Moved make_riff_x to ffmpeg_decoder.c (only actually used by FFmpeg)
Also added make_riff_xma2_from_fmt_be
2017-01-13 23:47:52 +01:00
bnnm
86ba7a6a23 Remove some old DEBUG code 2017-01-08 02:58:52 +01:00
bnnm
7e520162a3 FFmpeg: remove ACCURATE_LOOPING flag now it's battle-tested
It's fast enough and the older looping code would need to be redone
anyway
2017-01-08 02:54:18 +01:00
bnnm
c7c1564d9f Minor cleanups (no functionality changes)
- added comments, code alignment for clarity
- renamed some decoders for consistency (ex. eaxa > ea_xa, invert_psx >
psx_bmdx, vgm_adpcm_cfg > psx_cfg)
- removed layout_dkt_interleave (same as nolayout)
- removed skip_last_channel (not used anymore)
- removed meta_DSP_HALP (not used anymore)
2017-01-08 01:09:20 +01:00
Christopher Snowhill
8ef18d71ee Fix C99-ism that MSVC 2010 doesn't like. 2017-01-02 10:27:27 -08:00
bnnm
ee5a40224d Added PS ADPCM of configurable frame size (FF XI, Blur, Afrika)
This fuses the FF XI/BSF/Short VAG decoder variants into a single one
(FF XI alone has 4 possible frame sizes); also fixed FF XI sample rate
and some cleanup.
2016-12-29 23:34:21 +01:00
bnnm
790bb79cc9 Allow to disable mpg123 stderr output for recoverable MPEGs (FSBs) 2016-12-28 01:38:56 +01:00
bnnm
08a1a50ccb Fixed regression/segfault in multistream .mtaf [MGS3]; cleanup
Apparently some MTAF ripped with an old tool contain block data, and a
previous change attempted to support them. This broke multistream MTAF
(block header starts with 0x01, and frame header starts with 0x00, but
also 0x01 in multistreams).
Those MTAF should be re-ripped without blocks.
2016-12-27 14:35:23 +01:00
bnnm
ea7b8d2570 Added short VAG variation (SGXD type 5 found in PS3 Afrika) 2016-12-21 23:00:34 +01:00
bnnm
0b3050cf0a Added PSVita HEVAG (original algorithm by daemon1) 2016-12-21 20:44:16 +01:00
bnnm
cdfd47eb7b FFmpeg: expose block/frame size, rename totalFrames for clarity 2016-12-10 15:53:29 +01:00
bnnm
c5c97c4027 Fixed discard in edge cases 2016-12-03 18:17:37 +01:00
bnnm
0faa3286aa Don't manually check framesRead and rely on FFmpeg's EOFs
FFmpeg's duration isn't always reliable (ie. bad headers) and the
decoder detects EOFs already, extra decoding attempts should be ignored.
This way vgmstream can use other values without modifying
ffmpeg_codec_data's state.
2016-12-03 11:42:38 +01:00
bnnm
609bfb5d61 Minor fixes and cleanup 2016-12-01 23:49:00 +01:00
bnnm
f5da8281e2 Move FFmpeg reset to ffmpeg_decoder (cleanup) 2016-12-01 19:58:51 +01:00
bnnm
2754f05b11 Move FFmpeg looping to ffmpeg_decoder for further changes (cleanup) 2016-11-30 23:48:49 +01:00
bnnm
b9db20283d FFmpeg: keep block size constant (for edge loops), don't write on EOF 2016-11-29 20:22:20 +01:00
Christopher Snowhill
537dc454a5 Merge pull request #41 from bnnm/build-fixes
Build fixes: FFMPEG support in test/winamp
2016-11-20 11:36:37 -08:00
bnnm
cda61c3eeb simplify slightly discarding 2016-11-20 18:55:00 +01:00
bnnm
729658a19c fix discard samples (looping works now) + document 2016-11-20 15:39:21 +01:00
bnnm
81d1f410a1 Fix missing decode_hca 2016-11-15 23:45:02 +01:00
Christopher Snowhill
59b49aa99c Updated PS2 MTAF decoder for features in the format that had yet to be discovered. 2016-08-24 17:33:18 -07:00
Christopher Snowhill
42c00f304b Add rollback to FFmpeg loop seeking, since FFmpeg doesn't seem to institute any rollback of its own. 2016-08-14 15:18:34 -07:00
Chris Moeller
cbe9bc3d6b Added FFmpeg support, and fixed a long standing issue with broken loops locking up the decoder. 2016-07-16 23:02:27 -07:00
Chris Moeller
33563f4e7c Add HCA support. 2016-06-28 00:20:37 -07:00
Chris Moeller
4bfa73f31a Replace references to long with int32_t, fixing several sample decoders on 64 bit platforms 2015-08-02 00:20:57 -07:00
libertyernie
346d18cce4 Ensure that Ogg Vorbis output is in host endian 2015-05-13 13:11:24 -05:00
Chris Moeller
1ad884287b Added G.719 decoding support to BNSF input 2015-01-24 21:08:25 -08:00
Brandon
85325442ba Fixes compile error if VGM_USE_MP4V2 and VGM_USE_FDKAAC are not defined 2014-08-05 00:59:58 -07:00