summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gst/videorate/gstvideorate.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/gst/videorate/gstvideorate.c b/gst/videorate/gstvideorate.c
index c3240c955..d00f102a8 100644
--- a/gst/videorate/gstvideorate.c
+++ b/gst/videorate/gstvideorate.c
@@ -836,9 +836,6 @@ gst_video_rate_sink_event (GstBaseTransform * trans, GstEvent * event)
gst_video_rate_swap_prev (videorate, NULL, 0);
}
- videorate->base_ts = 0;
- videorate->out_frame_count = 0;
- videorate->next_ts = GST_CLOCK_TIME_NONE;
/* We just want to update the accumulated stream_time */
@@ -848,6 +845,15 @@ gst_video_rate_sink_event (GstBaseTransform * trans, GstEvent * event)
segment.stop = (gint64) (segment.stop / videorate->rate);
segment.time = (gint64) (segment.time / videorate->rate);
+ videorate->base_ts = gst_segment_position_from_running_time (&segment,
+ GST_FORMAT_TIME,
+ gst_segment_to_running_time (&videorate->segment, GST_FORMAT_TIME,
+ videorate->base_ts));
+ videorate->next_ts = gst_segment_position_from_running_time (&segment,
+ GST_FORMAT_TIME,
+ gst_segment_to_running_time (&videorate->segment, GST_FORMAT_TIME,
+ videorate->next_ts));
+
gst_segment_copy_into (&segment, &videorate->segment);
GST_DEBUG_OBJECT (videorate, "updated segment: %" GST_SEGMENT_FORMAT,
&videorate->segment);