diff options
-rw-r--r-- | ext/libav/gstavauddec.c | 7 | ||||
-rw-r--r-- | ext/libav/gstavaudenc.c | 2 | ||||
-rw-r--r-- | ext/libav/gstavcfg.c | 4 | ||||
-rw-r--r-- | ext/libav/gstavdeinterlace.c | 1 | ||||
-rw-r--r-- | ext/libav/gstavviddec.c | 2 | ||||
-rw-r--r-- | ext/libav/gstavvidenc.c | 2 |
6 files changed, 15 insertions, 3 deletions
diff --git a/ext/libav/gstavauddec.c b/ext/libav/gstavauddec.c index f195ca0..b685928 100644 --- a/ext/libav/gstavauddec.c +++ b/ext/libav/gstavauddec.c @@ -150,9 +150,11 @@ gst_ffmpegauddec_finalize (GObject * object) { GstFFMpegAudDec *ffmpegdec = (GstFFMpegAudDec *) object; - if (ffmpegdec->context != NULL) + if (ffmpegdec->context != NULL) { + gst_ffmpeg_avcodec_close (ffmpegdec->context); av_free (ffmpegdec->context); - ffmpegdec->context = NULL; + ffmpegdec->context = NULL; + } G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -199,6 +201,7 @@ gst_ffmpegauddec_start (GstAudioDecoder * decoder) oclass = (GstFFMpegAudDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec)); GST_OBJECT_LOCK (ffmpegdec); + gst_ffmpeg_avcodec_close (ffmpegdec->context); if (avcodec_get_context_defaults3 (ffmpegdec->context, oclass->in_plugin) < 0) { GST_DEBUG_OBJECT (ffmpegdec, "Failed to set context defaults"); GST_OBJECT_UNLOCK (ffmpegdec); diff --git a/ext/libav/gstavaudenc.c b/ext/libav/gstavaudenc.c index 83a2eee..11969cb 100644 --- a/ext/libav/gstavaudenc.c +++ b/ext/libav/gstavaudenc.c @@ -191,6 +191,7 @@ gst_ffmpegaudenc_finalize (GObject * object) GstFFMpegAudEnc *ffmpegaudenc = (GstFFMpegAudEnc *) object; /* clean up remaining allocated data */ + gst_ffmpeg_avcodec_close (ffmpegaudenc->context); av_free (ffmpegaudenc->context); G_OBJECT_CLASS (parent_class)->finalize (object); @@ -203,6 +204,7 @@ gst_ffmpegaudenc_start (GstAudioEncoder * encoder) GstFFMpegAudEncClass *oclass = (GstFFMpegAudEncClass *) G_OBJECT_GET_CLASS (ffmpegaudenc); + gst_ffmpeg_avcodec_close (ffmpegaudenc->context); if (avcodec_get_context_defaults3 (ffmpegaudenc->context, oclass->in_plugin) < 0) { GST_DEBUG_OBJECT (ffmpegaudenc, "Failed to set context defaults"); diff --git a/ext/libav/gstavcfg.c b/ext/libav/gstavcfg.c index 8c368ad..64e8398 100644 --- a/ext/libav/gstavcfg.c +++ b/ext/libav/gstavcfg.c @@ -839,8 +839,10 @@ gst_ffmpeg_cfg_install_property (GstFFMpegVidEncClass * klass, guint base) } } - if (ctx) + if (ctx) { + gst_ffmpeg_avcodec_close (ctx); av_free (ctx); + } } /* returns TRUE if it is a known property for this config system, diff --git a/ext/libav/gstavdeinterlace.c b/ext/libav/gstavdeinterlace.c index faa81bb..67ec9c2 100644 --- a/ext/libav/gstavdeinterlace.c +++ b/ext/libav/gstavdeinterlace.c @@ -209,6 +209,7 @@ gst_ffmpegdeinterlace_sink_setcaps (GstPad * pad, GstCaps * caps) ctx->pix_fmt = PIX_FMT_NB; gst_ffmpeg_caps_with_codectype (AVMEDIA_TYPE_VIDEO, caps, ctx); if (ctx->pix_fmt == PIX_FMT_NB) { + gst_ffmpeg_avcodec_close (ctx); av_free (ctx); return FALSE; } diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c index 3453231..6c9c0c9 100644 --- a/ext/libav/gstavviddec.c +++ b/ext/libav/gstavviddec.c @@ -266,6 +266,7 @@ gst_ffmpegviddec_finalize (GObject * object) GstFFMpegVidDec *ffmpegdec = (GstFFMpegVidDec *) object; if (ffmpegdec->context != NULL) { + gst_ffmpeg_avcodec_close (ffmpegdec->context); av_free (ffmpegdec->context); ffmpegdec->context = NULL; } @@ -1548,6 +1549,7 @@ gst_ffmpegviddec_start (GstVideoDecoder * decoder) oclass = (GstFFMpegVidDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec)); GST_OBJECT_LOCK (ffmpegdec); + gst_ffmpeg_avcodec_close (ffmpegdec->context); if (avcodec_get_context_defaults3 (ffmpegdec->context, oclass->in_plugin) < 0) { GST_DEBUG_OBJECT (ffmpegdec, "Failed to set context defaults"); GST_OBJECT_UNLOCK (ffmpegdec); diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c index 6f32627..11d1eef 100644 --- a/ext/libav/gstavvidenc.c +++ b/ext/libav/gstavvidenc.c @@ -263,6 +263,7 @@ gst_ffmpegvidenc_finalize (GObject * object) gst_ffmpeg_cfg_finalize (ffmpegenc); /* clean up remaining allocated data */ + gst_ffmpeg_avcodec_close (ffmpegenc->context); av_free (ffmpegenc->context); avcodec_free_frame (&ffmpegenc->picture); @@ -834,6 +835,7 @@ gst_ffmpegvidenc_start (GstVideoEncoder * encoder) (GstFFMpegVidEncClass *) G_OBJECT_GET_CLASS (ffmpegenc); /* close old session */ + gst_ffmpeg_avcodec_close (ffmpegenc->context); if (avcodec_get_context_defaults3 (ffmpegenc->context, oclass->in_plugin) < 0) { GST_DEBUG_OBJECT (ffmpegenc, "Failed to set context defaults"); return FALSE; |