videorate: Handle the case where the base_ts is > qo.timestamp
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9013>
This commit is contained in:
parent
d21c1f13d1
commit
242b4fa931
@ -1304,15 +1304,18 @@ gst_video_rate_src_event (GstBaseTransform * trans, GstEvent * event)
|
||||
videorate->base_ts) * videorate->rate)), diff,
|
||||
(GstClockTimeDiff) (diff * videorate->rate));
|
||||
|
||||
if (videorate->segment.rate < 0.0)
|
||||
if (videorate->segment.rate < 0.0) {
|
||||
timestamp =
|
||||
(videorate->segment.stop - videorate->base_ts) -
|
||||
((videorate->segment.stop - videorate->base_ts -
|
||||
timestamp) * videorate->rate);
|
||||
else
|
||||
} else if (videorate->base_ts > timestamp) {
|
||||
timestamp = videorate->base_ts;
|
||||
} else {
|
||||
timestamp =
|
||||
videorate->base_ts + ((timestamp -
|
||||
videorate->base_ts) * videorate->rate);
|
||||
}
|
||||
|
||||
diff *= videorate->rate;
|
||||
GST_OBJECT_UNLOCK (trans);
|
||||
|
Loading…
x
Reference in New Issue
Block a user