gst/base/gstbasesink.*: Added sync property to basesink to disable clock sync.

Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_base_sink_class_init),
(gst_base_sink_set_property), (gst_base_sink_get_property),
(gst_base_sink_do_sync):
* gst/base/gstbasesink.h:
Added sync property to basesink to disable clock sync.
This commit is contained in:
Wim Taymans 2005-09-20 12:05:47 +00:00
parent b12471008b
commit 3a3b15c8a3
5 changed files with 38 additions and 4 deletions

View file

@ -1,3 +1,11 @@
2005-09-20 Wim Taymans <wim@fluendo.com>
* gst/base/gstbasesink.c: (gst_base_sink_class_init),
(gst_base_sink_set_property), (gst_base_sink_get_property),
(gst_base_sink_do_sync):
* gst/base/gstbasesink.h:
Added sync property to basesink to disable clock sync.
2005-09-20 Andy Wingo <wingo@pobox.com>
* gst/gstelementfactory.c (gst_element_factory_create): Avoid

View file

@ -58,10 +58,13 @@ enum
#define DEFAULT_CAN_ACTIVATE_PULL FALSE /* fixme: enable me */
#define DEFAULT_CAN_ACTIVATE_PUSH TRUE
#define DEFAULT_SYNC TRUE
enum
{
PROP_0,
PROP_PREROLL_QUEUE_LEN
PROP_PREROLL_QUEUE_LEN,
PROP_SYNC
};
static GstElementClass *parent_class = NULL;
@ -152,6 +155,9 @@ gst_base_sink_class_init (GstBaseSinkClass * klass)
g_param_spec_uint ("preroll-queue-len", "preroll-queue-len",
"Number of buffers to queue during preroll", 0, G_MAXUINT, 0,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SYNC,
g_param_spec_boolean ("sync", "Sync", "Sync on the clock", DEFAULT_SYNC,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
gstelement_class->set_clock = GST_DEBUG_FUNCPTR (gst_base_sink_set_clock);
gstelement_class->change_state =
@ -302,6 +308,9 @@ gst_base_sink_set_property (GObject * object, guint prop_id,
sink->preroll_queue_max_len = g_value_get_uint (value);
GST_PREROLL_UNLOCK (sink->sinkpad);
break;
case PROP_SYNC:
sink->sync = g_value_get_boolean (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@ -319,6 +328,9 @@ gst_base_sink_get_property (GObject * object, guint prop_id, GValue * value,
case PROP_PREROLL_QUEUE_LEN:
g_value_set_uint (value, sink->preroll_queue_max_len);
break;
case PROP_SYNC:
g_value_set_boolean (value, sink->sync);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@ -925,7 +937,7 @@ gst_base_sink_do_sync (GstBaseSink * basesink, GstBuffer * buffer)
stream_end += basesink->segment_accum;
/* now do clocking */
if (basesink->clock) {
if (basesink->clock && basesink->sync) {
GstClockReturn ret;
GstClockTime base_time;

View file

@ -92,6 +92,7 @@ struct _GstBaseSink {
GstClock *clock;
GstClockID clock_id;
GstClockTime end_time;
gboolean sync;
/*< private >*/
gpointer _gst_reserved[GST_PADDING];

View file

@ -58,10 +58,13 @@ enum
#define DEFAULT_CAN_ACTIVATE_PULL FALSE /* fixme: enable me */
#define DEFAULT_CAN_ACTIVATE_PUSH TRUE
#define DEFAULT_SYNC TRUE
enum
{
PROP_0,
PROP_PREROLL_QUEUE_LEN
PROP_PREROLL_QUEUE_LEN,
PROP_SYNC
};
static GstElementClass *parent_class = NULL;
@ -152,6 +155,9 @@ gst_base_sink_class_init (GstBaseSinkClass * klass)
g_param_spec_uint ("preroll-queue-len", "preroll-queue-len",
"Number of buffers to queue during preroll", 0, G_MAXUINT, 0,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_SYNC,
g_param_spec_boolean ("sync", "Sync", "Sync on the clock", DEFAULT_SYNC,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
gstelement_class->set_clock = GST_DEBUG_FUNCPTR (gst_base_sink_set_clock);
gstelement_class->change_state =
@ -302,6 +308,9 @@ gst_base_sink_set_property (GObject * object, guint prop_id,
sink->preroll_queue_max_len = g_value_get_uint (value);
GST_PREROLL_UNLOCK (sink->sinkpad);
break;
case PROP_SYNC:
sink->sync = g_value_get_boolean (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@ -319,6 +328,9 @@ gst_base_sink_get_property (GObject * object, guint prop_id, GValue * value,
case PROP_PREROLL_QUEUE_LEN:
g_value_set_uint (value, sink->preroll_queue_max_len);
break;
case PROP_SYNC:
g_value_set_boolean (value, sink->sync);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@ -925,7 +937,7 @@ gst_base_sink_do_sync (GstBaseSink * basesink, GstBuffer * buffer)
stream_end += basesink->segment_accum;
/* now do clocking */
if (basesink->clock) {
if (basesink->clock && basesink->sync) {
GstClockReturn ret;
GstClockTime base_time;

View file

@ -92,6 +92,7 @@ struct _GstBaseSink {
GstClock *clock;
GstClockID clock_id;
GstClockTime end_time;
gboolean sync;
/*< private >*/
gpointer _gst_reserved[GST_PADDING];