Now writes header sample and skips last nibble, as seen in MS's XDK
code, and simplifies multichannel layouts and fixes some theoretical
configurations
Currently same as ms_ima_bytes_to_samples, but this will change; renamed
for consistency with all other IMA variations. Also clean a bit some
metas since I was testing anyway.
Switch Opus uses the same output format that opus_demo writes. Each frame has an 8-byte header.
The first 4 bytes contain the length of the frame. The second 4 bytes contain the final state of the range coder.
8299edfc0c/src/opus_demo.c (L658-L681)
Makefile.audacious.am:
* Add test/ subdirectory to the Autotools build
* Add version.h to EXTRA_DIST so that "make distcheck" passes
audacious/Makefile.audacious.am:
* Install Audacious plug-in into the appropriate directory
* No need to include CXXFLAGS in AM_CXXFLAGS, as the former is already
included in the compiler invocation
configure.ac:
* Need to link to libvorbis in order for static-library builds
(--disable-shared) to link correctly
* Only add GCC-specific compiler flags if GCC is detected
* Tightened up the GCC warning flags
* Don't set LIBS, so that different targets can link against different
libraries
* Generate makefile for test/ subdirectory
src/Makefile.audacious.am:
* Install libvgmstream into the library directory
* Removed GCC-specific flag from AM_CFLAGS
* No need to include CFLAGS in AM_CFLAGS, as the former is already
included in the compiler invocation
* Add libvgmstream dependencies via LIBADD instead of global LIBS var
test/Makefile.audacious.am:
* New makefile template for test/ subdirectory
unbootstrap:
* Also remove "compile" script from bootstrap
This is needed for blocked layout, as it can't do normal interleave.
Probably could be fixed in the future to remove several superfluous
_int/block decoders
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).
The layout was designed to do subframe deinterleave (when
less-than-a-frame bytes of each channel are interleaved) in an array and
pass it to "mem" decoders.
In practice this only happens in a handful of formats, was only used
with DSP, and since making "mem" decoders is required it's simpler to
make normal decoders handling the byte layout directly.
In an effort to simplify vgmstream's layouts, code, and other esoteric
features I changed the old decode_ngc_dsp_mem for decode_ngc_dsp_subint;
results are byte-exact.