diff --git a/lib/media_time/src/media_time.rs b/lib/media_time/src/media_time.rs index e0c1cb0be8efb4f1fcb923ede63cffbabe555f64..0b99be0737afe84f7c85d65c9454f48cbcff508c 100644 --- a/lib/media_time/src/media_time.rs +++ b/lib/media_time/src/media_time.rs @@ -46,6 +46,21 @@ impl MediaTime { pub fn seconds(&self) -> i64 { self.0.whole_seconds() } + + #[inline(always)] + pub fn milliseconds(&self) -> i128 { + self.0.whole_milliseconds() + } + + #[inline(always)] + pub fn microseconds(&self) -> i128 { + self.0.whole_microseconds() + } + + #[inline(always)] + pub fn nanoseconds(&self) -> i128 { + self.0.whole_nanoseconds() + } } impl std::fmt::Display for MediaTime { diff --git a/lib/media_time/src/tests.rs b/lib/media_time/src/tests.rs index 2837a577fe20f37959959d278a283897be0e225b..0aee5d714ae20c428d27c429a98e29fe336821bb 100644 --- a/lib/media_time/src/tests.rs +++ b/lib/media_time/src/tests.rs @@ -1,4 +1,23 @@ +use crate::MediaTime; +use fraction::Fraction; + #[test] -fn it_works() { - assert_eq!(2 + 2, 4); +fn from_millis_works() { + assert_eq!(MediaTime::from_millis(0).seconds(), 0); + assert_eq!(MediaTime::from_millis(1357).seconds(), 1); + assert_eq!(MediaTime::from_millis(1357).milliseconds(), 1357); +} + +#[test] +fn from_seconds_works() { + assert_eq!(MediaTime::from_seconds(0).seconds(), 0); + assert_eq!(MediaTime::from_seconds(1357).seconds(), 1357); + assert_eq!(MediaTime::from_seconds(1357).milliseconds(), 1357000); +} + +#[test] +fn from_rational_works() { + assert_eq!(MediaTime::from_rational(0, &Fraction::new(1u64, 1u64)).unwrap().seconds(), 0); + assert_eq!(MediaTime::from_rational(1357, &Fraction::new(1u64, 1u64)).unwrap().seconds(), 1357); + assert_eq!(MediaTime::from_rational(30, &Fraction::new(1u64, 3u64)).unwrap().seconds(), 10); }