1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
// DO NOT EDIT
use crate::{ffi, Object, Stream};
use glib::translate::*;
glib::wrapper! {
/// A collection of [`Stream`][crate::Stream] that are available.
///
/// A [`StreamCollection`][crate::StreamCollection] will be provided by elements that can make those
/// streams available. Applications can use the collection to show the user
/// what streams are available by using [`stream()`][Self::stream()]
///
/// Once posted, a [`StreamCollection`][crate::StreamCollection] is immutable. Updates are made by sending
/// a new [`StreamCollection`][crate::StreamCollection] message, which may or may not share some of
/// the [`Stream`][crate::Stream] objects from the collection it replaces. The receiver can check
/// the sender of a stream collection message to know which collection is
/// obsoleted.
///
/// Several elements in a pipeline can provide [`StreamCollection`][crate::StreamCollection].
///
/// Applications can activate streams from a collection by using the
/// [`EventType::SelectStreams`][crate::EventType::SelectStreams] event on a pipeline, bin or element.
///
/// ## Properties
///
///
/// #### `upstream-id`
/// stream-id
///
/// Readable | Writeable | Construct
/// <details><summary><h4>Object</h4></summary>
///
///
/// #### `name`
/// Readable | Writeable | Construct
///
///
/// #### `parent`
/// The parent of the object. Please note, that when changing the 'parent'
/// property, we don't emit [`notify`][struct@crate::glib::Object#notify] and [`deep-notify`][struct@crate::Object#deep-notify]
/// signals due to locking issues. In some cases one can use
/// [`element-added`][struct@crate::Bin#element-added] or [`element-removed`][struct@crate::Bin#element-removed] signals on the parent to
/// achieve a similar effect.
///
/// Readable | Writeable
/// </details>
///
/// ## Signals
///
///
/// #### `stream-notify`
/// The stream notify signal is used to be notified of property changes to
/// streams within the collection.
///
/// Detailed
/// <details><summary><h4>Object</h4></summary>
///
///
/// #### `deep-notify`
/// The deep notify signal is used to be notified of property changes. It is
/// typically attached to the toplevel bin to receive notifications from all
/// the elements contained in that bin.
///
/// Detailed
/// </details>
///
/// # Implements
///
/// [`GstObjectExt`][trait@crate::prelude::GstObjectExt], [`trait@glib::ObjectExt`]
#[doc(alias = "GstStreamCollection")]
pub struct StreamCollection(Object<ffi::GstStreamCollection, ffi::GstStreamCollectionClass>) @extends Object;
match fn {
type_ => || ffi::gst_stream_collection_get_type(),
}
}
impl StreamCollection {
/// Get the number of streams this collection contains
///
/// # Returns
///
/// The number of streams that `self` contains
#[doc(alias = "gst_stream_collection_get_size")]
#[doc(alias = "get_size")]
pub fn size(&self) -> u32 {
unsafe { ffi::gst_stream_collection_get_size(self.to_glib_none().0) }
}
/// Retrieve the [`Stream`][crate::Stream] with index `index` from the collection.
///
/// The caller should not modify the returned [`Stream`][crate::Stream]
/// ## `index`
/// Index of the stream to retrieve
///
/// # Returns
///
/// A [`Stream`][crate::Stream]
#[doc(alias = "gst_stream_collection_get_stream")]
#[doc(alias = "get_stream")]
pub fn stream(&self, index: u32) -> Option<Stream> {
unsafe {
from_glib_none(ffi::gst_stream_collection_get_stream(
self.to_glib_none().0,
index,
))
}
}
/// Returns the upstream id of the `self`.
///
/// # Returns
///
/// The upstream id
#[doc(alias = "gst_stream_collection_get_upstream_id")]
#[doc(alias = "get_upstream_id")]
#[doc(alias = "upstream-id")]
pub fn upstream_id(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::gst_stream_collection_get_upstream_id(
self.to_glib_none().0,
))
}
}
//#[doc(alias = "stream-notify")]
//pub fn connect_stream_notify<Unsupported or ignored types>(&self, detail: Option<&str>, f: F) -> SignalHandlerId {
// Ignored prop: GObject.ParamSpec
//}
}
unsafe impl Send for StreamCollection {}
unsafe impl Sync for StreamCollection {}