VTRAWProcessingSession

Struct VTRAWProcessingSession 

Source
pub struct VTRAWProcessingSession { /* private fields */ }
Available on crate feature VTRAWProcessingSession only.
Expand description

A reference to a Video Toolbox RAW Processing Session.

A RAW processing session supports processing of frames that have been output from decoders in camera native formats, for example RAW or bayer formats. The session reference is a reference-counted CF object.

See also Apple’s documentation

Implementations§

Source§

impl VTRAWProcessingSession

Source

pub unsafe fn create( allocator: Option<&CFAllocator>, format_description: &CMVideoFormatDescription, output_pixel_buffer_attributes: Option<&CFDictionary>, processing_session_options: Option<&CFDictionary>, processing_session_out: NonNull<*mut VTRAWProcessingSession>, ) -> i32

Available on crate feature objc2-core-media only.

Creates a RAW video frame processing session.

.

Parameter allocator: An allocator for the session. Pass NULL to use the default allocator.

Parameter formatDescription: The CMVideoFormatDescription corresponding to the original media samples, containing sequence-level processing parameters.

Parameter outputPixelBufferAttributes: A CoreVideo pixel buffer attributes dictionary describing the client’s requirements for pixel buffers for output frames. Pass NULL to receive the RAW processor’s native output format.

Parameter processingSessionOptions: A dictionary of creation-time options for the VTRAWProcessingSession.

Parameter processingSessionOut: Points to a variable to receive the new RAW processing session. When you are done with the session, call VTRAWProcessingSessionInvalidate to tear it down and then CFRelease to release your object reference.

§Safety
  • output_pixel_buffer_attributes generics must be of the correct type.
  • processing_session_options generics must be of the correct type.
  • processing_session_out must be a valid pointer.
Source

pub unsafe fn invalidate(&self)

Tears down a RAW processing session.

When you are done with a decompression session you created, call VTRAWProcessingSessionInvalidate to tear it down and then CFRelease to release your object reference. When a session’s retain count reaches zero, it is automatically invalidated, but since sessions may be retained by multiple parties, it can be hard to predict when this will happen. Calling VTRAWProcessingSessionInvalidate ensures a deterministic, orderly teardown.

Source§

impl VTRAWProcessingSession

Source

pub unsafe fn set_parameter_changed_handler( &self, parameter_change_handler: VTRAWProcessingParameterChangeHandler, ) -> i32

Available on crate feature block2 only.

Provides a block which will be called when the VTRAWProcessingPlugin changes the set of processing parameters..

This block will be called the VTRAWProcessingPlugin either changes the set of available processing parameters, or changes the current value of parameters. The VTRAWProcessingPlugin may change parameters based on metadata associated with input frames, or in response to other parameters configured by VTRAWProcessingSessionSetProcessingParameters. This optional and does not need to be configured if the client is not driving UI based on these parameters, or otherwise does not need this.

Parameter session: The RAW processing session.

Parameter parameterChangeHandler: A VTRAWProcessingParameterChangeHandler block which will be called when the set of processing parameters changes, or the value of a parameter changes without the client explicitly requesting it. Setting this to NULL removes the current handler.

§Safety

parameter_change_handler must be a valid pointer or null.

Source

pub unsafe fn set_parameter_changed_hander( &self, parameter_change_handler: VTRAWProcessingParameterChangeHandler, ) -> i32

👎Deprecated
Available on crate feature block2 only.
§Safety

parameter_change_handler must be a valid pointer or null.

Source§

impl VTRAWProcessingSession

Source

pub unsafe fn process_frame( &self, input_pixel_buffer: &CVPixelBuffer, frame_options: Option<&CFDictionary>, output_handler: VTRAWProcessingOutputHandler, ) -> i32

Available on crate features block2 and objc2-core-video only.

Call this function to submit RAW frames for format-specific processing using sequence and frame level parameters.

Processed frames may or may not be output before the function returns, The client should not modify the input pixel data after making this call. The RAW Processor will retain the input pixel buffer as long as necessary.

For any RAW processor, there is a finite number of frames that can be presented to VTRAWProcessingSessionProcessFrame before the function will block until the output callback is invoked.

Parameter session: The RAW processing session.

Parameter inputPixelBuffer: A CVPixelBuffer containing an input video frame to be processed.

Parameter frameOptions: Contains key/value pairs specifying additional properties for processing this frame. No keys currently. Pass NULL.

Parameter outputHandler: A VTRAWProcessingOutputHandler block which will be called once when processing is complete.

§Safety
  • frame_options generics must be of the correct type.
  • output_handler must be a valid pointer.
Source

pub unsafe fn complete_frames(&self) -> i32

Forces the RAW Processor to complete processing frames.

Call this after calling a set of VTRAWProcessingSessionProcessFrame calls to ensure that all frames have been processed. Before VTRAWProcessingSessionCompleteFrames returns, the output handler will be invoked for all pending frames.

Parameter session: The RAW processing session.

Source

pub unsafe fn copy_processing_parameters( &self, out_parameter_array: NonNull<*const CFArray>, ) -> i32

