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), kCVTimeStampIsInterlaced = (1 << 16) | (1 << 17), }
82
83extern "C" {
84 pub static kCVZeroTime: CVTime;
85 pub static kCVIndefiniteTime: CVTime;
86}