Struct gstreamer_app::AppSrc

source ·
pub struct AppSrc { /* private fields */ }
Expand description

The appsrc element can be used by applications to insert data into a GStreamer pipeline. Unlike most GStreamer elements, appsrc provides external API functions.

appsrc can be used by linking with the libgstapp library to access the methods directly or by using the appsrc action signals.

Before operating appsrc, the caps property must be set to fixed caps describing the format of the data that will be pushed with appsrc. An exception to this is when pushing buffers with unknown caps, in which case no caps should be set. This is typically true of file-like sources that push raw byte buffers. If you don’t want to explicitly set the caps, you can use gst_app_src_push_sample. This method gets the caps associated with the sample and sets them on the appsrc replacing any previously set caps (if different from sample’s caps).

The main way of handing data to the appsrc element is by calling the push_buffer() method or by emitting the push-buffer action signal. This will put the buffer onto a queue from which appsrc will read from in its streaming thread. It is important to note that data transport will not happen from the thread that performed the push-buffer call.

The “max-bytes”, “max-buffers” and “max-time” properties control how much data can be queued in appsrc before appsrc considers the queue full. A filled internal queue will always signal the “enough-data” signal, which signals the application that it should stop pushing data into appsrc. The “block” property will cause appsrc to block the push-buffer method until free data becomes available again.

When the internal queue is running out of data, the “need-data” signal is emitted, which signals the application that it should start pushing more data into appsrc.

In addition to the “need-data” and “enough-data” signals, appsrc can emit the “seek-data” signal when the “stream-mode” property is set to “seekable” or “random-access”. The signal argument will contain the new desired position in the stream expressed in the unit set with the “format” property. After receiving the seek-data signal, the application should push-buffers from the new position.

These signals allow the application to operate the appsrc in two different ways:

The push mode, in which the application repeatedly calls the push-buffer/push-sample method with a new buffer/sample. Optionally, the queue size in the appsrc can be controlled with the enough-data and need-data signals by respectively stopping/starting the push-buffer/push-sample calls. This is a typical mode of operation for the stream-type “stream” and “seekable”. Use this mode when implementing various network protocols or hardware devices.

The pull mode, in which the need-data signal triggers the next push-buffer call. This mode is typically used in the “random-access” stream-type. Use this mode for file access or other randomly accessible sources. In this mode, a buffer of exactly the amount of bytes given by the need-data signal should be pushed into appsrc.

In all modes, the size property on appsrc should contain the total stream size in bytes. Setting this property is mandatory in the random-access mode. For the stream and seekable modes, setting this property is optional but recommended.

When the application has finished pushing data into appsrc, it should call end_of_stream() or emit the end-of-stream action signal. After this call, no more buffers can be pushed into appsrc until a flushing seek occurs or the state of the appsrc has gone through READY.

§Properties

§block

When max-bytes are queued and after the enough-data signal has been emitted, block any further push-buffer calls until the amount of queued bytes drops below the max-bytes limit.

Readable | Writeable

§caps

The GstCaps that will negotiated downstream and will be put on outgoing buffers.

Readable | Writeable

§current-level-buffers

The number of currently queued buffers inside appsrc.

Readable

§current-level-bytes

The number of currently queued bytes inside appsrc.

Readable

§current-level-time

The amount of currently queued time inside appsrc.

Readable

§duration

The total duration in nanoseconds of the data stream. If the total duration is known, it is recommended to configure it with this property.

Readable | Writeable

§emit-signals

Make appsrc emit the “need-data”, “enough-data” and “seek-data” signals. This option is by default enabled for backwards compatibility reasons but can disabled when needed because signal emission is expensive.

Readable | Writeable

§format

The format to use for segment events. When the source is producing timestamped buffers this property should be set to GST_FORMAT_TIME.

Readable | Writeable

§handle-segment-change

When enabled, appsrc will check GstSegment in GstSample which was pushed via AppSrc::push_sample() or “push-sample” signal action. If a GstSegment is changed, corresponding segment event will be followed by next data flow.

FIXME: currently only GST_FORMAT_TIME format is supported and therefore GstAppSrc::format should be time. However, possibly AppSrc can support other formats.

Readable | Writeable

§is-live

Instruct the source to behave like a live source. This includes that it will only push out buffers in the PLAYING state.

Readable | Writeable

§leaky-type

When set to any other value than GST_APP_LEAKY_TYPE_NONE then the appsrc will drop any buffers that are pushed into it once its internal queue is full. The selected type defines whether to drop the oldest or new buffers.

Readable | Writeable

§max-buffers

The maximum amount of buffers that can be queued internally. After the maximum amount of buffers are queued, appsrc will emit the “enough-data” signal.

Readable | Writeable

§max-bytes

The maximum amount of bytes that can be queued internally. After the maximum amount of bytes are queued, appsrc will emit the “enough-data” signal.

Readable | Writeable

§max-latency

Readable | Writeable

§max-time

The maximum amount of time that can be queued internally. After the maximum amount of time are queued, appsrc will emit the “enough-data” signal.

Readable | Writeable

§min-latency

The minimum latency of the source. A value of -1 will use the default latency calculations of GstBaseSrc.

Readable | Writeable

§min-percent

Make appsrc emit the “need-data” signal when the amount of bytes in the queue drops below this percentage of max-bytes.

Readable | Writeable

§size

The total size in bytes of the data stream. If the total size is known, it is recommended to configure it with this property.

Readable | Writeable

§stream-type

The type of stream that this source is producing. For seekable streams the application should connect to the seek-data signal.

Readable | Writeable

BaseSrc

§automatic-eos

See gst_base_src_set_automatic_eos()

Readable | Writeable

§blocksize

Readable | Writeable

§do-timestamp

Readable | Writeable

§num-buffers

Readable | Writeable

§typefind

Readable | Writeable

Object

§name

Readable | Writeable | Construct

§parent

The parent of the object. Please note, that when changing the ‘parent’ property, we don’t emit notify and deep-notify signals due to locking issues. In some cases one can use GstBin::element-added or GstBin::element-removed signals on the parent to achieve a similar effect.

Readable | Writeable

§Signals

§end-of-stream

Notify appsrc that no more buffer are available.

Action

§enough-data

Signal that the source has enough data. It is recommended that the application stops calling push-buffer until the need-data signal is emitted again to avoid excessive buffer queueing.

§need-data

Signal that the source needs more data. In the callback or from another thread you should call push-buffer or end-of-stream.

length is just a hint and when it is set to -1, any number of bytes can be pushed into appsrc.

You can call push-buffer multiple times until the enough-data signal is fired.

§push-buffer

