fmp4mux: Don't overflow negative composition offset calculation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1338>
This commit is contained in:
Sebastian Dröge 2022-11-19 19:24:04 +02:00
parent 1d52139e35
commit 32a730f6fa

View file

@ -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
})?)