static void validate_taglist_foreach (const GstTagList * list, const gchar * tag, gpointer user_data) { GstTagList *other = GST_TAG_LIST (user_data); const GValue *val1 = gst_tag_list_get_value_index (list, tag, 0); const GValue *val2 = gst_tag_list_get_value_index (other, tag, 0); fail_if (val1 == NULL); fail_if (val2 == NULL); fail_unless (gst_value_can_intersect (val1, val2)); }
static gboolean _find_structure_incompatible_fields (GQuark field_id, const GValue * value, StructureIncompatibleFieldsInfo * info) { gchar *value_str, *filter_str; GValue intersect = { 0, }; const GValue *filter_value = gst_structure_id_get_value (info->filter, field_id); if (!filter_value) return TRUE; value_str = gst_value_serialize (value); filter_str = gst_value_serialize (filter_value); if (!gst_value_can_intersect (value, filter_value)) { _incompatible_fields_info_set_found (info); g_string_append_printf (info->str, "\n -> Field '%s' downstream value from structure %d '(%s)%s' can't intersect with" " filter value from structure number %d '(%s)%s' because of their types.", g_quark_to_string (field_id), info->caps_struct_num, G_VALUE_TYPE_NAME (value), value_str, info->filter_caps_struct_num, G_VALUE_TYPE_NAME (filter_value), filter_str); return TRUE; } if (gst_value_intersect (&intersect, value, filter_value)) { g_value_reset (&intersect); return TRUE; } _incompatible_fields_info_set_found (info); g_string_append_printf (info->str, "\n -> Field '%s' downstream value from structure %d '(%s)%s' can't intersect with" " filter value from structure number %d '(%s)%s'", g_quark_to_string (field_id), info->caps_struct_num, G_VALUE_TYPE_NAME (value), value_str, info->filter_caps_struct_num, G_VALUE_TYPE_NAME (filter_value), filter_str); g_free (value_str); g_free (filter_str); return TRUE; }