Skip to content

Commit

Permalink
audio: Don't stack-allocate resampler padding.
Browse files Browse the repository at this point in the history
(I thought padding size ranged from 5 frames to ~30 frames (based around
RESAMPLER_ZERO_CROSSINGS, which is 5), but it's actually between 512 and
several thousands (based on RESAMPLER_SAMPLES_PER_ZERO_CROSSING)). It gets
big fast when downsampling.
  • Loading branch information
icculus committed Oct 11, 2017
1 parent b647bd0 commit 42fff7c
Showing 1 changed file with 2 additions and 3 deletions.
5 changes: 2 additions & 3 deletions src/audio/SDL_audiocvt.c
Expand Up @@ -722,16 +722,15 @@ SDL_ResampleCVT(SDL_AudioCVT *cvt, const int chans, const SDL_AudioFormat format
SDL_assert(format == AUDIO_F32SYS);

/* we keep no streaming state here, so pad with silence on both ends. */
padding = SDL_stack_alloc(float, paddingsamples);
padding = (float *) SDL_calloc(paddingsamples, sizeof (float));
if (!padding) {
SDL_OutOfMemory();
return;
}
SDL_memset(padding, '\0', paddingsamples * sizeof (float));

cvt->len_cvt = SDL_ResampleAudio(chans, inrate, outrate, padding, padding, src, srclen, dst, dstlen);

SDL_stack_free(padding);
SDL_free(padding);

SDL_memcpy(cvt->buf, dst, cvt->len_cvt); /* !!! FIXME: remove this if we can get the resampler to work in-place again. */

Expand Down

0 comments on commit 42fff7c

Please sign in to comment.