From ef4a21253b2d3cec5445e050e33dd28e92ed80c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 25 Jul 2013 14:26:07 +0200 Subject: [PATCH] jpegenc: Clean up reset/start/stop handling --- ext/jpeg/gstjpegenc.c | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/ext/jpeg/gstjpegenc.c b/ext/jpeg/gstjpegenc.c index 15d01e71ab..d3dfbaf311 100644 --- a/ext/jpeg/gstjpegenc.c +++ b/ext/jpeg/gstjpegenc.c @@ -70,7 +70,6 @@ enum PROP_IDCT_METHOD }; -static void gst_jpegenc_reset (GstJpegEnc * enc); static void gst_jpegenc_finalize (GObject * object); static void gst_jpegenc_resync (GstJpegEnc * jpegenc); @@ -81,6 +80,7 @@ static void gst_jpegenc_get_property (GObject * object, guint prop_id, static gboolean gst_jpegenc_start (GstVideoEncoder * benc); static gboolean gst_jpegenc_stop (GstVideoEncoder * benc); +static gboolean gst_jpegenc_reset (GstVideoEncoder * benc, gboolean hard); static gboolean gst_jpegenc_set_format (GstVideoEncoder * encoder, GstVideoCodecState * state); static GstFlowReturn gst_jpegenc_handle_frame (GstVideoEncoder * encoder, @@ -161,6 +161,7 @@ gst_jpegenc_class_init (GstJpegEncClass * klass) venc_class->start = gst_jpegenc_start; venc_class->stop = gst_jpegenc_stop; + venc_class->reset = gst_jpegenc_reset; venc_class->set_format = gst_jpegenc_set_format; venc_class->handle_frame = gst_jpegenc_handle_frame; venc_class->propose_allocation = gst_jpegenc_propose_allocation; @@ -300,28 +301,16 @@ gst_jpegenc_init (GstJpegEnc * jpegenc) jpegenc->quality = JPEG_DEFAULT_QUALITY; jpegenc->smoothing = JPEG_DEFAULT_SMOOTHING; jpegenc->idct_method = JPEG_DEFAULT_IDCT_METHOD; - - gst_jpegenc_reset (jpegenc); } -static void -gst_jpegenc_reset (GstJpegEnc * enc) +static gboolean +gst_jpegenc_reset (GstVideoEncoder * benc, gboolean hard) { - gint i, j; + GstJpegEnc *enc = (GstJpegEnc *) benc; - g_free (enc->line[0]); - g_free (enc->line[1]); - g_free (enc->line[2]); - enc->line[0] = NULL; - enc->line[1] = NULL; - enc->line[2] = NULL; - for (i = 0; i < 3; i++) { - for (j = 0; j < 4 * DCTSIZE; j++) { - g_free (enc->row[i][j]); - enc->row[i][j] = NULL; - } - } enc->sof_marker = -1; + + return TRUE; } static void @@ -633,8 +622,20 @@ static gboolean gst_jpegenc_stop (GstVideoEncoder * benc) { GstJpegEnc *enc = (GstJpegEnc *) benc; + gint i, j; - gst_jpegenc_reset (enc); + g_free (enc->line[0]); + g_free (enc->line[1]); + g_free (enc->line[2]); + enc->line[0] = NULL; + enc->line[1] = NULL; + enc->line[2] = NULL; + for (i = 0; i < 3; i++) { + for (j = 0; j < 4 * DCTSIZE; j++) { + g_free (enc->row[i][j]); + enc->row[i][j] = NULL; + } + } return TRUE; }