Struct gstreamer_app::AppSink[]

pub struct AppSink(_, _);

Appsink is a sink plugin that supports many different methods for making the application get a handle on the GStreamer data in a pipeline. Unlike most GStreamer elements, Appsink provides external API functions.

appsink can be used by linking to the gstappsink.h header file to access the methods or by using the appsink action signals and properties.

The normal way of retrieving samples from appsink is by using the AppSink::pull_sample and AppSink::pull_preroll methods. These methods block until a sample becomes available in the sink or when the sink is shut down or reaches EOS. There are also timed variants of these methods, AppSink::try_pull_sample and AppSink::try_pull_preroll, which accept a timeout parameter to limit the amount of time to wait.

Appsink will internally use a queue to collect buffers from the streaming thread. If the application is not pulling samples fast enough, this queue will consume a lot of memory over time. The "max-buffers" property can be used to limit the queue size. The "drop" property controls whether the streaming thread blocks or if older buffers are dropped when the maximum queue size is reached. Note that blocking the streaming thread can negatively affect real-time performance and should be avoided.

If a blocking behaviour is not desirable, setting the "emit-signals" property to true will make appsink emit the "new-sample" and "new-preroll" signals when a sample can be pulled without blocking.

The "caps" property on appsink can be used to control the formats that appsink can receive. This property can contain non-fixed caps, the format of the pulled samples can be obtained by getting the sample caps.

If one of the pull-preroll or pull-sample methods return None, the appsink is stopped or in the EOS state. You can check for the EOS state with the "eos" property or with the AppSink::is_eos method.

The eos signal can also be used to be informed when the EOS state is reached to avoid polling.

Implements

gst_base::BaseSinkExt, gst::ElementExt, gst::ObjectExt, glib::object::ObjectExt, gst::URIHandlerExt

Methods

impl AppSink
[src]

Check if self supports buffer lists.

Feature: v1_12

Returns

true if self supports buffer lists.

Get the configured caps on self.

Returns

the gst::Caps accepted by the sink. gst_caps_unref after usage.

Check if self will drop old buffers when the maximum amount of queued buffers is reached.

Returns

true if self is dropping old buffers when the queue is filled.

Check if appsink will emit the "new-preroll" and "new-sample" signals.

Returns

true if self is emiting the "new-preroll" and "new-sample" signals.

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

Returns

The maximum amount of buffers that can be queued.

Check if self will wait for all buffers to be consumed when an EOS is received.

Returns

true if self will wait for all buffers to be consumed when an EOS is received.

Check if self is EOS, which is when no more samples can be pulled because an EOS event was received.

This function also returns true when the appsink is not in the PAUSED or PLAYING state.

Returns

true if no more samples can be pulled and the appsink is EOS.

Get the last preroll sample in self. This was the sample that caused the appsink to preroll in the PAUSED state.

This function is typically used when dealing with a pipeline in the PAUSED state. Calling this function after doing a seek will give the sample right after the seek position.

Calling this function will clear the internal reference to the preroll buffer.

Note that the preroll sample will also be returned as the first sample when calling AppSink::pull_sample.

If an EOS event was received before any buffers, this function returns None. Use gst_app_sink_is_eos () to check for the EOS condition.

This function blocks until a preroll sample or EOS is received or the appsink element is set to the READY/NULL state.

Returns

a gst::Sample or NULL when the appsink is stopped or EOS. Call gst_sample_unref after usage.

This function blocks until a sample or EOS becomes available or the appsink element is set to the READY/NULL state.

This function will only return samples when the appsink is in the PLAYING state. All rendered buffers will be put in a queue so that the application can pull samples at its own rate. Note that when the application does not pull samples fast enough, the queued buffers could consume a lot of memory, especially when dealing with raw video frames.

If an EOS event was received before any buffers, this function returns None. Use gst_app_sink_is_eos () to check for the EOS condition.

Returns

a gst::Sample or NULL when the appsink is stopped or EOS. Call gst_sample_unref after usage.

Instruct self to enable or disable buffer list support.

For backwards-compatibility reasons applications need to opt in to indicate that they will be able to handle buffer lists.

Feature: v1_12

enable_lists

enable or disable buffer list support

Set the capabilities on the appsink element. This function takes a copy of the caps structure. After calling this method, the sink will only accept caps that match caps. If caps is non-fixed, or incomplete, you must check the caps on the samples to get the actual used caps.

caps

caps to set

Instruct self to drop old buffers when the maximum amount of queued buffers is reached.

drop

the new state

Make appsink emit the "new-preroll" and "new-sample" signals. This option is by default disabled because signal emission is expensive and unneeded when the application prefers to operate in pull mode.

emit

the new state

Set the maximum amount of buffers that can be queued in self. After this amount of buffers are queued in appsink, any more buffers will block upstream elements until a sample is pulled from self.

max

the maximum number of buffers to queue

Instruct self to wait for all buffers to be consumed when an EOS is received.

wait

the new state

Get the last preroll sample in self. This was the sample that caused the appsink to preroll in the PAUSED state.

This function is typically used when dealing with a pipeline in the PAUSED state. Calling this function after doing a seek will give the sample right after the seek position.

Calling this function will clear the internal reference to the preroll buffer.

Note that the preroll sample will also be returned as the first sample when calling AppSink::pull_sample.

If an EOS event was received before any buffers or the timeout expires, this function returns None. Use gst_app_sink_is_eos () to check for the EOS condition.

This function blocks until a preroll sample or EOS is received, the appsink element is set to the READY/NULL state, or the timeout expires.

Feature: v1_10

timeout

the maximum amount of time to wait for the preroll sample

Returns

a gst::Sample or NULL when the appsink is stopped or EOS or the timeout expires. Call gst_sample_unref after usage.

This function blocks until a sample or EOS becomes available or the appsink element is set to the READY/NULL state or the timeout expires.

This function will only return samples when the appsink is in the PLAYING state. All rendered buffers will be put in a queue so that the application can pull samples at its own rate. Note that when the application does not pull samples fast enough, the queued buffers could consume a lot of memory, especially when dealing with raw video frames.

If an EOS event was received before any buffers or the timeout expires, this function returns None. Use gst_app_sink_is_eos () to check for the EOS condition.

Feature: v1_10

timeout

the maximum amount of time to wait for a sample

Returns

a gst::Sample or NULL when the appsink is stopped or EOS or the timeout expires. Call gst_sample_unref after usage.

impl AppSink
[src]

Set callbacks which will be executed for each new preroll, new sample and eos. 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.

callbacks

the callbacks

user_data

a user_data argument for the callbacks

notify

a destroy notify function

Trait Implementations

impl Clone for AppSink

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl Hash for AppSink

Feeds this value into the given [Hasher]. Read more

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

impl Ord for AppSink

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

impl StaticType for AppSink

Returns the type identifier of Self.

impl<T: IsA<Object>> PartialEq<T> for AppSink

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

This method tests for !=.

impl Eq for AppSink

impl<T: IsA<Object>> PartialOrd<T> for AppSink

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

impl Debug for AppSink

Formats the value using the given formatter. Read more

impl IsA<BaseSink> for AppSink

impl IsA<Element> for AppSink

impl IsA<Object> for AppSink

impl IsA<URIHandler> for AppSink

impl IsA<Object> for AppSink

impl Send for AppSink
[src]

impl Sync for AppSink
[src]