adaptivedemux2: Handle synchronously to lost sync

We are already in the main scheduler thread, therefore we can do the "seek back
to live" directly. This also avoids other pending actions to take place.

Also handle the loss of sync when doing manifest updates.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2839>
This commit is contained in:
Edward Hervey 2022-07-08 10:40:33 +02:00 committed by Tim-Philipp Müller
parent 1aab9db803
commit abe5a06421
2 changed files with 4 additions and 2 deletions

View file

@ -1731,8 +1731,7 @@ gst_adaptive_demux2_stream_load_a_fragment (GstAdaptiveDemux2Stream * stream)
case GST_ADAPTIVE_DEMUX_FLOW_LOST_SYNC:
GST_DEBUG_OBJECT (stream, "Lost sync, asking reset to current position");
stream->state = GST_ADAPTIVE_DEMUX2_STREAM_STATE_STOPPED;
gst_adaptive_demux_loop_call (demux->priv->scheduler_task,
(GSourceFunc) gst_adaptive_demux_handle_lost_sync, demux, NULL);
gst_adaptive_demux_handle_lost_sync (demux);
return FALSE;
case GST_FLOW_NOT_LINKED:
{

View file

@ -3157,6 +3157,9 @@ gst_adaptive_demux_manifest_update_cb (GstAdaptiveDemux * demux)
}
}
if (ret == GST_ADAPTIVE_DEMUX_FLOW_LOST_SYNC)
gst_adaptive_demux_handle_lost_sync (demux);
if (schedule_again) {
GstAdaptiveDemuxClass *klass = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);