vorbisdec: add a flush() function

clear MDCT overlap buffer and reset previous window mode when seeking
This commit is contained in:
Justin Ruggles 2012-01-24 18:10:28 -05:00
parent 830f70442a
commit 19adb0bc2d
1 changed files with 12 additions and 0 deletions

View File

@ -1698,6 +1698,17 @@ static av_cold int vorbis_decode_close(AVCodecContext *avccontext)
return 0;
}
static av_cold void vorbis_decode_flush(AVCodecContext *avccontext)
{
vorbis_context *vc = avccontext->priv_data;
if (vc->saved) {
memset(vc->saved, 0, (vc->blocksize[1] / 4) * vc->audio_channels *
sizeof(*vc->saved));
}
vc->previous_window = 0;
}
AVCodec ff_vorbis_decoder = {
.name = "vorbis",
.type = AVMEDIA_TYPE_AUDIO,
@ -1706,6 +1717,7 @@ AVCodec ff_vorbis_decoder = {
.init = vorbis_decode_init,
.close = vorbis_decode_close,
.decode = vorbis_decode_frame,
.flush = vorbis_decode_flush,
.capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("Vorbis"),
.channel_layouts = ff_vorbis_channel_layouts,