Struct AVSampleBufferDisplayLayer

Source
#[repr(C)]
pub struct AVSampleBufferDisplayLayer { /* private fields */ }
Available on crate feature AVSampleBufferDisplayLayer and crate feature objc2-quartz-core and non-watchOS only.
Expand description

Implementations§

Source§

impl AVSampleBufferDisplayLayer

Source

pub unsafe fn controlTimebase(&self) -> Option<Retained<CMTimebase>>

Available on crate feature objc2-core-media only.

The layer’s control timebase, which governs how time stamps are interpreted.

By default, this property is NULL, in which case time stamps will be interpreted according to the host time clock (mach_absolute_time with the appropriate timescale conversion; this is the same as Core Animation’s CACurrentMediaTime). With no control timebase, once frames are enqueued, it is not possible to adjust exactly when they are displayed.

If a non-NULL control timebase is set, it will be used to interpret time stamps. You can control the timing of frame display by setting the rate and time of the control timebase. If you are synchronizing video to audio, you can use a timebase whose source clock is a CMAudioDeviceClock for the appropriate audio device to prevent drift.

Note that prior to OSX 10.10 and iOS 8.0, the control timebase could not be changed after enqueueSampleBuffer: was called. As of OSX 10.10 and iOS 8.0, the control timebase may be changed at any time.

Source

pub unsafe fn setControlTimebase(&self, control_timebase: Option<&CMTimebase>)

Available on crate feature objc2-core-media only.

Setter for controlTimebase.

Source

pub unsafe fn videoGravity(&self) -> Retained<AVLayerVideoGravity>

Available on crate feature AVAnimation only.

A string defining how the video is displayed within an AVSampleBufferDisplayLayer bounds rect.

Options are AVLayerVideoGravityResizeAspect, AVLayerVideoGravityResizeAspectFill and AVLayerVideoGravityResize. AVLayerVideoGravityResizeAspect is default. See <AVFoundation /AVAnimation.h> for a description of these options.

Source

pub unsafe fn setVideoGravity(&self, video_gravity: &AVLayerVideoGravity)

Available on crate feature AVAnimation only.

Setter for videoGravity.

Source

pub unsafe fn isReadyForDisplay(&self) -> bool

Boolean indicating that the first video frame has been made ready for display.

Use this property as an indicator of when best to show or animate-in an AVSampleBufferDisplayLayer into view. An AVSampleBufferDisplayLayer may be displayed, or made visible, while this property is NO, however the layer will not have any user-visible content until the value becomes YES. Note that if an animation is added to an AVSampleBufferDisplayLayer before it becomes readyForDisplay the video image displayed inside might not animate with the receiver. readyForDisplay will change to NO when the layer can no longer display frames. readyForDisplay will be YES when the first video frame has been made ready for display. This property is not key-value observable. AVSampleBufferDisplayLayerReadyForDisplayDidChangeNotification is posted when this value changes.

Source§

impl AVSampleBufferDisplayLayer

Methods declared on superclass CALayer.

Source

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

Layer creation and initialization. *

Source

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

Source

pub unsafe fn initWithLayer( this: Allocated<Self>, layer: &AnyObject, ) -> Retained<Self>

Source§

impl AVSampleBufferDisplayLayer

Methods declared on superclass NSObject.

Source

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

Source§

impl AVSampleBufferDisplayLayer

AVSampleBufferDisplayLayerQueueManagement.

Source

pub unsafe fn timebase(&self) -> Retained<CMTimebase>

👎Deprecated: Use sampleBufferRenderer’s timebase instead
Available on crate feature objc2-core-media only.

The renderer’s timebase, which governs how time stamps are interpreted.

The timebase is used to interpret time stamps.

The timebase is read-only. Use the AVSampleBufferRenderSynchronizer to set the rate or time.

Source

pub unsafe fn status(&self) -> AVQueuedSampleBufferRenderingStatus

