[gstreamermm] Gst::Bin: updated GstBin wrapper.



commit f27888e38902d41b42265883b3be0ef2c00a82f7
Author: Marcin Kolny <marcin kolny gmail com>
Date:   Fri Aug 8 12:27:40 2014 +0200

    Gst::Bin: updated GstBin wrapper.
    
          * gstreamer/src/bin.hg: Updated handwritted comments. Wrapped
          GstBinFlags enum and children_cookie member. Removed deprecated
          gst_bin_find_unconnected_pad ignore macro.

 gstreamer/src/bin.hg |  166 ++++++++++++++++++++++++++++----------------------
 1 files changed, 92 insertions(+), 74 deletions(-)
---
diff --git a/gstreamer/src/bin.hg b/gstreamer/src/bin.hg
index a0d5de5..7782ba5 100644
--- a/gstreamer/src/bin.hg
+++ b/gstreamer/src/bin.hg
@@ -33,11 +33,16 @@ class GhostPad;
 template <class CppType>
 class Iterator;
 
-/** A base class and element that can contain other elements.
- * Gst::Bin is an element that can contain other Gst::Element, allowing them to
- * be managed as a group. Pads from the child elements can be ghosted to the
- * bin, see Gst::GhostPad. This makes the bin look like any other elements and
- * enables creation of higher-level abstraction elements.
+_WRAP_ENUM(BinFlags, GstBinFlags)
+
+/**
+ * Base class and element that can contain other elements
+ *
+ * Gst::Bin is an element that can contain other Gst::Element, allowing them to be
+ * managed as a group.
+ * Pads from the child elements can be ghosted to the bin, see Gst::GhostPad.
+ * This makes the bin look like any other elements and enables creation of
+ * higher-level abstraction elements.
  *
  * A new Gst::Bin is created with create(). Use a Gst::Pipeline instead if you
  * want to create a toplevel bin because a normal bin doesn't have a bus or
@@ -47,82 +52,87 @@ class Iterator;
  * add(). You can remove elements with remove().
  *
  * An element can be retrieved from a bin with get_element(), using the
- * elements name. get_element_recurse_up() is mainly used for internal purposes
- * and will query the parent bins when the element is not found in the current
- * bin.
+ * elements name. get_element_recurse_up() is mainly used for internal
+ * purposes and will query the parent bins when the element is not found in the
+ * current bin.
  *
- * An iterator of elements in a bin can be retrieved with iterate_elements().
- * Various other iterators exist to retrieve the elements in a bin.
+ * An iterator of elements in a bin can be retrieved with
+ * iterate_elements(). Various other iterators exist to retrieve the
+ * elements in a bin.
  *
- * The element-added signal is fired whenever a new element is added to the
- * bin. Likewise the element-removed signal is fired whenever an element is
- * removed from the bin.
+ * The element-added signal is fired whenever a new element is added to
+ * the bin. Likewise the element-removed signal is fired whenever an
+ * element is removed from the bin.
  *
  * Notes:
  *
- * A Gst::Bin internally intercepts every Gst::Message posted by its children
- * and implements the following default behaviour for each of them:
+ * A Gst::Bin internally intercepts every Gst::Message posted by its children and
+ * implements the following default behaviour for each of them:
  *
  * - Gst::MESSAGE_EOS - This message is only posted by sinks in the PLAYING
  * state. If all sinks posted the EOS message, this bin will post and EOS
  * message upwards.
  *
  * - Gst::MESSAGE_SEGMENT_START - just collected and never forwarded upwards.
- * The messages are used to decide when all elements have completed playback of
- * their segment.
+ * The messages are used to decide when all elements have completed playback
+ * of their segment.
  *
- * - Gst::MESSAGE_SEGMENT_DONE - Is posted by Gst::Bin when all elements that
- * posted a Gst::MESSAGE_SEGMENT_START have posted a Gst::MESSAGE_SEGMENT_DONE.
+ * - Gst::MESSAGE_SEGMENT_DONE - Is posted by Gst::Bin when all elements that posted
+ * a SEGMENT_START have posted a SEGMENT_DONE.
  *
- * - Gst::MESSAGE_DURATION - Is posted by an element that detected a change in
- * the stream duration. The default bin behaviour is to clear any cached
- * duration values so that the next duration query will perform a full duration
- * recalculation. The duration change is posted to the application so that it
- * can refetch the new duration with a duration query.
+ * - Gst::MESSAGE_DURATION_CHANGED - Is posted by an element that detected a change
+ * in the stream duration. The default bin behaviour is to clear any
+ * cached duration values so that the next duration query will perform
+ * a full duration recalculation. The duration change is posted to the
+ * application so that it can refetch the new duration with a duration
+ * query. Note that these messages can be posted before the bin is
+ * prerolled, in which case the duration query might fail.
  *
- * - Gst::MESSAGE_CLOCK_LOST - This message is posted by an element when it can
- * no longer provide a clock. The default bin behaviour is to check if the lost
- * clock was the one provided by the bin. If so and the bin is currently in the
- * PLAYING state, the message is forwarded to the bin parent. This message is
- * also generated when a clock provider is removed from the bin. If this
- * message is received by the application, it should PAUSE the pipeline and set
- * it back to PLAYING to force a new clock distribution.
+ * - Gst::MESSAGE_CLOCK_LOST - This message is posted by an element when it
+ * can no longer provide a clock. The default bin behaviour is to
+ * check if the lost clock was the one provided by the bin. If so and
+ * the bin is currently in the PLAYING state, the message is forwarded to
+ * the bin parent.
+ * This message is also generated when a clock provider is removed from
+ * the bin. If this message is received by the application, it should
+ * PAUSE the pipeline and set it back to PLAYING to force a new clock
+ * distribution.
  *
- * - Gst::MESSAGE_CLOCK_PROVIDE - This message is generated when an element can
- * provide a clock. This mostly happens when a new clock provider is added to
- * the bin. The default behaviour of the bin is to mark the currently selected
- * clock as dirty, which will perform a clock recalculation the next time the
- * bin is asked to provide a clock. This message is never sent tot the
- * application but is forwarded to the parent of the bin.
+ * - Gst::MESSAGE_CLOCK_PROVIDE - This message is generated when an element
+ * can provide a clock. This mostly happens when a new clock
+ * provider is added to the bin. The default behaviour of the bin is to
+ * mark the currently selected clock as dirty, which will perform a clock
+ * recalculation the next time the bin is asked to provide a clock.
+ * This message is never sent tot the application but is forwarded to
+ * the parent of the bin.
  *
  * - OTHERS - posted upwards.
  *
  * A Gst::Bin implements the following default behaviour for answering to a
  * Gst::Query:
  *
- * - Gst::QUERY_DURATION - If the query has been asked before with the same
- * format and the bin is a toplevel bin (ie. has no parent), use the cached
- * previous value. If no previous value was cached, the query is sent to all
- * sink elements in the bin and the MAXIMUM of all values is returned. If the
- * bin is a toplevel bin the value is cached. If no sinks are available in the
- * bin, the query fails.
+ * - Gst::QUERY_DURATION - If the query has been asked before with the same format
+ * and the bin is a toplevel bin (ie. has no parent),
+ * use the cached previous value. If no previous value was cached, the
+ * query is sent to all sink elements in the bin and the MAXIMUM of all
+ * values is returned. If the bin is a toplevel bin the value is cached.
+ * If no sinks are available in the bin, the query fails.
  *
- * - Gst::QUERY_POSITION - The query is sent to all sink elements in the bin
- * and the MAXIMUM of all values is returned. If no sinks are available in the
- * bin, the query fails.
+ * - Gst::QUERY_POSITION - The query is sent to all sink elements in the bin and the
+ * MAXIMUM of all values is returned. If no sinks are available in the bin,
+ * the query fails.
+ * - OTHERS - the query is forwarded to all sink elements, the result
+ * of the first sink that answers the query successfully is returned. If no
+ * sink is in the bin, the query fails.
  *
- * - OTHERS - the query is forwarded to all sink elements, the result of the
- * first sink that answers the query successfully is returned. If no sink is in
- * the bin, the query fails.
+ * A Gst::Bin will by default forward any event sent to it to all sink elements.
+ * If all the sinks return true, the bin will also return true, else false is
+ * returned. If no sinks are in the bin, the event handler will return true.
  *
- * A Gst::Bin will by default forward any event sent to it to all sink
- * elements. If all the sinks return true, the bin will also return true, else
- * false is returned. If no sinks are in the bin, the event handler will return
- * true.
- *
- * Last reviewed on 2006-04-28 (0.10.6)
+ * Last reviewed on 2014-08-28 (1.2.4)
  * @ingroup GstBaseClasses
  */
