2020-12-15 10:53:31 +00:00
|
|
|
// Take a look at the license at the top of the repository in the LICENSE file.
|
2018-02-19 20:15:52 +00:00
|
|
|
|
2023-06-14 09:22:53 +00:00
|
|
|
use std::fmt;
|
2018-02-19 20:15:52 +00:00
|
|
|
|
2023-06-14 09:22:53 +00:00
|
|
|
use glib::{translate::*, Cast};
|
|
|
|
|
|
|
|
use crate::{DiscovererStreamInfo, DiscovererVideoInfo};
|
2023-01-03 18:58:25 +00:00
|
|
|
|
2018-02-19 20:15:52 +00:00
|
|
|
impl DiscovererVideoInfo {
|
2021-05-02 09:41:18 +00:00
|
|
|
#[doc(alias = "get_framerate")]
|
2021-05-19 20:35:47 +00:00
|
|
|
#[doc(alias = "gst_discoverer_video_info_get_framerate_num")]
|
|
|
|
#[doc(alias = "gst_discoverer_video_info_get_framerate_denom")]
|
2021-04-11 19:39:50 +00:00
|
|
|
pub fn framerate(&self) -> gst::Fraction {
|
2018-02-19 20:15:52 +00:00
|
|
|
unsafe {
|
|
|
|
gst::Fraction::new(
|
2020-11-22 10:10:54 +00:00
|
|
|
ffi::gst_discoverer_video_info_get_framerate_num(self.to_glib_none().0) as i32,
|
|
|
|
ffi::gst_discoverer_video_info_get_framerate_denom(self.to_glib_none().0) as i32,
|
2018-03-02 19:06:45 +00:00
|
|
|
)
|
2018-02-19 20:15:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-05-02 09:41:18 +00:00
|
|
|
#[doc(alias = "get_par")]
|
2021-05-19 20:35:47 +00:00
|
|
|
#[doc(alias = "gst_discoverer_video_info_get_par_num")]
|
|
|
|
#[doc(alias = "gst_discoverer_video_info_get_par_denom")]
|
2021-04-11 19:39:50 +00:00
|
|
|
pub fn par(&self) -> gst::Fraction {
|
2018-02-19 20:15:52 +00:00
|
|
|
unsafe {
|
|
|
|
gst::Fraction::new(
|
2020-11-22 10:10:54 +00:00
|
|
|
ffi::gst_discoverer_video_info_get_par_num(self.to_glib_none().0) as i32,
|
|
|
|
ffi::gst_discoverer_video_info_get_par_denom(self.to_glib_none().0) as i32,
|
2018-03-02 19:06:45 +00:00
|
|
|
)
|
2018-02-19 20:15:52 +00:00
|
|
|
}
|
|
|
|
}
|
2023-06-14 09:22:53 +00:00
|
|
|
|
|
|
|
pub fn debug(&self) -> Debug {
|
|
|
|
Debug(self)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub struct Debug<'a>(&'a DiscovererVideoInfo);
|
|
|
|
|
|
|
|
impl<'a> fmt::Debug for Debug<'a> {
|
|
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
|
|
let info = self.0.upcast_ref::<DiscovererStreamInfo>();
|
|
|
|
|
|
|
|
f.debug_struct("DiscovererVideoInfo")
|
|
|
|
.field("width", &self.0.width())
|
|
|
|
.field("height", &self.0.height())
|
|
|
|
.field("depth", &self.0.depth())
|
|
|
|
.field("bitrate", &self.0.bitrate())
|
|
|
|
.field("max-bitrate", &self.0.max_bitrate())
|
|
|
|
.field("is-image", &self.0.is_image())
|
|
|
|
.field("is-interlaced", &self.0.is_interlaced())
|
|
|
|
.field("stream", &info.debug())
|
|
|
|
.finish()
|
|
|
|
}
|
2018-02-19 20:15:52 +00:00
|
|
|
}
|