mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-27 10:40:34 +00:00
API: Add gst_uri_protocol_is_supported(), which checks if an sink or src that supports a given URI protocol exists.
Original commit message from CVS: * docs/gst/gstreamer-sections.txt: * gst/gsturi.c: (get_element_factories_from_uri_protocol), (gst_uri_protocol_is_supported), (gst_element_make_from_uri): * gst/gsturi.h: API: Add gst_uri_protocol_is_supported(), which checks if an sink or src that supports a given URI protocol exists.
This commit is contained in:
parent
7223b8a804
commit
003aaeaef3
4 changed files with 61 additions and 7 deletions
|
@ -1,3 +1,12 @@
|
|||
2007-04-27 Sebastian Dröge <slomo@circular-chaos.org>
|
||||
|
||||
* docs/gst/gstreamer-sections.txt:
|
||||
* gst/gsturi.c: (get_element_factories_from_uri_protocol),
|
||||
(gst_uri_protocol_is_supported), (gst_element_make_from_uri):
|
||||
* gst/gsturi.h:
|
||||
API: Add gst_uri_protocol_is_supported(), which checks if an sink
|
||||
or src that supports a given URI protocol exists.
|
||||
|
||||
2007-04-27 Sebastian Dröge <slomo@circular-chaos.org>
|
||||
|
||||
* plugins/elements/gstfilesink.c: (gst_file_sink_uri_set_uri):
|
||||
|
|
|
@ -2070,6 +2070,7 @@ GstURIHandlerInterface
|
|||
GstURIType
|
||||
GST_URI_TYPE_IS_VALID
|
||||
gst_uri_protocol_is_valid
|
||||
gst_uri_protocol_is_supported
|
||||
gst_uri_is_valid
|
||||
gst_uri_has_protocol
|
||||
gst_uri_get_protocol
|
||||
|
|
56
gst/gsturi.c
56
gst/gsturi.c
|
@ -458,7 +458,7 @@ gst_uri_construct (const gchar * protocol, const gchar * location)
|
|||
typedef struct
|
||||
{
|
||||
GstURIType type;
|
||||
gchar *protocol;
|
||||
const gchar *protocol;
|
||||
}
|
||||
SearchEntry;
|
||||
|
||||
|
@ -502,6 +502,50 @@ sort_by_rank (gconstpointer a, gconstpointer b)
|
|||
gst_plugin_feature_get_rank (first);
|
||||
}
|
||||
|
||||
static GList *
|
||||
get_element_factories_from_uri_protocol (const GstURIType type,
|
||||
const gchar * protocol)
|
||||
{
|
||||
GList *possibilities;
|
||||
SearchEntry entry;
|
||||
|
||||
g_return_val_if_fail (protocol, NULL);
|
||||
|
||||
entry.type = type;
|
||||
entry.protocol = protocol;
|
||||
possibilities = gst_registry_feature_filter (gst_registry_get_default (),
|
||||
search_by_entry, FALSE, &entry);
|
||||
|
||||
return possibilities;
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_uri_protocol_is_supported:
|
||||
* @type: Wether to check for a source or a sink
|
||||
* @protocol: Protocol that should be checkd for.
|
||||
*
|
||||
* Checks if an element exists that supports the given URI protocol.
|
||||
*
|
||||
* Returns: TRUE
|
||||
*
|
||||
* Since: 0.10.13
|
||||
*/
|
||||
gboolean
|
||||
gst_uri_protocol_is_supported (const GstURIType type, const gchar * protocol)
|
||||
{
|
||||
GList *possibilities;
|
||||
|
||||
g_return_val_if_fail (protocol, FALSE);
|
||||
|
||||
possibilities = get_element_factories_from_uri_protocol (type, protocol);
|
||||
|
||||
if (possibilities) {
|
||||
g_list_free (possibilities);
|
||||
return TRUE;
|
||||
} else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_element_make_from_uri:
|
||||
* @type: Wether to create a source or a sink
|
||||
|
@ -517,17 +561,15 @@ gst_element_make_from_uri (const GstURIType type, const gchar * uri,
|
|||
const gchar * elementname)
|
||||
{
|
||||
GList *possibilities, *walk;
|
||||
SearchEntry entry;
|
||||
gchar *protocol;
|
||||
GstElement *ret = NULL;
|
||||
|
||||
g_return_val_if_fail (GST_URI_TYPE_IS_VALID (type), NULL);
|
||||
g_return_val_if_fail (gst_uri_is_valid (uri), NULL);
|
||||
|
||||
entry.type = type;
|
||||
entry.protocol = gst_uri_get_protocol (uri);
|
||||
possibilities = gst_registry_feature_filter (gst_registry_get_default (),
|
||||
search_by_entry, FALSE, &entry);
|
||||
g_free (entry.protocol);
|
||||
protocol = gst_uri_get_protocol (uri);
|
||||
possibilities = get_element_factories_from_uri_protocol (type, protocol);
|
||||
g_free (protocol);
|
||||
|
||||
if (!possibilities) {
|
||||
GST_DEBUG ("No %s for URI '%s'", type == GST_URI_SINK ? "sink" : "source",
|
||||
|
|
|
@ -113,6 +113,8 @@ struct _GstURIHandlerInterface {
|
|||
/* general URI functions */
|
||||
|
||||
gboolean gst_uri_protocol_is_valid (const gchar * protocol);
|
||||
gboolean gst_uri_protocol_is_supported (const GstURIType type,
|
||||
const gchar *protocol);
|
||||
gboolean gst_uri_is_valid (const gchar * uri);
|
||||
gchar * gst_uri_get_protocol (const gchar * uri);
|
||||
gboolean gst_uri_has_protocol (const gchar * uri,
|
||||
|
|
Loading…
Reference in a new issue