👎Deprecated: Use sampleBufferRenderer’s status instead
Available on crate feature AVQueuedSampleBufferRendering only.

The ability of the display layer to be used for enqueuing sample buffers.

The value of this property is an AVQueuedSampleBufferRenderingStatus that indicates whether the receiver can be used for enqueuing and rendering sample buffers. When the value of this property is AVQueuedSampleBufferRenderingStatusFailed, clients can check the value of the error property to determine the failure. To resume rendering sample buffers using the display layer after a failure, clients must first reset the status to AVQueuedSampleBufferRenderingStatusUnknown. This can be achieved by invoking -flush on the display layer.

This property is key value observable.

Source

pub unsafe fn error(&self) -> Option<Retained<NSError>>

👎Deprecated: Use sampleBufferRenderer’s error instead

If the display layer’s status is AVQueuedSampleBufferRenderingStatusFailed, this describes the error that caused the failure.

The value of this property is an NSError that describes what caused the display layer to no longer be able to enqueue sample buffers. If the status is not AVQueuedSampleBufferRenderingStatusFailed, the value of this property is nil.

Source

pub unsafe fn enqueueSampleBuffer(&self, sample_buffer: &CMSampleBuffer)

👎Deprecated: Use sampleBufferRenderer’s enqueueSampleBuffer: instead
Available on crate feature objc2-core-media only.

Sends a sample buffer for display.

If sampleBuffer has the kCMSampleAttachmentKey_DoNotDisplay attachment set to kCFBooleanTrue, the frame will be decoded but not displayed. Otherwise, if sampleBuffer has the kCMSampleAttachmentKey_DisplayImmediately attachment set to kCFBooleanTrue, the decoded image will be displayed as soon as possible, replacing all previously enqueued images regardless of their timestamps. Otherwise, the decoded image will be displayed at sampleBuffer’s output presentation timestamp, as interpreted by the control timebase (or the mach_absolute_time timeline if there is no control timebase).

To schedule the removal of previous images at a specific timestamp, enqueue a marker sample buffer containing no samples, with the kCMSampleBufferAttachmentKey_EmptyMedia attachment set to kCFBooleanTrue.

IMPORTANT NOTE: attachments with the kCMSampleAttachmentKey_ prefix must be set via CMSampleBufferGetSampleAttachmentsArray and CFDictionarySetValue. Attachments with the kCMSampleBufferAttachmentKey_ prefix must be set via CMSetAttachment.

IMPORTANT NOTE: When using CMSampleBuffers that wrap CVPixelBuffer, it is important that such CVPixelBuffers be IOSurface-backed. CoreVideo allocates IOSurface-backed CVPixelBuffers when the pixel buffer attribute dictionary passed to CVPixelBufferPoolCreate contains an entry with key kCVPixelBufferIOSurfacePropertiesKey and value being a dictionary (which can be an empty dictionary).

The combination of either a non-NULL controlTimebase or an AVSampleBufferRenderSynchronizer with the use of kCMSampleAttachmentKey_DisplayImmediately as an attachment to the CMSampleBuffers that are enqueued for display is not recommended.

Source

pub unsafe fn flush(&self)

👎Deprecated: Use sampleBufferRenderer’s flush instead

Instructs the layer to discard pending enqueued sample buffers.

It is not possible to determine which sample buffers have been decoded, so the next frame passed to enqueueSampleBuffer: should be an IDR frame (also known as a key frame or sync sample).

Source

pub unsafe fn flushAndRemoveImage(&self)

👎Deprecated: Use sampleBufferRenderer’s flushWithRemovalOfDisplayedImage:completionHandler: instead

Instructs the layer to discard pending enqueued sample buffers and remove any currently displayed image.

It is not possible to determine which sample buffers have been decoded, so the next frame passed to enqueueSampleBuffer: should be an IDR frame (also known as a key frame or sync sample).

Source

pub unsafe fn requiresFlushToResumeDecoding(&self) -> bool

