MCPcopy Index your code
hub / github.com/Recordscript/recordscript / test_encoder

Function test_encoder

libs/scrap/examples/benchmark.rs:263–321  ·  view source on GitHub ↗
(
        width: usize,
        height: usize,
        quality: Q,
        info: CodecInfo,
        c: &mut Capturer,
        yuv_count: usize,
        h26xs: &mut Vec<Vec<u8>>,
    )

Source from the content-addressed store, hash-verified

261 }
262
263 fn test_encoder(
264 width: usize,
265 height: usize,
266 quality: Q,
267 info: CodecInfo,
268 c: &mut Capturer,
269 yuv_count: usize,
270 h26xs: &mut Vec<Vec<u8>>,
271 ) {
272 let mut encoder = HwRamEncoder::new(
273 EncoderCfg::HWRAM(HwRamEncoderConfig {
274 name: info.name.clone(),
275 mc_name: None,
276 width,
277 height,
278 quality,
279 keyframe_interval: None,
280 }),
281 false,
282 )
283 .unwrap();
284 let mut size = 0;
285
286 let mut yuv = Vec::new();
287 let mut mid_data = Vec::new();
288 let mut counter = 0;
289 let mut time_sum = Duration::ZERO;
290 loop {
291 match c.frame(std::time::Duration::from_millis(30)) {
292 Ok(frame) => {
293 let tmp_timer = Instant::now();
294 let frame = frame.to(encoder.yuvfmt(), &mut yuv, &mut mid_data).unwrap();
295 let yuv = frame.yuv().unwrap();
296 for ref frame in encoder.encode(&yuv).unwrap() {
297 size += frame.data.len();
298
299 h26xs.push(frame.data.to_vec());
300 counter += 1;
301 print!("\r{:?} {}/{}", info.name, counter, yuv_count);
302 std::io::stdout().flush().ok();
303 }
304 time_sum += tmp_timer.elapsed();
305 }
306 Err(e) => {
307 log::error!("{e:?}");
308 }
309 }
310 if counter >= yuv_count {
311 println!();
312 break;
313 }
314 }
315 println!(
316 "{}: {:?}, {} byte",
317 info.name,
318 time_sum / yuv_count as u32,
319 size / yuv_count,
320 );

Callers 1

testFunction · 0.85

Calls 7

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

Tested by

no test coverage detected