Build 10652
GIT-
fix adlib additive mode
SVN handles and Git names are merged into one person.
fix adlib additive mode
Replace remaining instances of MV_Printf with LOG_F
re-enable mus_xmp_interpolation cvar
It looks like there were a couple interpolation related fixes in libxmp since the last time we tried enabling this, so maybe it'll work without crackling and crashes this time.
alter libxmp-lite to use the engine's memory allocation routines instead of the system's
update libxmp-lite to 1cb557ce338e86eb1e911e971fdf93674cd4db3b
add useCallBack parameter to FX_StopSound() and FX_StopAllSounds() (and, by extension, MV_Kill() and MV_KillAllVoices())
minivorbis.h GCC 12 warning fixes
tsf.h clang warning fixes
This code is really weird. It's more than just the equivalent of offsetof().
minor FX_ReadFmt tweak
add EDUKE32_PREDICT_FALSE to error conditions in FX_Play and friends
fix playback issue with .ogg files containing invalid loop tags
increase vorbis buffer size
This prevents crackling during .ogg playback on some systems.
fix winmm spare buffer list corruption when switching MIDI drivers
use _beginthreadex() instead of CreateThread()
fix channel bounds check in adlib driver
remove unused duplicate function that crept in during dev work on the WinMM MIDI driver
update TinySoundFont to e86d986ed6ccb93b4ee41d2de656c49c721b18db
optimize modulo operations out of a few common OPL3 emulator functions
sort opl3_slot struct by member size
fix undefined behavior
basic MV_GetPosition() support for FMT_VOC/FMT_WAV
throw errors when vorbis and XMP decoder initialization in a worker thread fails, validate result of worker thread decoder initialization before allowing MV_Mix() to proceed with working with the voice
Untested beyond the obvious stuff like verifying the non-failure cases still produce non-failure results. These errors were still being handled before this commit, but it was in more of a rudimentary "do nothing and silently fail" sort of way.
minor AdLib driver fixes
This fixes a crash when restarting the sound system twice in a row with the OPL3 driver selected but an .ogg (or .flac or any other format) is playing instead, and makes a couple of things FORCE_INLINE in the process.
move libasync task to VoiceNode struct, explicitly wait on task completion before attempting to service a voice with MV_BeginService()
This fixes crashes when attempting to service an .ogg voice immediately after starting playback, before the decoder has actually finished initializing.
offload xmp_create_context()/xmp_load_module_from_memory() into worker thread
offload initial ov_open_callbacks() etc calls for vorbis into worker threads to avoid VM stalls when playing tons of .oggs from script
silence warnings
shitcan lrintf use in sample calculation
move Windows debug thread naming stuff out of driver_winmm and into winbits.h
switch from stb_vorbis to minivorbis
Fixes minivorbis to compile as C++ and hooks it up to our memory allocators. This also allows the precompiled libogg.a prerequisite for libFLAC.a to be removed.
add minivorbis 4e40a167726effb0ae9d3065452a9ee2bb80a84f
This is the entire official vorbis implementation crammed into a single header. Fixes to work with our cflags in a future commit.
take a voice's volume into account when finding the lowest priority voice
formatting
unfuck WinMM driver
make mus_al_postamp a float and change volume calculation in AdLibDrv_MIDI_Service to FP math
Fixes terminx/eduke32#106, more or less.
address locking issue with 6ce050b4
update libxmp-lite
update TinySoundFont to bf574519e601202c3a9d27a74f345921277eed39
replace linear search for voices by handle with a table
don't allow SDL to change the change the playback frequency from what was requested
This sounds good in theory, but in practice it can lead to playback rates beyond what is allowed in the menu and beyond what is supported by e.g. libxmp-lite.
Add FX_StartDemandFeedPlayback3D
Backported from Rednukem.
fix warning
calculate RateScale using 64-bit math