Blob Blame History Raw
From 69e004344a74a7bd3ef7eac6812a696882d7af43 Mon Sep 17 00:00:00 2001
From: Jan Schmidt <jan@centricular.com>
Date: Sun, 8 Feb 2015 04:51:13 +1100
Subject: [PATCH] resindvd: Don't send meaningless segment position downstream

Don't place a meaningless value in the position field in
outgoing segments - values have to be in the range start->stop.

https://bugzilla.gnome.org/show_bug.cgi?id=740558
---
 ext/resindvd/gstmpegdemux.c | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/ext/resindvd/gstmpegdemux.c b/ext/resindvd/gstmpegdemux.c
index fcf9d75..7753514 100644
--- a/ext/resindvd/gstmpegdemux.c
+++ b/ext/resindvd/gstmpegdemux.c
@@ -942,22 +942,20 @@ gst_flups_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
       demux->bytes_since_scr = 0;
 
       GST_DEBUG_OBJECT (demux,
-          "demux: received new segment start %" G_GINT64_FORMAT " stop %"
-          G_GINT64_FORMAT " time %" G_GINT64_FORMAT
-          " base %" G_GINT64_FORMAT, start, stop, time, base);
+          "demux: received new segment %" GST_SEGMENT_FORMAT,
+          &demux->sink_segment);
 #if 0
       g_print ("demux: received new segment start %" G_GINT64_FORMAT " stop %"
           G_GINT64_FORMAT " time %" G_GINT64_FORMAT
           " base %" G_GINT64_FORMAT "\n", start, stop, time, base);
 #endif
-      position = base - start;
-      adjust = position + SCR_MUNGE;
+      adjust = base - start + SCR_MUNGE;
       if (adjust >= 0)
         demux->scr_adjust = GSTTIME_TO_MPEGTIME (adjust);
       else
         demux->scr_adjust = -GSTTIME_TO_MPEGTIME (-adjust);
 
-      start = SCR_MUNGE;
+      position = start = SCR_MUNGE;
       base = 0;
 
       if (stop != -1)
@@ -973,12 +971,9 @@ gst_flups_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
       demux->src_segment.position = position;
 
       GST_DEBUG_OBJECT (demux,
-          "sending new segment: rate %g format %d, start: %"
-          G_GINT64_FORMAT ", stop: %" G_GINT64_FORMAT ", time: %"
-          G_GINT64_FORMAT ", base: %" G_GINT64_FORMAT
+          "sending new segment %" GST_SEGMENT_FORMAT
           ", scr_adjust: %" G_GINT64_FORMAT "(%" GST_TIME_FORMAT ")",
-          segment->rate, segment->format, start, stop, time, base,
-          demux->scr_adjust,
+          &demux->src_segment, demux->scr_adjust,
           GST_TIME_ARGS (MPEGTIME_TO_GSTTIME (demux->scr_adjust)));
 #if 0
       g_print ("sending new segment: rate %g format %d, start: %"
-- 
2.4.2