[FFmpeg-cvslog] vorbisdec: add a flush() function
Justin Ruggles
git at videolan.org
Sun Feb 26 05:21:43 CET 2012
ffmpeg | branch: master | Justin Ruggles <justin.ruggles at gmail.com> | Tue Jan 24 18:10:28 2012 -0500| [19adb0bc2d42ad88d6137efa5420e13696e721d0] | committer: Justin Ruggles
vorbisdec: add a flush() function
clear MDCT overlap buffer and reset previous window mode when seeking
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=19adb0bc2d42ad88d6137efa5420e13696e721d0
---
libavcodec/vorbisdec.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
index 11d6d76..d3f6faf 100644
--- a/libavcodec/vorbisdec.c
+++ b/libavcodec/vorbisdec.c
@@ -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,
More information about the ffmpeg-cvslog
mailing list