diff --git a/src/gst/gstpipewiresink.c b/src/gst/gstpipewiresink.c index 49f834d6f..748992dd8 100644 --- a/src/gst/gstpipewiresink.c +++ b/src/gst/gstpipewiresink.c @@ -628,11 +628,17 @@ copy_properties (GQuark field_id, gpointer user_data) { struct pw_properties *properties = user_data; + GValue dst = { 0 }; - if (G_VALUE_HOLDS_STRING (value)) - pw_properties_set (properties, - g_quark_to_string (field_id), - g_value_get_string (value)); + if (g_value_type_transformable (G_VALUE_TYPE(value), G_TYPE_STRING)) { + g_value_init(&dst, G_TYPE_STRING); + if (g_value_transform(value, &dst)) { + pw_properties_set (properties, + g_quark_to_string (field_id), + g_value_get_string (&dst)); + } + g_value_unset(&dst); + } return TRUE; } diff --git a/src/gst/gstpipewiresrc.c b/src/gst/gstpipewiresrc.c index 9502b3b2d..fdeb9c406 100644 --- a/src/gst/gstpipewiresrc.c +++ b/src/gst/gstpipewiresrc.c @@ -1039,11 +1039,17 @@ copy_properties (GQuark field_id, gpointer user_data) { struct pw_properties *properties = user_data; + GValue dst = { 0 }; - if (G_VALUE_HOLDS_STRING (value)) - pw_properties_set (properties, - g_quark_to_string (field_id), - g_value_get_string (value)); + if (g_value_type_transformable (G_VALUE_TYPE(value), G_TYPE_STRING)) { + g_value_init(&dst, G_TYPE_STRING); + if (g_value_transform(value, &dst)) { + pw_properties_set (properties, + g_quark_to_string (field_id), + g_value_get_string (&dst)); + } + g_value_unset(&dst); + } return TRUE; }