👎Deprecated: Use sampleBufferRenderer’s requiresFlushToResumeDecoding instead

Indicates that the receiver is in a state where it requires a call to -flush to continue decoding frames.

When the application enters a state where use of video decoder resources is not permissible, the value of this property changes to YES along with the display layer’s status changing to AVQueuedSampleBufferRenderingStatusFailed. To resume rendering sample buffers using the display layer after this property’s value is YES, clients must first reset the display layer’s status to AVQueuedSampleBufferRenderingStatusUnknown. This can be achieved by invoking -flush on the display layer. Clients can track changes to this property via AVSampleBufferDisplayLayerRequiresFlushToResumeDecodingDidChangeNotification. This property is not key value observable.

Source

pub unsafe fn isReadyForMoreMediaData(&self) -> bool

👎Deprecated: Use sampleBufferRenderer’s readyForMoreMediaData instead

Indicates the readiness of the layer to accept more sample buffers.

AVSampleBufferDisplayLayer keeps track of the occupancy levels of its internal queues for the benefit of clients that enqueue sample buffers from non-real-time sources – i.e., clients that can supply sample buffers faster than they are consumed, and so need to decide when to hold back.

Clients enqueueing sample buffers from non-real-time sources may hold off from generating or obtaining more sample buffers to enqueue when the value of readyForMoreMediaData is NO.

It is safe to call enqueueSampleBuffer: when readyForMoreMediaData is NO, but it is a bad idea to enqueue sample buffers without bound.

To help with control of the non-real-time supply of sample buffers, such clients can use -requestMediaDataWhenReadyOnQueue:usingBlock in order to specify a block that the layer should invoke whenever it’s ready for sample buffers to be appended.

The value of readyForMoreMediaData will often change from NO to YES asynchronously, as previously supplied sample buffers are decoded and displayed.

This property is not key value observable.

Source

pub unsafe fn stopRequestingMediaData(&self)

👎Deprecated: Use sampleBufferRenderer’s stopRequestingMediaData instead

Cancels any current requestMediaDataWhenReadyOnQueue:usingBlock: call.

This method may be called from outside the block or from within the block.

Source

pub unsafe fn hasSufficientMediaDataForReliablePlaybackStart(&self) -> bool

👎Deprecated: Use sampleBufferRenderer’s hasSufficientMediaDataForReliablePlaybackStart instead

Indicates whether the enqueued media data meets the renderer’s preroll level.

Clients should fetch the value of this property to learn if the renderer has had enough media data enqueued to start playback reliably. Starting playback when this property is NO may prevent smooth playback following an immediate start.

Source§

impl AVSampleBufferDisplayLayer

AVSampleBufferDisplayLayerImageProtection.

Source

pub unsafe fn preventsCapture(&self) -> bool

Indicates that image data should be protected from capture.

Source

pub unsafe fn setPreventsCapture(&self, prevents_capture: bool)

Setter for preventsCapture.

Source§

impl AVSampleBufferDisplayLayer

AVSampleBufferDisplayLayerVideoDisplaySleepPrevention.

Source

pub unsafe fn preventsDisplaySleepDuringVideoPlayback(&self) -> bool

Indicates whether video playback prevents display and device sleep.

Default is YES on iOS, tvOS and in Mac Catalyst apps. Default is NO on macOS. Setting this property to NO does not force the display to sleep, it simply stops preventing display sleep. Other apps or frameworks within your app may still be preventing display sleep for various reasons. Note: If sample buffers are being enqueued for playback at the user’s request, you should ensure that the value of this property is set to YES. If video is not being displayed as part of the user’s primary focus, you should ensure that the value of this property is set to NO.

Source

pub unsafe fn setPreventsDisplaySleepDuringVideoPlayback( &self, prevents_display_sleep_during_video_playback: bool, )

Source§

impl AVSampleBufferDisplayLayer

