From: Jan Alexander Steffens (heftig) Date: Thu, 6 May 2021 17:01:41 +0000 (+0200) Subject: video-converter: Set up gamma tables only once X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ef324fa068699291866d29eea3e84492642b9bf9;p=platform%2Fupstream%2Fgst-plugins-base.git video-converter: Set up gamma tables only once When the video converter is using multiple threads, the gamma tables were created multiple times, leaking the tables set up for the previous thread. Only calculate the tables once. Part-of: --- diff --git a/gst-libs/gst/video/video-converter.c b/gst-libs/gst/video/video-converter.c index c2c9c81..aa4740d 100644 --- a/gst-libs/gst/video/video-converter.c +++ b/gst-libs/gst/video/video-converter.c @@ -1506,7 +1506,9 @@ setup_gamma_decode (GstVideoConverter * convert) func = convert->in_info.colorimetry.transfer; convert->gamma_dec.width = convert->current_width; - if (convert->current_bits == 8) { + if (convert->gamma_dec.gamma_table) { + GST_DEBUG ("gamma decode already set up"); + } else if (convert->current_bits == 8) { GST_DEBUG ("gamma decode 8->16: %d", func); convert->gamma_dec.gamma_func = gamma_convert_u8_u16; t = convert->gamma_dec.gamma_table = g_malloc (sizeof (guint16) * 256); @@ -1538,7 +1540,9 @@ setup_gamma_encode (GstVideoConverter * convert, gint target_bits) func = convert->out_info.colorimetry.transfer; convert->gamma_enc.width = convert->current_width; - if (target_bits == 8) { + if (convert->gamma_enc.gamma_table) { + GST_DEBUG ("gamma encode already set up"); + } else if (target_bits == 8) { guint8 *t; GST_DEBUG ("gamma encode 16->8: %d", func);