[−]Struct gstreamer::Element
GstElement is the abstract base class needed to construct an element that
can be used in a GStreamer pipeline. Please refer to the plugin writers
guide for more information on creating Element
subclasses.
The name of a Element
can be get with gst_element_get_name
and set with
gst_element_set_name
. For speed, GST_ELEMENT_NAME() can be used in the
core when using the appropriate locking. Do not use this in plug-ins or
applications in order to retain ABI compatibility.
Elements can have pads (of the type Pad
). These pads link to pads on
other elements. Buffer
flow between these linked pads.
A Element
has a glib::List
of Pad
structures for all their input (or sink)
and output (or source) pads.
Core and plug-in writers can add and remove pads with ElementExt::add_pad
and ElementExt::remove_pad
.
An existing pad of an element can be retrieved by name with
ElementExt::get_static_pad
. A new dynamic pad can be created using
ElementExt::request_pad
with a PadTemplate
.
An iterator of all pads can be retrieved with ElementExt::iterate_pads
.
Elements can be linked through their pads.
If the link is straightforward, use the ElementExt::link
convenience function to link two elements, or ElementExt::link_many
for more elements in a row.
Use ElementExt::link_filtered
to link two elements constrained by
a specified set of Caps
.
For finer control, use ElementExt::link_pads
and
ElementExt::link_pads_filtered
to specify the pads to link on
each element by name.
Each element has a state (see State
). You can get and set the state
of an element with Element::get_state
and Element::set_state
.
Setting a state triggers a StateChange
. To get a string representation
of a State
, use Element::state_get_name
.
You can get and set a Clock
on an element using ElementExt::get_clock
and ElementExt::set_clock
.
Some elements can provide a clock for the pipeline if
the ElementFlags::ProvideClock
flag is set. With the
ElementExt::provide_clock
method one can retrieve the clock provided by
such an element.
Not all elements require a clock to operate correctly. If the
ElementFlags::RequireClock
() flag is set, a clock should be set on the
element with ElementExt::set_clock
.
Note that clock selection and distribution is normally handled by the
toplevel Pipeline
so the clock functions are only to be used in very
specific situations.
Implements
Methods
impl Element
[src][−]
pub fn make_from_uri(
type_: URIType,
uri: &str,
elementname: Option<&str>
) -> Result<Element, Error>
[src][−]
type_: URIType,
uri: &str,
elementname: Option<&str>
) -> Result<Element, Error>
Creates an element for handling the given URI.
type_
Whether to create a source or a sink
uri
URI to create an element for
elementname
Name of created element, can be None
.
Returns
a new element or None
if none
could be created
impl Element
[src][−]
pub fn link_many<E: IsA<Element>>(elements: &[&E]) -> Result<(), BoolError>
[src]
pub fn unlink_many<E: IsA<Element>>(elements: &[&E])
[src]
pub fn register(
plugin: Option<&Plugin>,
name: &str,
rank: Rank,
type_: Type
) -> Result<(), BoolError>
[src][−]
plugin: Option<&Plugin>,
name: &str,
rank: Rank,
type_: Type
) -> Result<(), BoolError>
Create a new elementfactory capable of instantiating objects of the
type_
and add the factory to plugin
.
plugin
Plugin
to register the element with, or None
for
a static element.
name
name of elements of this type
rank
rank of element (higher rank means more importance when autoplugging)
type_
GType of element to register
Returns
true
, if the registering succeeded, false
on error
Trait Implementations
impl Clone for Element
[+]
impl Debug for Element
[+]
impl Eq for Element
impl Hash for Element
[+]
impl IsA<Element> for Bin
impl IsA<Element> for Pipeline
impl IsA<Element> for TagSetter
impl IsA<Element> for TocSetter
impl IsA<Object> for Element
impl Ord for Element
[+]
impl<T: ObjectType> PartialEq<T> for Element
[+]
impl<T: ObjectType> PartialOrd<T> for Element
[+]
impl Send for Element
[src]
impl StaticType for Element
[+]
impl Sync for Element
[src]
Auto Trait Implementations
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src][+]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<Super, Sub> CanDowncast<Sub> for Super where
Sub: IsA<Super>,
Super: IsA<Super>,
[src]
Sub: IsA<Super>,
Super: IsA<Super>,
impl<T> Cast for T where
T: ObjectType,
[src][+]
T: ObjectType,
impl<T> From<T> for T
[src][+]
impl<T, U> Into<U> for T where
U: From<T>,
[src][+]
U: From<T>,
impl<T> ObjectExt for T where
T: ObjectType,
[src][+]
T: ObjectType,
impl<'a, T> ToGlibContainerFromSlice<'a, *const GList> for T where
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
[src][+]
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
impl<'a, T> ToGlibContainerFromSlice<'a, *const GPtrArray> for T where
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
[src][+]
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
impl<'a, T> ToGlibContainerFromSlice<'a, *mut GArray> for T where
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
[src][+]
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
impl<'a, T> ToGlibContainerFromSlice<'a, *mut GList> for T where
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
[src][+]
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
impl<'a, T> ToGlibContainerFromSlice<'a, *mut GPtrArray> for T where
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
[src][+]
T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>,
impl<T> ToOwned for T where
T: Clone,
[src][+]
T: Clone,
impl<T> ToSendValue for T where
T: ToValue + SetValue + Send + ?Sized,
[src][+]
T: ToValue + SetValue + Send + ?Sized,
impl<T> ToValue for T where
T: SetValue + ?Sized,
[src][+]
T: SetValue + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,