[DllImport ("gstreamer-0.10.dll") ] static extern bool gst_bin_add (IntPtr raw, IntPtr element); [DllImport ("libgobject-2.0-0.dll") ] static extern IntPtr g_object_ref (IntPtr raw); public bool Add (Gst.Element element) { bool raw_ret = gst_bin_add (Handle, element == null ? IntPtr.Zero : element.Handle); if (raw_ret) { // Incrmenting the refcount of the element. g_object_ref (element.Handle); } bool ret = raw_ret; return ret; } public bool Add (params Element[] elements) { if (elements == null) { return false; } foreach (Element element in elements) { if (element == null || !Add (element)) { return false; } } return true; } public bool Remove (params Element[] elements) { if (elements == null) { return false; } foreach (Element element in elements) { if (element == null || !Remove (element)) { return false; } } return true; } public Gst.Element GetByInterface (System.Type type) { if (!type.IsSubclassOf (typeof (GLib.GInterfaceAdapter))) return null; GLib.GType t = (GLib.GType) type; return GetByInterface (t); } [DllImport ("gstreamer-0.10.dll") ] static extern IntPtr gst_bin_iterate_elements (IntPtr bin); [DllImport ("gstreamer-0.10.dll") ] static extern IntPtr gst_bin_iterate_recurse (IntPtr bin); [DllImport ("gstreamer-0.10.dll") ] static extern IntPtr gst_bin_iterate_sinks (IntPtr bin); [DllImport ("gstreamer-0.10.dll") ] static extern IntPtr gst_bin_iterate_sorted (IntPtr bin); [DllImport ("gstreamer-0.10.dll") ] static extern IntPtr gst_bin_iterate_sources (IntPtr bin); [DllImport ("gstreamer-0.10.dll") ] static extern IntPtr gst_bin_iterate_all_by_interface (IntPtr bin, IntPtr gtype); public IEnumerable Elements { get { return new Enumerable (gst_bin_iterate_elements (Handle)); } } public IEnumerable ElementsRecurse { get { return new Enumerable (gst_bin_iterate_recurse (Handle)); } } public IEnumerable ElementsSorted { get { return new Enumerable (gst_bin_iterate_sorted (Handle)); } } public IEnumerable SinkElements { get { return new Enumerable (gst_bin_iterate_sinks (Handle)); } } public IEnumerable SourceElements { get { return new Enumerable (gst_bin_iterate_sources (Handle)); } } public IEnumerable GetAllByInterface (GLib.GType type) { return new Enumerable (gst_bin_iterate_all_by_interface (Handle, type.Val)); } public IEnumerable GetAllByInterface (System.Type type) { if (!type.IsSubclassOf (typeof (GLib.GInterfaceAdapter))) return null; GLib.GType t = (GLib.GType) type; return GetAllByInterface (t); }