mod internal;
pub mod advanced;
pub mod audio;
pub mod captured_elements;
pub mod captured_frames;
pub mod colors;
pub mod dimensions;
pub mod pixel_format;
pub mod stream_properties;
pub use advanced::SCPresenterOverlayAlertSetting;
pub use audio::{AudioChannelCount, AudioSampleRate};
pub use internal::SCStreamConfiguration;
pub use pixel_format::PixelFormat;
pub use stream_properties::SCCaptureDynamicRange;
#[repr(i32)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
#[cfg(feature = "macos_14_0")]
pub enum SCCaptureResolutionType {
#[default]
Automatic = 0,
Best = 1,
Nominal = 2,
}
#[cfg(feature = "macos_14_0")]
impl std::fmt::Display for SCCaptureResolutionType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Automatic => write!(f, "Automatic"),
Self::Best => write!(f, "Best"),
Self::Nominal => write!(f, "Nominal"),
}
}
}
impl Default for SCStreamConfiguration {
fn default() -> Self {
Self::internal_init()
}
}
#[repr(i32)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg(feature = "macos_15_0")]
pub enum SCStreamConfigurationPreset {
CaptureHDRStreamLocalDisplay = 0,
CaptureHDRStreamCanonicalDisplay = 1,
CaptureHDRScreenshotLocalDisplay = 2,
CaptureHDRScreenshotCanonicalDisplay = 3,
CaptureHDRRecordingPreservedSDRHDR10 = 4,
}
impl SCStreamConfiguration {
#[must_use]
pub fn new() -> Self {
Self::default()
}
#[cfg(feature = "macos_15_0")]
#[must_use]
pub fn from_preset(preset: SCStreamConfigurationPreset) -> Self {
unsafe {
let ptr = crate::ffi::sc_stream_configuration_create_with_preset(preset as i32);
Self::from_ptr(ptr)
}
}
#[cfg(feature = "macos_15_0")]
pub(crate) unsafe fn from_ptr(ptr: *const std::ffi::c_void) -> Self {
Self(ptr)
}
}