#[repr(C)]pub struct CVTimeStamp {
pub version: u32,
pub videoTimeScale: i32,
pub videoTime: i64,
pub hostTime: u64,
pub rateScalar: c_double,
pub videoRefreshPeriod: i64,
pub smpteTime: CVSMPTETime,
pub flags: u64,
pub reserved: u64,
}CVBase only.Expand description
CoreVideo uses a CVTimeStamp structure to store video display time stamps.
This structure is purposely very similar to AudioTimeStamp defined in the CoreAudio framework. Most of the CVTimeStamp struct should be fairly self-explanatory. However, it is probably worth pointing out that unlike the audio time stamps, floats are not used to represent the video equivalent of sample times. This was done partly to avoid precision issues, and partly because QuickTime still uses integers for time values and time scales. In the actual implementation it has turned out to be very convenient to use integers, and we can represent framerates like NTSC (30000/1001 fps) exactly. The mHostTime structure field uses the same Mach absolute time base that is used in CoreAudio, so that clients of the CoreVideo API can synchronize between the two subsystems. Field: version The current CVTimeStamp is version 0. Field: videoTimeScale The scale (in units per second) of the videoTime and videoPeriod values Field: videoTime This represents the start of a frame (or field for interlaced) Field: hostTime Host root timebase time Field: rateScalar This is the current rate of the device as measured by the timestamps, divided by the nominal rate Field: videoRefreshPeriod This is the nominal update period of the current output device Field: smpteTime SMPTE time representation of the time stamp. Field: flags Possible values are: kCVTimeStampVideoTimeValid kCVTimeStampHostTimeValid kCVTimeStampSMPTETimeValid kCVTimeStampVideoPeriodValid kCVTimeStampRateScalarValid There are flags for each field to make it easier to detect interlaced vs progressive output kCVTimeStampTopField kCVTimeStampBottomField Some commonly used combinations of timestamp flags kCVTimeStampVideoHostTimeValid kCVTimeStampIsInterlaced Field: reserved Reserved. Do not use.
See also Apple’s documentation
Fields§
§version: u32§videoTimeScale: i32§videoTime: i64§hostTime: u64§rateScalar: c_double§videoRefreshPeriod: i64§smpteTime: CVSMPTETime§flags: u64§reserved: u64Trait Implementations§
Source§impl Clone for CVTimeStamp
impl Clone for CVTimeStamp
Source§fn clone(&self) -> CVTimeStamp
fn clone(&self) -> CVTimeStamp
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CVTimeStamp
impl Debug for CVTimeStamp
Source§impl Encode for CVTimeStamp
Available on crate feature objc2 only.
impl Encode for CVTimeStamp
objc2 only.Source§impl PartialEq for CVTimeStamp
impl PartialEq for CVTimeStamp
Source§impl RefEncode for CVTimeStamp
Available on crate feature objc2 only.
impl RefEncode for CVTimeStamp
objc2 only.