Commit 19adb0bc authored by Justin Ruggles's avatar Justin Ruggles

vorbisdec: add a flush() function

clear MDCT overlap buffer and reset previous window mode when seeking
parent 830f7044
...@@ -1698,6 +1698,17 @@ static av_cold int vorbis_decode_close(AVCodecContext *avccontext) ...@@ -1698,6 +1698,17 @@ static av_cold int vorbis_decode_close(AVCodecContext *avccontext)
return 0; 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 = { AVCodec ff_vorbis_decoder = {
.name = "vorbis", .name = "vorbis",
.type = AVMEDIA_TYPE_AUDIO, .type = AVMEDIA_TYPE_AUDIO,
...@@ -1706,6 +1717,7 @@ AVCodec ff_vorbis_decoder = { ...@@ -1706,6 +1717,7 @@ AVCodec ff_vorbis_decoder = {
.init = vorbis_decode_init, .init = vorbis_decode_init,
.close = vorbis_decode_close, .close = vorbis_decode_close,
.decode = vorbis_decode_frame, .decode = vorbis_decode_frame,
.flush = vorbis_decode_flush,
.capabilities = CODEC_CAP_DR1, .capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("Vorbis"), .long_name = NULL_IF_CONFIG_SMALL("Vorbis"),
.channel_layouts = ff_vorbis_channel_layouts, .channel_layouts = ff_vorbis_channel_layouts,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment