diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2022-11-19 20:24:04 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2023-09-27 20:28:03 +0300 |
commit | 32a730f6faa9c1d99fcfa24cabdd8e519944c476 (patch) | |
tree | b3714165e68c718e11b21016c7d5fb8063ca8f47 | |
parent | 1d52139e35dd66ce6038aad05ca5cd6059df900d (diff) |
fmp4mux: Don't overflow negative composition offset calculation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1338>
-rw-r--r-- | mux/fmp4/src/fmp4mux/imp.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/mux/fmp4/src/fmp4mux/imp.rs b/mux/fmp4/src/fmp4mux/imp.rs index 3718ac400..4b9262eb5 100644 --- a/mux/fmp4/src/fmp4mux/imp.rs +++ b/mux/fmp4/src/fmp4mux/imp.rs @@ -1741,7 +1741,13 @@ impl FMP4Mux { let pts = buffer.pts; let dts = buffer.dts.unwrap(); - Some(i64::try_from((pts - dts).nseconds()).map_err(|_| { + let diff = if pts > dts { + i64::try_from(pts.nseconds() - dts.nseconds()) + } else { + i64::try_from(dts.nseconds() - pts.nseconds()).map(|x| -x) + }; + + Some(diff.map_err(|_| { gst::error!(CAT, obj: stream.sinkpad, "Too big PTS/DTS difference"); gst::FlowError::Error })?) |