decklinksrc: Send newsegment events
authorDavid Schleef <ds@schleef.org>
Tue, 3 Jul 2012 00:52:15 +0000 (17:52 -0700)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 3 Jul 2012 07:09:27 +0000 (09:09 +0200)
sys/decklink/gstdecklinksrc.cpp
sys/decklink/gstdecklinksrc.h

index 891b88e..6b70649 100644 (file)
@@ -1266,6 +1266,21 @@ gst_decklink_src_task (void *priv)
     decklinksrc->dropped_frames_old = decklinksrc->dropped_frames;
   }
 
+  if (!decklinksrc->video_new_segment) {
+    GstEvent *event;
+    gboolean ret;
+
+    event = gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_TIME,
+        0, GST_CLOCK_TIME_NONE, 0);
+
+    ret = gst_pad_push_event (decklinksrc->videosrcpad, event);
+    if (!ret) {
+      GST_WARNING ("new segment event not handled");
+    }
+
+    decklinksrc->video_new_segment = TRUE;
+  }
+
   mode = gst_decklink_get_mode (decklinksrc->mode);
 
   video_frame->GetBytes (&data);
@@ -1340,6 +1355,21 @@ gst_decklink_src_task (void *priv)
   }
 
   if (gst_pad_is_linked (decklinksrc->audiosrcpad)) {
+    if (!decklinksrc->audio_new_segment) {
+      GstEvent *event;
+      gboolean ret;
+
+      event = gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_TIME,
+          0, GST_CLOCK_TIME_NONE, 0);
+
+      ret = gst_pad_push_event (decklinksrc->audiosrcpad, event);
+      if (!ret) {
+        GST_WARNING ("new segment event not handled");
+      }
+
+      decklinksrc->audio_new_segment = TRUE;
+    }
+
     n_samples = audio_frame->GetSampleFrameCount ();
     audio_frame->GetBytes (&data);
     audio_buffer = gst_buffer_new_and_alloc (n_samples * 2 * 2);
index c47279a..38d00d7 100644 (file)
@@ -67,6 +67,8 @@ struct _GstDecklinkSrc
   int height;
   gboolean interlaced;
   BMDDisplayMode bmd_mode;
+  gboolean video_new_segment;
+  gboolean audio_new_segment;
 
   /* properties */
   gboolean copy_data;