From e281493f29c5a4562d931b03bb08e44bbc6f84b5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 20 Nov 2012 11:45:34 +0100 Subject: [PATCH] avaudenc: Implement flush vfunc properly --- ext/libav/gstavaudenc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ext/libav/gstavaudenc.c b/ext/libav/gstavaudenc.c index 2cc19de0..960709ba 100644 --- a/ext/libav/gstavaudenc.c +++ b/ext/libav/gstavaudenc.c @@ -67,6 +67,7 @@ static gboolean gst_ffmpegaudenc_set_format (GstAudioEncoder * encoder, static GstFlowReturn gst_ffmpegaudenc_handle_frame (GstAudioEncoder * encoder, GstBuffer * inbuf); static gboolean gst_ffmpegaudenc_stop (GstAudioEncoder * encoder); +static void gst_ffmpegaudenc_flush (GstAudioEncoder * encoder); static void gst_ffmpegaudenc_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); @@ -155,6 +156,7 @@ gst_ffmpegaudenc_class_init (GstFFMpegAudEncClass * klass) gstaudioencoder_class->stop = GST_DEBUG_FUNCPTR (gst_ffmpegaudenc_stop); gstaudioencoder_class->getcaps = GST_DEBUG_FUNCPTR (gst_ffmpegaudenc_getcaps); + gstaudioencoder_class->flush = GST_DEBUG_FUNCPTR (gst_ffmpegaudenc_flush); gstaudioencoder_class->set_format = GST_DEBUG_FUNCPTR (gst_ffmpegaudenc_set_format); gstaudioencoder_class->handle_frame = @@ -196,6 +198,16 @@ gst_ffmpegaudenc_stop (GstAudioEncoder * encoder) return TRUE; } +static void +gst_ffmpegaudenc_flush (GstAudioEncoder * encoder) +{ + GstFFMpegAudEnc *ffmpegauddec = (GstFFMpegAudEnc *) encoder; + + if (ffmpegauddec->opened) { + avcodec_flush_buffers (ffmpegauddec->context); + } +} + static GstCaps * gst_ffmpegaudenc_getcaps (GstAudioEncoder * encoder, GstCaps * filter) { -- 2.34.1