From 20e081dddcffa6eec459d695f3850796d1bdd7f7 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Fri, 28 Oct 2011 10:35:15 -0400 Subject: [PATCH] libgsm: add flush function to reset the decoder state when seeking --- libavcodec/libgsm.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libavcodec/libgsm.c b/libavcodec/libgsm.c index bca7bfbe97..c02594d0d6 100644 --- a/libavcodec/libgsm.c +++ b/libavcodec/libgsm.c @@ -194,6 +194,11 @@ static int libgsm_decode_frame(AVCodecContext *avctx, return avctx->block_align; } +static void libgsm_flush(AVCodecContext *avctx) { + gsm_destroy(avctx->priv_data); + avctx->priv_data = gsm_create(); +} + AVCodec ff_libgsm_decoder = { .name = "libgsm", .type = AVMEDIA_TYPE_AUDIO, @@ -201,6 +206,7 @@ AVCodec ff_libgsm_decoder = { .init = libgsm_decode_init, .close = libgsm_decode_close, .decode = libgsm_decode_frame, + .flush = libgsm_flush, .long_name = NULL_IF_CONFIG_SMALL("libgsm GSM"), }; @@ -211,5 +217,6 @@ AVCodec ff_libgsm_ms_decoder = { .init = libgsm_decode_init, .close = libgsm_decode_close, .decode = libgsm_decode_frame, + .flush = libgsm_flush, .long_name = NULL_IF_CONFIG_SMALL("libgsm GSM Microsoft variant"), };