AVAssetImageGenerator

Struct AVAssetImageGenerator 

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

Implementations§

Source§

impl AVAssetImageGenerator

Source

pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>

Source

pub unsafe fn new() -> Retained<Self>

Source

pub unsafe fn asset(&self) -> Retained<AVAsset>

Available on crate feature AVAsset only.
Source

pub unsafe fn appliesPreferredTrackTransform(&self) -> bool

Source

pub unsafe fn setAppliesPreferredTrackTransform( &self, applies_preferred_track_transform: bool, )

Source

pub unsafe fn maximumSize(&self) -> CGSize

Available on crate feature objc2-core-foundation only.
Source

pub unsafe fn setMaximumSize(&self, maximum_size: CGSize)

Available on crate feature objc2-core-foundation only.

Setter for maximumSize.

Source

pub unsafe fn apertureMode( &self, ) -> Option<Retained<AVAssetImageGeneratorApertureMode>>

Source

pub unsafe fn setApertureMode( &self, aperture_mode: Option<&AVAssetImageGeneratorApertureMode>, )

Setter for apertureMode.

This is copied when set.

Source

pub unsafe fn dynamicRangePolicy( &self, ) -> Retained<AVAssetImageGeneratorDynamicRangePolicy>

Configures the video dynamic range for the output CGImage

Default is AVAssetImageGeneratorDynamicRangePolicyForceSDR

Source

pub unsafe fn setDynamicRangePolicy( &self, dynamic_range_policy: &AVAssetImageGeneratorDynamicRangePolicy, )

Setter for dynamicRangePolicy.

This is copied when set.

Source

pub unsafe fn videoComposition(&self) -> Option<Retained<AVVideoComposition>>

Available on crate feature AVVideoComposition only.

Specifies the video composition to use when extracting images from assets with multiple video tracks.

If no videoComposition is specified, only the first enabled video track will be used. If a videoComposition is specified, the value of appliesPreferredTrackTransform is ignored. This property throws an exception if a video composition is set with any of the following property values:

  • “renderScale” is not equal to one
  • “renderSize” width or height is less than zero
  • “frameDuration” is invalid or less than or equal to zero
  • “sourceTrackIDForFrameTiming” is less than zero
  • “outputBufferDescription” is non-nil
Source

pub unsafe fn setVideoComposition( &self, video_composition: Option<&AVVideoComposition>, )

Available on crate feature AVVideoComposition only.

Setter for videoComposition.

This is copied when set.

Source

pub unsafe fn customVideoCompositor( &self, ) -> Option<Retained<ProtocolObject<dyn AVVideoCompositing>>>

Available on crate feature AVVideoCompositing only.
Source

pub unsafe fn requestedTimeToleranceBefore(&self) -> CMTime

Available on crate feature objc2-core-media only.
Source

pub unsafe fn setRequestedTimeToleranceBefore( &self, requested_time_tolerance_before: CMTime, )

Available on crate feature objc2-core-media only.
Source

pub unsafe fn requestedTimeToleranceAfter(&self) -> CMTime

Available on crate feature objc2-core-media only.
Source

pub unsafe fn setRequestedTimeToleranceAfter( &self, requested_time_tolerance_after: CMTime, )

Available on crate feature objc2-core-media only.
Source

pub unsafe fn assetImageGeneratorWithAsset(asset: &AVAsset) -> Retained<Self>

Available on crate feature AVAsset only.

Returns an instance of AVAssetImageGenerator for use with the specified asset.

Parameter asset: The asset from which images will be extracted.

Returns: An instance of AVAssetImageGenerator

This method may succeed even if the asset possesses no visual tracks at the time of initialization. Clients may wish to test whether an asset has any tracks with the visual characteristic via -[AVAsset tracksWithMediaCharacteristic:].

Note also that assets that belong to a mutable subclass of AVAsset, AVMutableComposition or AVMutableMovie, may gain visual tracks after initialization of an associated AVAssetImageGenerator.

However, the results of image generation are undefined if mutations of the asset occur while images are being generated.

AVAssetImageGenerator will use the default enabled video track(s) to generate images.

Source

pub unsafe fn initWithAsset( this: Allocated<Self>, asset: &AVAsset, ) -> Retained<Self>

Available on crate feature AVAsset only.

Initializes an instance of AVAssetImageGenerator for use with the specified asset.

Parameter asset: The asset from which images will be extracted.

Returns: An instance of AVAssetImageGenerator

This method may succeed even if the asset possesses no visual tracks at the time of initialization. Clients may wish to test whether an asset has any tracks with the visual characteristic via -[AVAsset tracksWithMediaCharacteristic:].

Note also that assets that belong to a mutable subclass of AVAsset, AVMutableComposition or AVMutableMovie, may gain visual tracks after initialization of an associated AVAssetImageGenerator.

