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

github.com/sdroege/gst-plugin-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/mux
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2022-11-19 20:24:04 +0300
committerSebastian Dröge <sebastian@centricular.com>2022-11-19 20:24:04 +0300
commite3f645af1950ca959739aa70c7d59e594ce4fa1c (patch)
treef5088ecac1a287ffe3058a44686ef27435d1b557 /mux
parentae4b49c6685e4504c8de63b718a13aef39b48659 (diff)
fmp4mux: Don't overflow negative composition offset calculation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/982>
Diffstat (limited to 'mux')
-rw-r--r--mux/fmp4/src/fmp4mux/imp.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/mux/fmp4/src/fmp4mux/imp.rs b/mux/fmp4/src/fmp4mux/imp.rs
index 98d46775..44738794 100644
--- a/mux/fmp4/src/fmp4mux/imp.rs
+++ b/mux/fmp4/src/fmp4mux/imp.rs
@@ -1175,10 +1175,16 @@ impl FMP4Mux {
let pts = buffer.pts;
let dts = buffer.dts.unwrap();
- Some(i64::try_from((pts - dts).nseconds()).map_err(|_| {
- gst::error!(CAT, obj: stream.sinkpad, "Too big PTS/DTS difference");
- gst::FlowError::Error
- })?)
+ Some(
+ i64::try_from(
+ (gst::Signed::Positive(pts) - gst::Signed::Positive(dts))
+ .nseconds(),
+ )
+ .map_err(|_| {
+ gst::error!(CAT, obj: stream.sinkpad, "Too big PTS/DTS difference");
+ gst::FlowError::Error
+ })?,
+ )
};
buffers.push_back(Buffer {