Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2022-11-19 20:24:04 +0300
committerSebastian Dröge <sebastian@centricular.com>2023-09-27 20:28:03 +0300
commit32a730f6faa9c1d99fcfa24cabdd8e519944c476 (patch)
treeb3714165e68c718e11b21016c7d5fb8063ca8f47
parent1d52139e35dd66ce6038aad05ca5cd6059df900d (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.rs8
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
})?)