However, the results of image generation are undefined if mutations of the asset occur while images are being generated.

AVAssetImageGenerator will use the default enabled video track(s) to generate images.

Source

pub unsafe fn copyCGImageAtTime_actualTime_error( &self, requested_time: CMTime, actual_time: *mut CMTime, ) -> Result<Retained<CGImage>, Retained<NSError>>

👎Deprecated: Use generateCGImageAsynchronouslyForTime:completionHandler: instead
Available on crate features objc2-core-graphics and objc2-core-media only.

Returns a CFRetained CGImageRef for an asset at or near the specified time.

Parameter requestedTime: The time at which the image of the asset is to be created.

Parameter actualTime: A pointer to a CMTime to receive the time at which the image was actually generated. If you are not interested in this information, pass NULL.

Parameter outError: An error object describing the reason for failure, in the event that this method returns NULL.

Returns: A CGImageRef.

Returns the CGImage synchronously. Ownership follows the Create Rule.

Because of the nature of timed audiovisual media, generating an image may take significant time. AVAssetImageGenerator may have to block the calling thread in order to do so. In order to avoid blocking, clients can use -generateCGImagesAsynchronouslyForTimes:completionHandler: to request that one or more images be generated asynchronously and to be notified when they become available.

On iOS and tvOS, it is particularly important to avoid blocking. To preserve responsiveness, a synchronous request that blocks for too long (eg, a request to generate an image from an asset on a slow HTTP server) may lead to media services being reset.

§Safety

actual_time must be a valid pointer or null.

Source

pub unsafe fn generateCGImagesAsynchronouslyForTimes_completionHandler( &self, requested_times: &NSArray<NSValue>, handler: AVAssetImageGeneratorCompletionHandler, )

Available on crate features block2 and objc2-core-graphics and objc2-core-media only.

Returns a series of CGImageRefs for an asset at or near the specified times.

Parameter requestedTimes: An NSArray of NSValues, each containing a CMTime, specifying the asset times at which an image is requested.

Parameter handler: A block that will be called when an image request is complete.

Employs an efficient “batch mode” for getting images in time order. The client will receive exactly one handler callback for each requested time in requestedTimes. Changes to generator properties (snap behavior, maximum size, etc…) will not affect outstanding asynchronous image generation requests. The generated image is not retained. Clients should retain the image if they wish it to persist after the completion handler returns.

§Safety

handler must be a valid pointer.

Source

pub unsafe fn generateCGImageAsynchronouslyForTime_completionHandler( &self, requested_time: CMTime, handler: &DynBlock<dyn Fn(*mut CGImage, CMTime, *mut NSError)>, )

Available on crate features block2 and objc2-core-graphics and objc2-core-media only.

Returns a CGImageRef for an asset at or near the specified time.

Parameter requestedTime: A CMTime, specifying the asset time at which an image is requested.

Parameter handler: A block that will be called when the image request is complete.

The client will receive exactly one handler callback for requestedTime. Changes to generator properties (snap behavior, maximum size, etc…) will not affect outstanding asynchronous image generation requests. The generated image is not retained. Clients should retain the image if they wish it to persist after the completion handler returns. If image generation succeeds, the image parameter to the completion handler will be non-NULL and the error parameter will be nil. If image generation fails or was cancelled, the image parameter will be NULL and the error parameter will describe what went wrong. For cancelled images, the returned error will be AVErrorOperationCancelled.

§Safety

handler block must be sendable.

Source

pub unsafe fn cancelAllCGImageGeneration(&self)

Cancels all outstanding image generation requests.

Calls the handler block with AVAssetImageGeneratorCancelled for each image time in every previous invocation of -generateCGImagesAsynchronouslyForTimes:completionHandler: for which images have not yet been supplied.

Methods from Deref<Target = NSObject>§

Source

pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !

Handle messages the object doesn’t recognize.

See Apple’s documentation for details.

Methods from Deref<Target = AnyObject>§

Source

pub fn class(&self) -> &'static AnyClass

Dynamically find the class of this object.

§Panics

May panic if the object is invalid (which may be the case for objects returned from unavailable init/new methods).

§Example

Check that an instance of NSObject has the precise class NSObject.

use objc2::ClassType;
use objc2::runtime::NSObject;

let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());
Source

pub unsafe fn get_ivar<T>(&self, name: &str) -> &T
where T: Encode,

👎Deprecated: this is difficult to use correctly, use Ivar::load instead.

Use Ivar::load instead.

§Safety

The object must have an instance variable with the given name, and it must be of type T.

See Ivar::load_ptr for details surrounding this.

Source

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

Attempt to downcast the object to a class of type T.

This is the reference-variant. Use Retained::downcast if you want to convert a retained object to another type.

§Mutable classes

Some classes have immutable and mutable variants, such as NSString and NSMutableString.

When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.

