summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>2021-09-21 15:05:58 +0200
committerJan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>2021-09-21 17:50:26 +0200
commite4a9db6abed31db7211253d5d0a0ceee97c908b9 (patch)
tree0f22766c194f5c63d04315cc37a4f259fff09bef
parentde87e0d381a058ad5c71eefa42a9a04c168e2186 (diff)
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: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/85>
-rw-r--r--ext/x264/gstx264enc.c16
1 files 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 */
}