AVSampleBufferDisplayLayerAutomaticBackgroundPrevention.

Source

pub unsafe fn preventsAutomaticBackgroundingDuringVideoPlayback(&self) -> bool

Indicates whether video playback prevents the app from automatically getting backgrounded.

Default is YES. Setting this property to YES prevents an application that is playing video from automatically getting backgrounded. This property does not prevent the user from backgrounding the application. Note: If sample buffers are being enqueued for playback at the user’s request, you should ensure that the value of this property is set to YES. If video is not being displayed as part of the user’s primary focus, you should ensure that the value of this property is set to NO.

Source

pub unsafe fn setPreventsAutomaticBackgroundingDuringVideoPlayback( &self, prevents_automatic_backgrounding_during_video_playback: bool, )

Source§

impl AVSampleBufferDisplayLayer

ProtectedContent.

Source

pub unsafe fn outputObscuredDueToInsufficientExternalProtection(&self) -> bool

Whether or not decoded output is being obscured due to insufficient external protection.

The value of this property indicates whether the layer is purposefully obscuring its visual output because the requirement for an external protection mechanism is not met by the current device configuration. The change of this property can be observed through AVSampleBufferDisplayLayerOutputObscuredDueToInsufficientExternalProtectionDidChangeNotification

It is highly recommended that clients whose content requires external protection observe this property and set the playback rate to zero and display an appropriate user interface when the value changes to YES.

Note that the value of this property is dependent on the external protection requirements of the media being displayed by the layer. These requirements are inherent to the content itself and cannot be externally specified. If the content does not require external protection, the value of this property will be NO.

Source§

impl AVSampleBufferDisplayLayer

AVSampleBufferDisplayLayerRenderer.

Source

pub unsafe fn sampleBufferRenderer( &self, ) -> Retained<AVSampleBufferVideoRenderer>

Available on crate feature AVSampleBufferVideoRenderer only.

An AVSampleBufferVideoRenderer instance that allows enqueuing sample buffers for rendering.

Although AVSampleBufferDisplayLayer conforms to the AVQueuedSampleBufferRendering protocol, the sampleBufferRenderer should be used to enqueue sample buffers. sampleBufferRenderer allows the client to safely enqueue sample buffers from a background thread. NOTE: Do not use AVSampleBufferDisplayLayer’s AVQueuedSampleBufferRendering functions when using sampleBufferRenderer.

Methods from Deref<Target = CALayer>§

Source

pub unsafe fn presentationLayer(&self) -> Option<Retained<CALayer>>

Source

pub unsafe fn modelLayer(&self) -> Retained<CALayer>

Source

pub unsafe fn shouldArchiveValueForKey(&self, key: &NSString) -> bool

Source

pub fn isHidden(&self) -> bool

Source

pub fn setHidden(&self, hidden: bool)

Setter for isHidden.

Source

pub fn isDoubleSided(&self) -> bool

Source

pub fn setDoubleSided(&self, double_sided: bool)

Setter for isDoubleSided.

Source

pub fn isGeometryFlipped(&self) -> bool

Source

pub fn setGeometryFlipped(&self, geometry_flipped: bool)

Setter for isGeometryFlipped.

Source

pub fn contentsAreFlipped(&self) -> bool

Source

pub fn superlayer(&self) -> Option<Retained<CALayer>>

Source

pub fn removeFromSuperlayer(&self)

Source

pub unsafe fn sublayers(&self) -> Option<Retained<NSArray<CALayer>>>

Source

pub unsafe fn setSublayers(&self, sublayers: Option<&NSArray<CALayer>>)

Setter for sublayers.

Source

pub fn addSublayer(&self, layer: &CALayer)

Source

pub fn insertSublayer_atIndex(&self, layer: &CALayer, idx: u32)

Source

pub fn insertSublayer_below(&self, layer: &CALayer, sibling: Option<&CALayer>)

Source

