MCPcopy Create free account
hub / github.com/Recordscript/recordscript / test_av1

Function test_av1

libs/scrap/examples/benchmark.rs:176–238  ·  view source on GitHub ↗
(
    c: &mut Capturer,
    width: usize,
    height: usize,
    quality: Q,
    yuv_count: usize,
    i444: bool,
)

Source from the content-addressed store, hash-verified

174}
175
176fn test_av1(
177 c: &mut Capturer,
178 width: usize,
179 height: usize,
180 quality: Q,
181 yuv_count: usize,
182 i444: bool,
183) {
184 let config = EncoderCfg::AOM(AomEncoderConfig {
185 width: width as _,
186 height: height as _,
187 quality,
188 keyframe_interval: None,
189 });
190 let mut encoder = AomEncoder::new(config, i444).unwrap();
191 let start = Instant::now();
192 let mut size = 0;
193 let mut av1s: Vec<Vec<u8>> = vec![];
194 let mut yuv = Vec::new();
195 let mut mid_data = Vec::new();
196 let mut counter = 0;
197 let mut time_sum = Duration::ZERO;
198 loop {
199 match c.frame(std::time::Duration::from_millis(30)) {
200 Ok(frame) => {
201 let tmp_timer = Instant::now();
202 let frame = frame.to(encoder.yuvfmt(), &mut yuv, &mut mid_data).unwrap();
203 let yuv = frame.yuv().unwrap();
204 for ref frame in encoder
205 .encode(start.elapsed().as_millis() as _, &yuv, STRIDE_ALIGN)
206 .unwrap()
207 {
208 size += frame.data.len();
209 av1s.push(frame.data.to_vec());
210 counter += 1;
211 print!("\rAV1 {}/{}", counter, yuv_count);
212 std::io::stdout().flush().ok();
213 }
214 time_sum += tmp_timer.elapsed();
215 }
216 Err(e) => {
217 log::error!("{e:?}");
218 }
219 }
220 if counter >= yuv_count {
221 println!();
222 break;
223 }
224 }
225 assert_eq!(av1s.len(), yuv_count);
226 println!(
227 "AV1 encode: {:?}, {} byte",
228 time_sum / yuv_count as _,
229 size / yuv_count
230 );
231 let mut decoder = AomDecoder::new().unwrap();
232 let start = Instant::now();
233 for av1 in av1s {

Callers 1

mainFunction · 0.85

Calls 7

yuvMethod · 0.80
frameMethod · 0.45
toMethod · 0.45
yuvfmtMethod · 0.45
encodeMethod · 0.45
flushMethod · 0.45
decodeMethod · 0.45

Tested by

no test coverage detected