Copies an array of dictionaries describing the parameters provided by the RAW Processor for frame processing

This will return an array of dictionaries, one dictionary for each parameter that can be controlled in the RAW Processing operation. The dictionary for each parameter will contain a set of kVTRAWProcessingParameter keys whose values provide a name, value type, value range, and current value for each parameter.

The returned values can be used to contruct dynamic UI presenting RAW Processing controls allowing the various knobs for this specific RAW Processor to be viewed and manipulated.

Parameter session: The RAW processing session.

Parameter outParameterArray: Pointer for receiving the RAW Processing parameter array..

§Safety

out_parameter_array must be a valid pointer.

Source

pub unsafe fn set_processing_parameters( &self, processing_parameters: &CFDictionary, ) -> i32

Sets a collection of RAW Processing parameters

This call will set a collection of RAW Processing parameters on the RAW Processor. These are set as a dictionary where the keys match kVTRAWProcessingParameter_Key values that were returned in VTRAWProcessingSessionCopyProcessingParameters and where values conform to the type and range defined in the kVTRAWProcessingParameter dictionary for each parameter.

Not all parameters from the RAWProcessingParameter array need to be set at any given time. Changining the parameters will not change processing on frames already submitted for processing, it will only impact frames where VTRAWProcessingSessionProcessFrame is called after VTRAWProcessingSessionSetProcessingParameters returns.

If any parameters specified are not in the array reported by VTRAWProcessingSessionCopyProcessingParameters, or are the wrong type or are out of range, kVTParameterErr will be returned and none of the parameters will be applied.

Parameter session: The RAW processing session.

Parameter processingParameters: A dictionary of keys and values setting parameters reported by VTRAWProcessingSessionCopyProcessingParameters.

Returns: Returns an error if any of the provided parameters are invalid, disabled or outside of the declared valid range. None of the provided parameters will be set on the processor if an error is returned.

§Safety

processing_parameters generics must be of the correct type.

Methods from Deref<Target = CFType>§

Source

pub fn downcast_ref<T>(&self) -> Option<&T>
where T: ConcreteType,

Available on crate feature VTSession only.

Attempt to downcast the type to that of type T.

This is the reference-variant. Use CFRetained::downcast if you want to convert a retained type. See also ConcreteType for more details on which types support being converted to.

Source

pub fn retain_count(&self) -> usize

Available on crate feature VTSession only.

Get the reference count of the object.

This function may be useful for debugging. You normally do not use this function otherwise.

Beware that some things (like CFNumbers, small CFStrings etc.) may not have a normal retain count for optimization purposes, and can return usize::MAX in that case.

Trait Implementations§

Source§

impl AsRef<AnyObject> for VTRAWProcessingSession

Source§

fn as_ref(&self) -> &AnyObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<CFType> for VTRAWProcessingSession

Source§

fn as_ref(&self) -> &CFType

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<VTRAWProcessingSession> for VTRAWProcessingSession

Source§

fn as_ref(&self) -> &Self

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Borrow<AnyObject> for VTRAWProcessingSession

Source§

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<CFType> for VTRAWProcessingSession

Source§

fn borrow(&self) -> &CFType

Immutably borrows from an owned value. Read more
Source§

impl ConcreteType for VTRAWProcessingSession

Source§

fn type_id() -> CFTypeID

Returns the CFTypeID for RAW processing sessions.

Source§

impl Debug for VTRAWProcessingSession

Source§

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

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

impl Deref for VTRAWProcessingSession

Source§

type Target = CFType

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Hash for VTRAWProcessingSession

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Message for VTRAWProcessingSession

Source§

fn retain(&self) -> Retained<Self>
where Self: Sized,

Increment the reference count of the receiver. Read more
Source§

impl PartialEq for VTRAWProcessingSession

Source§

fn eq(&self, other: &Self) -> 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 VTRAWProcessingSession

Source§

const ENCODING_REF: Encoding

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

impl Type for VTRAWProcessingSession

Source§

fn retain(&self) -> CFRetained<Self>
where Self: Sized,

Increment the reference count of the receiver. Read more
Source§

fn as_concrete_TypeRef(&self) -> &Self

👎Deprecated: this is redundant
Helper for easier transition from the core-foundation crate.
Source§

unsafe fn wrap_under_get_rule(ptr: *const Self) -> CFRetained<Self>
where Self: Sized,

👎Deprecated: use CFRetained::retain
Helper for easier transition from the core-foundation crate. Read more
Source§

fn as_CFTypeRef(&self) -> &CFType
where Self: AsRef<CFType>,

👎Deprecated: this is redundant (CF types deref to CFType)
Helper for easier transition from the core-foundation crate.
Source§

unsafe fn wrap_under_create_rule(ptr: *const Self) -> CFRetained<Self>
where Self: Sized,

👎Deprecated: use CFRetained::from_raw
Helper for easier transition from the core-foundation crate. Read more
Source§

impl Eq for VTRAWProcessingSession

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> 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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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,