1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//! Marker types and traits for [Frame](crate::frame::Frame).

use crate::{common::*, kind::Extension};

/// The marker trait for frame kinds.
pub trait FrameKind {}

/// The marker traits for frame kinds except [Any](Any).
pub trait NonAnyFrameKind
where
    Self: FrameKind,
{
    const EXTENSION: Extension;
}

#[derive(Debug)]
pub struct Composite;

impl FrameKind for Composite {}
impl NonAnyFrameKind for Composite {
    const EXTENSION: Extension = Extension::CompositeFrame;
}

#[derive(Debug)]
pub struct Any;

impl FrameKind for Any {}

#[derive(Debug)]
pub struct Video;

impl FrameKind for Video {}
impl NonAnyFrameKind for Video {
    const EXTENSION: Extension = Extension::VideoFrame;
}

#[derive(Debug)]
pub struct Motion;

impl FrameKind for Motion {}
impl NonAnyFrameKind for Motion {
    const EXTENSION: Extension = Extension::MotionFrame;
}

#[derive(Debug)]
pub struct Depth;

impl FrameKind for Depth {}
impl NonAnyFrameKind for Depth {
    const EXTENSION: Extension = Extension::DepthFrame;
}

#[derive(Debug)]
pub struct Disparity;

impl FrameKind for Disparity {}
impl NonAnyFrameKind for Disparity {
    const EXTENSION: Extension = Extension::DisparityFrame;
}

#[derive(Debug)]
pub struct Pose;

impl FrameKind for Pose {}
impl NonAnyFrameKind for Pose {
    const EXTENSION: Extension = Extension::PoseFrame;
}

#[derive(Debug)]
pub struct Points;

impl FrameKind for Points {}
impl NonAnyFrameKind for Points {
    const EXTENSION: Extension = Extension::Points;
}