1
0
Fork 0
No description
Find a file
krcroft edad78b5e0 Adapt and improve audio-handling in the CDROM sources
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
2019-11-06 05:45:42 +01:00
.github/workflows Add new dependencies to the workflows and scripts 2019-11-05 17:18:22 -08:00
docs Merge branch 'svn/trunk' 2019-10-03 23:44:48 +02:00
include Merge branch 'svn/trunk' r4279 2019-11-02 19:30:48 +01:00
scripts Add new dependencies to the workflows and scripts 2019-11-05 17:18:22 -08:00
src Adapt and improve audio-handling in the CDROM sources 2019-11-06 05:45:42 +01:00
visualc_net Transform zmbv into a project inside dosbox solution 2019-10-02 12:03:03 +02:00
.gitignore Simplify package listing script and standardize workflows 2019-11-02 07:36:49 -07:00
acinclude.m4 Update year and address of FSF 2019-01-25 14:09:58 +00:00
AUTHORS Update authors 2010-04-20 12:51:03 +00:00
autogen.sh Allow less beautiful version numbers. 2007-02-04 10:46:34 +00:00
ChangeLog <erge 0.74-2 documentation changes into trunk 2018-08-31 17:43:09 +00:00
configure.ac Merge branch 'svn/trunk' 2019-09-30 22:21:21 +02:00
COPYING Update year and address of FSF 2019-01-25 14:09:58 +00:00
INSTALL Upgrade dosbox solution and project to VS2019 2019-10-02 12:03:03 +02:00
Makefile.am Simplify package listing script and standardize workflows 2019-11-02 07:36:49 -07:00
NEWS <erge 0.74-2 documentation changes into trunk 2018-08-31 17:43:09 +00:00
README <erge 0.74-2 documentation changes into trunk 2018-08-31 17:43:09 +00:00
README.md Initial commit 2019-09-15 00:08:31 +02:00
THANKS Updated 2010-05-09 11:07:51 +00:00
VERSION <erge 0.74-2 documentation changes into trunk 2018-08-31 17:43:09 +00:00

dosbox-staging