From c62bdb171a46cdc24076863b9f2586263f2cb19b Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Tue, 3 Nov 2020 04:58:44 +0900 Subject: [PATCH] fallbacksrc: Don't give up to running even if segment event is unavailable on blocking probe The blocking probe will be called on buffer or downstream event. So segment event might not be available at that moment if it was called by downstream events. --- utils/fallbackswitch/src/fallbacksrc.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/utils/fallbackswitch/src/fallbacksrc.rs b/utils/fallbackswitch/src/fallbacksrc.rs index 3742faac..05303b16 100644 --- a/utils/fallbackswitch/src/fallbacksrc.rs +++ b/utils/fallbackswitch/src/fallbacksrc.rs @@ -1557,12 +1557,14 @@ impl FallbackSrc { None => return Ok(()), }; - let ev = pad - .get_sticky_event(gst::EventType::Segment, 0) - .ok_or_else(|| { - gst_error!(CAT, obj: element, "Have no segment event"); - gst_error_msg!(gst::CoreError::Clock, ["Have no segment event"]) - })?; + let ev = match pad.get_sticky_event(gst::EventType::Segment, 0) { + Some(ev) => ev, + None => { + gst_warning!(CAT, obj: element, "Have no segment event yet"); + return Ok(()); + } + }; + let segment = match ev.view() { gst::EventView::Segment(s) => s.get_segment(), _ => unreachable!(),