Adds a buffer to the queue of buffers that the appsrc element will push to its source pad.

This function does not take ownership of the buffer, but it takes a reference so the buffer can be unreffed at any time after calling this function.

When the block property is TRUE, this function can block until free space becomes available in the queue.

Action

§push-buffer-list

Adds a buffer list to the queue of buffers and buffer lists that the appsrc element will push to its source pad.

This function does not take ownership of the buffer list, but it takes a reference so the buffer list can be unreffed at any time after calling this function.

When the block property is TRUE, this function can block until free space becomes available in the queue.

Action

§push-sample

Extract a buffer from the provided sample and adds the extracted buffer to the queue of buffers that the appsrc element will push to its source pad. This function set the appsrc caps based on the caps in the sample and reset the caps if they change. Only the caps and the buffer of the provided sample are used and not for example the segment in the sample.

This function does not take ownership of the sample, but it takes a reference so the sample can be unreffed at any time after calling this function.

When the block property is TRUE, this function can block until free space becomes available in the queue.

Action

§seek-data

Seek to the given offset. The next push-buffer should produce buffers from the new offset. This callback is only called for seekable stream types.

Element

§no-more-pads

This signals that the element will not generate more dynamic pads. Note that this signal will usually be emitted from the context of the streaming thread.

§pad-added

a new GstPad has been added to the element. Note that this signal will usually be emitted from the context of the streaming thread. Also keep in mind that if you add new elements to the pipeline in the signal handler you will need to set them to the desired target state with [ElementExtManual::set_state()][crate::gst::prelude::ElementExtManual::set_state()] or [ElementExtManual::sync_state_with_parent()][crate::gst::prelude::ElementExtManual::sync_state_with_parent()].

§pad-removed

a GstPad has been removed from the element

Object

§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

§Implements

gst::prelude::ElementExt, gst::prelude::ObjectExt, [trait@glib::ObjectExt], gst::prelude::URIHandlerExt

Implementations§

source§

impl AppSrc

source

pub fn end_of_stream(&self) -> Result<FlowSuccess, FlowError>

Indicates to the appsrc element that the last buffer queued in the element is the last buffer of the stream.

§Returns

gst::FlowReturn::Ok when the EOS was successfully queued. gst::FlowReturn::Flushing when self is not PAUSED or PLAYING.

source

pub fn caps(&self) -> Option<Caps>

Get the configured caps on self.

§Returns

the gst::Caps produced by the source. gst_caps_unref() after usage.

source

pub fn current_level_buffers(&self) -> u64

Get the number of currently queued buffers inside self.

§Returns

The number of currently queued buffers.

source

pub fn current_level_bytes(&self) -> u64

Get the number of currently queued bytes inside self.

§Returns

The number of currently queued bytes.

source

pub fn current_level_time(&self) -> Option<ClockTime>

Get the amount of currently queued time inside self.

§Returns

The amount of currently queued time.

source

pub fn duration(&self) -> Option<ClockTime>

Get the duration of the stream in nanoseconds. A value of GST_CLOCK_TIME_NONE means that the duration is not known.

§Returns

the duration of the stream previously set with set_duration();

source

pub fn leaky_type(&self) -> AppLeakyType

Returns the currently set AppLeakyType. See set_leaky_type() for more details.

§Returns

The currently set AppLeakyType.

source

pub fn max_buffers(&self) -> u64

Get the maximum amount of buffers that can be queued in self.

§Returns

The maximum amount of buffers that can be queued.

source

pub fn max_bytes(&self) -> u64

Get the maximum amount of bytes that can be queued in self.

§Returns

The maximum amount of bytes that can be queued.

source

pub fn max_time(&self) -> Option<ClockTime>

Get the maximum amount of time that can be queued in self.

§Returns

The maximum amount of time that can be queued.

source

pub fn size(&self) -> i64

Get the size of the stream in bytes. A value of -1 means that the size is not known.

§Returns

the size of the stream previously set with set_size();

source

pub fn stream_type(&self) -> AppStreamType

Get the stream type. Control the stream type of self with set_stream_type().

§Returns

the stream type.

source

