gstreamer/docs/random/ensonic/dynlink.txt
Stefan Kost 63a26ed519 docs/random/ensonic/dynlink.txt: More work on proposal for new core api.
Original commit message from CVS:
* docs/random/ensonic/dynlink.txt:
More work on proposal for new core api.
* docs/libs/gstreamer-libs-sections.txt:
* libs/gst/base/gstbasetransform.h:
API: GST_BASE_TRANSFORM_LOCK/UNLOCK added
* libs/gst/controller/gstcontroller.c:
(on_object_controlled_property_changed),
(gst_controller_sync_values),
(gst_controller_set_interpolation_mode):
* libs/gst/controller/gstcontroller.h:
Less verbose logging add docs for unimplemented parts and correctly
return when using unavailable parts.
2007-04-02 14:48:12 +00:00

61 lines
1.6 KiB
Text

$Id$
Currently its only save to link/unlink elements/pad when pipeline is in READY.
= current api =
gboolean gst_element_link (GstElement *src, GstElement *dest);
void gst_element_unlink (GstElement *src, GstElement *dest);
gst_element_link_many, gst_element_unlink_many, gst_element_link_filtered,
gst_element_link_pads, gst_element_unlink_pads, gst_element_link_pads_filtered
GstPadLinkReturn gst_pad_link (GstPad *srcpad, GstPad *sinkpad);
gboolean gst_pad_unlink (GstPad *srcpad, GstPad *sinkpad);
= use cases =
== inserting an element ==
* we have: e1 ! e4
* we want: e1 ! e2 ! e3 ! e4
* we want: e1 ! e2 ! e4
gst_element_insert_linked(e1, e2, e3, e4); // e2 == e3 allowed
gst_pads_insert_link (e1.src, e2.sink, e3.src, e4.sink);
disconnect e1.src, e1.src.peer
disconnect e4.sink, e4.sink.peer
connect e1.src e2.sink
connect e3.src e4.sink
== removing an element ==
* we have: e1 ! e2 ! e3
* we want: e1 ! e3
gst_element_remove_linked(e2);
gst_pads_remove_link (e1.src, e3.sink);
disconnect e1.src, e1.src.peer
disconnect e3.sink, e3.sink..peer
connect e1.src e3.sink
== swapping out an elelment ==
* we have: e1 ! e2 ! e5
* we want: e1 ! e3 ! e4 ! e5
* we want: e1 ! e3 ! e5
gst_element_swap_linked(e1, e3, e4, e5);
gst_pads_insert_link (e1.src, e3.sink, e4.src, e5.sink);
disconnect e1.src, e1.src.peer (=e2.sink)
disconnect e5.sink, e5.sink.peer
connect e1.src e3.sink
connect e4.src e5.sink
= thoughts =
* I don't think we need api for pads
* Should current api check for the state?
* do we want to swapp multiple elements at once