pub fn insertSublayer_above(&self, layer: &CALayer, sibling: Option<&CALayer>)

Source

pub unsafe fn replaceSublayer_with( &self, old_layer: &CALayer, new_layer: &CALayer, )

Source

pub fn mask(&self) -> Option<Retained<CALayer>>

Source

pub unsafe fn setMask(&self, mask: Option<&CALayer>)

Setter for mask.

Source

pub fn masksToBounds(&self) -> bool

Source

pub fn setMasksToBounds(&self, masks_to_bounds: bool)

Setter for masksToBounds.

Source

pub unsafe fn contents(&self) -> Option<Retained<AnyObject>>

Layer content properties and methods. *

Source

pub unsafe fn setContents(&self, contents: Option<&AnyObject>)

Setter for contents.

Source

pub fn contentsGravity(&self) -> Retained<NSString>

Source

pub fn setContentsGravity(&self, contents_gravity: &NSString)

Setter for contentsGravity.

Source

pub fn contentsFormat(&self) -> Retained<NSString>

Source

pub fn setContentsFormat(&self, contents_format: &NSString)

Setter for contentsFormat.

Source

pub unsafe fn wantsExtendedDynamicRangeContent(&self) -> bool

Source

pub unsafe fn setWantsExtendedDynamicRangeContent( &self, wants_extended_dynamic_range_content: bool, )

Source

pub unsafe fn toneMapMode(&self) -> Retained<NSString>

Source

pub unsafe fn setToneMapMode(&self, tone_map_mode: &NSString)

Setter for toneMapMode.

Source

pub unsafe fn wantsDynamicContentScaling(&self) -> bool

Source

pub unsafe fn setWantsDynamicContentScaling( &self, wants_dynamic_content_scaling: bool, )

Source

pub fn minificationFilter(&self) -> Retained<NSString>

Source

pub fn setMinificationFilter(&self, minification_filter: &NSString)

Setter for minificationFilter.

Source

pub fn magnificationFilter(&self) -> Retained<NSString>

Source

pub fn setMagnificationFilter(&self, magnification_filter: &NSString)

Setter for magnificationFilter.

Source

pub fn minificationFilterBias(&self) -> f32

Source

pub fn setMinificationFilterBias(&self, minification_filter_bias: f32)

Source

pub fn isOpaque(&self) -> bool

Source

pub fn setOpaque(&self, opaque: bool)

Setter for isOpaque.

Source

pub fn display(&self)

Source

pub fn setNeedsDisplay(&self)

Source

pub fn needsDisplay(&self) -> bool

Source

pub fn displayIfNeeded(&self)

Source

pub fn needsDisplayOnBoundsChange(&self) -> bool

Source

pub fn setNeedsDisplayOnBoundsChange( &self, needs_display_on_bounds_change: bool, )

Source

pub fn drawsAsynchronously(&self) -> bool

Source

pub fn setDrawsAsynchronously(&self, draws_asynchronously: bool)

Setter for drawsAsynchronously.

Source

pub fn edgeAntialiasingMask(&self) -> CAEdgeAntialiasingMask

Source

pub fn setEdgeAntialiasingMask( &self, edge_antialiasing_mask: CAEdgeAntialiasingMask, )

Source

pub fn allowsEdgeAntialiasing(&self) -> bool

Source

pub fn setAllowsEdgeAntialiasing(&self, allows_edge_antialiasing: bool)

Source

pub fn maskedCorners(&self) -> CACornerMask

Source

pub fn setMaskedCorners(&self, masked_corners: CACornerMask)

Setter for maskedCorners.

Source

pub fn cornerCurve(&self) -> Retained<NSString>

Source

pub fn setCornerCurve(&self, corner_curve: &NSString)

Setter for cornerCurve.

Source

pub fn opacity(&self) -> f32

Source

pub fn setOpacity(&self, opacity: f32)

Setter for opacity.

Source

pub fn allowsGroupOpacity(&self) -> bool

