elementfactory: add gst_element_factory_get_metadata_keys()

API: gst_element_factory_get_metadata_keys()
This commit is contained in:
Tim-Philipp Müller 2012-05-19 14:52:29 +01:00
parent 6e87803114
commit 1ee520790a
4 changed files with 37 additions and 0 deletions

View file

@ -814,6 +814,7 @@ gst_element_register
gst_element_factory_find gst_element_factory_find
gst_element_factory_get_element_type gst_element_factory_get_element_type
gst_element_factory_get_metadata gst_element_factory_get_metadata
gst_element_factory_get_metadata_keys
gst_element_factory_get_num_pad_templates gst_element_factory_get_num_pad_templates
gst_element_factory_get_uri_type gst_element_factory_get_uri_type
gst_element_factory_get_uri_protocols gst_element_factory_get_uri_protocols

View file

@ -509,6 +509,40 @@ gst_element_factory_get_metadata (GstElementFactory * factory,
return gst_structure_get_string ((GstStructure *) factory->metadata, key); return gst_structure_get_string ((GstStructure *) factory->metadata, key);
} }
/**
* gst_element_factory_get_metadata_keys:
* @factory,: a #GstElementFactory
*
* Get the available keys for the metadata on @factory.
*
* Returns: a %NULL-terminated array of key strings, or %NULL when
* there is no metadata. Free with g_strfreev() when no longer needd.
*/
gchar **
gst_element_factory_get_metadata_keys (GstElementFactory * factory)
{
GstStructure *metadata;
gchar **arr;
gint i, num;
g_return_val_if_fail (GST_IS_ELEMENT_FACTORY (factory), NULL);
metadata = (GstStructure *) factory->metadata;
if (metadata == NULL)
return NULL;
num = gst_structure_n_fields (metadata);
if (num == 0)
return NULL;
arr = g_new (gchar *, num + 1);
for (i = 0; i < num; ++i) {
arr[i] = g_strdup (gst_structure_nth_field_name (metadata, i));
}
arr[i] = NULL;
return arr;
}
/** /**
* gst_element_factory_get_num_pad_templates: * gst_element_factory_get_num_pad_templates:
* @factory: a #GstElementFactory * @factory: a #GstElementFactory

View file

@ -85,6 +85,7 @@ GstElementFactory * gst_element_factory_find (const gchar *na
GType gst_element_factory_get_element_type (GstElementFactory *factory); GType gst_element_factory_get_element_type (GstElementFactory *factory);
const gchar * gst_element_factory_get_metadata (GstElementFactory *factory, const gchar *key); const gchar * gst_element_factory_get_metadata (GstElementFactory *factory, const gchar *key);
gchar ** gst_element_factory_get_metadata_keys (GstElementFactory *factory);
guint gst_element_factory_get_num_pad_templates (GstElementFactory *factory); guint gst_element_factory_get_num_pad_templates (GstElementFactory *factory);
const GList * gst_element_factory_get_static_pad_templates (GstElementFactory *factory); const GList * gst_element_factory_get_static_pad_templates (GstElementFactory *factory);

View file

@ -338,6 +338,7 @@ EXPORTS
gst_element_factory_find gst_element_factory_find
gst_element_factory_get_element_type gst_element_factory_get_element_type
gst_element_factory_get_metadata gst_element_factory_get_metadata
gst_element_factory_get_metadata_keys
gst_element_factory_get_num_pad_templates gst_element_factory_get_num_pad_templates
gst_element_factory_get_static_pad_templates gst_element_factory_get_static_pad_templates
gst_element_factory_get_type gst_element_factory_get_type