CVTimeStamp

Struct CVTimeStamp 

Source
#[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, }
Available on crate feature 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: u64

Trait Implementations§

Source§

impl Clone for CVTimeStamp

Source§

fn clone(&self) -> CVTimeStamp

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CVTimeStamp

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Encode for CVTimeStamp

Available on crate feature objc2 only.
Source§

const ENCODING: Encoding

The Objective-C type-encoding for this type.
Source§

impl PartialEq for CVTimeStamp

Source§

fn eq(&self, other: &CVTimeStamp) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl RefEncode for CVTimeStamp

Available on crate feature objc2 only.
Source§

const ENCODING_REF: Encoding

The Objective-C type-encoding for a reference of this type. Read more
Source§

impl Copy for CVTimeStamp

Source§

impl StructuralPartialEq for CVTimeStamp

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> EncodeArgument for T
where T: Encode,

Source§

const ENCODING_ARGUMENT: Encoding = T::ENCODING

The Objective-C type-encoding for this type.
Source§

impl<T> EncodeReturn for T
where T: Encode,

Source§

const ENCODING_RETURN: Encoding = T::ENCODING

The Objective-C type-encoding for this type.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> AutoreleaseSafe for T
where T: ?Sized,