mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
value: Add support for GstAllocationParams comparision
This is useful to compare buffer pool configuaration. https://bugzilla.gnome.org/show_bug.cgi?id=728268
This commit is contained in:
parent
00614e2c2b
commit
64aa64cb80
2 changed files with 51 additions and 0 deletions
|
@ -5840,6 +5840,33 @@ gst_value_compare_bitmask (const GValue * value1, const GValue * value2)
|
|||
return GST_VALUE_UNORDERED;
|
||||
}
|
||||
|
||||
|
||||
/***********************
|
||||
* GstAllocationParams *
|
||||
***********************/
|
||||
static gint
|
||||
gst_value_compare_allocation_params (const GValue * value1,
|
||||
const GValue * value2)
|
||||
{
|
||||
GstAllocationParams *v1, *v2;
|
||||
|
||||
v1 = value1->data[0].v_pointer;
|
||||
v2 = value2->data[0].v_pointer;
|
||||
|
||||
if (v1 == NULL && v1 == v2)
|
||||
return GST_VALUE_EQUAL;
|
||||
|
||||
if (v1 == NULL || v2 == NULL)
|
||||
return GST_VALUE_UNORDERED;
|
||||
|
||||
if (v1->flags == v2->flags && v1->align == v2->align &&
|
||||
v1->prefix == v2->prefix && v1->padding == v2->padding)
|
||||
return GST_VALUE_EQUAL;
|
||||
|
||||
return GST_VALUE_UNORDERED;
|
||||
}
|
||||
|
||||
|
||||
/************
|
||||
* GObject *
|
||||
************/
|
||||
|
@ -6257,6 +6284,18 @@ _priv_gst_value_initialize (void)
|
|||
gst_value_register (&gst_value);
|
||||
}
|
||||
|
||||
{
|
||||
static GstValueTable gst_value = {
|
||||
0,
|
||||
gst_value_compare_allocation_params,
|
||||
NULL,
|
||||
NULL,
|
||||
};
|
||||
|
||||
gst_value.type = gst_allocation_params_get_type ();
|
||||
gst_value_register (&gst_value);
|
||||
}
|
||||
|
||||
{
|
||||
static GstValueTable gst_value = {
|
||||
0,
|
||||
|
|
|
@ -584,6 +584,7 @@ GST_START_TEST (test_value_compare)
|
|||
GValue value1 = { 0 };
|
||||
GValue value2 = { 0 };
|
||||
GValue tmp = { 0 };
|
||||
GstAllocationParams alloc_params = { 0 };
|
||||
|
||||
g_value_init (&value1, G_TYPE_INT);
|
||||
g_value_set_int (&value1, 10);
|
||||
|
@ -781,6 +782,17 @@ GST_START_TEST (test_value_compare)
|
|||
fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);
|
||||
g_value_unset (&value1);
|
||||
g_value_unset (&value2);
|
||||
|
||||
/* Check that we can compare allocation params */
|
||||
g_value_init (&value1, GST_TYPE_ALLOCATION_PARAMS);
|
||||
g_value_set_boxed (&value1, &alloc_params);
|
||||
g_value_init (&value2, GST_TYPE_ALLOCATION_PARAMS);
|
||||
alloc_params.align = 1;
|
||||
g_value_set_boxed (&value2, &alloc_params);
|
||||
fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_UNORDERED);
|
||||
fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);
|
||||
g_value_unset (&value1);
|
||||
g_value_unset (&value2);
|
||||
}
|
||||
|
||||
GST_END_TEST;
|
||||
|
|
Loading…
Reference in a new issue