oximedia_transcode/presets/
archive.rs1use crate::{PresetConfig, QualityMode};
4
5#[must_use]
10pub fn lossless_vp9() -> PresetConfig {
11 PresetConfig {
12 video_codec: Some("vp9".to_string()),
13 audio_codec: Some("opus".to_string()),
14 video_bitrate: None, audio_bitrate: Some(256_000),
16 width: None, height: None, frame_rate: None, quality_mode: Some(QualityMode::VeryHigh),
20 container: Some("mkv".to_string()),
21 audio_channel_layout: None,
22 }
23}
24
25#[must_use]
27pub fn high_quality_vp9() -> PresetConfig {
28 PresetConfig {
29 video_codec: Some("vp9".to_string()),
30 audio_codec: Some("opus".to_string()),
31 video_bitrate: Some(50_000_000), audio_bitrate: Some(256_000),
33 width: None, height: None, frame_rate: None, quality_mode: Some(QualityMode::VeryHigh),
37 container: Some("mkv".to_string()),
38 audio_channel_layout: None,
39 }
40}
41
42#[must_use]
44pub fn high_quality_av1() -> PresetConfig {
45 PresetConfig {
46 video_codec: Some("av1".to_string()),
47 audio_codec: Some("opus".to_string()),
48 video_bitrate: Some(30_000_000), audio_bitrate: Some(256_000),
50 width: None,
51 height: None,
52 frame_rate: None,
53 quality_mode: Some(QualityMode::VeryHigh),
54 container: Some("mkv".to_string()),
55 audio_channel_layout: None,
56 }
57}
58
59#[must_use]
61pub fn master_archive() -> PresetConfig {
62 PresetConfig {
63 video_codec: Some("vp9".to_string()),
64 audio_codec: Some("opus".to_string()),
65 video_bitrate: Some(100_000_000), audio_bitrate: Some(512_000), width: None,
68 height: None,
69 frame_rate: None,
70 quality_mode: Some(QualityMode::VeryHigh),
71 container: Some("mkv".to_string()),
72 audio_channel_layout: None,
73 }
74}
75
76#[must_use]
78pub fn intermediate_archive() -> PresetConfig {
79 PresetConfig {
80 video_codec: Some("vp9".to_string()),
81 audio_codec: Some("opus".to_string()),
82 video_bitrate: Some(25_000_000), audio_bitrate: Some(192_000),
84 width: None,
85 height: None,
86 frame_rate: None,
87 quality_mode: Some(QualityMode::High),
88 container: Some("mkv".to_string()),
89 audio_channel_layout: None,
90 }
91}
92
93#[must_use]
95pub fn preservation_1080p() -> PresetConfig {
96 PresetConfig {
97 video_codec: Some("vp9".to_string()),
98 audio_codec: Some("opus".to_string()),
99 video_bitrate: Some(20_000_000), audio_bitrate: Some(256_000),
101 width: Some(1920),
102 height: Some(1080),
103 frame_rate: Some((24, 1)), quality_mode: Some(QualityMode::VeryHigh),
105 container: Some("mkv".to_string()),
106 audio_channel_layout: None,
107 }
108}
109
110#[must_use]
112pub fn preservation_4k() -> PresetConfig {
113 PresetConfig {
114 video_codec: Some("vp9".to_string()),
115 audio_codec: Some("opus".to_string()),
116 video_bitrate: Some(60_000_000), audio_bitrate: Some(320_000),
118 width: Some(3840),
119 height: Some(2160),
120 frame_rate: Some((24, 1)),
121 quality_mode: Some(QualityMode::VeryHigh),
122 container: Some("mkv".to_string()),
123 audio_channel_layout: None,
124 }
125}
126
127#[cfg(test)]
128mod tests {
129 use super::*;
130
131 #[test]
132 fn test_lossless_vp9() {
133 let preset = lossless_vp9();
134 assert_eq!(preset.video_codec, Some("vp9".to_string()));
135 assert_eq!(preset.container, Some("mkv".to_string()));
136 assert!(preset.width.is_none()); }
138
139 #[test]
140 fn test_high_quality_av1() {
141 let preset = high_quality_av1();
142 assert_eq!(preset.video_codec, Some("av1".to_string()));
143 assert_eq!(preset.quality_mode, Some(QualityMode::VeryHigh));
144 }
145
146 #[test]
147 fn test_master_archive() {
148 let preset = master_archive();
149 assert_eq!(preset.video_bitrate, Some(100_000_000));
150 assert_eq!(preset.audio_bitrate, Some(512_000));
151 }
152
153 #[test]
154 fn test_preservation_4k() {
155 let preset = preservation_4k();
156 assert_eq!(preset.width, Some(3840));
157 assert_eq!(preset.height, Some(2160));
158 assert_eq!(preset.frame_rate, Some((24, 1)));
159 }
160}