diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2022-11-19 20:24:04 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2022-11-19 20:24:04 +0300 |
commit | e3f645af1950ca959739aa70c7d59e594ce4fa1c (patch) | |
tree | f5088ecac1a287ffe3058a44686ef27435d1b557 /mux | |
parent | ae4b49c6685e4504c8de63b718a13aef39b48659 (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.rs | 14 |
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 { |