Source

pub fn setAllowsGroupOpacity(&self, allows_group_opacity: bool)

Setter for allowsGroupOpacity.

Source

pub unsafe fn compositingFilter(&self) -> Option<Retained<AnyObject>>

Source

pub unsafe fn setCompositingFilter( &self, compositing_filter: Option<&AnyObject>, )

Setter for compositingFilter.

Source

pub unsafe fn filters(&self) -> Option<Retained<NSArray>>

Source

pub unsafe fn setFilters(&self, filters: Option<&NSArray>)

Setter for filters.

Source

pub unsafe fn backgroundFilters(&self) -> Option<Retained<NSArray>>

Source

pub unsafe fn setBackgroundFilters(&self, background_filters: Option<&NSArray>)

Setter for backgroundFilters.

Source

pub fn shouldRasterize(&self) -> bool

Source

pub fn setShouldRasterize(&self, should_rasterize: bool)

Setter for shouldRasterize.

Source

pub fn shadowOpacity(&self) -> f32

Source

pub fn setShadowOpacity(&self, shadow_opacity: f32)

Setter for shadowOpacity.

Source

pub fn autoresizingMask(&self) -> CAAutoresizingMask

Layout methods. *

Source

pub fn setAutoresizingMask(&self, autoresizing_mask: CAAutoresizingMask)

Setter for autoresizingMask.

Source

pub fn layoutManager( &self, ) -> Option<Retained<ProtocolObject<dyn CALayoutManager>>>

Source

pub fn setLayoutManager( &self, layout_manager: Option<&ProtocolObject<dyn CALayoutManager>>, )

Setter for layoutManager.

Source

pub fn setNeedsLayout(&self)

Source

pub fn needsLayout(&self) -> bool

Source

pub fn layoutIfNeeded(&self)

Source

pub fn layoutSublayers(&self)

Source

pub fn actionForKey( &self, event: &NSString, ) -> Option<Retained<ProtocolObject<dyn CAAction>>>

Source

pub fn actions( &self, ) -> Option<Retained<NSDictionary<NSString, ProtocolObject<dyn CAAction>>>>

Source

pub fn setActions( &self, actions: Option<&NSDictionary<NSString, ProtocolObject<dyn CAAction>>>, )

Setter for actions.

Source

pub fn removeAllAnimations(&self)

Source

pub fn removeAnimationForKey(&self, key: &NSString)

Source

pub fn animationKeys(&self) -> Option<Retained<NSArray<NSString>>>

Source

pub fn name(&self) -> Option<Retained<NSString>>

Miscellaneous properties. *

Source

pub fn setName(&self, name: Option<&NSString>)

Setter for name.

Source

pub fn delegate(&self) -> Option<Retained<ProtocolObject<dyn CALayerDelegate>>>

Source

pub fn setDelegate( &self, delegate: Option<&ProtocolObject<dyn CALayerDelegate>>, )

This is a weak property. Setter for delegate.

Source

pub unsafe fn style(&self) -> Option<Retained<NSDictionary>>

Source

pub unsafe fn setStyle(&self, style: Option<&NSDictionary>)

Setter for style.

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.

§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 AVQueuedSampleBufferRendering for AVSampleBufferDisplayLayer

Available on crate feature AVQueuedSampleBufferRendering only.
Source§

unsafe fn timebase(&self) -> Retained<CMTimebase>
where Self: Sized + Message,

Available on crate feature objc2-core-media only.
The renderer’s timebase, which governs how time stamps are interpreted. Read more
Source§

unsafe fn enqueueSampleBuffer(&self, sample_buffer: &CMSampleBuffer)
where Self: Sized + Message,

Available on crate feature objc2-core-media only.
Sends a sample buffer in order to render its contents. Read more
Source§

unsafe fn flush(&self)
where Self: Sized + Message,

Instructs the receiver to discard pending enqueued sample buffers. Read more
Source§

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