pub fn push_buffer(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError>

Adds a buffer to the queue of buffers that the appsrc element will push to its source pad. This function takes ownership of the buffer.

When the block property is TRUE, this function can block until free space becomes available in the queue.

§buffer

a gst::Buffer to push

§Returns

gst::FlowReturn::Ok when the buffer was successfully queued. gst::FlowReturn::Flushing when self is not PAUSED or PLAYING. gst::FlowReturn::Eos when EOS occurred.

source

pub fn push_buffer_list( &self, buffer_list: BufferList ) -> Result<FlowSuccess, FlowError>

Adds a buffer list to the queue of buffers and buffer lists that the appsrc element will push to its source pad. This function takes ownership of buffer_list.

When the block property is TRUE, this function can block until free space becomes available in the queue.

§buffer_list

a gst::BufferList to push

§Returns

gst::FlowReturn::Ok when the buffer list was successfully queued. gst::FlowReturn::Flushing when self is not PAUSED or PLAYING. gst::FlowReturn::Eos when EOS occurred.

source

pub fn push_sample(&self, sample: &Sample) -> Result<FlowSuccess, FlowError>

Extract a buffer from the provided sample and adds it to the queue of buffers that the appsrc element will push to its source pad. Any previous caps that were set on appsrc will be replaced by the caps associated with the sample if not equal.

This function does not take ownership of the sample so the sample needs to be unreffed after calling this function.

When the block property is TRUE, this function can block until free space becomes available in the queue.

§sample

a gst::Sample from which buffer and caps may be extracted

§Returns

gst::FlowReturn::Ok when the buffer was successfully queued. gst::FlowReturn::Flushing when self is not PAUSED or PLAYING. gst::FlowReturn::Eos when EOS occurred.

source

pub fn set_caps(&self, caps: Option<&Caps>)

Set the capabilities on the appsrc element. This function takes a copy of the caps structure. After calling this method, the source will only produce caps that match caps. caps must be fixed and the caps on the buffers must match the caps or left NULL.

§caps

caps to set

source

pub fn set_duration(&self, duration: impl Into<Option<ClockTime>>)

Set the duration of the stream in nanoseconds. A value of GST_CLOCK_TIME_NONE means that the duration is not known.

§duration

the duration to set

source

pub fn set_leaky_type(&self, leaky: AppLeakyType)

When set to any other value than GST_APP_LEAKY_TYPE_NONE then the appsrc will drop any buffers that are pushed into it once its internal queue is full. The selected type defines whether to drop the oldest or new buffers.

§leaky

the AppLeakyType

source

pub fn set_max_buffers(&self, max: u64)

Set the maximum amount of buffers that can be queued in self. After the maximum amount of buffers are queued, self will emit the “enough-data” signal.

§max

the maximum number of buffers to queue

source

pub fn set_max_bytes(&self, max: u64)

Set the maximum amount of bytes that can be queued in self. After the maximum amount of bytes are queued, self will emit the “enough-data” signal.

§max

the maximum number of bytes to queue

source

pub fn set_max_time(&self, max: impl Into<Option<ClockTime>>)

Set the maximum amount of time that can be queued in self. After the maximum amount of time are queued, self will emit the “enough-data” signal.

§max

the maximum amonut of time to queue

source

pub fn set_size(&self, size: i64)

Set the size of the stream in bytes. A value of -1 means that the size is not known.

§size

the size to set

source

pub fn set_stream_type(&self, type_: AppStreamType)

Set the stream type on self. For seekable streams, the “seek” signal must be connected to.

A stream_type stream

§type_

the new state

source

pub fn is_block(&self) -> bool

When max-bytes are queued and after the enough-data signal has been emitted, block any further push-buffer calls until the amount of queued bytes drops below the max-bytes limit.

source

pub fn set_block(&self, block: bool)

When max-bytes are queued and after the enough-data signal has been emitted, block any further push-buffer calls until the amount of queued bytes drops below the max-bytes limit.

source

pub fn format(&self) -> Format

The format to use for segment events. When the source is producing timestamped buffers this property should be set to GST_FORMAT_TIME.

source

pub fn set_format(&self, format: Format)

The format to use for segment events. When the source is producing timestamped buffers this property should be set to GST_FORMAT_TIME.

source

pub fn is_handle_segment_change(&self) -> bool

When enabled, appsrc will check GstSegment in GstSample which was pushed via push_sample() or “push-sample” signal action. If a GstSegment is changed, corresponding segment event will be followed by next data flow.

FIXME: currently only GST_FORMAT_TIME format is supported and therefore GstAppSrc::format should be time. However, possibly AppSrc can support other formats.

source

pub fn set_handle_segment_change(&self, handle_segment_change: bool)

When enabled, appsrc will check GstSegment in GstSample which was pushed via push_sample() or “push-sample” signal action. If a GstSegment is changed, corresponding segment event will be followed by next data flow.

FIXME: currently only GST_FORMAT_TIME format is supported and therefore GstAppSrc::format should be time. However, possibly AppSrc can support other formats.

source

pub fn is_live(&self) -> bool

Instruct the source to behave like a live source. This includes that it will only push out buffers in the PLAYING state.

source

pub fn set_is_live(&self, is_live: bool)

Instruct the source to behave like a live source. This includes that it will only push out buffers in the PLAYING state.

source

pub fn max_latency(&self) -> i64

source

pub fn set_max_latency(&self, max_latency: i64)

source

pub fn min_latency(&self) -> i64

The minimum latency of the source. A value of -1 will use the default latency calculations of GstBaseSrc.

source

pub fn set_min_latency(&self, min_latency: i64)

The minimum latency of the source. A value of -1 will use the default latency calculations of GstBaseSrc.

source

pub fn min_percent(&self) -> u32

Make appsrc emit the “need-data” signal when the amount of bytes in the queue drops below this percentage of max-bytes.

source

pub fn set_min_percent(&self, min_percent: u32)

Make appsrc emit the “need-data” signal when the amount of bytes in the queue drops below this percentage of max-bytes.

source

pub fn connect_block_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_caps_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_current_level_buffers_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_current_level_bytes_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_current_level_time_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_duration_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_format_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_handle_segment_change_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_is_live_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_leaky_type_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_max_buffers_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_max_bytes_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_max_latency_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_max_time_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_min_latency_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_min_percent_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_size_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_stream_type_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source§

impl AppSrc

source

pub fn builder() -> AppSrcBuilder

Creates a new builder-pattern struct instance to construct AppSrc objects.

This method returns an instance of AppSrcBuilder which can be used to create AppSrc objects.

source

pub fn set_callbacks(&self, callbacks: AppSrcCallbacks)

Set callbacks which will be executed when data is needed, enough data has been collected or when a seek should be performed. This is an alternative to using the signals, it has lower overhead and is thus less expensive, but also less flexible.

If callbacks are installed, no signals will be emitted for performance reasons.

Before 1.16.3 it was not possible to change the callbacks in a thread-safe way.

§callbacks

the callbacks

§notify

a destroy notify function

source

pub fn set_latency( &self, min: impl Into<Option<ClockTime>>, max: impl Into<Option<ClockTime>> )

Configure the min and max latency in src. If min is set to -1, the default latency calculations for pseudo-live sources will be used.

§min

the min latency

§max

the max latency

source

pub fn latency(&self) -> (Option<ClockTime>, Option<ClockTime>)

Retrieve the min and max latencies in min and max respectively.

§Returns
§min

the min latency

§max

the max latency

source

pub fn set_do_timestamp(&self, timestamp: bool)

source

pub fn do_timestamp(&self) -> bool

source

pub fn connect_do_timestamp_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn set_automatic_eos(&self, automatic_eos: bool)

source

pub fn sink(&self) -> AppSrcSink

Trait Implementations§

source§

impl Clone for AppSrc

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AppSrc

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl HasParamSpec for AppSrc

§

type ParamSpec = ParamSpecObject

§

type SetValue = AppSrc

Preferred value to be used as setter for the associated ParamSpec.
§

type BuilderFn = fn(_: &str) -> ParamSpecObjectBuilder<'_, AppSrc>

source§

fn param_spec_builder() -> Self::BuilderFn

source§

impl Hash for AppSrc

source§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for AppSrc

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl ParentClassIs for AppSrc

source§

impl<OT: ObjectType> PartialEq<OT> for AppSrc

source§

fn eq(&self, other: &OT) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<OT: ObjectType> PartialOrd<OT> for AppSrc

source§

fn partial_cmp(&self, other: &OT) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl StaticType for AppSrc

source§

fn static_type() -> Type

Returns the type identifier of Self.
source§

impl Eq for AppSrc

source§

impl IsA<Element> for AppSrc

source§

impl IsA<Object> for AppSrc

source§

impl IsA<URIHandler> for AppSrc

source§

impl Send for AppSrc

source§

impl Sync for AppSrc

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Cast for T
where T: ObjectType,

source§

fn upcast<T>(self) -> T
where T: ObjectType, Self: IsA<T>,

Upcasts an object to a superclass or interface T. Read more
source§

fn upcast_ref<T>(&self) -> &T
where T: ObjectType, Self: IsA<T>,

Upcasts an object to a reference of its superclass or interface T. Read more
source§

fn downcast<T>(self) -> Result<T, Self>
where T: ObjectType, Self: MayDowncastTo<T>,

Tries to downcast to a subclass or interface implementor T. Read more
source§

fn downcast_ref<T>(&self) -> Option<&T>
where T: ObjectType, Self: MayDowncastTo<T>,

Tries to downcast to a reference of its subclass or interface implementor T. Read more
source§

fn dynamic_cast<T>(self) -> Result<T, Self>
where T: ObjectType,

Tries to cast to an object of type T. This handles upcasting, downcasting and casting between interface and interface implementors. All checks are performed at runtime, while upcast will do many checks at compile-time already. downcast will perform the same checks at runtime as dynamic_cast, but will also ensure some amount of compile-time safety. Read more
source§

fn dynamic_cast_ref<T>(&self) -> Option<&T>
where T: ObjectType,

Tries to cast to reference to an object of type T. This handles upcasting, downcasting and casting between interface and interface implementors. All checks are performed at runtime, while downcast and upcast will do many checks at compile-time already. Read more
source§

unsafe fn unsafe_cast<T>(self) -> T
where T: ObjectType,

Casts to T unconditionally. Read more
source§

unsafe fn unsafe_cast_ref<T>(&self) -> &T
where T: ObjectType,

Casts to &T unconditionally. Read more
source§

impl<O> ElementExt for O
where O: IsA<Element>,

source§

fn abort_state(&self)

Abort the state change of the element. This function is used by elements that do asynchronous state changes and find out something is wrong. Read more
source§

fn add_pad(&self, pad: &impl IsA<Pad>) -> Result<(), BoolError>

Adds a pad (link point) to self. pad’s parent will be set to self; see GstObjectExt::set_parent() for refcounting information. Read more
source§

fn change_state( &self, transition: StateChange ) -> Result<StateChangeSuccess, StateChangeError>

Perform transition on self. Read more
source§

fn continue_state( &self, ret: impl Into<StateChangeReturn> ) -> Result<StateChangeSuccess, StateChangeError>

Commit the state change of the element and proceed to the next pending state if any. This function is used by elements that do asynchronous state changes. The core will normally call this method automatically when an element returned StateChangeReturn::Success from the state change function. Read more
source§

fn create_all_pads(&self)

Creates a pad for each pad template that is always available. This function is only useful during object initialization of subclasses of Element.
source§

fn decorate_stream_id(&self, stream_id: &str) -> GString

Creates a stream-id for self by combining the upstream information with the stream_id. Read more
source§

fn foreach_pad<P>(&self, func: P) -> bool
where P: FnMut(&Element, &Pad) -> bool,

Call func with user_data for each of self’s pads. func will be called exactly once for each pad that exists at the time of this call, unless one of the calls to func returns false in which case we will stop iterating pads and return early. If new pads are added or pads are removed while pads are being iterated, this will not be taken into account until next time this function is used. Read more
source§

fn foreach_sink_pad<P>(&self, func: P) -> bool
where P: FnMut(&Element, &Pad) -> bool,

Call func with user_data for each of self’s sink pads. func will be called exactly once for each sink pad that exists at the time of this call, unless one of the calls to func returns false in which case we will stop iterating pads and return early. If new sink pads are added or sink pads are removed while the sink pads are being iterated, this will not be taken into account until next time this function is used. Read more
source§

fn foreach_src_pad<P>(&self, func: P) -> bool
where P: FnMut(&Element, &Pad) -> bool,

Call func with user_data for each of self’s source pads. func will be called exactly once for each source pad that exists at the time of this call, unless one of the calls to func returns false in which case we will stop iterating pads and return early. If new source pads are added or source pads are removed while the source pads are being iterated, this will not be taken into account until next time this function is used. Read more
source§

fn base_time(&self) -> Option<ClockTime>

Returns the base time of the element. The base time is the absolute time of the clock when this element was last put to PLAYING. Subtracting the base time from the clock time gives the running time of the element. Read more
source§

fn bus(&self) -> Option<Bus>

Returns the bus of the element. Note that only a Pipeline will provide a bus for the application. Read more
source§

fn clock(&self) -> Option<Clock>

Gets the currently configured clock of the element. This is the clock as was last set with set_clock(). Read more
source§

fn compatible_pad( &self, pad: &impl IsA<Pad>, caps: Option<&Caps> ) -> Option<Pad>

Looks for an unlinked pad to which the given pad can link. It is not guaranteed that linking the pads will work, though it should work in most cases. Read more
source§

fn compatible_pad_template( &self, compattempl: &PadTemplate ) -> Option<PadTemplate>

Retrieves a pad template from self that is compatible with compattempl. Pads from compatible templates can be linked together. Read more
source§

fn context(&self, context_type: &str) -> Option<Context>

Gets the context with context_type set on the element or NULL. Read more
source§

fn contexts(&self) -> Vec<Context>

Gets the contexts set on the element. Read more
source§

fn factory(&self) -> Option<ElementFactory>

Retrieves the factory that was used to create this element. Read more
source§

fn start_time(&self) -> Option<ClockTime>

Returns the start time of the element. The start time is the running time of the clock when this element was last put to PAUSED. Read more
source§

fn state( &self, timeout: impl Into<Option<ClockTime>> ) -> (Result<StateChangeSuccess, StateChangeError>, State, State)

Gets the state of the element. Read more
source§

fn static_pad(&self, name: &str) -> Option<Pad>

Retrieves a pad from self by name. This version only retrieves already-existing (i.e. ‘static’) pads. Read more
source§

fn is_locked_state(&self) -> bool

Checks if the state of an element is locked. If the state of an element is locked, state changes of the parent don’t affect the element. This way you can leave currently unused elements inside bins. Just lock their state before changing the state from State::Null. Read more
source§

fn lost_state(&self)

Brings the element to the lost state. The current state of the element is copied to the pending state so that any call to state() will return StateChangeReturn::Async. Read more
source§

fn no_more_pads(&self)

Use this function to signal that the element does not expect any more pads to show up in the current pipeline. This function should be called whenever pads have been added by the element itself. Elements with PadPresence::Sometimes pad templates use this in combination with autopluggers to figure out that the element is done initializing its pads. Read more
source§

fn post_message(&self, message: Message) -> Result<(), BoolError>

Post a message on the element’s Bus. This function takes ownership of the message; if you want to access the message after this call, you should add an additional reference before calling. Read more
source§

fn provide_clock(&self) -> Option<Clock>

Get the clock provided by the given element. Read more
source§

fn release_request_pad(&self, pad: &impl IsA<Pad>)

Makes the element free the previously requested pad as obtained with request_pad(). Read more
source§

fn remove_pad(&self, pad: &impl IsA<Pad>) -> Result<(), BoolError>

Removes pad from self. pad will be destroyed if it has not been referenced elsewhere using GstObjectExt::unparent(). Read more
source§

fn request_pad( &self, templ: &PadTemplate, name: Option<&str>, caps: Option<&Caps> ) -> Option<Pad>

Retrieves a request pad from the element according to the provided template. Pad templates can be looked up using ElementFactory::static_pad_templates(). Read more
source§

fn set_base_time(&self, time: ClockTime)

Set the base time of an element. See base_time(). Read more
source§

fn set_bus(&self, bus: Option<&Bus>)

Sets the bus of the element. Increases the refcount on the bus. For internal use only, unless you’re testing elements. Read more
source§

fn set_clock(&self, clock: Option<&impl IsA<Clock>>) -> Result<(), BoolError>

Sets the clock for the element. This function increases the refcount on the clock. Any previously set clock on the object is unreffed. Read more
source§

fn set_context(&self, context: &Context)

Sets the context of the element. Increases the refcount of the context. Read more
source§

fn set_locked_state(&self, locked_state: bool) -> bool

Locks the state of an element, so state changes of the parent don’t affect this element anymore. Read more
source§

fn set_start_time(&self, time: impl Into<Option<ClockTime>>)

Set the start time of an element. The start time of the element is the running time of the element when it last went to the PAUSED state. In READY or after a flushing seek, it is set to 0. Read more
source§

fn set_state( &self, state: State ) -> Result<StateChangeSuccess, StateChangeError>

Sets the state of the element. This function will try to set the requested state by going through all the intermediary states and calling the class’s state change function for each. Read more
source§

fn sync_state_with_parent(&self) -> Result<(), BoolError>

Tries to change the state of the element to the same as its parent. If this function returns false, the state of element is undefined. Read more
Unlinks all source pads of the source element with all sink pads of the sink element to which they are linked. Read more
Unlinks the two named pads of the source and destination elements. Read more
source§

fn connect_no_more_pads<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + Send + Sync + 'static,

This signals that the element will not generate more dynamic pads. Note that this signal will usually be emitted from the context of the streaming thread.
source§

fn connect_pad_added<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self, &Pad) + Send + Sync + 'static,

