XAudio2 output

Component for foobar2000 v1.5 and newer.

Version:0.4.2
Released:2024-03-14 19:36
Size:850.8 KB
License:Modified ISC license

Download

foo_out_xaudio2

Description

An alternative output component that uses the XAudio2 API. Utilizes the latest XAudio v2.9 which enabled it to support spatial sound automatically.
Spatial audio support no longer seems to work with latest Windows updates.

Additional info

Changes

0.4.2 (2024-03-14):Fixed a pause behavior bug introduced with changes done in version 0.4.
0.4.1 (2024-03-12):Hotfix to revert buffer sizes to original. Larger buffers caused slow seeking with smooth fader enabled.
0.4 (2024-03-12):Added handling of custom channel mapping. Fixed the output missing very last samples (callbacks claim audio ends before all samples are actually heard). Added support for latest output API additions in foobar2000 v2.2. Improved efficiency.
0.3.6 (2024-03-11):Fixed a new buffering bug introduced in 0.3.5, beginning of playback was incorrect. Changed the component to refuse new samples until buffer has plenty of free space to prevent foobar's playback thread from stalling.
0.3.5 (2024-03-11):Fixed playback always starting at full volume. Fixed old buffer contents briefly playing at format transitions and at the end of playback. Fixed slow seeking under certain situations.
0.3.4 (2024-02-21):Fixed glitches when channel count changes on the fly.
0.3.3 (2024-02-14):Added better error messages for missing output devices. Testing a workaround for a rare issue where playback is badly glitched.
0.3.2 (2024-02-11):Mastering voice is now initialized with default sample rate if source sample rate is not valid. Specs state sample rate must be a multiple of 100 - using for example 22050 Hz works, but the audio quality is horrible.
0.3.1 (2024-02-10):XAudio2 callbacks seem to stop being called when spatial processor is removed during playback. Added a workaround to prevent playback from stopping in such situations.
0.3 (2024-02-10):Fixed a bug that prevented playback from being able to start from paused state. Changed flush on seek to clear more playback state to prevent glitches. Increased the amount of data sent to XAudio2 at once to help prevent glitches. Added reporting about XAudio2 engine detected dropouts at the end of playback even for non-debug version. Switched to XAudio2 redist to add support all the way back to Windows 7.
0.2 (2024-02-09):Fixed playback thread hanging in paused state under certain conditions
0.1 (2024-02-08):Initial (experimental) version