## GstQueue

GstQueue — Simple asynchronous data queue.

## Synopsis

    #include <gst/gst.h>

    struct      GstQueue;
    struct      GstQueueSize;

## Object Hierarchy

      GObject
       +----GstObject
             +----GstElement
                   +----GstQueue

## Properties

      "block-timeout"        guint64              : Read / Write
      "current-level-buffers" guint                : Read
      "current-level-bytes"  guint                : Read
      "current-level-time"   guint64              : Read
      "leaky"                GstQueueLeaky        : Read / Write
      "max-size-buffers"     guint                : Read / Write
      "max-size-bytes"       guint                : Read / Write
      "max-size-time"        guint64              : Read / Write
      "may-deadlock"         gboolean             : Read / Write
      "min-threshold-buffers" guint                : Read / Write
      "min-threshold-bytes"  guint                : Read / Write
      "min-threshold-time"   guint64              : Read / Write

## Signal Prototypes

    "overrun"   void        user_function      (GstQueue *gstqueue,
                                                gpointer user_data);
    "running"   void        user_function      (GstQueue *gstqueue,
                                                gpointer user_data);
    "underrun"  void        user_function      (GstQueue *gstqueue,
                                                gpointer user_data);

## Description

Simple data queue. Data is queued till max_level buffers any subsequent buffers sent to this filter will block until free space becomes available in the buffer. The queue is typically used in conjunction with a thread.

You can query how many buffers are queued with the level argument.

The default queue length is set to 100.

The queue blocks by default.

## Details

### struct GstQueue

    struct GstQueue;

### struct GstQueueSize

    struct GstQueueSize {

        guint   buffers;	/* no. of buffers */
        guint   bytes;	/* no. of bytes */
        guint64 time;	/* amount of time */
    };

## Properties

"`block-timeout`" (guint64 : Read / Write) | Nanoseconds until blocked queue times out and returns filler event. Value of -1 disables timeout.
"`current-level-buffers`" (guint : Read) | Current number of buffers in the queue.
"`current-level-bytes`" (guint : Read) | Current amount of data in the queue (bytes).
"`current-level-time`" (guint64 : Read) | Current amount of data in the queue (in ns).
"`leaky`" (GstQueueLeaky : Read / Write) | Where the queue leaks, if at all.
"`max-size-buffers`" (guint : Read / Write) | Max. number of buffers in the queue (0=disable).
"`max-size-bytes`" (guint : Read / Write) | Max. amount of data in the queue (bytes, 0=disable).
"`max-size-time`" (guint64 : Read / Write) | Max. amount of data in the queue (in ns, 0=disable).
"`may-deadlock`" (gboolean : Read / Write) | The queue may deadlock if it's full and not PLAYING.
"`min-threshold-buffers`" (guint : Read / Write) | Min. number of buffers in the queue to allow reading (0=disable).
"`min-threshold-bytes`" (guint : Read / Write) | Min. amount of data in the queue to allow reading (bytes, 0=disable).
"`min-threshold-time`" (guint64 : Read / Write) | Min. amount of data in the queue to allow reading (in ns, 0=disable).

## Signals

### The "overrun" signal

    void        user_function                  (GstQueue *gstqueue,
                                                gpointer user_data);

Reports that the buffer became full (overrun). A buffer is full if the total amount of data inside it (num-buffers, time, size) is higher than the boundary values which can be set through the GObject properties.

`gstqueue` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.

### The "running" signal

    void        user_function                  (GstQueue *gstqueue,
                                                gpointer user_data);

`gstqueue` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.

### The "underrun" signal

    void        user_function                  (GstQueue *gstqueue,
                                                gpointer user_data);

Reports that the buffer became empty (underrun). A buffer is empty if the total amount of data inside it (num-buffers, time, size) is lower than the boundary values which can be set through the GObject properties.

`gstqueue` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.