#![deny(missing_docs)]
pub mod devices;
pub mod gpu;
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum ScoreCriteria {
Resolution,
Bitrate,
Fps,
}
pub fn score_video(
criteria: ScoreCriteria,
width: u32,
height: u32,
bitrate: u64,
fps_num: u32,
fps_den: u32,
) -> (u128, u128, u128) {
let area = (width as u128) * (height as u128);
let br = bitrate as u128;
let fps_milli: u128 = if fps_den == 0 {
0
} else {
((fps_num as u128) * 1000) / (fps_den as u128)
};
match criteria {
ScoreCriteria::Resolution => (area, br, fps_milli),
ScoreCriteria::Bitrate => (br, area, fps_milli),
ScoreCriteria::Fps => (fps_milli, area, br),
}
}
pub fn score_video_legacy(
criteria: &str,
width: u32,
height: u32,
bitrate: u64,
fps_num: u32,
fps_den: u32,
) -> (u128, u128, u128) {
let criteria = match criteria {
"bitrate" => ScoreCriteria::Bitrate,
"fps" => ScoreCriteria::Fps,
_ => ScoreCriteria::Resolution,
};
score_video(criteria, width, height, bitrate, fps_num, fps_den)
}