gstreamer: collectpads2: assume 0 based segment if no time segment was provided
Mark Nauwelaerts
mnauw at kemper.freedesktop.org
Mon Apr 16 08:01:08 PDT 2012
Module: gstreamer
Branch: master
Commit: b642b875798e93f302b4b452b89f7ddb0e02db6b
URL: http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=b642b875798e93f302b4b452b89f7ddb0e02db6b
Author: Vincent Penquerc'h <vincent.penquerch at collabora.co.uk>
Date: Fri Feb 3 17:08:35 2012 +0000
collectpads2: assume 0 based segment if no time segment was provided
https://bugzilla.gnome.org/show_bug.cgi?id=669305
---
libs/gst/base/gstcollectpads2.c | 24 +++++++++++++++---------
1 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/libs/gst/base/gstcollectpads2.c b/libs/gst/base/gstcollectpads2.c
index 466e47d..9368e38 100644
--- a/libs/gst/base/gstcollectpads2.c
+++ b/libs/gst/base/gstcollectpads2.c
@@ -1493,8 +1493,14 @@ gst_collect_pads2_recalculate_waiting (GstCollectPads2 * pads)
int cmp_res;
/* check if pad has a segment */
- if (data->segment.format == GST_FORMAT_UNDEFINED)
- continue;
+ if (data->segment.format == GST_FORMAT_UNDEFINED) {
+ GST_WARNING_OBJECT (pads,
+ "GstCollectPads2 has no time segment, assuming 0 based.");
+ gst_segment_init (&data->segment, GST_FORMAT_TIME);
+ gst_segment_set_newsegment (&data->segment, FALSE, 1.0f,
+ GST_FORMAT_TIME, 0, -1, 0);
+ GST_COLLECT_PADS2_STATE_SET (data, GST_COLLECT_PADS2_STATE_NEW_SEGMENT);
+ }
/* check segment format */
if (data->segment.format != GST_FORMAT_TIME) {
@@ -1808,22 +1814,22 @@ gst_collect_pads2_event (GstPad * pad, GstEvent * event)
", stop %" GST_TIME_FORMAT, GST_TIME_ARGS (start),
GST_TIME_ARGS (stop));
- gst_segment_set_newsegment_full (&data->segment, update, rate, arate,
- format, start, stop, time);
-
- GST_COLLECT_PADS2_STATE_SET (data, GST_COLLECT_PADS2_STATE_NEW_SEGMENT);
-
/* default muxing functionality */
if (!buffer_func)
goto newsegment_done;
/* default collection can not handle other segment formats than time */
if (format != GST_FORMAT_TIME) {
- GST_ERROR_OBJECT (pads, "GstCollectPads2 default collecting "
- "can only handle time segments.");
+ GST_WARNING_OBJECT (pads, "GstCollectPads2 default collecting "
+ "can only handle time segments. Non time segment ignored.");
goto newsegment_done;
}
+ gst_segment_set_newsegment_full (&data->segment, update, rate, arate,
+ format, start, stop, time);
+
+ GST_COLLECT_PADS2_STATE_SET (data, GST_COLLECT_PADS2_STATE_NEW_SEGMENT);
+
/* If oldest time is not known, or current pad got newsegment;
* recalculate the state */
if (!pads->priv->earliest_data || pads->priv->earliest_data == data) {
More information about the gstreamer-commits
mailing list