pad-monitor: make it able to initialize a segment
authorThiago Santos <thiago.sousa.santos@collabora.com>
Thu, 11 Jul 2013 16:43:52 +0000 (13:43 -0300)
committerThiago Santos <thiago.sousa.santos@collabora.com>
Thu, 11 Jul 2013 16:45:43 +0000 (13:45 -0300)
Do not take the initial format set to TIME too seriously when we
haven't got any newsegment event yet. If it is the first segment
received, switch our internal segment tracker to the event format

validate/gst/qa/gst-qa-pad-monitor.c
validate/gst/qa/gst-qa-pad-monitor.h

index 23ee68c..9c9ce01 100644 (file)
@@ -186,8 +186,12 @@ gst_qa_pad_monitor_event_func (GstPad * pad, GstEvent * event)
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_NEWSEGMENT:
       if (ret) {
+        if (!pad_monitor->has_segment && pad_monitor->segment.format != format) {
+          gst_segment_init (&pad_monitor->segment, format);
+        }
         gst_segment_set_newsegment_full (&pad_monitor->segment, update, rate,
             applied_rate, format, start, stop, position);
+        pad_monitor->has_segment = TRUE;
       }
       break;
     case GST_EVENT_FLUSH_START:
index 457cbea..2d8b00e 100644 (file)
@@ -63,6 +63,7 @@ struct _GstQaPadMonitor {
   GstPadQueryFunction query_func;
 
   /*< private >*/
+  gboolean has_segment;
   GstSegment segment;
 
   gboolean pending_flush_stop;