From e4a9db6abed31db7211253d5d0a0ceee97c908b9 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" Date: Tue, 21 Sep 2021 15:05:58 +0200 Subject: x264enc: Strip trailing whitespace from x264's log messages x264 has linebreaks at the end of its log messages that we should ignore. Add G_GNUC_PRINTF to the callback to make sure GCC lets us forward the format string to another function marked as printf (g_strdup_vprintf) without triggering -Wformat-nonliteral. Part-of: --- ext/x264/gstx264enc.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/ext/x264/gstx264enc.c b/ext/x264/gstx264enc.c index d0e24796..2604506f 100644 --- a/ext/x264/gstx264enc.c +++ b/ext/x264/gstx264enc.c @@ -1228,6 +1228,10 @@ gst_x264_enc_class_init (GstX264EncClass * klass) gst_type_mark_as_plugin_api (GST_X264_ENC_TUNE_TYPE, 0); } +/* *INDENT-OFF* */ +G_GNUC_PRINTF (3, 0) +/* *INDENT-ON* */ + static void gst_x264_enc_log_callback (gpointer private, gint level, const char *format, va_list args) @@ -1235,6 +1239,7 @@ gst_x264_enc_log_callback (gpointer private, gint level, const char *format, #ifndef GST_DISABLE_GST_DEBUG GstDebugLevel gst_level; GObject *object = (GObject *) private; + gchar *formatted; switch (level) { case X264_LOG_NONE: @@ -1258,8 +1263,15 @@ gst_x264_enc_log_callback (gpointer private, gint level, const char *format, if (G_LIKELY (gst_level > _gst_debug_min)) return; - gst_debug_log_valist (GST_CAT_DEFAULT, gst_level, __FILE__, GST_FUNCTION, - __LINE__, object, format, args); + if (G_LIKELY (gst_level > gst_debug_category_get_threshold (GST_CAT_DEFAULT))) + return; + + formatted = g_strdup_vprintf (format, args); + g_strchomp (formatted); + + GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, gst_level, object, "%s", formatted); + + g_free (formatted); #endif /* GST_DISABLE_GST_DEBUG */ } -- cgit v1.2.3