Commit 7af7d93b authored by Tim-Philipp Müller's avatar Tim-Philipp Müller

jpegdec: free temporary buffer when changing state to NULL

Free temporary allocations in the state change function and not
only when the object is finalised.
parent 26e7fe27
......@@ -148,19 +148,12 @@ static void
gst_jpeg_dec_finalize (GObject * object)
{
GstJpegDec *dec = GST_JPEG_DEC (object);
gint i;
jpeg_destroy_decompress (&dec->cinfo);
if (dec->tempbuf)
gst_buffer_unref (dec->tempbuf);
for (i = 0; i < 16; i++) {
g_free (dec->idr_y[i]);
g_free (dec->idr_u[i]);
g_free (dec->idr_v[i]);
}
G_OBJECT_CLASS (parent_class)->finalize (object);
}
......@@ -682,6 +675,23 @@ hresamplecpy1 (guint8 * dest, const guint8 * src, guint len)
}
}
static void
gst_jpeg_dec_free_buffers (GstJpegDec * dec)
{
gint i;
for (i = 0; i < 16; i++) {
g_free (dec->idr_y[i]);
g_free (dec->idr_u[i]);
g_free (dec->idr_v[i]);
dec->idr_y[i] = NULL;
dec->idr_u[i] = NULL;
dec->idr_v[i] = NULL;
}
dec->idr_width_allocated = 0;
}
static inline gboolean
gst_jpeg_dec_ensure_buffers (GstJpegDec * dec, guint maxrowbytes)
{
......@@ -1430,6 +1440,7 @@ gst_jpeg_dec_change_state (GstElement * element, GstStateChange transition)
gst_buffer_unref (dec->tempbuf);
dec->tempbuf = NULL;
}
gst_jpeg_dec_free_buffers (dec);
break;
default:
break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment