gstringbuffer

gstringbuffer

Functions

Types and Values

Object Hierarchy

    GObject
    ╰── GstObject
        ╰── GstRingBuffer

Includes

#include <gst/audio/gstringbuffer.h>

Description

Functions

GstRingBufferCallback ()

void
(*GstRingBufferCallback) (GstRingBuffer *rbuf,
                          guint8 *data,
                          guint len,
                          gpointer user_data);

GST_RING_BUFFER_BROADCAST()

#define GST_RING_BUFFER_BROADCAST(buf)(g_cond_broadcast (GST_RING_BUFFER_GET_COND (buf)))

GST_RING_BUFFER_GET_COND()

#define GST_RING_BUFFER_GET_COND(buf) (((GstRingBuffer *)buf)->cond)

GST_RING_BUFFER_SIGNAL()

#define GST_RING_BUFFER_SIGNAL(buf)   (g_cond_signal (GST_RING_BUFFER_GET_COND (buf)))

GST_RING_BUFFER_WAIT()

#define GST_RING_BUFFER_WAIT(buf)     (g_cond_wait (GST_RING_BUFFER_GET_COND (buf), GST_OBJECT_GET_LOCK (buf)))

gst_ring_buffer_set_callback ()

void
gst_ring_buffer_set_callback (GstRingBuffer *buf,
                              GstRingBufferCallback cb,
                              gpointer user_data);

gst_ring_buffer_acquire ()

gboolean
gst_ring_buffer_acquire (GstRingBuffer *buf,
                         GstRingBufferSpec *spec);

gst_ring_buffer_release ()

gboolean
gst_ring_buffer_release (GstRingBuffer *buf);

gst_ring_buffer_is_acquired ()

gboolean
gst_ring_buffer_is_acquired (GstRingBuffer *buf);

gst_ring_buffer_activate ()

gboolean
gst_ring_buffer_activate (GstRingBuffer *buf,
                          gboolean active);

gst_ring_buffer_is_active ()

gboolean
gst_ring_buffer_is_active (GstRingBuffer *buf);

gst_ring_buffer_start ()

gboolean
gst_ring_buffer_start (GstRingBuffer *buf);

gst_ring_buffer_pause ()

gboolean
gst_ring_buffer_pause (GstRingBuffer *buf);

gst_ring_buffer_stop ()

gboolean
gst_ring_buffer_stop (GstRingBuffer *buf);

gst_ring_buffer_delay ()

guint
gst_ring_buffer_delay (GstRingBuffer *buf);

gst_ring_buffer_samples_done ()

guint64
gst_ring_buffer_samples_done (GstRingBuffer *buf);

gst_ring_buffer_set_sample ()

void
gst_ring_buffer_set_sample (GstRingBuffer *buf,
                            guint64 sample);

gst_ring_buffer_commit ()

guint
gst_ring_buffer_commit (GstRingBuffer *buf,
                        guint64 sample,
                        guchar *data,
                        guint len);

gst_ring_buffer_commit_full ()

guint
gst_ring_buffer_commit_full (GstRingBuffer *buf,
                             guint64 *sample,
                             guchar *data,
                             gint in_samples,
                             gint out_samples,
                             gint *accum);

gst_ring_buffer_convert ()

gboolean
gst_ring_buffer_convert (GstRingBuffer *buf,
                         GstFormat src_fmt,
                         gint64 src_val,
                         GstFormat dest_fmt,
                         gint64 *dest_val);

gst_ring_buffer_prepare_read ()

gboolean
gst_ring_buffer_prepare_read (GstRingBuffer *buf,
                              gint *segment,
                              guint8 **readptr,
                              gint *len);

gst_ring_buffer_read ()

guint
gst_ring_buffer_read (GstRingBuffer *buf,
                      guint64 sample,
                      guchar *data,
                      guint len);

gst_ring_buffer_clear ()

void
gst_ring_buffer_clear (GstRingBuffer *buf,
                       gint segment);

gst_ring_buffer_clear_all ()

void
gst_ring_buffer_clear_all (GstRingBuffer *buf);

gst_ring_buffer_advance ()

void
gst_ring_buffer_advance (GstRingBuffer *buf,
                         guint advance);

gst_ring_buffer_close_device ()

gboolean
gst_ring_buffer_close_device (GstRingBuffer *buf);

gst_ring_buffer_open_device ()

gboolean
gst_ring_buffer_open_device (GstRingBuffer *buf);

gst_ring_buffer_device_is_open ()

gboolean
gst_ring_buffer_device_is_open (GstRingBuffer *buf);

gst_ring_buffer_may_start ()

void
gst_ring_buffer_may_start (GstRingBuffer *buf,
                           gboolean allowed);

gst_ring_buffer_parse_caps ()

gboolean
gst_ring_buffer_parse_caps (GstRingBufferSpec *spec,
                            GstCaps *caps);

gst_ring_buffer_set_flushing ()

void
gst_ring_buffer_set_flushing (GstRingBuffer *buf,
                              gboolean flushing);

Types and Values

struct GstRingBuffer

