splitmuxsink: Fix off-by-one in running time comparison for split-at-running-time

If we get a keyframe exactly at the requested running time we would only
split on the next keyframe afterwards due to wrong usage of > vs. >=.
This commit is contained in:
Sebastian Dröge 2020-04-15 13:21:05 +03:00
parent fd7ecac793
commit 0ab0f92cac

View file

@ -2062,7 +2062,7 @@ need_new_fragment (GstSplitMuxSink * splitmux,
} }
/* User told us to split at this running time */ /* User told us to split at this running time */
if (splitmux->reference_ctx->in_running_time > time_to_split) { if (splitmux->reference_ctx->in_running_time >= time_to_split) {
GST_OBJECT_LOCK (splitmux); GST_OBJECT_LOCK (splitmux);
/* Dequeue running time */ /* Dequeue running time */
gst_queue_array_pop_head_struct (splitmux->times_to_split); gst_queue_array_pop_head_struct (splitmux->times_to_split);
@ -2070,7 +2070,7 @@ need_new_fragment (GstSplitMuxSink * splitmux,
ptr_to_time = gst_queue_array_peek_head_struct (splitmux->times_to_split); ptr_to_time = gst_queue_array_peek_head_struct (splitmux->times_to_split);
while (ptr_to_time) { while (ptr_to_time) {
time_to_split = *ptr_to_time; time_to_split = *ptr_to_time;
if (splitmux->reference_ctx->in_running_time <= time_to_split) { if (splitmux->reference_ctx->in_running_time < time_to_split) {
break; break;
} }
gst_queue_array_pop_head_struct (splitmux->times_to_split); gst_queue_array_pop_head_struct (splitmux->times_to_split);