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