a new Pad has been added to the element. Note that this signal will usually be emitted from the context of the streaming thread. Also keep in mind that if you add new elements to the pipeline in the signal handler you will need to set them to the desired target state with set_state() or sync_state_with_parent(). Read more
source§

fn connect_pad_removed<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self, &Pad) + Send + Sync + 'static,

a Pad has been removed from the element Read more
source§

impl<O> ElementExtManual for O
where O: IsA<Element>,

source§

fn element_class(&self) -> &Class<Element>

source§

fn current_state(&self) -> State

source§

fn pending_state(&self) -> State

source§

fn query(&self, query: &mut QueryRef) -> bool

Performs a query on the given element. Read more
source§

fn send_event(&self, event: impl Into<Event>) -> bool

Sends an event to an element. If the element doesn’t implement an event handler, the event will be pushed on a random linked sink pad for downstream events or a random linked source pad for upstream events. Read more
source§

fn metadata<'a>(&self, key: &str) -> Option<&'a str>

Get metadata with key in klass. Read more
source§

fn pad_template(&self, name: &str) -> Option<PadTemplate>

Retrieves a padtemplate from self with the given name. Read more
source§

fn pad_template_list(&self) -> List<PadTemplate>

Retrieves a list of the pad templates associated with self. The list must not be modified by the calling code. Read more
source§

