gst/base/gstbasesink.*: Added sync property to basesink to disable clock sync.
authorWim Taymans <wim.taymans@gmail.com>
Tue, 20 Sep 2005 12:05:47 +0000 (12:05 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Tue, 20 Sep 2005 12:05:47 +0000 (12:05 +0000)
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.

ChangeLog
gst/base/gstbasesink.c
gst/base/gstbasesink.h
libs/gst/base/gstbasesink.c
libs/gst/base/gstbasesink.h

index 2cbb209..7a9308c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
index 0b67394..8fa0483 100644 (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;
 
index 053ab80..642e025 100644 (file)
@@ -92,6 +92,7 @@ struct _GstBaseSink {
   GstClock     *clock;
   GstClockID     clock_id;
   GstClockTime   end_time;
+  gboolean       sync;
 
   /*< private >*/
   gpointer       _gst_reserved[GST_PADDING];
index 0b67394..8fa0483 100644 (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;
 
index 053ab80..642e025 100644 (file)
@@ -92,6 +92,7 @@ struct _GstBaseSink {
   GstClock     *clock;
   GstClockID     clock_id;
   GstClockTime   end_time;
+  gboolean       sync;
 
   /*< private >*/
   gpointer       _gst_reserved[GST_PADDING];