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_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