core_video/
base.rs

1use crate::libc::c_double;
2
3pub type CVOptionFlags = u64;
4
5#[repr(C)]
6#[derive(Clone, Copy, Debug, Eq, PartialEq)]
7pub struct CVSMPTETime {
8    pub subframes: i16,
9    pub subframeDivisor: i16,
10    pub counter: u32,
11    pub type_: u32,
12    pub flags: u32,
13    pub hours: i16,
14    pub minutes: i16,
15    pub seconds: i16,
16    pub frames: i16,
17}
18
19#[repr(u32)]
20#[derive(Clone, Copy, Debug, Eq, PartialEq)]
21pub enum CVSMPTETimeType {
22    kCVSMPTETimeType24       = 0,
23    kCVSMPTETimeType25       = 1,
24    kCVSMPTETimeType30Drop   = 2,
25    kCVSMPTETimeType30       = 3,
26    kCVSMPTETimeType2997     = 4,
27    kCVSMPTETimeType2997Drop = 5,
28    kCVSMPTETimeType60       = 6,
29    kCVSMPTETimeType5994     = 7,
30}
31
32#[repr(u32)]
33#[derive(Clone, Copy, Debug, Eq, PartialEq)]
34pub enum CVSMPTETimeFlags {
35    kCVSMPTETimeValid   = (1 << 0),
36    kCVSMPTETimeRunning = (1 << 1),
37}
38
39#[repr(i32)]
40#[derive(Clone, Copy, Debug, Eq, PartialEq)]
41pub enum CVTimeFlags {
42    kCVTimeIsIndefinite = (1 << 0),
43}
44
45#[repr(C)]
46#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
47pub struct CVTime {
48    pub timeValue: i64,
49    pub timeScale: i32,
50    pub flags: i32,
51}
52
53#[repr(C)]
54#[derive(Clone, Copy, Debug, PartialEq)]
55pub struct CVTimeStamp {
56    pub version: u32,
57    pub videoTimeScale: i32,
58    pub videoTime: i64,
59    pub hostTime: u64,
60    pub rateScalar: c_double,
61    pub videoRefreshPeriod: i64,
62    pub smpteTime: CVSMPTETime,
63    pub flags: u64,
64    pub reserved: u64,
65}
66
67#[repr(u64)]
68#[derive(Clone, Copy, Debug, Eq, PartialEq)]
69pub enum CVTimeStampFlags {
70    kCVTimeStampVideoTimeValid     = (1 << 0),
71    kCVTimeStampHostTimeValid      = (1 << 1),
72    kCVTimeStampSMPTETimeValid     = (1 << 2),
73    kCVTimeStampVideoRefreshPeriodValid = (1 << 3),
74    kCVTimeStampRateScalarValid    = (1 << 4),
75    kCVTimeStampTopField           = (1 << 16),
76    kCVTimeStampBottomField        = (1 << 17),
77    kCVTimeStampVideoHostTimeValid = (1 << 0) | (1 << 1), /* kCVTimeStampVideoTimeValid |
78                                                           * kCVTimeStampHostTimeValid */
79    kCVTimeStampIsInterlaced       = (1 << 16) | (1 << 17), /* kCVTimeStampTopField |
80                                                             * kCVTimeStampBottomField */
81}
82
83extern "C" {
84    pub static kCVZeroTime: CVTime;
85    pub static kCVIndefiniteTime: CVTime;
86}