1#![allow(unused)]
2
3#[cfg(feature = "alloc")]
4extern crate alloc;
5#[cfg(feature = "alloc")]
6use alloc::vec::Vec;
7
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10#[non_exhaustive]
11pub enum PixelFormat {
12 Nv12,
13 Yuyv,
14 Uyvy,
15 Bgra32,
16 Jpeg,
17}
18
19#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
21pub struct Size {
22 pub width: u32,
23 pub height: u32,
24}
25
26#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
28pub struct FrameRate {
29 pub numerator: u32,
30 pub denominator: u32,
31}
32
33impl FrameRate {
34 pub fn as_f64(&self) -> f64 {
35 self.numerator as f64 / self.denominator as f64
36 }
37}
38
39#[derive(Debug, Clone, Copy, PartialEq)]
41pub struct FrameRateRange {
42 pub min: FrameRate,
43 pub max: FrameRate,
44}
45
46#[cfg(feature = "alloc")]
48#[derive(Debug, Clone, PartialEq)]
49pub struct FormatDescriptor {
50 pub pixel_format: PixelFormat,
51 pub size: Size,
52 pub frame_rate_ranges: Vec<FrameRateRange>,
53}
54
55#[derive(Debug, Clone)]
57pub struct StreamConfig {
58 pub pixel_format: PixelFormat,
59 pub size: Size,
60 pub frame_rate: FrameRate,
61}