[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