summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wtaymans@redhat.com>2014-01-08 14:52:04 +0100
committerSebastian Dröge <sebastian@centricular.com>2014-01-14 13:07:15 +0100
commitca5852456a1a2413137ed6a042d74bbd7d0d140a (patch)
tree0c2f6bec0495e8e7d161b64135a19137817850c7
parent3f2bea0d4734d2a7db7df092e9a1e1a5a07ae374 (diff)
downloadgstreamer-ca5852456a1a2413137ed6a042d74bbd7d0d140a.tar.gz
collectpads: take offset into account for expected segment position
The firt valid segment position is start + offset. Also add some more debug and a FIXME
-rw-r--r--libs/gst/base/gstcollectpads.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libs/gst/base/gstcollectpads.c b/libs/gst/base/gstcollectpads.c
index 799835ac12..a30e10a059 100644
--- a/libs/gst/base/gstcollectpads.c
+++ b/libs/gst/base/gstcollectpads.c
@@ -504,7 +504,8 @@ gst_collect_pads_clip_running_time (GstCollectPads * pads,
if (G_LIKELY (GST_CLOCK_TIME_IS_VALID (time))) {
time = gst_segment_to_running_time (&cdata->segment, GST_FORMAT_TIME, time);
if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (time))) {
- GST_DEBUG_OBJECT (cdata->pad, "clipping buffer on pad outside segment");
+ GST_DEBUG_OBJECT (cdata->pad, "clipping buffer on pad outside segment %"
+ GST_TIME_FORMAT, GST_TIME_ARGS (GST_BUFFER_PTS (buf)));
gst_buffer_unref (buf);
*outbuf = NULL;
} else {
@@ -1716,7 +1717,8 @@ gst_collect_pads_event_default (GstCollectPads * pads, GstCollectData * data,
GST_COLLECT_PADS_STATE_SET (data, GST_COLLECT_PADS_STATE_NEW_SEGMENT);
/* now we can use for e.g. running time */
- seg.position = gst_collect_pads_clip_time (pads, data, seg.start);
+ seg.position =
+ gst_collect_pads_clip_time (pads, data, seg.start + seg.offset);
/* update again */
data->segment = seg;
@@ -1739,6 +1741,7 @@ gst_collect_pads_event_default (GstCollectPads * pads, GstCollectData * data,
GST_COLLECT_PADS_STREAM_LOCK (pads);
gst_event_parse_gap (event, &start, &duration);
+ /* FIXME, handle reverse playback case */
if (GST_CLOCK_TIME_IS_VALID (duration))
start += duration;
/* we do not expect another buffer until after gap,