reset the "resampler" when seeking

This commit is contained in:
Bill Currie 2010-08-11 23:47:31 +00:00 committed by Jeff Teunissen
parent 22e8698827
commit b1620616b9
3 changed files with 21 additions and 1 deletions

View file

@ -127,6 +127,20 @@ snd_resample_read (sfxstream_t *stream, float *data, int frames)
return src_callback_read (stream->state, ratio, frames, data);
}
static int
snd_seek (sfxstream_t *stream, int pos)
{
int res = stream->ll_seek (stream, pos);
if (stream->read == snd_resample_read) {
src_reset (stream->state);
} else {
snd_null_state_t *state = (snd_null_state_t *) stream->state;
state->size = 0;
state->pos = 0;
}
return res;
}
void
SND_SetupResampler (sfxbuffer_t *sc, int streamed)
{
@ -157,6 +171,7 @@ SND_SetupResampler (sfxbuffer_t *sc, int streamed)
&err, stream);
stream->read = snd_resample_read;
}
stream->seek = snd_seek;
}
}