oximedia_transcode/presets/
broadcast.rs1use crate::{PresetConfig, QualityMode};
4
5#[must_use]
10pub fn prores_proxy_hd() -> PresetConfig {
11 PresetConfig {
12 video_codec: Some("h264".to_string()),
13 audio_codec: Some("aac".to_string()),
14 video_bitrate: Some(45_000_000), audio_bitrate: Some(256_000),
16 width: Some(1280),
17 height: Some(720),
18 frame_rate: Some((25, 1)), quality_mode: Some(QualityMode::VeryHigh),
20 container: Some("mp4".to_string()),
21 audio_channel_layout: None,
22 }
23}
24
25#[must_use]
27pub fn prores_proxy_full_hd() -> PresetConfig {
28 PresetConfig {
29 video_codec: Some("h264".to_string()),
30 audio_codec: Some("aac".to_string()),
31 video_bitrate: Some(90_000_000), audio_bitrate: Some(256_000),
33 width: Some(1920),
34 height: Some(1080),
35 frame_rate: Some((25, 1)),
36 quality_mode: Some(QualityMode::VeryHigh),
37 container: Some("mp4".to_string()),
38 audio_channel_layout: None,
39 }
40}
41
42#[must_use]
44pub fn prores_proxy_4k() -> PresetConfig {
45 PresetConfig {
46 video_codec: Some("h264".to_string()),
47 audio_codec: Some("aac".to_string()),
48 video_bitrate: Some(180_000_000), audio_bitrate: Some(320_000),
50 width: Some(3840),
51 height: Some(2160),
52 frame_rate: Some((25, 1)),
53 quality_mode: Some(QualityMode::VeryHigh),
54 container: Some("mp4".to_string()),
55 audio_channel_layout: None,
56 }
57}
58
59#[must_use]
63pub fn dnxhd_proxy() -> PresetConfig {
64 PresetConfig {
65 video_codec: Some("h264".to_string()),
66 audio_codec: Some("aac".to_string()),
67 video_bitrate: Some(36_000_000), audio_bitrate: Some(256_000),
69 width: Some(1920),
70 height: Some(1080),
71 frame_rate: Some((24, 1)),
72 quality_mode: Some(QualityMode::VeryHigh),
73 container: Some("mp4".to_string()),
74 audio_channel_layout: None,
75 }
76}
77
78#[must_use]
80pub fn ebu_r128_hd() -> PresetConfig {
81 PresetConfig {
82 video_codec: Some("h264".to_string()),
83 audio_codec: Some("aac".to_string()),
84 video_bitrate: Some(50_000_000), audio_bitrate: Some(384_000), width: Some(1920),
87 height: Some(1080),
88 frame_rate: Some((25, 1)), quality_mode: Some(QualityMode::VeryHigh),
90 container: Some("mp4".to_string()),
91 audio_channel_layout: None,
92 }
93}
94
95#[must_use]
97pub fn atsc_a85_hd() -> PresetConfig {
98 PresetConfig {
99 video_codec: Some("h264".to_string()),
100 audio_codec: Some("aac".to_string()),
101 video_bitrate: Some(50_000_000), audio_bitrate: Some(384_000),
103 width: Some(1920),
104 height: Some(1080),
105 frame_rate: Some((30000, 1001)), quality_mode: Some(QualityMode::VeryHigh),
107 container: Some("mp4".to_string()),
108 audio_channel_layout: None,
109 }
110}
111
112#[cfg(test)]
113mod tests {
114 use super::*;
115
116 #[test]
117 fn test_prores_proxy_hd() {
118 let preset = prores_proxy_hd();
119 assert_eq!(preset.width, Some(1280));
120 assert_eq!(preset.height, Some(720));
121 assert_eq!(preset.frame_rate, Some((25, 1)));
122 }
123
124 #[test]
125 fn test_prores_proxy_4k() {
126 let preset = prores_proxy_4k();
127 assert_eq!(preset.width, Some(3840));
128 assert_eq!(preset.height, Some(2160));
129 assert_eq!(preset.video_bitrate, Some(180_000_000));
130 }
131
132 #[test]
133 fn test_ebu_r128() {
134 let preset = ebu_r128_hd();
135 assert_eq!(preset.frame_rate, Some((25, 1))); assert_eq!(preset.audio_bitrate, Some(384_000));
137 }
138
139 #[test]
140 fn test_atsc_a85() {
141 let preset = atsc_a85_hd();
142 assert_eq!(preset.frame_rate, Some((30000, 1001))); }
144}