mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-01 22:30:42 -07:00
audio: WASAPI exclusive resampling, buffer size increase options (#727)
## Link to GitHub Issue or related Pull Request, if one exists n/a ## Description of change Resampler: Implement resampler for exclusive mode streams, as we are seeing more and more devices - not just laptops but onboard audio devices - that only support 48khz and not 44.1khz. Should work with volume boost (gain calculated inside resample) and also downmixer (hands off intermediate scratch buffers). Buffer size increase: By default many of these games request a tiny buffer when in shared mode (TDJ uses 3ms). On some audio setup this results in crackling due to underflow. Add an option to forcibly increase the buffer size. ## Testing With resampler set to 48kHz and buffer set to 20ms I can reliably boot and play IIDX on my display port monitor's speakers; previously this wasn't possible. IIDX is event-driven. Tested SDVX7 as well at 48kHz, which opens timer-driven streams.
This commit is contained in:
@@ -1106,6 +1106,18 @@ int main_implementation(int argc, char *argv[]) {
|
||||
hooks::audio::VOLUME_BOOST = (float) std::pow(10.0, decibels / 20.0);
|
||||
}
|
||||
}
|
||||
if (options[launcher::Options::AudioResample].is_active()) {
|
||||
const uint32_t rate = options[launcher::Options::AudioResample].value_uint32();
|
||||
if (rate > 0) {
|
||||
hooks::audio::RESAMPLE_RATE = rate;
|
||||
}
|
||||
}
|
||||
if (options[launcher::Options::AudioExclusiveBuffer].is_active()) {
|
||||
const uint32_t ms = options[launcher::Options::AudioExclusiveBuffer].value_uint32();
|
||||
if (ms > 0) {
|
||||
hooks::audio::EXCLUSIVE_BUFFER_MS = ms;
|
||||
}
|
||||
}
|
||||
|
||||
if (options[launcher::Options::AudioBackend].is_active()) {
|
||||
auto &name = options[launcher::Options::AudioBackend].value_text();
|
||||
|
||||
Reference in New Issue
Block a user