rtphdrext test: Use helper function for caps

Also, let the base class parse the direction for us.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/906>
This commit is contained in:
Olivier Crête 2021-09-24 13:02:13 -04:00 committed by GStreamer Marge Bot
parent 2db9f42b36
commit 674611c851
2 changed files with 10 additions and 52 deletions

View file

@ -56,7 +56,6 @@ struct _GstRTPDummyHdrExt
guint set_attributes_count;
guint caps_field_value;
gchar *direction;
gchar *attributes;
};
@ -139,8 +138,6 @@ gst_rtp_dummy_hdr_ext_finalize (GObject * object)
g_free (dummy->attributes);
dummy->attributes = NULL;
g_free (dummy->direction);
dummy->direction = NULL;
G_OBJECT_CLASS (gst_rtp_dummy_hdr_ext_parent_class)->finalize (object);
}
@ -208,42 +205,9 @@ gst_rtp_dummy_hdr_ext_set_caps_from_attributes (GstRTPHeaderExtension * ext,
GstCaps * caps)
{
GstRTPDummyHdrExt *dummy = GST_RTP_DUMMY_HDR_EXT (ext);
gchar *field_name = gst_rtp_header_extension_get_sdp_caps_field_name (ext);
GstStructure *s = gst_caps_get_structure (caps, 0);
if (!field_name)
return FALSE;
if (dummy->attributes || dummy->direction) {
GValue arr = G_VALUE_INIT;
GValue val = G_VALUE_INIT;
g_value_init (&arr, GST_TYPE_ARRAY);
g_value_init (&val, G_TYPE_STRING);
/* direction */
g_value_set_string (&val, dummy->direction);
gst_value_array_append_value (&arr, &val);
/* uri */
g_value_set_string (&val, gst_rtp_header_extension_get_uri (ext));
gst_value_array_append_value (&arr, &val);
/* attributes */
g_value_set_string (&val, dummy->attributes);
gst_value_array_append_value (&arr, &val);
gst_structure_set_value (s, field_name, &arr);
g_value_unset (&val);
g_value_unset (&arr);
} else {
gst_structure_set (s, field_name, G_TYPE_STRING,
gst_rtp_header_extension_get_uri (ext), NULL);
}
g_free (field_name);
return TRUE;
return gst_rtp_header_extension_set_caps_from_attributes_helper (ext, caps,
dummy->attributes);
}
static gboolean
@ -253,9 +217,9 @@ gst_rtp_dummy_hdr_ext_set_attributes_from_caps (GstRTPHeaderExtension * ext,
GstRTPDummyHdrExt *dummy = GST_RTP_DUMMY_HDR_EXT (ext);
gchar *field_name = gst_rtp_header_extension_get_sdp_caps_field_name (ext);
GstStructure *s = gst_caps_get_structure (caps, 0);
gchar *new_attrs = NULL, *new_direction = NULL;
const gchar *ext_uri;
const GValue *arr;
gchar *new_attrs = NULL;
dummy->set_attributes_count++;
@ -279,11 +243,6 @@ gst_rtp_dummy_hdr_ext_set_attributes_from_caps (GstRTPHeaderExtension * ext,
gst_rtp_header_extension_get_uri (ext)) != 0)
goto error;
val = gst_value_array_get_value (arr, 0);
if (!G_VALUE_HOLDS_STRING (val))
goto error;
new_direction = g_value_dup_string (val);
val = gst_value_array_get_value (arr, 2);
if (!G_VALUE_HOLDS_STRING (val))
goto error;
@ -295,15 +254,12 @@ gst_rtp_dummy_hdr_ext_set_attributes_from_caps (GstRTPHeaderExtension * ext,
g_free (dummy->attributes);
dummy->attributes = new_attrs;
g_free (dummy->direction);
dummy->direction = new_direction;
g_free (field_name);
return TRUE;
error:
g_free (field_name);
g_free (new_direction);
g_free (new_attrs);
return FALSE;
}

View file

@ -95,7 +95,8 @@ GST_START_TEST (rtp_header_ext_caps_with_attributes)
gst_rtp_header_extension_set_id (dummy, 1);
GST_RTP_DUMMY_HDR_EXT (dummy)->direction = g_strdup (direction);
gst_rtp_header_extension_set_direction (dummy,
GST_RTP_HEADER_EXTENSION_DIRECTION_RECVONLY);
GST_RTP_DUMMY_HDR_EXT (dummy)->attributes = g_strdup (attributes);
fail_unless (gst_rtp_header_extension_set_caps_from_attributes (dummy, caps));
@ -111,8 +112,9 @@ GST_START_TEST (rtp_header_ext_caps_with_attributes)
val = gst_value_array_get_value (arr, 2);
fail_unless_equals_int (g_strcmp0 (g_value_get_string (val), attributes), 0);
g_free (GST_RTP_DUMMY_HDR_EXT (dummy)->direction);
GST_RTP_DUMMY_HDR_EXT (dummy)->direction = NULL;
gst_rtp_header_extension_set_direction (dummy,
GST_RTP_HEADER_EXTENSION_DIRECTION_SENDRECV |
GST_RTP_HEADER_EXTENSION_DIRECTION_INHERITED);
g_free (GST_RTP_DUMMY_HDR_EXT (dummy)->attributes);
GST_RTP_DUMMY_HDR_EXT (dummy)->attributes = NULL;
@ -120,8 +122,8 @@ GST_START_TEST (rtp_header_ext_caps_with_attributes)
fail_unless_equals_int (g_strcmp0 (GST_RTP_DUMMY_HDR_EXT (dummy)->attributes,
attributes), 0);
fail_unless_equals_int (g_strcmp0 (GST_RTP_DUMMY_HDR_EXT (dummy)->direction,
direction), 0);
fail_unless_equals_int (gst_rtp_header_extension_get_direction (dummy),
GST_RTP_HEADER_EXTENSION_DIRECTION_RECVONLY);
gst_caps_unref (caps);
gst_object_unref (dummy);