v4l/video/output/
parameters.rs1use std::{fmt, mem};
2
3use crate::fraction::Fraction;
4use crate::parameters::Capabilities;
5use crate::v4l_sys::*;
6
7#[derive(Debug, Copy, Clone)]
8pub struct Parameters {
10 pub capabilities: Capabilities,
11 pub interval: Fraction,
12}
13
14impl Parameters {
15 pub fn new(frac: Fraction) -> Self {
16 Parameters {
17 capabilities: Capabilities::from(0),
18 interval: frac,
19 }
20 }
21
22 pub fn with_fps(fps: u32) -> Self {
23 Parameters {
24 capabilities: Capabilities::from(0),
25 interval: Fraction::new(1, fps),
26 }
27 }
28}
29
30impl fmt::Display for Parameters {
31 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
32 writeln!(f, "capabilities : {}", self.capabilities)?;
33 writeln!(f, "interval : {} [s]", self.interval)?;
34 Ok(())
35 }
36}
37
38impl From<v4l2_outputparm> for Parameters {
39 fn from(params: v4l2_outputparm) -> Self {
40 Self {
41 capabilities: Capabilities::from(params.capability),
42 interval: Fraction::from(params.timeperframe),
43 }
44 }
45}
46
47impl From<Parameters> for v4l2_outputparm {
48 fn from(parameters: Parameters) -> Self {
49 Self {
50 capability: parameters.capabilities.into(),
51 timeperframe: parameters.interval.into(),
52 ..unsafe { mem::zeroed() }
53 }
54 }
55}