fn message_full<T>( &self, type_: ElementMessageType, code: T, message: Option<&str>, debug: Option<&str>, file: &str, function: &str, line: u32 )

Post an error, warning or info message on the bus from inside an element. Read more
source§

fn set_element_flags(&self, flags: ElementFlags)

source§

fn unset_element_flags(&self, flags: ElementFlags)

source§

fn element_flags(&self) -> ElementFlags

source§

fn message_full_with_details<T>( &self, type_: ElementMessageType, code: T, message: Option<&str>, debug: Option<&str>, file: &str, function: &str, line: u32, structure: Structure )

Post an error, warning or info message on the bus from inside an element. Read more
source§

fn post_error_message(&self, msg: ErrorMessage)

source§

fn iterate_pads(&self) -> Iterator<Pad>

Retrieves an iterator of self’s pads. The iterator should be freed after usage. Also more specialized iterators exists such as iterate_src_pads() or iterate_sink_pads(). Read more
source§

fn iterate_sink_pads(&self) -> Iterator<Pad>

Retrieves an iterator of self’s sink pads. Read more
source§

fn iterate_src_pads(&self) -> Iterator<Pad>

Retrieves an iterator of self’s source pads. Read more
source§

fn pads(&self) -> Vec<Pad>

source§

fn sink_pads(&self) -> Vec<Pad>

source§

fn src_pads(&self) -> Vec<Pad>

source§

fn num_pads(&self) -> u16

source§

fn num_sink_pads(&self) -> u16

source§

fn num_src_pads(&self) -> u16

source§

fn add_property_deep_notify_watch( &self, property_name: Option<&str>, include_value: bool ) -> NotifyWatchId

property_name Read more
source§

fn add_property_notify_watch( &self, property_name: Option<&str>, include_value: bool ) -> NotifyWatchId

property_name Read more
source§

fn remove_property_notify_watch(&self, watch_id: NotifyWatchId)

watch_id Read more
source§

fn query_convert<U>(&self, src_val: impl FormattedValue) -> Option<U>

Queries an element to convert src_val in src_format to dest_format. Read more
source§

fn query_convert_generic( &self, src_val: impl FormattedValue, dest_format: Format ) -> Option<GenericFormattedValue>

source§

fn query_duration<T>(&self) -> Option<T>

Queries an element (usually top-level pipeline or playbin element) for the total stream duration in nanoseconds. This query will only work once the pipeline is prerolled (i.e. reached PAUSED or PLAYING state). The application will receive an ASYNC_DONE message on the pipeline bus when that is the case. Read more
source§

fn query_duration_generic( &self, format: Format ) -> Option<GenericFormattedValue>

source§

fn query_position<T>(&self) -> Option<T>

