From 1f2028e2ef1a00af5907a1ed2d6826b1c8582d18 Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Tue, 17 Sep 2019 21:33:49 +1000 Subject: [PATCH] device-monitor: print caps features in the caps --- tools/gst-device-monitor.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/tools/gst-device-monitor.c b/tools/gst-device-monitor.c index a318641ed2..fe4259f16c 100644 --- a/tools/gst-device-monitor.c +++ b/tools/gst-device-monitor.c @@ -159,6 +159,16 @@ print_structure_field (GQuark field_id, const GValue * value, return TRUE; } +static gboolean +print_field (GQuark field, const GValue * value, gpointer unused) +{ + gchar *str = gst_value_serialize (value); + + g_print (", %s=%s", g_quark_to_string (field), str); + g_free (str); + return TRUE; +} + static void print_device (GstDevice * device, gboolean modified) { @@ -180,9 +190,20 @@ print_device (GstDevice * device, gboolean modified) g_print ("\tclass : %s\n", device_class); for (i = 0; i < size; ++i) { GstStructure *s = gst_caps_get_structure (caps, i); - str = gst_structure_to_string (s); - g_print ("\t%s %s\n", (i == 0) ? "caps :" : " ", str); - g_free (str); + GstCapsFeatures *features = gst_caps_get_features (caps, i); + + g_print ("\t%s %s", (i == 0) ? "caps :" : " ", + gst_structure_get_name (s)); + if (features && (gst_caps_features_is_any (features) || + !gst_caps_features_is_equal (features, + GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY))) { + gchar *features_string = gst_caps_features_to_string (features); + + g_print ("(%s)", features_string); + g_free (features_string); + } + gst_structure_foreach (s, print_field, NULL); + g_print ("\n"); } if (props) { g_print ("\tproperties:");