gstbasesink.h   gstbasesink.h 
skipping to change at line 30 skipping to change at line 30
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
#ifndef __GST_BASE_SINK_H__ #ifndef __GST_BASE_SINK_H__
#define __GST_BASE_SINK_H__ #define __GST_BASE_SINK_H__
#include <gst/gst.h> #include <gst/gst.h>
G_BEGIN_DECLS G_BEGIN_DECLS
#define GST_TYPE_BASE_SINK (gst_base_sink_get_type()) #define GST_TYPE_BASE_SINK (gst_base_sink_get_type())
#define GST_BASE_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GS #define GST_BASE_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),G
T_TYPE_BASE_SINK,GstBaseSink)) ST_TYPE_BASE_SINK,GstBaseSink))
#define GST_BASE_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST #define GST_BASE_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GS
_TYPE_BASE_SINK,GstBaseSinkClass)) T_TYPE_BASE_SINK,GstBaseSinkClass))
#define GST_BASE_SINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_BASE_SINK, GstBaseSinkClass)) #define GST_BASE_SINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_BASE_SINK, GstBaseSinkClass))
#define GST_IS_BASE_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GS #define GST_IS_BASE_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),G
T_TYPE_BASE_SINK)) ST_TYPE_BASE_SINK))
#define GST_IS_BASE_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST #define GST_IS_BASE_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GS
_TYPE_BASE_SINK)) T_TYPE_BASE_SINK))
#define GST_BASE_SINK_CAST(obj) ((GstBaseSink *) (obj)) #define GST_BASE_SINK_CAST(obj) ((GstBaseSink *) (obj))
/** /**
* GST_BASE_SINK_PAD: * GST_BASE_SINK_PAD:
* @obj: base sink instance * @obj: base sink instance
* *
* Gives the pointer to the #GstPad object of the element. * Gives the pointer to the #GstPad object of the element.
*/ */
#define GST_BASE_SINK_PAD(obj) (GST_BASE_SINK_CAST (obj)->sinkpad) #define GST_BASE_SINK_PAD(obj) (GST_BASE_SINK_CAST (obj)->sinkpad)
typedef struct _GstBaseSink GstBaseSink; typedef struct _GstBaseSink GstBaseSink;
typedef struct _GstBaseSinkClass GstBaseSinkClass; typedef struct _GstBaseSinkClass GstBaseSinkClass;
typedef struct _GstBaseSinkPrivate GstBaseSinkPrivate; typedef struct _GstBaseSinkPrivate GstBaseSinkPrivate;
/** /**
* GstBaseSink: * GstBaseSink:
* @element: the parent element.
* *
* The opaque #GstBaseSink data structure. * The opaque #GstBaseSink data structure.
*/ */
struct _GstBaseSink { struct _GstBaseSink {
GstElement element; GstElement element;
/*< protected >*/ /*< protected >*/
GstPad *sinkpad; GstPad *sinkpad;
GstActivateMode pad_mode; GstActivateMode pad_mode;
/*< protected >*/ /* with LOCK */ /*< protected >*/ /* with LOCK */
guint64 offset; guint64 offset;
gboolean can_activate_pull; gboolean can_activate_pull;
gboolean can_activate_push; gboolean can_activate_push;
/*< protected >*/ /* with PREROLL_LOCK */ /*< protected >*/ /* with PREROLL_LOCK */
GQueue *preroll_queue; GQueue *preroll_queue;
gint preroll_queue_max_len; gint preroll_queue_max_len; /* FIXME-0.11: the property is guin
gint preroll_queued; t */
gint buffers_queued; gint preroll_queued;
gint events_queued; gint buffers_queued;
gint events_queued;
gboolean eos; gboolean eos;
gboolean eos_queued; gboolean eos_queued;
gboolean need_preroll; gboolean need_preroll;
gboolean have_preroll; gboolean have_preroll;
gboolean playing_async; gboolean playing_async;
/*< protected >*/ /* with STREAM_LOCK */ /*< protected >*/ /* with STREAM_LOCK */
gboolean have_newsegment; gboolean have_newsegment;
GstSegment segment; GstSegment segment;
/*< private >*/ /* with LOCK */ /*< private >*/ /* with LOCK */
GstClockID clock_id; GstClockID clock_id;
GstClockTime end_time; GstClockTime end_time;
gboolean sync; gboolean sync;
gboolean flushing; gboolean flushing;
/*< private >*/ /*< private >*/
union { union {
struct { struct {
/* segment used for clipping incoming buffers */ /* segment used for clipping incoming buffers */
GstSegment *clip_segment; GstSegment *clip_segment;
/* max amount of time a buffer can be late, -1 no limit. */ /* max amount of time a buffer can be late, -1 no limit. */
gint64 max_lateness; gint64 max_lateness;
gboolean running; gboolean running;
} ABI; } ABI;
gpointer _gst_reserved[GST_PADDING_LARGE - 1]; gpointer _gst_reserved[GST_PADDING_LARGE - 1];
} abidata; } abidata;
GstBaseSinkPrivate *priv; GstBaseSinkPrivate *priv;
}; };
/** /**
* GstBaseSinkClass: * GstBaseSinkClass:
skipping to change at line 123 skipping to change at line 122
* @start: Start processing. Ideal for opening resources in the subclass * @start: Start processing. Ideal for opening resources in the subclass
* @stop: Stop processing. Subclasses should use this to close resources. * @stop: Stop processing. Subclasses should use this to close resources.
* @unlock: Unlock any pending access to the resource. Subclasses should * @unlock: Unlock any pending access to the resource. Subclasses should
* unblock any blocked function ASAP * unblock any blocked function ASAP
* @unlock_stop: Clear the previous unlock request. Subclasses should clear * @unlock_stop: Clear the previous unlock request. Subclasses should clear
* any state they set during unlock(), such as clearing command queues. * any state they set during unlock(), such as clearing command queues.
* @event: Override this to handle events arriving on the sink pad * @event: Override this to handle events arriving on the sink pad
* @preroll: Called to present the preroll buffer if desired * @preroll: Called to present the preroll buffer if desired
* @render: Called when a buffer should be presented or output, at the * @render: Called when a buffer should be presented or output, at the
* correct moment if the #GstBaseSink has been set to sync to the clock . * correct moment if the #GstBaseSink has been set to sync to the clock .
* @render_list: Same as @render but used whith buffer lists instead of
* buffers. Since: 0.10.24
* @async_play: Subclasses should override this when they need to perform * @async_play: Subclasses should override this when they need to perform
* special processing when changing to the PLAYING state asynchronously . * special processing when changing to the PLAYING state asynchronously .
* Called with the OBJECT_LOCK held. * Called with the OBJECT_LOCK held.
* @activate_pull: Subclasses should override this when they can provide an * @activate_pull: Subclasses should override this when they can provide an
* alternate method of spawning a thread to drive the pipeline in pull mode. * alternate method of spawning a thread to drive the pipeline in pull mode.
* Should start or stop the pulling thread, depending on the value of t he * Should start or stop the pulling thread, depending on the value of t he
* "active" argument. Called after actually activating the sink pad in pull * "active" argument. Called after actually activating the sink pad in pull
* mode. The default implementation starts a task on the sink pad. * mode. The default implementation starts a task on the sink pad.
* @fixate: Only useful in pull mode, this vmethod will be called in respon se to * @fixate: Only useful in pull mode, this vmethod will be called in respon se to
* gst_pad_fixate_caps() being called on the sink pad. Implement if you have * gst_pad_fixate_caps() being called on the sink pad. Implement if you have
skipping to change at line 149 skipping to change at line 150
struct _GstBaseSinkClass { struct _GstBaseSinkClass {
GstElementClass parent_class; GstElementClass parent_class;
/* get caps from subclass */ /* get caps from subclass */
GstCaps* (*get_caps) (GstBaseSink *sink); GstCaps* (*get_caps) (GstBaseSink *sink);
/* notify subclass of new caps */ /* notify subclass of new caps */
gboolean (*set_caps) (GstBaseSink *sink, GstCaps *caps); gboolean (*set_caps) (GstBaseSink *sink, GstCaps *caps);
/* allocate a new buffer with given caps */ /* allocate a new buffer with given caps */
GstFlowReturn (*buffer_alloc) (GstBaseSink *sink, guint64 offset, guint s ize, GstFlowReturn (*buffer_alloc) (GstBaseSink *sink, guint64 offset, guint s ize,
GstCaps *caps, GstBuffer **buf); GstCaps *caps, GstBuffer **buf);
/* get the start and end times for syncing on this buffer */ /* get the start and end times for syncing on this buffer */
void (*get_times) (GstBaseSink *sink, GstBuffer *buffer, void (*get_times) (GstBaseSink *sink, GstBuffer *buffer,
GstClockTime *start, GstClockTime *end); GstClockTime *start, GstClockTime *end);
/* start and stop processing, ideal for opening/closing the resource */ /* start and stop processing, ideal for opening/closing the resource */
gboolean (*start) (GstBaseSink *sink); gboolean (*start) (GstBaseSink *sink);
gboolean (*stop) (GstBaseSink *sink); gboolean (*stop) (GstBaseSink *sink);
/* unlock any pending access to the resource. subclasses should unlock /* unlock any pending access to the resource. subclasses should unlock
* any function ASAP. */ * any function ASAP. */
gboolean (*unlock) (GstBaseSink *sink); gboolean (*unlock) (GstBaseSink *sink);
/* notify subclass of event, preroll buffer or real buffer */ /* notify subclass of event, preroll buffer or real buffer */
gboolean (*event) (GstBaseSink *sink, GstEvent *event); gboolean (*event) (GstBaseSink *sink, GstEvent *event);
GstFlowReturn (*preroll) (GstBaseSink *sink, GstBuffer *buffer); GstFlowReturn (*preroll) (GstBaseSink *sink, GstBuffer *buffer);
GstFlowReturn (*render) (GstBaseSink *sink, GstBuffer *buffer); GstFlowReturn (*render) (GstBaseSink *sink, GstBuffer *buffer);
/* ABI additions */ /* ABI additions */
/* when an ASYNC state change to PLAYING happens */ /* with LOCK */ /* when an ASYNC state change to PLAYING happens */ /* with LOCK */
GstStateChangeReturn (*async_play) (GstBaseSink *sink); GstStateChangeReturn (*async_play) (GstBaseSink *sink);
/* start or stop a pulling thread */ /* start or stop a pulling thread */
gboolean (*activate_pull)(GstBaseSink *sink, gboolean active); gboolean (*activate_pull)(GstBaseSink *sink, gboolean active);
/* fixate sink caps during pull-mode negotiation */ /* fixate sink caps during pull-mode negotiation */
void (*fixate) (GstBaseSink *sink, GstCaps *caps); void (*fixate) (GstBaseSink *sink, GstCaps *caps);
/* Clear a previously indicated unlock request not that unlocking is /* Clear a previously indicated unlock request not that unlocking is
* complete. Sub-classes should clear any command queue or indicator they * complete. Sub-classes should clear any command queue or indicator they
* set during unlock */ * set during unlock */
gboolean (*unlock_stop) (GstBaseSink *sink); gboolean (*unlock_stop) (GstBaseSink *sink);
/* Render a BufferList */
GstFlowReturn (*render_list) (GstBaseSink *sink, GstBufferList *buffer_l
ist);
/*< private >*/ /*< private >*/
gpointer _gst_reserved[GST_PADDING_LARGE-4]; gpointer _gst_reserved[GST_PADDING_LARGE-5];
}; };
GType gst_base_sink_get_type(void); GType gst_base_sink_get_type(void);
GstFlowReturn gst_base_sink_do_preroll (GstBaseSink *sink, GstMiniO GstFlowReturn gst_base_sink_do_preroll (GstBaseSink *sink, GstMini
bject *obj); Object *obj);
GstFlowReturn gst_base_sink_wait_preroll (GstBaseSink *sink); GstFlowReturn gst_base_sink_wait_preroll (GstBaseSink *sink);
/* synchronizing against the clock */ /* synchronizing against the clock */
void gst_base_sink_set_sync (GstBaseSink *sink, gboolean void gst_base_sink_set_sync (GstBaseSink *sink, gboolea
sync); n sync);
gboolean gst_base_sink_get_sync (GstBaseSink *sink); gboolean gst_base_sink_get_sync (GstBaseSink *sink);
/* dropping late buffers */ /* dropping late buffers */
void gst_base_sink_set_max_lateness (GstBaseSink *sink, gint64 m void gst_base_sink_set_max_lateness (GstBaseSink *sink, gint64
ax_lateness); max_lateness);
gint64 gst_base_sink_get_max_lateness (GstBaseSink *sink); gint64 gst_base_sink_get_max_lateness (GstBaseSink *sink);
/* performing QoS */ /* performing QoS */
void gst_base_sink_set_qos_enabled (GstBaseSink *sink, gboolean void gst_base_sink_set_qos_enabled (GstBaseSink *sink, gboolea
enabled); n enabled);
gboolean gst_base_sink_is_qos_enabled (GstBaseSink *sink); gboolean gst_base_sink_is_qos_enabled (GstBaseSink *sink);
/* doing async state changes */ /* doing async state changes */
void gst_base_sink_set_async_enabled (GstBaseSink *sink, gboolean void gst_base_sink_set_async_enabled (GstBaseSink *sink, gboolea
enabled); n enabled);
gboolean gst_base_sink_is_async_enabled (GstBaseSink *sink); gboolean gst_base_sink_is_async_enabled (GstBaseSink *sink);
/* tuning synchronisation */ /* tuning synchronisation */
void gst_base_sink_set_ts_offset (GstBaseSink *sink, GstClock void gst_base_sink_set_ts_offset (GstBaseSink *sink, GstCloc
TimeDiff offset); kTimeDiff offset);
GstClockTimeDiff gst_base_sink_get_ts_offset (GstBaseSink *sink); GstClockTimeDiff gst_base_sink_get_ts_offset (GstBaseSink *sink);
/* last buffer */ /* last buffer */
GstBuffer * gst_base_sink_get_last_buffer (GstBaseSink *sink); GstBuffer * gst_base_sink_get_last_buffer (GstBaseSink *sink);
void gst_base_sink_set_last_buffer_enabled (GstBaseSink *sink, g
boolean enabled);
gboolean gst_base_sink_is_last_buffer_enabled (GstBaseSink *sink);
/* latency */ /* latency */
gboolean gst_base_sink_query_latency (GstBaseSink *sink, gboolean gboolean gst_base_sink_query_latency (GstBaseSink *sink, gboolea
*live, gboolean *upstream_live, n *live, gboolean *upstream_live,
GstClockTime *min_latency, GstClockTime *min_latency,
GstClockTime *max_latency); GstClockTime *max_latency);
GstClockTime gst_base_sink_get_latency (GstBaseSink *sink); GstClockTime gst_base_sink_get_latency (GstBaseSink *sink);
/* render delay */ /* render delay */
void gst_base_sink_set_render_delay (GstBaseSink *sink, GstClock void gst_base_sink_set_render_delay (GstBaseSink *sink, GstCloc
Time delay); kTime delay);
GstClockTime gst_base_sink_get_render_delay (GstBaseSink *sink); GstClockTime gst_base_sink_get_render_delay (GstBaseSink *sink);
/* blocksize */ /* blocksize */
void gst_base_sink_set_blocksize (GstBaseSink *sink, guint bl void gst_base_sink_set_blocksize (GstBaseSink *sink, guint b
ocksize); locksize);
guint gst_base_sink_get_blocksize (GstBaseSink *sink); guint gst_base_sink_get_blocksize (GstBaseSink *sink);
GstClockReturn gst_base_sink_wait_clock (GstBaseSink *sink, GstCloc kTime time, GstClockReturn gst_base_sink_wait_clock (GstBaseSink *sink, GstCloc kTime time,
GstClockTimeDiff * jitter) ; GstClockTimeDiff * jitter) ;
GstFlowReturn gst_base_sink_wait_eos (GstBaseSink *sink, GstCloc kTime time, GstFlowReturn gst_base_sink_wait_eos (GstBaseSink *sink, GstCloc kTime time,
GstClockTimeDiff *jitter); GstClockTimeDiff *jitter);
G_END_DECLS G_END_DECLS
#endif /* __GST_BASE_SINK_H__ */ #endif /* __GST_BASE_SINK_H__ */
 End of changes. 27 change blocks. 
62 lines changed or deleted 71 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/