Queries an element (usually top-level pipeline or playbin element) for the stream position in nanoseconds. This will be a value between 0 and the stream duration (if the stream duration is known). This query will usually only work once the pipeline is prerolled (i.e. reached PAUSED or PLAYING state). The application will receive an ASYNC_DONE message on the pipeline bus when that is the case. Read more
source§

fn query_position_generic( &self, format: Format ) -> Option<GenericFormattedValue>

source§

fn seek<V>( &self, rate: f64, flags: SeekFlags, start_type: SeekType, start: V, stop_type: SeekType, stop: impl CompatibleFormattedValue<V> ) -> Result<(), BoolError>
where V: FormattedValue,

Sends a seek event to an element. See gst_event_new_seek() for the details of the parameters. The seek event is sent to the element using send_event(). Read more
source§

fn seek_simple( &self, seek_flags: SeekFlags, seek_pos: impl FormattedValue ) -> Result<(), BoolError>

Simple API to perform a seek on the given element, meaning it just seeks to the given position relative to the start of the stream. For more complex operations like segment seeks (e.g. for looping) or changing the playback rate or seeking relative to the last configured playback segment you should use seek(). Read more
source§

fn call_async<F>(&self, func: F)
where F: FnOnce(&Self) + Send + 'static,

Calls func from another thread and passes user_data to it. This is to be used for cases when a state change has to be performed from a streaming thread, directly via ElementExt::set_state() or indirectly e.g. via SEEK events. Read more
source§

fn call_async_future<F, T>( &self, func: F ) -> Pin<Box<dyn Future<Output = T> + Send>>
where F: FnOnce(&Self) -> T + Send + 'static, T: Send + 'static,

source§

fn current_running_time(&self) -> Option<ClockTime>

Returns the running time of the element. The running time is the element’s clock time minus its base time. Will return GST_CLOCK_TIME_NONE if the element has no clock, or if its base time has not been set. Read more
source§

fn current_clock_time(&self) -> Option<ClockTime>

Returns the current clock time of the element, as in, the time of the element’s clock, or GST_CLOCK_TIME_NONE if there is no clock. Read more
source§

fn request_pad_simple(&self, name: &str) -> Option<Pad>

The name of this function is confusing to people learning GStreamer. request_pad_simple() aims at making it more explicit it is a simplified ElementExt::request_pad(). Read more
Links self to dest. The link must be from source to destination; the other direction will not be tried. The function looks for existing pads that aren’t linked yet. It will request new pads if necessary. Such pads need to be released manually when unlinking. If multiple links are possible, only one is established. Read more
Links self to dest using the given caps as filtercaps. The link must be from source to destination; the other direction will not be tried. The function looks for existing pads that aren’t linked yet. It will request new pads if necessary. If multiple links are possible, only one is established. Read more
Links the two named pads of the source and destination elements. Side effect is that if one of the pads has no parent, it becomes a child of the parent of the other element. If they have different parents, the link fails. Read more
Links the two named pads of the source and destination elements. Side effect is that if one of the pads has no parent, it becomes a child of the parent of the other element. If they have different parents, the link fails. If caps is not None, makes sure that the caps of the link is a subset of caps. Read more
Links the two named pads of the source and destination elements. Side effect is that if one of the pads has no parent, it becomes a child of the parent of the other element. If they have different parents, the link fails. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

source§

unsafe fn from_glib_none_num_as_vec(ptr: *const GList, num: usize) -> Vec<T>

source§

unsafe fn from_glib_container_num_as_vec(_: *const GList, _: usize) -> Vec<T>

source§

unsafe fn from_glib_full_num_as_vec(_: *const GList, _: usize) -> Vec<T>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

source§

unsafe fn from_glib_none_num_as_vec(ptr: *const GPtrArray, num: usize) -> Vec<T>

source§

unsafe fn from_glib_container_num_as_vec( _: *const GPtrArray, _: usize ) -> Vec<T>

source§

unsafe fn from_glib_full_num_as_vec(_: *const GPtrArray, _: usize) -> Vec<T>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

source§

unsafe fn from_glib_none_num_as_vec(ptr: *const GSList, num: usize) -> Vec<T>

source§

unsafe fn from_glib_container_num_as_vec(_: *const GSList, _: usize) -> Vec<T>

source§

unsafe fn from_glib_full_num_as_vec(_: *const GSList, _: usize) -> Vec<T>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

source§

unsafe fn from_glib_none_num_as_vec(ptr: *mut GList, num: usize) -> Vec<T>

source§

unsafe fn from_glib_container_num_as_vec(ptr: *mut GList, num: usize) -> Vec<T>

source§

unsafe fn from_glib_full_num_as_vec(ptr: *mut GList, num: usize) -> Vec<T>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

source§

unsafe fn from_glib_none_num_as_vec(ptr: *mut GPtrArray, num: usize) -> Vec<T>

source§

unsafe fn from_glib_container_num_as_vec( ptr: *mut GPtrArray, num: usize ) -> Vec<T>

source§

unsafe fn from_glib_full_num_as_vec(ptr: *mut GPtrArray, num: usize) -> Vec<T>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

source§

unsafe fn from_glib_none_num_as_vec(ptr: *mut GSList, num: usize) -> Vec<T>

source§

unsafe fn from_glib_container_num_as_vec(ptr: *mut GSList, num: usize) -> Vec<T>

source§

unsafe fn from_glib_full_num_as_vec(ptr: *mut GSList, num: usize) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *const GList) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(_: *const GList) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(_: *const GList) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *const GPtrArray) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(_: *const GPtrArray) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(_: *const GPtrArray) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *const GSList) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(_: *const GSList) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(_: *const GSList) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *mut GList) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(ptr: *mut GList) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(ptr: *mut GList) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *mut GPtrArray) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(ptr: *mut GPtrArray) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(ptr: *mut GPtrArray) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *mut GSList) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(ptr: *mut GSList) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(ptr: *mut GSList) -> Vec<T>

source§

impl<O> GObjectExtManualGst for O
where O: IsA<Object>,

source§

fn set_property_from_str(&self, name: &str, value: &str)

source§

impl<O> GstObjectExt for O
where O: IsA<Object>,

source§

fn add_control_binding( &self, binding: &impl IsA<ControlBinding> ) -> Result<(), BoolError>

Attach the ControlBinding to the object. If there already was a ControlBinding for this property it will be replaced. Read more
source§

fn default_error(&self, error: &Error, debug: Option<&str>)

A default error function that uses g_printerr() to display the error message and the optional debug string.. Read more
source§

fn control_binding(&self, property_name: &str) -> Option<ControlBinding>

Gets the corresponding ControlBinding for the property. This should be unreferenced again after use. Read more
source§

fn control_rate(&self) -> Option<ClockTime>

