appsrc

appsrc — Allow the application to feed buffers to a pipeline

Synopsis

struct              GstAppSrc;

Object Hierarchy

  GObject
   +----GstObject
         +----GstElement
               +----GstBaseSrc
                     +----GstAppSrc

Implemented Interfaces

GstAppSrc implements GstURIHandler.

Properties

  "block"                    gboolean              : Read / Write
  "caps"                     GstCaps*              : Read / Write
  "format"                   GstFormat             : Read / Write
  "is-live"                  gboolean              : Read / Write
  "max-bytes"                guint64               : Read / Write
  "max-latency"              gint64                : Read / Write
  "min-latency"              gint64                : Read / Write
  "size"                     gint64                : Read / Write
  "stream-type"              GstAppStreamType      : Read / Write
  "emit-signals"             gboolean              : Read / Write
  "min-percent"              guint                 : Read / Write

Signals

  "end-of-stream"                                  : Action
  "enough-data"                                    : Run Last
  "need-data"                                      : Run Last
  "push-buffer"                                    : Action
  "seek-data"                                      : Run Last

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.

For the documentation of the API, please see the libgstapp section in the GStreamer Plugins Base Libraries documentation.

Synopsis

Element Information

plugin

app

author

David Schleef <ds@schleef.org>, Wim Taymans <wim.taymans@gmail.com>

class

Generic/Source

Element Pads

name

src

direction

source

presence

always

details

ANY

Details

struct GstAppSrc

struct GstAppSrc;

Property Details

The "block" property

  "block"                    gboolean              : Read / Write

Block push-buffer when max-bytes are queued.

Default value: FALSE


The "caps" property

  "caps"                     GstCaps*              : Read / Write

The allowed caps for the src pad.


The "format" property

  "format"                   GstFormat             : Read / Write

The format of the segment events and seek.

Default value: GST_FORMAT_BYTES


The "is-live" property

  "is-live"                  gboolean              : Read / Write

Whether to act as a live source.

Default value: FALSE


The "max-bytes" property

  "max-bytes"                guint64               : Read / Write

The maximum number of bytes to queue internally (0 = unlimited).

Default value: 200000


The "max-latency" property

  "max-latency"              gint64                : Read / Write

The maximum latency (-1 = unlimited).

Allowed values: >= G_MAXULONG

Default value: -1


The "min-latency" property

  "min-latency"              gint64                : Read / Write

The minimum latency (-1 = default).

Allowed values: >= G_MAXULONG

Default value: -1


The "size" property

  "size"                     gint64                : Read / Write

The size of the data stream in bytes (-1 if unknown).

Allowed values: >= G_MAXULONG

Default value: -1


The "stream-type" property

  "stream-type"              GstAppStreamType      : Read / Write

the type of the stream.

Default value: GST_APP_STREAM_TYPE_STREAM


The "emit-signals" property

  "emit-signals"             gboolean              : Read / Write

Emit need-data, enough-data and seek-data signals.

Default value: TRUE


The "min-percent" property

  "min-percent"              guint                 : Read / Write

Emit need-data when queued bytes drops below this percent of max-bytes.

Allowed values: <= 100

Default value: 0

Signal Details

The "end-of-stream" signal

GstFlowReturn       user_function                      (GstAppSrc *appsrc,
                                                        gpointer   user_data)      : Action

Notify appsrc that no more buffer are available.

appsrc :

the appsrc

user_data :

user data set when the signal handler was connected.

The "enough-data" signal

void                user_function                      (GstAppSrc *appsrc,
                                                        gpointer   user_data)      : Run Last

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

appsrc :

the appsrc element that emited the signal

user_data :

user data set when the signal handler was connected.

The "need-data" signal

void                user_function                      (GstAppSrc *appsrc,
                                                        guint      length,
                                                        gpointer   user_data)      : Run Last

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.

appsrc :

the appsrc element that emited the signal

length :

the amount of bytes needed.

user_data :

user data set when the signal handler was connected.

The "push-buffer" signal

GstFlowReturn       user_function                      (GstAppSrc *appsrc,
                                                        GstBuffer *buffer,
                                                        gpointer   user_data)      : Action

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 so the buffer 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.

appsrc :

the appsrc

buffer :

a buffer to push

user_data :

user data set when the signal handler was connected.

The "seek-data" signal

gboolean            user_function                      (GstAppSrc *appsrc,
                                                        guint64    offset,
                                                        gpointer   user_data)      : Run Last

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.

appsrc :

the appsrc element that emited the signal

offset :

the offset to seek to

user_data :

user data set when the signal handler was connected.

Returns :

TRUE if the seek succeeded.