So using this method to convert a NSString to a NSMutableString, while not unsound, is generally frowned upon unless you created the string yourself, or the API explicitly documents the string to be mutable.

See Apple’s documentation on mutability and on isKindOfClass: for more details.

§Generic classes

Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.

You can, however, safely downcast to generic collections where all the type-parameters are AnyObject.

§Panics

This works internally by calling isKindOfClass:. That means that the object must have the instance method of that name, and an exception will be thrown (if CoreFoundation is linked) or the process will abort if that is not the case. In the vast majority of cases, you don’t need to worry about this, since both root objects NSObject and NSProxy implement this method.

§Examples

Cast an NSString back and forth from NSObject.

use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};

let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();

Try (and fail) to cast an NSObject to an NSString.

use objc2_foundation::{NSObject, NSString};

let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());

Try to cast to an array of strings.

use objc2_foundation::{NSArray, NSObject, NSString};

let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();

This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.

Downcast when processing each element instead.

use objc2_foundation::{NSArray, NSObject, NSString};

let arr = NSArray::from_retained_slice(&[NSObject::new()]);

for elem in arr {
    if let Some(data) = elem.downcast_ref::<NSString>() {
        // handle `data`
    }
}

Trait Implementations§

Source§

impl AsRef<AVAssetImageGenerator> for AVAssetImageGenerator

Source§

fn as_ref(&self) -> &Self

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

impl AsRef<AnyObject> for AVAssetImageGenerator

Source§

fn as_ref(&self) -> &AnyObject

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

impl AsRef<NSObject> for AVAssetImageGenerator

Source§

fn as_ref(&self) -> &NSObject

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

impl Borrow<AnyObject> for AVAssetImageGenerator

Source§

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSObject> for AVAssetImageGenerator

Source§

fn borrow(&self) -> &NSObject

Immutably borrows from an owned value. Read more
Source§

impl ClassType for AVAssetImageGenerator

Source§

const NAME: &'static str = "AVAssetImageGenerator"

The name of the Objective-C class that this type represents. Read more
Source§

type Super = NSObject

The superclass of this class. Read more
Source§

type ThreadKind = <<AVAssetImageGenerator as ClassType>::Super as ClassType>::ThreadKind

Whether the type can be used from any thread, or from only the main thread. Read more
Source§

fn class() -> &'static AnyClass

Get a reference to the Objective-C class that this type represents. Read more
Source§

fn as_super(&self) -> &Self::Super

Get an immutable reference to the superclass.
Source§

impl Debug for AVAssetImageGenerator

Source§

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

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

impl Deref for AVAssetImageGenerator

Source§

type Target = NSObject

The resulting type after dereferencing.
Source§

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

Dereferences the value.
Source§

impl Hash for AVAssetImageGenerator

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 AVAssetImageGenerator

Source§

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

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

impl NSObjectProtocol for AVAssetImageGenerator

Source§

fn isEqual(&self, other: Option<&AnyObject>) -> bool
where Self: Sized + Message,

Check whether the object is equal to an arbitrary other object. Read more
Source§

fn hash(&self) -> usize
where Self: Sized + Message,

An integer that can be used as a table address in a hash table structure. Read more
Source§

fn isKindOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of the class, or one of its subclasses. Read more
Source§

fn is_kind_of<T>(&self) -> bool
where T: ClassType, Self: Sized + Message,

👎Deprecated: use isKindOfClass directly, or cast your objects with AnyObject::downcast_ref
Check if the object is an instance of the class type, or one of its subclasses. Read more
Source§

fn isMemberOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of a specific class, without checking subclasses. Read more
Source§

fn respondsToSelector(&self, aSelector: Sel) -> bool
where Self: Sized + Message,

Check whether the object implements or inherits a method with the given selector. Read more
Source§

fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
where Self: Sized + Message,

Check whether the object conforms to a given protocol. Read more
Source§

fn description(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object. Read more
Source§

fn debugDescription(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object to use when debugging. Read more
Source§

fn isProxy(&self) -> bool
where Self: Sized + Message,

Check whether the receiver is a subclass of the NSProxy root class instead of the usual NSObject. Read more
Source§

fn retainCount(&self) -> usize
where Self: Sized + Message,

The reference count of the object. Read more
Source§

impl PartialEq for AVAssetImageGenerator

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 AVAssetImageGenerator

Source§

const ENCODING_REF: Encoding = <NSObject as ::objc2::RefEncode>::ENCODING_REF

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

impl DowncastTarget for AVAssetImageGenerator

Source§

impl Eq for AVAssetImageGenerator

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<'a, T> AnyThread for T
where T: ClassType<ThreadKind = dyn AnyThread + 'a> + ?Sized,

Source§

fn alloc() -> Allocated<Self>
where Self: Sized + ClassType,

Allocate a new instance of the class. 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,