No description
Runtime improvements: - Replaces the existing audio callback routine with an efficient chunked circular-buffer audio reader - Replaces assumptions that all audio tracks are 44.1 kHz & stereo. The mixer is now fed data at the actual compressed track's rate and channel count - Eliminates all SDL locks in the audio code in favour of mixer state control - Queries the codec for track-length instead of using hundreds of iterative decimating seeks to determine track length (loading a 99-track CUE now takes 0.1 user-seconds versus 3+ seconds previously) - Seeks are performed within the already-decoded buffer (for all codecs) instead of discarding and re-running the decode sequence - SDL_Sound's buffer-size is now set once and never resized, which eliminates repeated re-malloc'ing in the library - Only one seek is performed per-playback sequence followed by sequential decodes, similar to a physical CDROM (The baseline dosbox performs a seek for every 2352-bytes of uncompressed audio) - The DOSBox mixer is now only active during playback sequences and fully dormant otherwise (baseline dosbox instead performs hundreds of calls/second with empty data) - When using Opus audio tracks, and if your dosbox.conf [mixer] rate=48000, then you will (very likely) achieve sample-exact unadulterated pass-through along your entire audio chain from the decoder, to DOSBox, to your operating system's software mixer, to your sound card driver, to your sound card, to your speakers, or to your digital receiver / USB speakers/headphones / or HDMI TV/screen. This is because almost all modern hardware DACs use a native sample rate of 48000 Source-level maintenance improvements: - It strips all pre-processor #ifdef branching for SDL_Sound from the code - Fixes all codec compiler warnings (in the modified files); builds have been tested with GCC 4 to 10, Clang 6 to 10, and MSVC 14 - Tested on Linux, macOS (Xcode), and Windows (MinGW MSYS 1.0) operating systems - Tested on i386, x86_64, ARM, and PowerPC (big-endian) architectures |
||
---|---|---|
.github/workflows | ||
docs | ||
include | ||
scripts | ||
src | ||
visualc_net | ||
.gitignore | ||
acinclude.m4 | ||
AUTHORS | ||
autogen.sh | ||
ChangeLog | ||
configure.ac | ||
COPYING | ||
INSTALL | ||
Makefile.am | ||
NEWS | ||
README | ||
README.md | ||
THANKS | ||
VERSION |