forked from mirrors/gstreamer-rs
video: Add bindings for calculate_display_ratio()
This commit is contained in:
parent
1b7e99938f
commit
8029d85232
1 changed files with 35 additions and 1 deletions
|
@ -11,9 +11,10 @@ use gst_sys;
|
|||
use gst_video_sys;
|
||||
|
||||
use glib;
|
||||
use glib::translate::{from_glib_full, ToGlib, ToGlibPtr};
|
||||
use glib::translate::{from_glib, from_glib_full, ToGlib, ToGlibPtr};
|
||||
use gst;
|
||||
|
||||
use std::mem;
|
||||
use std::ptr;
|
||||
|
||||
pub fn convert_sample(
|
||||
|
@ -140,6 +141,39 @@ pub fn convert_sample_future(
|
|||
Box::pin(future)
|
||||
}
|
||||
|
||||
pub fn calculate_display_ratio(
|
||||
video_width: u32,
|
||||
video_height: u32,
|
||||
video_par: gst::Fraction,
|
||||
display_par: gst::Fraction,
|
||||
) -> Option<gst::Fraction> {
|
||||
skip_assert_initialized!();
|
||||
|
||||
unsafe {
|
||||
let mut dar_n = mem::MaybeUninit::uninit();
|
||||
let mut dar_d = mem::MaybeUninit::uninit();
|
||||
|
||||
let res: bool = from_glib(gst_video_sys::gst_video_calculate_display_ratio(
|
||||
dar_n.as_mut_ptr(),
|
||||
dar_d.as_mut_ptr(),
|
||||
video_width,
|
||||
video_height,
|
||||
*video_par.numer() as u32,
|
||||
*video_par.denom() as u32,
|
||||
*display_par.numer() as u32,
|
||||
*display_par.denom() as u32,
|
||||
));
|
||||
if res {
|
||||
Some(gst::Fraction::new(
|
||||
dar_n.assume_init() as i32,
|
||||
dar_d.assume_init() as i32,
|
||||
))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
|
Loading…
Reference in a new issue