pub struct SCStreamConfiguration { /* private fields */ }SCStream only.Expand description
SCStreamConfiguration
SCStreamConfiguration is an object that encapsulates the SCStream properties such as output width, height, pixelformat and others.
See also Apple’s documentation
Implementations§
Source§impl SCStreamConfiguration
impl SCStreamConfiguration
Sourcepub unsafe fn width(&self) -> usize
pub unsafe fn width(&self) -> usize
SCStreamProperty for output width as measured in pixels. Default is set to 1920.
Sourcepub unsafe fn height(&self) -> usize
pub unsafe fn height(&self) -> usize
SCStreamProperty for output height as measured in pixels. Default is set to 1080.
Sourcepub unsafe fn minimumFrameInterval(&self) -> CMTime
Available on crate feature objc2-core-media only.
pub unsafe fn minimumFrameInterval(&self) -> CMTime
objc2-core-media only.SCStreamProperty that specifies the desired minimum time in seconds between frame updates, allowing you to throttle the rate at which updates are received. The default value is 1/60, meaning that updates are coming in at or up to 60fps. Set this to kCMTimeZero to capture at display’s native refresh rate.
Sourcepub unsafe fn setMinimumFrameInterval(&self, minimum_frame_interval: CMTime)
Available on crate feature objc2-core-media only.
pub unsafe fn setMinimumFrameInterval(&self, minimum_frame_interval: CMTime)
objc2-core-media only.Setter for minimumFrameInterval.
Sourcepub unsafe fn pixelFormat(&self) -> u32
pub unsafe fn pixelFormat(&self) -> u32
SCStreamProperty for output pixel format. Supported pixel formats are: ‘BGRA’: Packed Little Endian ARGB8888 ‘l10r’: Packed Little Endian ARGB2101010 ‘420v’: 2-plane “video” range YCbCr 4:2:0 ‘420f’: 2-plane “full” range YCbCr 4:2:0 ‘xf44’: 2 plane “full” range YCbCr10 4:4:4 ‘RGhA’: 64 bit RGBA IEEE half-precision float, 16-bit little-endian See https://developer.apple.com/documentation/coregraphics/1455170-cgdisplaystreamcreate
Sourcepub unsafe fn setPixelFormat(&self, pixel_format: u32)
pub unsafe fn setPixelFormat(&self, pixel_format: u32)
Setter for pixelFormat.
Sourcepub unsafe fn scalesToFit(&self) -> bool
pub unsafe fn scalesToFit(&self) -> bool
SCStreamProperty for output to be always scaled to fit into the provided width and height. For use for independent window capture. When true, the output scales up and down. When false, the output only scales down.
Sourcepub unsafe fn setScalesToFit(&self, scales_to_fit: bool)
pub unsafe fn setScalesToFit(&self, scales_to_fit: bool)
Setter for scalesToFit.
Sourcepub unsafe fn preservesAspectRatio(&self) -> bool
pub unsafe fn preservesAspectRatio(&self) -> bool
SCStreamProperty that specifies whether the stream preserves the aspect ratio of the source pixel data. By default the aspect ratio is preserved.
Sourcepub unsafe fn setPreservesAspectRatio(&self, preserves_aspect_ratio: bool)
pub unsafe fn setPreservesAspectRatio(&self, preserves_aspect_ratio: bool)
Setter for preservesAspectRatio.
Sourcepub unsafe fn streamName(&self) -> Option<Retained<NSString>>
pub unsafe fn streamName(&self) -> Option<Retained<NSString>>
SCStreamProperty the name of the stream
Sourcepub unsafe fn setStreamName(&self, stream_name: Option<&NSString>)
pub unsafe fn setStreamName(&self, stream_name: Option<&NSString>)
Setter for streamName.
Sourcepub unsafe fn showsCursor(&self) -> bool
pub unsafe fn showsCursor(&self) -> bool
SCStreamProperty that specifies whether the cursor should appear in the stream. By default the cursor is visible.
Sourcepub unsafe fn setShowsCursor(&self, shows_cursor: bool)
pub unsafe fn setShowsCursor(&self, shows_cursor: bool)
Setter for showsCursor.
Sourcepub unsafe fn showMouseClicks(&self) -> bool
pub unsafe fn showMouseClicks(&self) -> bool
SCStreamProperty that specifies whether to draw a circle around the cursor click, default is NO. This property will not be affected by showsCursor. This property currently applies when pixelFormat is set to BGRA.
Sourcepub unsafe fn setShowMouseClicks(&self, show_mouse_clicks: bool)
pub unsafe fn setShowMouseClicks(&self, show_mouse_clicks: bool)
Setter for showMouseClicks.
Sourcepub unsafe fn backgroundColor(&self) -> Retained<CGColor>
Available on crate feature objc2-core-graphics only.
pub unsafe fn backgroundColor(&self) -> Retained<CGColor>
objc2-core-graphics only.SCStreamProperty for background color. By default the background color is clear.
§Safety
This is not retained internally, you must ensure the object is still alive.
Sourcepub unsafe fn setBackgroundColor(&self, background_color: &CGColor)
Available on crate feature objc2-core-graphics only.
pub unsafe fn setBackgroundColor(&self, background_color: &CGColor)
objc2-core-graphics only.Setter for backgroundColor.
§Safety
This is unretained, you must ensure the object is kept alive while in use.
Sourcepub unsafe fn sourceRect(&self) -> CGRect
Available on crate feature objc2-core-foundation only.
pub unsafe fn sourceRect(&self) -> CGRect
objc2-core-foundation only.SCStreamProperty that specifies that the stream only samples a subset of the frame input. For display streams, if not set, then the entire display is streamed. For independent window streams, if not set, then the entire window is streamed. The rectangle is specified in points in the display’s logical coordinate system.
Sourcepub unsafe fn setSourceRect(&self, source_rect: CGRect)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setSourceRect(&self, source_rect: CGRect)
objc2-core-foundation only.Setter for sourceRect.
Sourcepub unsafe fn destinationRect(&self) -> CGRect
Available on crate feature objc2-core-foundation only.
pub unsafe fn destinationRect(&self) -> CGRect
objc2-core-foundation only.SCStreamProperty that specifies that the stream outputs the frame data into a subset of the output IOSurface object. For both display streams and independent window streams, if not set, then the entire output surface is used. The rectangle is specified in pixels in the display’s coordinate system.
Sourcepub unsafe fn setDestinationRect(&self, destination_rect: CGRect)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setDestinationRect(&self, destination_rect: CGRect)
objc2-core-foundation only.Setter for destinationRect.
Sourcepub unsafe fn queueDepth(&self) -> NSInteger
pub unsafe fn queueDepth(&self) -> NSInteger
SCStreamProperty that specifies the number of frames to keep in the queue. If not set the default value is 8 frames. Specifying more frames uses more memory, but may allow you to process frame data without stalling the display stream and should not exceed 8 frames.
Sourcepub unsafe fn setQueueDepth(&self, queue_depth: NSInteger)
pub unsafe fn setQueueDepth(&self, queue_depth: NSInteger)
Setter for queueDepth.
Sourcepub unsafe fn colorMatrix(&self) -> Retained<CFString>
Available on crate feature objc2-core-foundation only.
pub unsafe fn colorMatrix(&self) -> Retained<CFString>
objc2-core-foundation only.SCStreamProperty that specifies the YCbCr matrix applied to the output surface. The value must be one of the strings specified in https://developer.apple.com/documentation/coregraphics/quartz_display_services/display_stream_ycbcr_to_rgb_conversion_matrix_options. Should only be used if your pixel format is 420v or 420f.
§Safety
This is not retained internally, you must ensure the object is still alive.
Sourcepub unsafe fn setColorMatrix(&self, color_matrix: &CFString)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setColorMatrix(&self, color_matrix: &CFString)
objc2-core-foundation only.Setter for colorMatrix.
§Safety
This is unretained, you must ensure the object is kept alive while in use.
Sourcepub unsafe fn colorSpaceName(&self) -> Retained<CFString>
Available on crate feature objc2-core-foundation only.
pub unsafe fn colorSpaceName(&self) -> Retained<CFString>
objc2-core-foundation only.SCStreamProperty that specifies the color space of the output buffer. If not set the output buffer uses the same color space as the display. The value must be one of the strings specified in https://developer.apple.com/documentation/coregraphics/cgcolorspace/color_space_names.
§Safety
This is not retained internally, you must ensure the object is still alive.
Sourcepub unsafe fn setColorSpaceName(&self, color_space_name: &CFString)
Available on crate feature objc2-core-foundation only.
pub unsafe fn setColorSpaceName(&self, color_space_name: &CFString)
objc2-core-foundation only.Setter for colorSpaceName.
§Safety
This is unretained, you must ensure the object is kept alive while in use.
Sourcepub unsafe fn capturesAudio(&self) -> bool
pub unsafe fn capturesAudio(&self) -> bool
SCStreamProperty that specifies whether the audio will be captured. By default audio is not captured.
Sourcepub unsafe fn setCapturesAudio(&self, captures_audio: bool)
pub unsafe fn setCapturesAudio(&self, captures_audio: bool)
Setter for capturesAudio.
Sourcepub unsafe fn sampleRate(&self) -> NSInteger
pub unsafe fn sampleRate(&self) -> NSInteger
SCStreamProperty to specify the sample rate for audio. Default is set to 48000.
Sourcepub unsafe fn setSampleRate(&self, sample_rate: NSInteger)
pub unsafe fn setSampleRate(&self, sample_rate: NSInteger)
Setter for sampleRate.
Sourcepub unsafe fn channelCount(&self) -> NSInteger
pub unsafe fn channelCount(&self) -> NSInteger
SCStreamProperty to specify channel count. Default is set to two.
Sourcepub unsafe fn setChannelCount(&self, channel_count: NSInteger)
pub unsafe fn setChannelCount(&self, channel_count: NSInteger)
Setter for channelCount.
Sourcepub unsafe fn excludesCurrentProcessAudio(&self) -> bool
pub unsafe fn excludesCurrentProcessAudio(&self) -> bool
SCAudioProperty whether to exclude audio from current process. Default is set to NO.
Sourcepub unsafe fn setExcludesCurrentProcessAudio(
&self,
excludes_current_process_audio: bool,
)
pub unsafe fn setExcludesCurrentProcessAudio( &self, excludes_current_process_audio: bool, )
Setter for excludesCurrentProcessAudio.
Sourcepub unsafe fn ignoreShadowsDisplay(&self) -> bool
pub unsafe fn ignoreShadowsDisplay(&self) -> bool
SCStreamProperty to ignore framing on windows in the display sharing case (will ignore shadows).
Sourcepub unsafe fn setIgnoreShadowsDisplay(&self, ignore_shadows_display: bool)
pub unsafe fn setIgnoreShadowsDisplay(&self, ignore_shadows_display: bool)
Setter for ignoreShadowsDisplay.
Sourcepub unsafe fn ignoreShadowsSingleWindow(&self) -> bool
pub unsafe fn ignoreShadowsSingleWindow(&self) -> bool
SCStreamProperty to ignore framing on windows in the single window sharing case (will ignore shadows).
Sourcepub unsafe fn setIgnoreShadowsSingleWindow(
&self,
ignore_shadows_single_window: bool,
)
pub unsafe fn setIgnoreShadowsSingleWindow( &self, ignore_shadows_single_window: bool, )
Setter for ignoreShadowsSingleWindow.
Sourcepub unsafe fn captureResolution(&self) -> SCCaptureResolutionType
pub unsafe fn captureResolution(&self) -> SCCaptureResolutionType
captureResolution Choose between automatic, best, and nominal.
Sourcepub unsafe fn setCaptureResolution(
&self,
capture_resolution: SCCaptureResolutionType,
)
pub unsafe fn setCaptureResolution( &self, capture_resolution: SCCaptureResolutionType, )
Setter for captureResolution.
Sourcepub unsafe fn capturesShadowsOnly(&self) -> bool
pub unsafe fn capturesShadowsOnly(&self) -> bool
SCStreamProperty to capture only the shadows of windows.
Sourcepub unsafe fn setCapturesShadowsOnly(&self, captures_shadows_only: bool)
pub unsafe fn setCapturesShadowsOnly(&self, captures_shadows_only: bool)
Setter for capturesShadowsOnly.
Sourcepub unsafe fn shouldBeOpaque(&self) -> bool
pub unsafe fn shouldBeOpaque(&self) -> bool
SCStreamProperty to ensure partially transparent areas on windows are backed by a solid white color so that the resulting image is fully opaque.
Sourcepub unsafe fn setShouldBeOpaque(&self, should_be_opaque: bool)
pub unsafe fn setShouldBeOpaque(&self, should_be_opaque: bool)
Setter for shouldBeOpaque.
Sourcepub unsafe fn ignoreGlobalClipDisplay(&self) -> bool
pub unsafe fn ignoreGlobalClipDisplay(&self) -> bool
SCStreamProperty to ignore framing on windows in the display sharing case (will ignore shadows).
Sourcepub unsafe fn setIgnoreGlobalClipDisplay(
&self,
ignore_global_clip_display: bool,
)
pub unsafe fn setIgnoreGlobalClipDisplay( &self, ignore_global_clip_display: bool, )
Setter for ignoreGlobalClipDisplay.
Sourcepub unsafe fn ignoreGlobalClipSingleWindow(&self) -> bool
pub unsafe fn ignoreGlobalClipSingleWindow(&self) -> bool
SCStreamProperty to ignore global clipping when on single window share. When set to true, single window captures that are partially off the screen will not be clipped. (will ignore window placement in display context).
Sourcepub unsafe fn setIgnoreGlobalClipSingleWindow(
&self,
ignore_global_clip_single_window: bool,
)
pub unsafe fn setIgnoreGlobalClipSingleWindow( &self, ignore_global_clip_single_window: bool, )
Setter for ignoreGlobalClipSingleWindow.
Sourcepub unsafe fn presenterOverlayPrivacyAlertSetting(
&self,
) -> SCPresenterOverlayAlertSetting
pub unsafe fn presenterOverlayPrivacyAlertSetting( &self, ) -> SCPresenterOverlayAlertSetting
SCStreamProperty that informs the system if a privacy alert should be shown when using presenter overlay for a stream. Defaults to SCPresenterOverlayAlertSettingSystem;
Sourcepub unsafe fn setPresenterOverlayPrivacyAlertSetting(
&self,
presenter_overlay_privacy_alert_setting: SCPresenterOverlayAlertSetting,
)
pub unsafe fn setPresenterOverlayPrivacyAlertSetting( &self, presenter_overlay_privacy_alert_setting: SCPresenterOverlayAlertSetting, )
Setter for presenterOverlayPrivacyAlertSetting.
Sourcepub unsafe fn includeChildWindows(&self) -> bool
pub unsafe fn includeChildWindows(&self) -> bool
SCStreamProperty to show the child windows in display bound windows and applications sharing. Child windows are included by default.
Sourcepub unsafe fn setIncludeChildWindows(&self, include_child_windows: bool)
pub unsafe fn setIncludeChildWindows(&self, include_child_windows: bool)
Setter for includeChildWindows.
Sourcepub unsafe fn captureMicrophone(&self) -> bool
pub unsafe fn captureMicrophone(&self) -> bool
SCStreamProperty that specifies whether the microphone audio will be captured. By default microphone is not captured.
Sourcepub unsafe fn setCaptureMicrophone(&self, capture_microphone: bool)
pub unsafe fn setCaptureMicrophone(&self, capture_microphone: bool)
Setter for captureMicrophone.
Sourcepub unsafe fn microphoneCaptureDeviceID(&self) -> Option<Retained<NSString>>
pub unsafe fn microphoneCaptureDeviceID(&self) -> Option<Retained<NSString>>
SCStreamProperty that specifies which microphone device to capture. This deviceID is the uniqueID from AVCaptureDevice for the microphone. System Default Microphone will be used if not specified by client. For Mac Catalyst apps, the System Default Microphone will be captured.
Sourcepub unsafe fn setMicrophoneCaptureDeviceID(
&self,
microphone_capture_device_id: Option<&NSString>,
)
pub unsafe fn setMicrophoneCaptureDeviceID( &self, microphone_capture_device_id: Option<&NSString>, )
Setter for microphoneCaptureDeviceID.
Sourcepub unsafe fn captureDynamicRange(&self) -> SCCaptureDynamicRange
pub unsafe fn captureDynamicRange(&self) -> SCCaptureDynamicRange
SCStreamProperty client will choose captureDynamicRange between SCCaptureDynamicRangeSDR, SCCaptureDynamicRangeHDRLocalDisplay, SCCaptureDynamicRangeHDRCanonicalDisplay. By default, the stream is capturing with SCCaptureDynamicRangeSDR. HDR capture is only supported with Apple Silicon Mac, setting this property on Intel Mac will have no effect. HDR recording is not support yet, adding a recording output to a stream with SCCaptureDynamicRangeHDR set will fail.
Sourcepub unsafe fn setCaptureDynamicRange(
&self,
capture_dynamic_range: SCCaptureDynamicRange,
)
pub unsafe fn setCaptureDynamicRange( &self, capture_dynamic_range: SCCaptureDynamicRange, )
Setter for captureDynamicRange.
Sourcepub unsafe fn streamConfigurationWithPreset(
preset: SCStreamConfigurationPreset,
) -> Retained<Self>
pub unsafe fn streamConfigurationWithPreset( preset: SCStreamConfigurationPreset, ) -> Retained<Self>
Returns an instance of SCStreamConfiguration corresponding to the given preset
Parameter preset: The enum identifier for the desired preset
The SCStreamConfiguration of the returned object can be used as a guide for creating and configuring an SCStream. If all the suggested properties are respected in creating the SCStream, the resulting capture result will conform to the criteria implied by the preset.
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
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());Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
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.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
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<AnyObject> for SCStreamConfiguration
impl AsRef<AnyObject> for SCStreamConfiguration
Source§impl AsRef<NSObject> for SCStreamConfiguration
impl AsRef<NSObject> for SCStreamConfiguration
Source§impl Borrow<AnyObject> for SCStreamConfiguration
impl Borrow<AnyObject> for SCStreamConfiguration
Source§impl Borrow<NSObject> for SCStreamConfiguration
impl Borrow<NSObject> for SCStreamConfiguration
Source§impl ClassType for SCStreamConfiguration
impl ClassType for SCStreamConfiguration
Source§const NAME: &'static str = "SCStreamConfiguration"
const NAME: &'static str = "SCStreamConfiguration"
Source§type ThreadKind = <<SCStreamConfiguration as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<SCStreamConfiguration as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for SCStreamConfiguration
impl Debug for SCStreamConfiguration
Source§impl Deref for SCStreamConfiguration
impl Deref for SCStreamConfiguration
Source§impl Hash for SCStreamConfiguration
impl Hash for SCStreamConfiguration
Source§impl Message for SCStreamConfiguration
impl Message for SCStreamConfiguration
Source§impl NSObjectProtocol for SCStreamConfiguration
impl NSObjectProtocol for SCStreamConfiguration
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass directly, or cast your objects with AnyObject::downcast_ref