mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
utils: expose pad_link_maybe_ghosting
This is a useful function to automatically add ghost pads when linking two elements across bin boundaries without know their exact parentage. e.g. when using gst_parse_bin_from_description (with or without it ghosting pads), one can simply retreive the src/sink pads from the bin to link to another pad. Similar functionality is provided by gst_element_link_pads{_full}() however only by pad name rather than by actual pads. API: gst_pad_link_maybe_ghosting_full https://bugzilla.gnome.org/show_bug.cgi?id=764176
This commit is contained in:
parent
4503232f83
commit
f876306638
4 changed files with 37 additions and 0 deletions
|
@ -1819,6 +1819,7 @@ gst_pad_get_pad_template
|
||||||
|
|
||||||
gst_pad_link
|
gst_pad_link
|
||||||
gst_pad_link_full
|
gst_pad_link_full
|
||||||
|
gst_pad_link_maybe_ghosting_full
|
||||||
gst_pad_unlink
|
gst_pad_unlink
|
||||||
gst_pad_is_linked
|
gst_pad_is_linked
|
||||||
gst_pad_can_link
|
gst_pad_can_link
|
||||||
|
|
|
@ -1518,6 +1518,38 @@ pad_link_maybe_ghosting (GstPad * src, GstPad * sink, GstPadLinkCheck flags)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_pad_link_maybe_ghosting_full:
|
||||||
|
* @src: a #GstPad
|
||||||
|
* @sink: a #GstPad
|
||||||
|
* @flags: some #GstPadLinkCheck flags
|
||||||
|
*
|
||||||
|
* Links @src to @sink, creating any #GstGhostPad's in between as necessary.
|
||||||
|
*
|
||||||
|
* This is a convenience function to save having to create and add intermediate
|
||||||
|
* #GstGhostPad's as required for linking across #GstBin boundaries.
|
||||||
|
*
|
||||||
|
* If @src or @sink pads don't have parent elements or do not share a common
|
||||||
|
* ancestor, the link will fail.
|
||||||
|
*
|
||||||
|
* Calling gst_pad_link_maybe_ghosting_full() with
|
||||||
|
* @flags == %GST_PAD_LINK_CHECK_DEFAULT is the recommended way of linking
|
||||||
|
* pads with safety checks applied.
|
||||||
|
*
|
||||||
|
* Returns: whether the link succeeded.
|
||||||
|
*
|
||||||
|
* Since: 1.10
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
gst_pad_link_maybe_ghosting_full (GstPad * src, GstPad * sink,
|
||||||
|
GstPadLinkCheck flags)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GST_IS_PAD (src), FALSE);
|
||||||
|
g_return_val_if_fail (GST_IS_PAD (sink), FALSE);
|
||||||
|
|
||||||
|
return pad_link_maybe_ghosting (src, sink, flags);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
release_and_unref_pad (GstElement * element, GstPad * pad, gboolean requestpad)
|
release_and_unref_pad (GstElement * element, GstPad * pad, gboolean requestpad)
|
||||||
{
|
{
|
||||||
|
|
|
@ -924,6 +924,9 @@ gboolean gst_pad_query_convert (GstPad *pad, GstFormat
|
||||||
GstCaps * gst_pad_query_caps (GstPad *pad, GstCaps *filter);
|
GstCaps * gst_pad_query_caps (GstPad *pad, GstCaps *filter);
|
||||||
gboolean gst_pad_query_accept_caps (GstPad *pad, GstCaps *caps);
|
gboolean gst_pad_query_accept_caps (GstPad *pad, GstCaps *caps);
|
||||||
|
|
||||||
|
gboolean gst_pad_link_maybe_ghosting_full (GstPad *src,
|
||||||
|
GstPad *sink,
|
||||||
|
GstPadLinkCheck flags);
|
||||||
|
|
||||||
gboolean gst_pad_peer_query_position (GstPad *pad, GstFormat format, gint64 *cur);
|
gboolean gst_pad_peer_query_position (GstPad *pad, GstFormat format, gint64 *cur);
|
||||||
gboolean gst_pad_peer_query_duration (GstPad *pad, GstFormat format, gint64 *duration);
|
gboolean gst_pad_peer_query_duration (GstPad *pad, GstFormat format, gint64 *duration);
|
||||||
|
|
|
@ -857,6 +857,7 @@ EXPORTS
|
||||||
gst_pad_link_check_get_type
|
gst_pad_link_check_get_type
|
||||||
gst_pad_link_full
|
gst_pad_link_full
|
||||||
gst_pad_link_get_name
|
gst_pad_link_get_name
|
||||||
|
gst_pad_link_maybe_ghosting_full
|
||||||
gst_pad_link_return_get_type
|
gst_pad_link_return_get_type
|
||||||
gst_pad_mark_reconfigure
|
gst_pad_mark_reconfigure
|
||||||
gst_pad_mode_get_name
|
gst_pad_mode_get_name
|
||||||
|
|
Loading…
Reference in a new issue