aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2019-11-15 19:43:37 +0100
committerKostya Shishkov <kostya.shishkov@gmail.com>2019-11-15 19:43:37 +0100
commita65bdeac0942ef46830e4471f62075838851ffec (patch)
treed7ddbedadc8d964367242c347a8c7d694e8abf3f
parentcdcbaa6c94345c189742afb831bde3850843310a (diff)
downloadnihav-a65bdeac0942ef46830e4471f62075838851ffec.tar.gz
core: add ts_to_time() utility function
-rw-r--r--nihav-core/src/frame.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/nihav-core/src/frame.rs b/nihav-core/src/frame.rs
index b1a81b7..ae61c88 100644
--- a/nihav-core/src/frame.rs
+++ b/nihav-core/src/frame.rs
@@ -685,6 +685,26 @@ impl NATimeInfo {
}
}
}
+ pub fn ts_to_time(ts: u64, base: u64, tb_num: u32, tb_den: u32) -> u64 {
+ let tb_num = tb_num as u64;
+ let tb_den = tb_den as u64;
+ let tmp = ts.checked_mul(base);
+ if let Some(tmp) = tmp {
+ let tmp2 = tmp.checked_mul(tb_num);
+ if let Some(tmp2) = tmp2 {
+ tmp2 / tb_den
+ } else {
+ (tmp / tb_den) * tb_num
+ }
+ } else {
+ let tmp = ts.checked_mul(tb_num);
+ if let Some(tmp) = tmp {
+ (tmp / tb_den) * base
+ } else {
+ (ts / tb_den) * base * tb_num
+ }
+ }
+ }
}
#[allow(dead_code)]