ffmpeg_sys/avutil/
rational.rs1use crate::AVRational;
2use std::os::raw::c_int;
3
4#[inline(always)]
5pub unsafe fn av_make_q(num: c_int, den: c_int) -> AVRational {
6 AVRational { num, den }
7}
8
9#[inline(always)]
10pub unsafe fn av_cmp_q(a: AVRational, b: AVRational) -> c_int {
11 let tmp = i64::from(a.num) * i64::from(b.den) - i64::from(b.num) * i64::from(a.den);
12
13 if tmp != 0 {
14 (((tmp ^ i64::from(a.den) ^ i64::from(b.den)) >> 63) | 1) as c_int
15 } else if b.den != 0 && a.den != 0 {
16 0
17 } else if a.num != 0 && b.num != 0 {
18 (a.num >> 31) - (b.num >> 31)
19 } else {
20 c_int::min_value()
21 }
22}
23
24#[inline(always)]
25pub unsafe fn av_q2d(a: AVRational) -> f64 {
26 f64::from(a.num) / f64::from(a.den)
27}
28
29#[inline(always)]
30pub unsafe fn av_inv_q(q: AVRational) -> AVRational {
31 AVRational {
32 num: q.den,
33 den: q.num,
34 }
35}