1
0
Fork 0
dosbox-staging/src/dos
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
..
.gitignore Import svn:ignore props to .gitignore files 2019-09-15 20:34:57 +02:00
cdrom.cpp Replace MSF_TO_FRAMES, FRAMES_TO_MSF macros 2019-11-02 19:29:03 +01:00
cdrom.h Adapt and improve audio-handling in the CDROM sources 2019-11-06 05:45:42 +01:00
cdrom_aspi_win32.cpp Update year and address of FSF 2019-01-25 14:09:58 +00:00
cdrom_image.cpp Adapt and improve audio-handling in the CDROM sources 2019-11-06 05:45:42 +01:00
cdrom_ioctl_linux.cpp Update year and address of FSF 2019-01-25 14:09:58 +00:00
cdrom_ioctl_os2.cpp Update year and address of FSF 2019-01-25 14:09:58 +00:00
cdrom_ioctl_win32.cpp Adapt and improve audio-handling in the CDROM sources 2019-11-06 05:45:42 +01:00
dev_con.h Update year and address of FSF 2019-01-25 14:09:58 +00:00
dos.cpp Acknowledge mouse interrupt before entering user routine; fixes sound stutter during mouse movement in Eye of the Beholder III and Casino Tournament of Champions. Clear button counters in the mouse driver reset function; prevents unintended skipping of intro in MechWarrior and others. 2019-02-04 15:15:58 +00:00
dos_classes.cpp Update year and address of FSF 2019-01-25 14:09:58 +00:00
dos_codepages.h Update year and address of FSF 2019-01-25 14:09:58 +00:00
dos_devices.cpp Update year and address of FSF 2019-01-25 14:09:58 +00:00
dos_execute.cpp fix externals. 2019-10-19 20:08:46 +00:00
dos_files.cpp Add some size checks when accessing Drives[], mostly needed when DOS_DRIVES is not set to 26, make size parsing not go outside the target array. 2019-06-25 06:12:13 +00:00
dos_ioctl.cpp Update year and address of FSF 2019-01-25 14:09:58 +00:00
dos_keyboard_layout.cpp Update year and address of FSF 2019-01-25 14:09:58 +00:00
dos_keyboard_layout_data.h Update year and address of FSF 2019-01-25 14:09:58 +00:00
dos_memory.cpp Use a more compatible offset for DOS redirected interrupt vector. Works around a null pointer bug in the notes dropdown list of Jack the Ripper. 2019-04-23 09:50:56 +00:00
dos_misc.cpp Update year and address of FSF 2019-01-25 14:09:58 +00:00
dos_mscdex.cpp Replace MSF_TO_FRAMES, FRAMES_TO_MSF macros 2019-11-02 19:29:03 +01:00
dos_programs.cpp - Fix url to forum. 2019-10-03 20:03:43 +00:00
dos_tables.cpp Update year and address of FSF 2019-01-25 14:09:58 +00:00
drive_cache.cpp Use fabsf when return value is a float. Small warning fix. 2019-10-09 20:49:21 +00:00
drive_fat.cpp - Fix url to forum. 2019-10-03 20:03:43 +00:00
drive_iso.cpp Remove c++ 11 isms 2019-05-06 10:23:11 +00:00
drive_local.cpp Implement simple access control for reading and writing files that are accessable from within DOSBox. Overlay not yet tested, hence not part of this commit. 2019-06-25 17:53:05 +00:00
drive_overlay.cpp Fix several logic errors with regards to deleted directories. 2019-10-09 20:46:40 +00:00
drive_virtual.cpp Update year and address of FSF 2019-01-25 14:09:58 +00:00
drives.cpp Update year and address of FSF 2019-01-25 14:09:58 +00:00
drives.h Fix several logic errors with regards to deleted directories. 2019-10-09 20:46:40 +00:00
Makefile.am New Drive type: overlay. 2019-03-25 13:49:25 +00:00
scsidefs.h year/info update for some other files as well 2011-04-26 15:00:36 +00:00
wnaspi32.h Win32 files for cdrom aspi and ioctl 2003-03-06 13:35:14 +00:00