use crate::{PresetConfig, QualityMode};
#[must_use]
pub fn lossless_vp9() -> PresetConfig {
PresetConfig {
video_codec: Some("vp9".to_string()),
audio_codec: Some("opus".to_string()),
video_bitrate: None, audio_bitrate: Some(256_000),
width: None, height: None, frame_rate: None, quality_mode: Some(QualityMode::VeryHigh),
container: Some("mkv".to_string()),
audio_channel_layout: None,
}
}
#[must_use]
pub fn high_quality_vp9() -> PresetConfig {
PresetConfig {
video_codec: Some("vp9".to_string()),
audio_codec: Some("opus".to_string()),
video_bitrate: Some(50_000_000), audio_bitrate: Some(256_000),
width: None, height: None, frame_rate: None, quality_mode: Some(QualityMode::VeryHigh),
container: Some("mkv".to_string()),
audio_channel_layout: None,
}
}
#[must_use]
pub fn high_quality_av1() -> PresetConfig {
PresetConfig {
video_codec: Some("av1".to_string()),
audio_codec: Some("opus".to_string()),
video_bitrate: Some(30_000_000), audio_bitrate: Some(256_000),
width: None,
height: None,
frame_rate: None,
quality_mode: Some(QualityMode::VeryHigh),
container: Some("mkv".to_string()),
audio_channel_layout: None,
}
}
#[must_use]
pub fn master_archive() -> PresetConfig {
PresetConfig {
video_codec: Some("vp9".to_string()),
audio_codec: Some("opus".to_string()),
video_bitrate: Some(100_000_000), audio_bitrate: Some(512_000), width: None,
height: None,
frame_rate: None,
quality_mode: Some(QualityMode::VeryHigh),
container: Some("mkv".to_string()),
audio_channel_layout: None,
}
}
#[must_use]
pub fn intermediate_archive() -> PresetConfig {
PresetConfig {
video_codec: Some("vp9".to_string()),
audio_codec: Some("opus".to_string()),
video_bitrate: Some(25_000_000), audio_bitrate: Some(192_000),
width: None,
height: None,
frame_rate: None,
quality_mode: Some(QualityMode::High),
container: Some("mkv".to_string()),
audio_channel_layout: None,
}
}
#[must_use]
pub fn preservation_1080p() -> PresetConfig {
PresetConfig {
video_codec: Some("vp9".to_string()),
audio_codec: Some("opus".to_string()),
video_bitrate: Some(20_000_000), audio_bitrate: Some(256_000),
width: Some(1920),
height: Some(1080),
frame_rate: Some((24, 1)), quality_mode: Some(QualityMode::VeryHigh),
container: Some("mkv".to_string()),
audio_channel_layout: None,
}
}
#[must_use]
pub fn preservation_4k() -> PresetConfig {
PresetConfig {
video_codec: Some("vp9".to_string()),
audio_codec: Some("opus".to_string()),
video_bitrate: Some(60_000_000), audio_bitrate: Some(320_000),
width: Some(3840),
height: Some(2160),
frame_rate: Some((24, 1)),
quality_mode: Some(QualityMode::VeryHigh),
container: Some("mkv".to_string()),
audio_channel_layout: None,
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_lossless_vp9() {
let preset = lossless_vp9();
assert_eq!(preset.video_codec, Some("vp9".to_string()));
assert_eq!(preset.container, Some("mkv".to_string()));
assert!(preset.width.is_none()); }
#[test]
fn test_high_quality_av1() {
let preset = high_quality_av1();
assert_eq!(preset.video_codec, Some("av1".to_string()));
assert_eq!(preset.quality_mode, Some(QualityMode::VeryHigh));
}
#[test]
fn test_master_archive() {
let preset = master_archive();
assert_eq!(preset.video_bitrate, Some(100_000_000));
assert_eq!(preset.audio_bitrate, Some(512_000));
}
#[test]
fn test_preservation_4k() {
let preset = preservation_4k();
assert_eq!(preset.width, Some(3840));
assert_eq!(preset.height, Some(2160));
assert_eq!(preset.frame_rate, Some((24, 1)));
}
}