1use ffi::*;
2use {Rational, Rounding};
3
4pub const TIME_BASE: Rational = Rational(AV_TIME_BASE_Q.num, AV_TIME_BASE_Q.den);
5
6pub trait Rescale {
7 fn rescale<S, D>(&self, source: S, destination: D) -> i64
8 where
9 S: Into<Rational>,
10 D: Into<Rational>;
11
12 fn rescale_with<S, D>(&self, source: S, destination: D, rounding: Rounding) -> i64
13 where
14 S: Into<Rational>,
15 D: Into<Rational>;
16}
17
18impl<T: Into<i64> + Clone> Rescale for T {
19 fn rescale<S, D>(&self, source: S, destination: D) -> i64
20 where
21 S: Into<Rational>,
22 D: Into<Rational>,
23 {
24 unsafe {
25 av_rescale_q(
26 self.clone().into(),
27 source.into().into(),
28 destination.into().into(),
29 )
30 }
31 }
32
33 fn rescale_with<S, D>(&self, source: S, destination: D, rounding: Rounding) -> i64
34 where
35 S: Into<Rational>,
36 D: Into<Rational>,
37 {
38 unsafe {
39 av_rescale_q_rnd(
40 self.clone().into(),
41 source.into().into(),
42 destination.into().into(),
43 rounding.into(),
44 )
45 }
46 }
47}
48