struct GstRingBuffer {
  GCond                 *cond;
  gboolean               open;
  gboolean               acquired;
  GstBuffer             *data;
  GstRingBufferSpec      spec;
  GstRingBufferSegState *segstate;
  gint                   samples_per_seg;
  guint8                *empty_seg;

  gint                   state;
  gint                   segdone;
  gint                   segbase;
  gint                   waiting;
};

struct GstRingBufferClass

struct GstRingBufferClass {
  GstObjectClass parent_class;

  gboolean     (*open_device)  (GstRingBuffer *buf);
  gboolean     (*acquire)      (GstRingBuffer *buf, GstRingBufferSpec *spec);
  gboolean     (*release)      (GstRingBuffer *buf);
  gboolean     (*close_device) (GstRingBuffer *buf);

  gboolean     (*start)        (GstRingBuffer *buf);
  gboolean     (*pause)        (GstRingBuffer *buf);
  gboolean     (*resume)       (GstRingBuffer *buf);
  gboolean     (*stop)         (GstRingBuffer *buf);

  guint        (*delay)        (GstRingBuffer *buf);

  /* ABI added */
  gboolean     (*activate)     (GstRingBuffer *buf, gboolean active);

  guint        (*commit)       (GstRingBuffer * buf, guint64 *sample,
                                guchar * data, gint in_samples,
                                gint out_samples, gint * accum);

  void         (*clear_all)    (GstRingBuffer * buf);
};

struct GstRingBufferSpec

struct GstRingBufferSpec {
  /* in */
  GstCaps  *caps;               /* the caps of the buffer */

  /* in/out */
  GstBufferFormatType   type;
  GstBufferFormat format;
  gboolean  sign;
  gboolean  bigend;
  gint      width;
  gint      depth;
  gint      rate;
  gint      channels;

  guint64  latency_time;        /* the required/actual latency time, this is the
				 * actual the size of one segment and the
				 * minimum possible latency we can achieve. */
  guint64  buffer_time;         /* the required/actual time of the buffer, this is
				 * the total size of the buffer and maximum
				 * latency we can compensate for. */
  gint     segsize;             /* size of one buffer segment in bytes, this value
				 * should be chosen to match latency_time as
				 * well as possible. */
  gint     segtotal;            /* total number of segments, this value is the
				 * number of segments of @segsize and should be
				 * chosen so that it matches buffer_time as
				 * close as possible. */
  /* out */
  gint     bytes_per_sample;    /* number of bytes of one sample */
  guint8   silence_sample[32];  /* bytes representing silence */

  /* ABI added 0.10.20 */
  gint     seglatency;          /* number of segments queued in the lower
				 * level device, defaults to segtotal. */
};

enum GstRingBufferSegState

Members

GST_SEGSTATE_INVALID

   

GST_SEGSTATE_EMPTY

   

GST_SEGSTATE_FILLED

   

GST_SEGSTATE_PARTIAL

   

enum GstRingBufferState

Members

GST_RING_BUFFER_STATE_STOPPED

   

GST_RING_BUFFER_STATE_PAUSED

   

GST_RING_BUFFER_STATE_STARTED

   

enum GstBufferFormat

Members

GST_UNKNOWN

   

GST_S8

   

GST_U8

   

GST_S16_LE

   

GST_S16_BE

   

GST_U16_LE

   

GST_U16_BE

   

GST_S24_LE

   

GST_S24_BE

   

GST_U24_LE

   

GST_U24_BE

   

GST_S32_LE

   

GST_S32_BE

   

GST_U32_LE

   

GST_U32_BE

   

GST_S24_3LE

   

GST_S24_3BE

   

GST_U24_3LE

   

GST_U24_3BE

   

GST_S20_3LE

   

GST_S20_3BE

   

GST_U20_3LE

   

GST_U20_3BE

   

GST_S18_3LE

   

GST_S18_3BE

   

GST_U18_3LE

   

GST_U18_3BE

   

GST_FLOAT32_LE

   

GST_FLOAT32_BE

   

GST_FLOAT64_LE

   

GST_FLOAT64_BE

   

GST_MU_LAW

   

GST_A_LAW

   

GST_IMA_ADPCM

   

GST_MPEG

   

GST_GSM

   

GST_IEC958

   

GST_AC3

   

GST_EAC3

   

GST_DTS

   

GST_MPEG2_AAC

   

GST_MPEG4_AAC

   

enum GstBufferFormatType

Members

GST_BUFTYPE_LINEAR

   

GST_BUFTYPE_FLOAT

   

GST_BUFTYPE_MU_LAW

   

GST_BUFTYPE_A_LAW

   

GST_BUFTYPE_IMA_ADPCM

   

GST_BUFTYPE_MPEG

   

GST_BUFTYPE_GSM

   

GST_BUFTYPE_IEC958

   

GST_BUFTYPE_AC3

   

GST_BUFTYPE_EAC3

   

GST_BUFTYPE_DTS

   

GST_BUFTYPE_MPEG2_AAC

   

GST_BUFTYPE_MPEG4_AAC