Obtain the control-rate for this self. Audio processing Element objects will use this rate to sub-divide their processing loop and call sync_values() in between. The length of the processing segment should be up to control-rate nanoseconds. Read more
source§

fn name(&self) -> GString

Returns a copy of the name of self. Caller should g_free() the return value after usage. For a nameless object, this returns None, which you can safely g_free() as well. Read more
source§

fn parent(&self) -> Option<Object>

Returns the parent of self. This function increases the refcount of the parent object so you should gst_object_unref() it after usage. Read more
source§

fn path_string(&self) -> GString

Generates a string describing the path of self in the object hierarchy. Only useful (or used) for debugging. Read more
source§

fn value( &self, property_name: &str, timestamp: impl Into<Option<ClockTime>> ) -> Option<Value>

Gets the value for the given controlled property at the requested time. Read more
source§

fn has_active_control_bindings(&self) -> bool

Check if the self has active controlled properties. Read more
source§

fn has_ancestor(&self, ancestor: &impl IsA<Object>) -> bool

Check if self has an ancestor ancestor somewhere up in the hierarchy. One can e.g. check if a Element is inside a Pipeline. Read more
source§

fn has_as_ancestor(&self, ancestor: &impl IsA<Object>) -> bool

Check if self has an ancestor ancestor somewhere up in the hierarchy. One can e.g. check if a Element is inside a Pipeline. Read more
source§

fn has_as_parent(&self, parent: &impl IsA<Object>) -> bool

Check if parent is the parent of self. E.g. a Element can check if it owns a given Pad. Read more
source§

fn remove_control_binding(&self, binding: &impl IsA<ControlBinding>) -> bool

Removes the corresponding ControlBinding. If it was the last ref of the binding, it will be disposed. Read more
source§

fn set_control_binding_disabled(&self, property_name: &str, disabled: bool)

This function is used to disable the control bindings on a property for some time, i.e. sync_values() will do nothing for the property. Read more
source§

fn set_control_bindings_disabled(&self, disabled: bool)

This function is used to disable all controlled properties of the self for some time, i.e. sync_values() will do nothing. Read more
source§

fn set_control_rate(&self, control_rate: impl Into<Option<ClockTime>>)

Change the control-rate for this self. Audio processing Element objects will use this rate to sub-divide their processing loop and call sync_values() in between. The length of the processing segment should be up to control-rate nanoseconds. Read more
source§

fn set_parent(&self, parent: &impl IsA<Object>) -> Result<(), BoolError>

Sets the parent of self to parent. The object’s reference count will be incremented, and any floating reference will be removed (see gst_object_ref_sink()). Read more
source§

fn suggest_next_sync(&self) -> Option<ClockTime>

Returns a suggestion for timestamps where buffers should be split to get best controller results. Read more
source§

fn sync_values(&self, timestamp: ClockTime) -> Result<(), BoolError>

Sets the properties of the object, according to the GstControlSources that (maybe) handle them and for the given timestamp. Read more
source§

fn unparent(&self)

Clear the parent of self, removing the associated reference. This function decreases the refcount of self. Read more
source§

fn connect_parent_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + Send + Sync + 'static,

source§

impl<O> GstObjectExtManual for O
where O: IsA<Object>,

source§

fn connect_deep_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
where F: Fn(&Self, &Object, &ParamSpec) + Send + Sync + 'static,

source§

fn set_object_flags(&self, flags: ObjectFlags)

source§

fn unset_object_flags(&self, flags: ObjectFlags)

source§

fn object_flags(&self) -> ObjectFlags

source§

fn g_value_array( &self, property_name: &str, timestamp: ClockTime, interval: ClockTime, values: &mut [Value] ) -> Result<(), BoolError>

source§

fn object_lock(&self) -> ObjectLockGuard<'_, Self>

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoClosureReturnValue for T
where T: Into<Value>,

source§

impl<U> IsSubclassableExt for U

source§

impl<T> ObjectExt for T
where T: ObjectType,

source§

fn is<U>(&self) -> bool
where U: StaticType,

Returns true if the object is an instance of (can be cast to) T.
source§

fn type_(&self) -> Type

Returns the type of the object.
source§

fn object_class(&self) -> &Class<Object>

Returns the ObjectClass of the object. Read more
source§

fn class(&self) -> &Class<T>
where T: IsClass,

Returns the class of the object.
source§

fn class_of<U>(&self) -> Option<&Class<U>>
where U: IsClass,

Returns the class of the object in the given type T. Read more
source§

fn interface<U>(&self) -> Option<InterfaceRef<'_, U>>
where U: IsInterface,

Returns the interface T of the object. Read more
source§

fn set_property(&self, property_name: &str, value: impl Into<Value>)

Sets the property property_name of the object to value value. Read more
source§

fn set_property_from_value(&self, property_name: &str, value: &Value)

Sets the property property_name of the object to value value. Read more
source§

fn set_properties(&self, property_values: &[(&str, &dyn ToValue)])

Sets multiple properties of the object at once. Read more
source§

fn set_properties_from_value(&self, property_values: &[(&str, Value)])

Sets multiple properties of the object at once. Read more
source§

fn property<V>(&self, property_name: &str) -> V
where V: for<'b> FromValue<'b> + 'static,

Gets the property property_name of the object and cast it to the type V. Read more
source§

fn property_value(&self, property_name: &str) -> Value

Gets the property property_name of the object. Read more
source§

fn has_property(&self, property_name: &str, type_: Option<Type>) -> bool

Check if the object has a property property_name of the given type_. Read more
source§

fn property_type(&self, property_name: &str) -> Option<Type>

Get the type of the property property_name of this object. Read more
source§

fn find_property(&self, property_name: &str) -> Option<ParamSpec>

Get the ParamSpec of the property property_name of this object.
source§

fn list_properties(&self) -> PtrSlice<ParamSpec>

Return all ParamSpec of the properties of this object.
source§

fn freeze_notify(&self) -> PropertyNotificationFreezeGuard

Freeze all property notifications until the return guard object is dropped. Read more
source§

unsafe fn set_qdata<QD>(&self, key: Quark, value: QD)
where QD: 'static,

Set arbitrary data on this object with the given key. Read more
source§

unsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>>
where QD: 'static,

Return previously set arbitrary data of this object with the given key. Read more
source§

unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD>
where QD: 'static,

Retrieve previously set arbitrary data of this object with the given key. Read more
source§

unsafe fn set_data<QD>(&self, key: &str, value: QD)
where QD: 'static,

Set arbitrary data on this object with the given key. Read more
source§

unsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>>
where QD: 'static,