+
 class Bin
 : public Element,
   public ChildProxy
@@ -148,12 +158,17 @@ public:
    */
    _WRAP_CREATE()
 
-  /** Adds the given element to the bin.
-   * This sets the element's parent, and thus takes ownership of the element.
-   * An element can only be added to one bin.
+  /** Adds the given element to the bin.  Sets the element's parent, and thus
+   * takes ownership of the element. An element can only be added to one bin.
    *
-   * If the element's pads are linked to other pads then the pads will be
-   * unlinked before the element is added to the bin.
+   * If the element's pads are linked to other pads, the pads will be unlinked
+   * before the element is added to the bin.
+   *
+   * When you add an element to an already-running pipeline, you will have to
+   * take care to set the state of the newly-added element to the desired
+   * state (usually PLAYING or PAUSED, same you set the pipeline to originally)
+   * with set_state(), or use sync_state_with_parent().
+   * The bin or pipeline will not take care of this for you.
    *
    * MT safe.
    *
@@ -165,18 +180,18 @@ public:
   Glib::RefPtr<Gst::Bin> add(const Glib::RefPtr<Gst::Element>& element);
   _IGNORE(gst_bin_add, gst_bin_add_many)
 
-  /** Removes the element from the bin, unparenting it as well. Unparenting the
-   * element means that the element will be dereferenced, so if the bin holds
-   * the only reference to the element, the element will be freed in the
-   * process of removing it from the bin.
+  /** Removes the element from the bin, unparenting it as well.
+   * Unparenting the element means that the element will be dereferenced,
+   * so if the bin holds the only reference to the element, the element
+   * will be freed in the process of removing it from the bin.
    *
    * If the element's pads are linked to other pads, the pads will be unlinked
    * before the element is removed from the bin.
    *
    * MT safe.
    *
-   * element the Gst::Element to remove
-   * Returns this Gst::Bin if successful, for chained calls to remove().
+   * @param element the Gst::Element to remove
+   * @return this Gst::Bin if successful, for chained calls to remove().
    *
    * @throws std::runtime_error if the Bin does not want to remove the Element.
    */
@@ -207,7 +222,6 @@ public:
 
   _WRAP_METHOD(Glib::RefPtr<Gst::Pad> find_unlinked_pad(PadDirection dir), gst_bin_find_unlinked_pad)
   _WRAP_METHOD(Glib::RefPtr<const Gst::Pad> find_unlinked_pad(PadDirection dir) const, 
gst_bin_find_unlinked_pad, constversion)
-  _IGNORE(gst_bin_find_unconnected_pad)
 
   _WRAP_METHOD(Gst::Iterator<Gst::Element> iterate_elements(), gst_bin_iterate_elements)
   _WRAP_METHOD(Gst::Iterator<const Gst::Element> iterate_elements() const, gst_bin_iterate_elements)
@@ -229,6 +243,10 @@ public:
    */
   _MEMBER_GET(children, children, Glib::ListHandle< Glib::RefPtr<Gst::Element> >, GList*)
 
+  /** Gets the children cookie.
+   */
+  _MEMBER_GET(children_cookie, children_cookie, guint32, guint32)
+
   /** Gets the number of children in the bin.
    */
   _MEMBER_GET(num_children, numchildren, int, int)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]