1use crate::core_foundation_sys::base::{OSStatus, Boolean, CFAllocatorRef, CFTypeID, CFTypeRef};
2use crate::core_foundation_sys::dictionary::CFDictionaryRef;
3use crate::core_foundation_sys::string::CFStringRef;
4
5use crate::sync::CMClockRef;
6
7
8pub type CMTimeValue = i64;
9pub type CMTimeScale = i32;
10pub type CMTimeEpoch = i64;
11pub type CMTimeFlags = u32;
12
13pub const kCMTimeFlags_Valid: CMTimeFlags = 1<<0;
14pub const kCMTimeFlags_HasBeenRounded: CMTimeFlags = 1<<1;
15pub const kCMTimeFlags_PositiveInfinity: CMTimeFlags = 1<<2;
16pub const kCMTimeFlags_NegativeInfinity: CMTimeFlags = 1<<3;
17pub const kCMTimeFlags_Indefinite: CMTimeFlags = 1<<4;
18pub const kCMTimeFlags_ImpliedValueFlagsMask: CMTimeFlags = kCMTimeFlags_PositiveInfinity
19 | kCMTimeFlags_NegativeInfinity
20 | kCMTimeFlags_Indefinite;
21
22
23#[repr(C)]
24#[derive(Debug, Copy, Clone)]
25pub struct CMTime {
26 pub value: CMTimeValue,
27 pub timescale: CMTimeScale,
28 pub flags: CMTimeFlags,
29 pub epoch: CMTimeEpoch,
30}
31
32
33extern "C" {
34 pub static kCMTimeInvalid: CMTime;
35 pub static kCMTimeIndefinite: CMTime;
36 pub static kCMTimePositiveInfinity: CMTime;
37 pub static kCMTimeNegativeInfinity: CMTime;
38 pub static kCMTimeZero: CMTime;
39
40
41}