From ef324fa068699291866d29eea3e84492642b9bf9 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" Date: Thu, 6 May 2021 19:01:41 +0200 Subject: [PATCH] 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: --- gst-libs/gst/video/video-converter.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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); -- 2.7.4