Indicates the readiness of the receiver to accept more sample buffers. Read more
Source§

unsafe fn stopRequestingMediaData(&self)
where Self: Sized + Message,

Cancels any current requestMediaDataWhenReadyOnQueue:usingBlock: call. Read more
Source§

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

Indicates whether the enqueued media data meets the renderer’s preroll level. Read more
Source§

impl AsRef<AVSampleBufferDisplayLayer> for AVSampleBufferDisplayLayer

Source§

fn as_ref(&self) -> &Self

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

impl AsRef<AnyObject> for AVSampleBufferDisplayLayer

Source§

fn as_ref(&self) -> &AnyObject

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

impl AsRef<CALayer> for AVSampleBufferDisplayLayer

Source§

fn as_ref(&self) -> &CALayer

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

impl AsRef<NSObject> for AVSampleBufferDisplayLayer

Source§

fn as_ref(&self) -> &NSObject

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

impl Borrow<AnyObject> for AVSampleBufferDisplayLayer

Source§

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<CALayer> for AVSampleBufferDisplayLayer

Source§

fn borrow(&self) -> &CALayer

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSObject> for AVSampleBufferDisplayLayer

Source§

fn borrow(&self) -> &NSObject

Immutably borrows from an owned value. Read more
Source§

impl CAMediaTiming for AVSampleBufferDisplayLayer

Source§

unsafe fn speed(&self) -> f32
where Self: Sized + Message,

Source§

unsafe fn setSpeed(&self, speed: f32)
where Self: Sized + Message,

Setter for speed.
Source§

unsafe fn repeatCount(&self) -> f32
where Self: Sized + Message,

Source§

unsafe fn setRepeatCount(&self, repeat_count: f32)
where Self: Sized + Message,

Setter for repeatCount.
Source§

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

Source§

unsafe fn setAutoreverses(&self, autoreverses: bool)
where Self: Sized + Message,

Setter for autoreverses.
Source§

unsafe fn fillMode(&self) -> Retained<NSString>
where Self: Sized + Message,

Source§

unsafe fn setFillMode(&self, fill_mode: &NSString)
where Self: Sized + Message,

Setter for fillMode.
Source§

impl ClassType for AVSampleBufferDisplayLayer

Source§

const NAME: &'static str = "AVSampleBufferDisplayLayer"

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

type Super = CALayer

The superclass of this class. Read more
Source§

type ThreadKind = <<AVSampleBufferDisplayLayer 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 AVSampleBufferDisplayLayer

Source§

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

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

impl Deref for AVSampleBufferDisplayLayer

Source§

type Target = CALayer

The resulting type after dereferencing.
Source§

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

Dereferences the value.
Source§

impl Hash for AVSampleBufferDisplayLayer

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 AVSampleBufferDisplayLayer

Source§

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

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

impl NSCoding for AVSampleBufferDisplayLayer

Source§

unsafe fn encodeWithCoder(&self, coder: &NSCoder)
where Self: Sized + Message,

Available on crate feature NSCoder only.
Source§

unsafe fn initWithCoder( this: Allocated<Self>, coder: &NSCoder, ) -> Option<Retained<Self>>
where Self: Sized + Message,

Available on crate feature NSCoder only.
Source§

impl NSObjectProtocol for AVSampleBufferDisplayLayer

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 NSSecureCoding for AVSampleBufferDisplayLayer

Source§

unsafe fn supportsSecureCoding() -> bool
where Self: Sized + ClassType,

Source§

impl PartialEq for AVSampleBufferDisplayLayer

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 AVSampleBufferDisplayLayer

Source§

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

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

impl DowncastTarget for AVSampleBufferDisplayLayer

Source§

impl Eq for AVSampleBufferDisplayLayer

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<'a, T> AllocAnyThread for T
where T: ClassType<ThreadKind = dyn AllocAnyThread + 'a> + ?Sized,

Source§

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

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