gst_buffer_set_caps (buffer, GST_PAD_CAPS (parse->srcpad));
+ /* segment times are typically estimates,
+ * actual frame data might lead subclass to different timestamps,
+ * so override segment start from what is supplied there */
+ if (G_UNLIKELY (parse->pending_segment && !parse->priv->passthrough &&
+ GST_CLOCK_TIME_IS_VALID (last_stop))) {
+ gst_event_unref (parse->pending_segment);
+ /* stop time possibly lost this way,
+ * but unlikely and not really supported */
+ parse->pending_segment =
+ gst_event_new_new_segment (FALSE, parse->segment.rate,
+ parse->segment.format, last_stop, -1, last_stop);
+ }
+
/* and should then also be linked downstream, so safe to send some events */
if (parse->priv->pad_mode == GST_ACTIVATE_PULL) {
if (G_UNLIKELY (parse->close_segment)) {
}
}
+ /* to much estimating going on to support this sensibly,
+ * and no eos/end-of-segment loop handling either ... */
+ if (stop_type != GST_SEEK_TYPE_NONE || (flags & GST_SEEK_FLAG_SEGMENT))
+ goto wrong_type;
+ stop = -1;
+
/* get flush flag */
flush = flags & GST_SEEK_FLAG_FLUSH;