#[repr(transparent)]
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.

Implements

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

Implementations

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.

Get the configured caps on self.

Returns

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

This is supported on crate feature v1_20 only.

Get the number of currently queued buffers inside self.

Returns

The number of currently queued buffers.

Get the number of currently queued bytes inside self.

Returns

The number of currently queued bytes.

This is supported on crate feature v1_20 only.

Get the amount of currently queued time inside self.

Returns

The amount of currently queued time.

This is supported on crate feature v1_10 only.

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();

This is supported on crate feature v1_20 only.

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

Returns

The currently set AppLeakyType.

This is supported on crate feature v1_20 only.

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

Returns

The maximum amount of buffers that can be queued.

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

Returns

The maximum amount of bytes that can be queued.

This is supported on crate feature v1_20 only.

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

Returns

The maximum amount of time that can be queued.

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();

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

Returns

the stream type.

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.

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

This is supported on crate feature v1_10 only.

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

This is supported on crate feature v1_20 only.

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

This is supported on crate feature v1_20 only.

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

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

This is supported on crate feature v1_20 only.

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

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

size

the size to set

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

A stream_type stream

type_

the new state

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.

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.

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

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

This is supported on crate feature v1_18 only.

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.

This is supported on crate feature v1_18 only.

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.

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

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

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

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

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

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

This is supported on crate feature v1_20 only.
This is supported on crate feature v1_20 only.
This is supported on crate feature v1_10 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_20 only.
This is supported on crate feature v1_20 only.
This is supported on crate feature v1_20 only.

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.

This is supported on crate feature v1_14 only.

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.

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

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

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

Returns
min

the min latency

max

the max latency

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Feeds this value into the given Hasher. Read more

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

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

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

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

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

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

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

Returns the type identifier of Self.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

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

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

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

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

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 downcast and upcast will do many checks at compile-time already. Read more

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

Casts to T unconditionally. Read more

Casts to &T unconditionally. Read more

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

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

Perform transition on self. Read more

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

This is supported on crate feature v1_14 only.
This is supported on crate feature v1_14 only.
This is supported on crate feature v1_14 only.

Performs a query on the given element. Read more

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

This is supported on crate feature v1_10 only.
This is supported on crate feature v1_10 only.
This is supported on crate feature v1_10 only.
This is supported on crate feature v1_10 only.
This is supported on crate feature v1_10 only.
This is supported on crate feature v1_10 only.

Performs the conversion.

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

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

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

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

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

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

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

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

Performs the conversion.

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

Returns the type of the object.

Returns the ObjectClass of the object. Read more

Returns the class of the object.

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

Returns the interface T of the object. Read more

Similar to Self::set_property but fails instead of panicking.

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

Similar to Self::set_property but fails instead of panicking.

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

Similar to Self::set_properties but fails instead of panicking.

Sets multiple properties of the object at once. Read more

Similar to Self::set_properties_from_value but fails instead of panicking.

Sets multiple properties of the object at once. Read more

Similar to Self::property but fails instead of panicking.

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

Similar to Self::property_value but fails instead of panicking.

Gets the property property_name of the object. Read more

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

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

Get the ParamSpec of the property property_name of this object.

Return all ParamSpec of the properties of this object.

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

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

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

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

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

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

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

Block a given signal handler. Read more

Unblock a given signal handler.

Stop emission of the currently emitted signal.

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

Similar to Self::connect but fails instead of panicking.

Connect to the signal signal_name on this object. Read more

Similar to Self::connect_id but fails instead of panicking.

Connect to the signal signal_id on this object. Read more

Similar to Self::connect_local but fails instead of panicking.

Connect to the signal signal_name on this object. Read more

Similar to Self::connect_local_id but fails instead of panicking.

Connect to the signal signal_id on this object. Read more

Similar to Self::connect_unsafe but fails instead of panicking.

Connect to the signal signal_name on this object. Read more

Similar to Self::connect_unsafe_id but fails instead of panicking.

Similar to Self::connect_closure but fails instead of panicking.

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

Similar to Self::connect_closure_id but fails instead of panicking.

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

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 Closure::invoke. Read more

Connect to the signal signal_id on this object. Read more

Similar to Self::emit but fails instead of panicking.

Emit signal by signal id. Read more

Similar to Self::emit_with_values but fails instead of panicking.

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

Similar to Self::emit_by_name but fails instead of panicking.

Emit signal by its name. Read more

Similar to Self::emit_by_name_with_values but fails instead of panicking.

Emit signal by its name. Read more

Similar to Self::emit_by_name_with_details but fails instead of panicking.

Emit signal by its name with details. Read more

Similar to Self::emit_by_name_with_details_and_values but fails instead of panicking.

Emit signal by its name with details. Read more

Similar to Self::emit_with_details but fails instead of panicking.

Emit signal by signal id with details. Read more

Similar to Self::emit_with_details_and_values but fails instead of panicking.

Emit signal by signal id with details. Read more

Disconnect a previously connected signal handler.

Connect to the notify signal of the object. Read more

Connect to the notify signal of the object. Read more

Connect to the notify signal of the object. Read more

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

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

Downgrade this object to a weak reference.

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

Returns the strong reference count of this object.

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

The resulting type after obtaining ownership.

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

🔬 This is a nightly-only experimental API. (toowned_clone_into)

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

Returns a SendValue clone of self.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

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

Gets the currently handled URI. Read more

Gets the type of the given URI handler Read more

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