diff --git a/src/audio/SDL_audiocvt.c b/src/audio/SDL_audiocvt.c index f566f16f6b..e66d31350e 100644 --- a/src/audio/SDL_audiocvt.c +++ b/src/audio/SDL_audiocvt.c @@ -801,7 +801,7 @@ static int CalculateAudioStreamWorkBufSize(const SDL_AudioStream *stream, int le if (stream->dst_rate != stream->src_rate) { /* calculate requested sample frames needed before resampling. Use a Uint64 so the multiplication doesn't overflow. */ const int input_frames = ((int) ((((Uint64) workbuf_frames) * stream->src_rate) / stream->dst_rate)); - inputlen = input_frames * stream->src_sample_frame_size; + inputlen = input_frames * stream->max_sample_frame_size; if (inputlen > workbuflen) { workbuflen = inputlen; } @@ -811,10 +811,7 @@ static int CalculateAudioStreamWorkBufSize(const SDL_AudioStream *stream, int le workbuflen = inputlen; } /* Calculate space needed after resample (which lives in a second copy in the same buffer). */ - inputlen += workbuf_frames * stream->pre_resample_channels * sizeof (float); - if (inputlen > workbuflen) { - workbuflen = inputlen; - } + workbuflen += workbuf_frames * stream->pre_resample_channels * sizeof (float); } return workbuflen;