GstBaseSrc

GstBaseSrc — Base class for getrange based source elements

Synopsis


#include <gst/base/gstbasesrc.h>


            GstBaseSrc;
enum        GstBaseSrcFlags;
gboolean    gst_base_src_is_live            (GstBaseSrc *src);
void        gst_base_src_set_live           (GstBaseSrc *src,
                                             gboolean live);
#define     GST_BASE_SRC_PAD                (obj)


Object Hierarchy


  GObject
   +----GstObject
         +----GstElement
               +----GstBaseSrc
                     +----GstFakeSrc
                     +----GstPushSrc
                     +----GstFileSrc

Properties


  "blocksize"            gulong                : Read / Write
  "num-buffers"          gint                  : Read / Write

Description

This class is mostly useful for elements that do byte based access to a random access resource, like files. If random access is not possible, the live-mode should be set to TRUE.

  • one source pad

  • handles state changes

  • does flushing

  • preroll with optional preview

  • pull/push mode

  • EOS handling

Details

GstBaseSrc

typedef struct {
  /* available to subclass implementations */
  /* MT-protected (with LIVE_LOCK) */
  GMutex	*live_lock;
  GCond		*live_cond;
  gboolean	 is_live;
  gboolean	 live_running;

  /* MT-protected (with LOCK) */
  gint		 blocksize;	/* size of buffers when operating push based */
  gboolean	 can_activate_push;	/* some scheduling properties */
  GstActivateMode pad_mode;
  gboolean       seekable;
  gboolean       random_access;

  GstClockID     clock_id;	/* for syncing */
  GstClockTime   end_time;

  /* MT-protected (with STREAM_LOCK) */
  gint64	 segment_start;	/* start and end positions for seeking */
  gint64	 segment_end;
  gboolean	 segment_loop;
  gboolean	 need_newsegment;

  guint64	 offset;	/* current offset in the resource */
  guint64        size;		/* total size of the resource */

  gint           num_buffers;
  gint           num_buffers_left;
} GstBaseSrc;


enum GstBaseSrcFlags

typedef enum {
  GST_BASE_SRC_STARTED           = (GST_ELEMENT_FLAG_LAST << 0),
  /* padding */
  GST_BASE_SRC_FLAG_LAST         = (GST_ELEMENT_FLAG_LAST << 2)
} GstBaseSrcFlags;

The GstElement flags that a basesrc element may have.

GST_BASE_SRC_STARTED has source been started
GST_BASE_SRC_FLAG_LAST offset to define more flags

gst_base_src_is_live ()

gboolean    gst_base_src_is_live            (GstBaseSrc *src);

Check if an element is in live mode.

src : base source instance
Returns : TRUE if element is in live mode.

gst_base_src_set_live ()

void        gst_base_src_set_live           (GstBaseSrc *src,
                                             gboolean live);

If the element listens to a live source, the livemode should be set to TRUE. This declares that this source can't seek.

src : base source instance
live : new live-mode

GST_BASE_SRC_PAD()

#define GST_BASE_SRC_PAD(obj)                 (GST_BASE_SRC_CAST (obj)->srcpad)

Gives the pointer to the GstPad object of the element.

obj : base source instance

Properties

The "blocksize" property

  "blocksize"            gulong                : Read / Write

Size in bytes to read per buffer.

Allowed values: >= 1


The "num-buffers" property

  "num-buffers"          gint                  : Read / Write

Number of buffers to output before sending EOS.

Allowed values: >= -1

Default value: -1

See Also

GstBaseTransform, GstBaseSink