Commit Graph

53 Commits

Author SHA1 Message Date
bnnm
467ca19450 Fix XMA gapless/looping/samples
fixes: standard, wem, xwc, xwb, xnb, xwx, rak, pk, txth, genh, seg, rsd, past, p3d, nub-xma, gtd, gsp, fsb, eaac, cxs, awc, aac
2018-11-18 17:01:31 +01:00
bnnm
bee3adc95b Document SQEX SCD looping issues in MPEG 2018-08-26 22:37:04 +02:00
bnnm
d22ee3051a Clean FFmpeg skip samples parsing 2018-08-14 16:35:17 +02:00
bnnm
c843c350d1 Clean scd_int layout and rename to layered layout for later reuse 2018-03-30 21:28:32 +02:00
bnnm
642c833fcd Simplify STREAMFILE handling in scd_int_layout
It's not the easiest thing to follow so here is what's going on with
STREAMFILEs:
- external player opens base-streamfile, with a base FILE
- meta scd parses stuff, then per DSP channel/layer:
  - open temp-streamfile, which does custom IO with base-streamfile
(doesn't open any FILE)
  - pass temp-streamfile to init_vgmstream_ngc_dsp_std
  - init parses ok, and re-opens temp-streamfile (with custom IO) as its
own dsp-vgmstream-streamfile; internally it does fopen/fdopen the
original FILE from base-streamfile
  - scd_int_layout stores the newly created VGMSTREAM (internally has
the dsp-vgmstream-streamfile too)
  - close temp-streamfile, that doesn't close base-streamfile as it's
wrapped to avoid doing so, nor affects dsp-vgmstream-streamfile in any
way.
- meta parsing is done, so external player closes base-streamfile (but
the re-fopen'ed dsp-vgmstream-streamfile FILE remains)
- vgmstream renders pcm buffers, etc
- finally player calls close_vgmstream
  - scd_int_layout calls close_vgmstream for each stored VGMSTREAM
  - the VGMSTREAM internally closes the dsp-vgmstream-streamfile, which
in turn closes its own FILE

So ultimately all FILEs, STREAMFILEs and their clones should be properly
handled and closed.
2018-03-30 19:14:37 +02:00
bnnm
0ff0d864ee Remove SCDINTSTREAMFILE and use custom_io streamfile instead 2018-03-30 18:16:17 +02:00
bnnm
e2a3590158 Remove layout_ogg and cleanup
Layout was not actually needed, remove to simplify. Rename
vgm_vorbis_info_t to ogg_vorbis_meta_info_t to clarify it's only for
meta, also don't pass filename to init ogg (not useful even as an
optimization since getting the name is a minuscule part in parsing a
meta)
2018-03-23 16:34:48 +01:00
bnnm
fd21da2c61 Add SCD v4 ATRAC9 [Kingdom Hearts 2.8 (PS4)] 2018-02-03 01:27:35 +01:00
bnnm
528b5c3197 Fix bitrate for subsongs and rename streams > subsongs 2018-01-28 00:41:25 +01:00
bnnm
09f263f9cf Fix compiler warning 2018-01-14 01:12:58 +01:00
bnnm
b7d65f21dd Fix SCD Ogg subsong sizes, detection and V3 not decrypting last frames 2018-01-11 23:26:24 +01:00
bnnm
7134610495 Clean Ogg Vorbis code and IO/decryption callbacks for future changes 2018-01-10 21:12:23 +01:00
bnnm
bcad321b6d Fix SCD with dummy entries and add PS-ADPCM [Final Fantasy Type-0] 2018-01-10 20:31:57 +01:00
bnnm
757e4cde69 Rename init_x_codec_data to init_x for consistency 2018-01-04 23:22:03 +01:00
bnnm
dd978dc5f4 Remove unnecessary SCD sample rate fix 2017-12-17 19:46:41 +01:00
bnnm
a3b991ac3f Modify SCD/P3D/FSB/XVAG interleave and fix short last interleave
Previously, the streams' offsets needed to be pre-adjusted with the
interleave; now assumes all streams start in the same offset (first
stream).
This simplifies short last interleaves (SCD/P3D) and makes
layout_mpeg_custom unnecessary (also allows theoretical variable-sized
interleaves).
2017-12-17 19:25:10 +01:00
bnnm
b65765a56e Fix multistream MPEG SCD [Final Fantaxy XIII-2 (PS3)] 2017-12-17 16:39:36 +01:00
bnnm
5672cac597 Move some meta STREAMFILEs to separate file for visibility
The code may be standardized and extended in the future for some meta
needing similar features, so this is just to signal its existence
2017-12-06 12:15:27 +01:00
bnnm
dd027f32eb Fix some SCD with MARK chunk [Lightning Returns X360] 2017-09-17 03:35:03 +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
d219804b99 Add stream selection and/or stream name reading for some formats 2017-08-12 11:46:28 +02:00
bnnm
6308818b77 Simplify MPEG coding/layouts to allow blocked layouts and future changes 2017-07-29 13:05:23 +02:00
bnnm
6a922be613 Fix encoder delay/skip samples in: SCD/SGXD/RIFF/MSF ATRAC3/p, SGXD AC3 2017-05-20 18:00:27 +02:00
bnnm
64b4631ded Add some missing #ifdef VGM_USE_VORBIS 2017-05-12 19:25:20 +02:00
bnnm
4d4c5e140b Minor renames (xma_sample_data, ffmpeg_make_riff_xma_from_fmt) 2017-04-15 23:58:19 +02: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
a4327c3529 Improve total_streams check 2017-03-18 17:17:24 +01:00
bnnm
8fc73c6d02 Minor SCD cleanup 2017-03-09 20:56:26 +01:00
bnnm
9d97a346d3 Save number of streams info 2017-03-04 02:16:35 +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
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
b726349ece Fix multistream count offset [Dragon Quest X SFX] 2017-01-19 00:33:12 +01:00
bnnm
78349c3c8f Move "skip chunks" to OGG, only FFXIV needs it and breaks some DQ10 DSPs 2017-01-19 00:29:55 +01:00
bnnm
ef44b5b5cc SCD DSP: validate size/offset and don't crash when failing to open 2017-01-18 21:19:43 +01:00
bnnm
85e63743b7 Added SCD DSP Wii U [Dragon Quest X (Wii U)] 2017-01-15 20:42:26 +01:00
bnnm
72f252327f Added SCD ATRAC3plus [Lord of Arcana (PSP)] 2017-01-14 23:00:19 +01:00
bnnm
d3ba419aa9 Fixed SCD XMA [Final Fantasy XIII (X360)] 2017-01-14 22:27:52 +01:00
bnnm
8b8a9ecd4e Basic support for multi-stream SCD (FF XIV sfx) 2017-01-03 21:13:36 +01:00
bnnm
8913ccdd47 Add SCD OGG v3 decryption (FF XIV Heavensward)
Original code by ShadowRoze and algorithm by Ioncannon.
2017-01-03 19:03:08 +01:00
bnnm
cdfd47eb7b FFmpeg: expose block/frame size, rename totalFrames for clarity 2016-12-10 15:53:29 +01:00
Christopher Snowhill
add0dba4eb Fix for compiling without FFmpeg. 2016-07-25 20:41:26 -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
halleyscometsw
44075c4e91 clean up some warning-causing ugliness 2014-06-26 21:12:48 -07:00
Chris Moeller
b2c8e5cbac Another Drag-On Dragoon 3weird samplerate (40999)
From a set of files called BGM_TEST00_*
2014-03-14 22:42:06 -07:00
Chris Moeller
43866fd9ed .XXX from Drag-On Dragoon 3 (PS3) is scd, but has 48khz MPEG with srate 47999 2014-02-25 22:26:02 -08:00
Chris Moeller
142cfc971d Raised path length limit to 32767 characters, controlled by a global enum definition 2013-05-26 20:55:50 -07:00
halleyscometsw
a4bb71f17d DSP SCD support for DQX.
Not completely happy with how this turned out (see TODOs), but it works.


git-svn-id: https://vgmstream.svn.sourceforge.net/svnroot/vgmstream@992 51a99a44-fe44-0410-b1ba-c3e57ba2b86b
2012-08-24 17:36:40 +00:00
halleyscometsw
8d8a5ab55a fix FFXIV 03.scd (ability to skip MARK), some groundwork for Wii DSP ADPCM scd
git-svn-id: https://vgmstream.svn.sourceforge.net/svnroot/vgmstream@982 51a99a44-fe44-0410-b1ba-c3e57ba2b86b
2012-08-09 21:42:02 +00:00
bxaimc
fdd621cb59 You can't see it. It's electric! Or unnecessary...
git-svn-id: https://vgmstream.svn.sourceforge.net/svnroot/vgmstream@972 51a99a44-fe44-0410-b1ba-c3e57ba2b86b
2011-12-16 03:45:16 +00:00
halleyscometsw
810f6e4635 oldschool C
git-svn-id: https://vgmstream.svn.sourceforge.net/svnroot/vgmstream@971 51a99a44-fe44-0410-b1ba-c3e57ba2b86b
2011-12-16 03:31:08 +00:00