From: Anton Baskanov <baskanov@gmail.com> --- dlls/dsound/fir.h | 2 -- dlls/dsound/mixer.c | 6 +++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/dlls/dsound/fir.h b/dlls/dsound/fir.h index 24d93645d12..67bbe292f0d 100644 --- a/dlls/dsound/fir.h +++ b/dlls/dsound/fir.h @@ -86,7 +86,6 @@ int main() fprintf(stderr, "q %f\n", (double)output.q); fprintf(stderr, "status %s\n", get_pm_status_str(output.status)); - printf("static const int fir_len = %d;\n", fir_len); printf("static const int fir_width = %d;\n", fir_width); printf("static const int fir_step = %d;\n", fir_step); printf("static const float fir[] = {"); @@ -104,7 +103,6 @@ int main() printf("};\n"); } */ -static const int fir_len = 8193; static const int fir_width = 64; static const int fir_step = 128; static const float fir[] = { diff --git a/dlls/dsound/mixer.c b/dlls/dsound/mixer.c index e2e1752cf26..1d7c133a8f3 100644 --- a/dlls/dsound/mixer.c +++ b/dlls/dsound/mixer.c @@ -387,12 +387,12 @@ static UINT cp_fields_resample(IDirectSoundBufferImpl *dsb, UINT count, LONG64 * LONG64 freqAcc_start = *freqAccNum; LONG64 freqAcc_end = freqAcc_start + count * dsb->freqAdjustNum; - UINT dsbfirstep = dsb->firstep; UINT channels = dsb->mix_channels; UINT max_ipos = (freqAcc_start + count * dsb->freqAdjustNum) / dsb->freqAdjustDen; - UINT fir_cachesize = (fir_len + dsbfirstep - 2) / dsbfirstep; - UINT required_input = max_ipos + fir_cachesize; + UINT required_input = max( + (freqAcc_start + (count - 1) * dsb->freqAdjustNum) / dsb->freqAdjustDen + fir_width, + (freqAcc_start + (count - 1 + fir_width) * dsb->freqAdjustNum) / dsb->freqAdjustDen); float *intermediate, *output, *itmp; DWORD len = required_input * channels; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10255