From: Sebastian Dröge Date: Sun, 18 Apr 2010 20:50:20 +0000 (+0200) Subject: videobalance: Reduce number of allocations per instance X-Git-Tag: RELEASE-0.10.23~200 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0515f88f7c8a865404d4d69cb5013ca8f6235c4a;p=platform%2Fupstream%2Fgst-plugins-good.git videobalance: Reduce number of allocations per instance --- diff --git a/gst/videofilter/gstvideobalance.c b/gst/videofilter/gstvideobalance.c index dc456cd..ed354e8 100644 --- a/gst/videofilter/gstvideobalance.c +++ b/gst/videofilter/gstvideobalance.c @@ -536,26 +536,8 @@ gst_video_balance_finalize (GObject * object) { GList *channels = NULL; GstVideoBalance *balance = GST_VIDEO_BALANCE (object); - gint i; - - if (balance->tableu) { - for (i = 0; i < 256; i++) - g_free (balance->tableu[i]); - g_free (balance->tableu); - balance->tableu = NULL; - } - if (balance->tablev) { - for (i = 0; i < 256; i++) - g_free (balance->tablev[i]); - g_free (balance->tablev); - balance->tablev = NULL; - } - - if (balance->tabley) { - g_free (balance->tabley); - balance->tabley = NULL; - } + g_free (balance->tableu[0]); channels = balance->channels; while (channels) { @@ -623,12 +605,13 @@ gst_video_balance_init (GstVideoBalance * videobalance, videobalance->hue = DEFAULT_PROP_HUE; videobalance->saturation = DEFAULT_PROP_SATURATION; - videobalance->tabley = g_new (guint8, 256); - videobalance->tableu = g_new (guint8 *, 256); - videobalance->tablev = g_new (guint8 *, 256); + videobalance->tableu[0] = g_new (guint8, 256 * 256 * 2); for (i = 0; i < 256; i++) { - videobalance->tableu[i] = g_new (guint8, 256); - videobalance->tablev[i] = g_new (guint8, 256); + videobalance->tableu[i] = + videobalance->tableu[0] + i * 256 * sizeof (guint8); + videobalance->tablev[i] = + videobalance->tableu[0] + 256 * 256 * sizeof (guint8) + + i * 256 * sizeof (guint8); } gst_video_balance_update_properties (videobalance); diff --git a/gst/videofilter/gstvideobalance.h b/gst/videofilter/gstvideobalance.h index 17a6fcd..c9484e3 100644 --- a/gst/videofilter/gstvideobalance.h +++ b/gst/videofilter/gstvideobalance.h @@ -67,7 +67,9 @@ struct _GstVideoBalance { gint size; /* tables */ - guint8 *tabley, **tableu, **tablev; + guint8 tabley[256]; + guint8 *tableu[256]; + guint8 *tablev[256]; void (*process) (GstVideoBalance *balance, guint8 *data); };