diff --git a/ChangeLog b/ChangeLog index b2ae06ce3d..725dca13e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-08-12 Wim Taymans + + * docs/gst/gstreamer-sections.txt: + * gst/gststructure.c: (gst_structure_get_uint): + * gst/gststructure.h: + Add function to get uint from a structure. + API: gst_structure_get_uint() + 2007-08-12 Wim Taymans * gst/gstcaps.c: (gst_caps_set_simple_valist), diff --git a/docs/gst/gstreamer-sections.txt b/docs/gst/gstreamer-sections.txt index 16722afa93..a0e9b3c9bc 100644 --- a/docs/gst/gstreamer-sections.txt +++ b/docs/gst/gstreamer-sections.txt @@ -1768,6 +1768,7 @@ gst_structure_has_field gst_structure_has_field_typed gst_structure_get_boolean gst_structure_get_int +gst_structure_get_uint gst_structure_get_fourcc gst_structure_get_double gst_structure_get_string diff --git a/gst/gststructure.c b/gst/gststructure.c index 1ccb857dd8..d837cb38a5 100644 --- a/gst/gststructure.c +++ b/gst/gststructure.c @@ -1042,6 +1042,42 @@ gst_structure_get_int (const GstStructure * structure, return TRUE; } +/** + * gst_structure_get_uint: + * @structure: a #GstStructure + * @fieldname: the name of a field + * @value: a pointer to a uint to set + * + * Sets the uint pointed to by @value corresponding to the value of the + * given field. Caller is responsible for making sure the field exists + * and has the correct type. + * + * Returns: %TRUE if the value could be set correctly. If there was no field + * with @fieldname or the existing field did not contain a uint, this function + * returns %FALSE. + */ +gboolean +gst_structure_get_uint (const GstStructure * structure, + const gchar * fieldname, guint * value) +{ + GstStructureField *field; + + g_return_val_if_fail (structure != NULL, FALSE); + g_return_val_if_fail (fieldname != NULL, FALSE); + g_return_val_if_fail (value != NULL, FALSE); + + field = gst_structure_get_field (structure, fieldname); + + if (field == NULL) + return FALSE; + if (!G_VALUE_HOLDS_UINT (&field->value)) + return FALSE; + + *value = g_value_get_uint (&field->value); + + return TRUE; +} + /** * gst_structure_get_fourcc: * @structure: a #GstStructure diff --git a/gst/gststructure.h b/gst/gststructure.h index 8bdfc847f8..0fc50315a7 100644 --- a/gst/gststructure.h +++ b/gst/gststructure.h @@ -167,6 +167,9 @@ gboolean gst_structure_get_boolean (const GstStructure gboolean gst_structure_get_int (const GstStructure *structure, const gchar *fieldname, gint *value); +gboolean gst_structure_get_uint (const GstStructure *structure, + const gchar *fieldname, + guint *value); gboolean gst_structure_get_fourcc (const GstStructure *structure, const gchar *fieldname, guint32 *value);