Return previously set arbitrary data of this object with the given key. Read more
source§

unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD>
where QD: 'static,

Retrieve previously set arbitrary data of this object with the given key. Read more
source§

fn block_signal(&self, handler_id: &SignalHandlerId)

Block a given signal handler. Read more
source§

fn unblock_signal(&self, handler_id: &SignalHandlerId)

Unblock a given signal handler.
source§

fn stop_signal_emission(&self, signal_id: SignalId, detail: Option<Quark>)

Stop emission of the currently emitted signal.
source§

fn stop_signal_emission_by_name(&self, signal_name: &str)

Stop emission of the currently emitted signal by the (possibly detailed) signal name.
source§

fn connect<F>( &self, signal_name: &str, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,

Connect to the signal signal_name on this object. Read more
source§

fn connect_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,

Connect to the signal signal_id on this object. Read more
source§

fn connect_local<F>( &self, signal_name: &str, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + 'static,

Connect to the signal signal_name on this object. Read more
source§

fn connect_local_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + 'static,

Connect to the signal signal_id on this object. Read more
source§

unsafe fn connect_unsafe<F>( &self, signal_name: &str, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value>,

Connect to the signal signal_name on this object. Read more
source§

unsafe fn connect_unsafe_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value>,

Connect to the signal signal_id on this object. Read more
source§

fn connect_closure( &self, signal_name: &str, after: bool, closure: RustClosure ) -> SignalHandlerId

Connect a closure to the signal signal_name on this object. Read more
source§

fn connect_closure_id( &self, signal_id: SignalId, details: Option<Quark>, after: bool, closure: RustClosure ) -> SignalHandlerId

Connect a closure to the signal signal_id on this object. Read more
source§

fn watch_closure(&self, closure: &impl AsRef<Closure>)

Limits the lifetime of closure to the lifetime of the object. When the object’s reference count drops to zero, the closure will be invalidated. An invalidated closure will ignore any calls to invoke_with_values, or invoke when using Rust closures.
source§

fn emit<R>(&self, signal_id: SignalId, args: &[&dyn ToValue]) -> R

Emit signal by signal id. Read more
source§

fn emit_with_values(&self, signal_id: SignalId, args: &[Value]) -> Option<Value>

Same as Self::emit but takes Value for the arguments.
source§

fn emit_by_name<R>(&self, signal_name: &str, args: &[&dyn ToValue]) -> R

Emit signal by its name. Read more
source§

fn emit_by_name_with_values( &self, signal_name: &str, args: &[Value] ) -> Option<Value>

Emit signal by its name. Read more
source§

fn emit_by_name_with_details<R>( &self, signal_name: &str, details: Quark, args: &[&dyn ToValue] ) -> R

Emit signal by its name with details. Read more
source§

fn emit_by_name_with_details_and_values( &self, signal_name: &str, details: Quark, args: &[Value] ) -> Option<Value>

Emit signal by its name with details. Read more
source§

fn emit_with_details<R>( &self, signal_id: SignalId, details: Quark, args: &[&dyn ToValue] ) -> R

Emit signal by signal id with details. Read more
source§

fn emit_with_details_and_values( &self, signal_id: SignalId, details: Quark, args: &[Value] ) -> Option<Value>

Emit signal by signal id with details. Read more
source§

fn disconnect(&self, handler_id: SignalHandlerId)

Disconnect a previously connected signal handler.
source§

fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
where F: Fn(&T, &ParamSpec) + Send + Sync + 'static,

Connect to the notify signal of the object. Read more
source§

fn connect_notify_local<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
where F: Fn(&T, &ParamSpec) + 'static,

Connect to the notify signal of the object. Read more
source§

unsafe fn connect_notify_unsafe<F>( &self, name: Option<&str>, f: F ) -> SignalHandlerId
where F: Fn(&T, &ParamSpec),

Connect to the notify signal of the object. Read more
source§

fn notify(&self, property_name: &str)

Notify that the given property has changed its value. Read more
source§

fn notify_by_pspec(&self, pspec: &ParamSpec)

Notify that the given property has changed its value. Read more
source§

fn downgrade(&self) -> WeakRef<T>

Downgrade this object to a weak reference.
source§

fn add_weak_ref_notify<F>(&self, f: F) -> WeakRefNotify<T>
where F: FnOnce() + Send + 'static,

Add a callback to be notified when the Object is disposed.
source§

fn add_weak_ref_notify_local<F>(&self, f: F) -> WeakRefNotify<T>
where F: FnOnce() + 'static,

Add a callback to be notified when the Object is disposed. Read more
source§

fn bind_property<'a, 'f, 't, O>( &'a self, source_property: &'a str, target: &'a O, target_property: &'a str ) -> BindingBuilder<'a, 'f, 't>
where O: ObjectType,

Bind property source_property on this object to the target_property on the target object. Read more
source§

fn ref_count(&self) -> u32

Returns the strong reference count of this object.
source§

unsafe fn run_dispose(&self)

Runs the dispose mechanism of the object. Read more
source§

impl<T> Property for T
where T: HasParamSpec,

§

type Value = T

source§

impl<T> PropertyGet for T
where T: HasParamSpec,

§

type Value = T

source§

fn get<R, F>(&self, f: F) -> R
where F: Fn(&<T as PropertyGet>::Value) -> R,

source§

impl<T> StaticTypeExt for T
where T: StaticType,

source§

fn ensure_type()

Ensures that the type has been registered with the type system.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToSendValue for T
where T: Send + ToValue + ?Sized,

source§

fn to_send_value(&self) -> SendValue

Returns a SendValue clone of self.
source§

impl<T> TransparentType for T

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T> TryFromClosureReturnValue for T
where T: for<'a> FromValue<'a> + StaticType + 'static,

source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<O> URIHandlerExt for O
where O: IsA<URIHandler>,

source§

fn protocols(&self) -> Vec<GString>

Gets the list of protocols supported by self. This list may not be modified. Read more
source§

fn uri(&self) -> Option<GString>

Gets the currently handled URI. Read more
source§

fn uri_type(&self) -> URIType

Gets the type of the given URI handler Read more
source§

fn set_uri(&self, uri: &str) -> Result<(), Error>

Tries to set the URI of the given handler. Read more
source§

impl<'a, T, C, E> FromValueOptional<'a> for T
where T: FromValue<'a, Checker = C>, C: ValueTypeChecker<Error = ValueTypeMismatchOrNoneError<E>>, E: Error + Send + 'static,

source§

impl<Super, Sub> MayDowncastTo<Sub> for Super
where Super: IsA<Super>, Sub: IsA<Super>,