From d6fa9218227f5e208dcd1641445630daaea6afe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 19 May 2022 13:26:34 +0300 Subject: [PATCH] fmp4mux: Use saturing_sub() in more places On unclean input, PTS/DTS might go backwards a bit and in those cases calculate a duration of 0 instead of panicking. --- generic/fmp4/src/fmp4mux/imp.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/generic/fmp4/src/fmp4mux/imp.rs b/generic/fmp4/src/fmp4mux/imp.rs index d5ecd411..0fef270c 100644 --- a/generic/fmp4/src/fmp4mux/imp.rs +++ b/generic/fmp4/src/fmp4mux/imp.rs @@ -414,7 +414,7 @@ impl FMP4Mux { CAT, obj: &stream.sinkpad, "Queued full GOPs duration updated to {}", - prev_gop.end_pts - first_gop.earliest_pts, + prev_gop.end_pts.saturating_sub(first_gop.earliest_pts), ); } @@ -423,7 +423,7 @@ impl FMP4Mux { obj: &stream.sinkpad, "Queued duration updated to {}", Option::zip(stream.queued_gops.front(), stream.queued_gops.back()) - .map(|(end, start)| end.end_pts - start.start_pts) + .map(|(end, start)| end.end_pts.saturating_sub(start.start_pts)) .unwrap_or(gst::ClockTime::ZERO) ); @@ -589,7 +589,7 @@ impl FMP4Mux { CAT, obj: &stream.sinkpad, "Draining {} worth of buffers starting at PTS {} DTS {}, DTS offset {}", - end_pts - earliest_pts, + end_pts.saturating_sub(earliest_pts), earliest_pts, start_dts.display(), dts_offset.display(), @@ -603,7 +603,7 @@ impl FMP4Mux { CAT, obj: &stream.sinkpad, "Queued full GOPs duration updated to {}", - prev_gop.end_pts - first_gop.earliest_pts, + prev_gop.end_pts.saturating_sub(first_gop.earliest_pts), ); } @@ -612,7 +612,7 @@ impl FMP4Mux { obj: &stream.sinkpad, "Queued duration updated to {}", Option::zip(stream.queued_gops.front(), stream.queued_gops.back()) - .map(|(end, start)| end.end_pts - start.start_pts) + .map(|(end, start)| end.end_pts.saturating_sub(start.start_pts)) .unwrap_or(gst::ClockTime::ZERO) );