vorbisdec: add a flush() function
clear MDCT overlap buffer and reset previous window mode when seeking
This commit is contained in:
parent
830f70442a
commit
19adb0bc2d
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user