use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
#[cfg(feature = "objc2-av-foundation")]
use objc2_av_foundation::*;
#[cfg(feature = "objc2-core-foundation")]
use objc2_core_foundation::*;
#[cfg(feature = "objc2-core-media")]
use objc2_core_media::*;
use objc2_foundation::*;
use crate::*;
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct CNAssetInfo;
);
extern_conformance!(
unsafe impl NSObjectProtocol for CNAssetInfo {}
);
impl CNAssetInfo {
extern_methods!(
#[cfg(all(feature = "block2", feature = "objc2-av-foundation"))]
#[unsafe(method(checkIfCinematic:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn checkIfCinematic_completionHandler(
asset: &AVAsset,
completion_handler: &block2::DynBlock<dyn Fn(Bool)>,
);
#[cfg(all(feature = "block2", feature = "objc2-av-foundation"))]
#[unsafe(method(loadFromAsset:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn loadFromAsset_completionHandler(
asset: &AVAsset,
completion_handler: &block2::DynBlock<dyn Fn(*mut CNAssetInfo, *mut NSError)>,
);
#[cfg(feature = "objc2-av-foundation")]
#[unsafe(method(asset))]
#[unsafe(method_family = none)]
pub unsafe fn asset(&self) -> Retained<AVAsset>;
#[cfg(feature = "objc2-av-foundation")]
#[unsafe(method(allCinematicTracks))]
#[unsafe(method_family = none)]
pub unsafe fn allCinematicTracks(&self) -> Retained<NSArray<AVAssetTrack>>;
#[cfg(feature = "objc2-av-foundation")]
#[unsafe(method(cinematicVideoTrack))]
#[unsafe(method_family = none)]
pub unsafe fn cinematicVideoTrack(&self) -> Retained<AVAssetTrack>;
#[cfg(feature = "objc2-av-foundation")]
#[unsafe(method(cinematicDisparityTrack))]
#[unsafe(method_family = none)]
pub unsafe fn cinematicDisparityTrack(&self) -> Retained<AVAssetTrack>;
#[cfg(feature = "objc2-av-foundation")]
#[unsafe(method(cinematicMetadataTrack))]
#[unsafe(method_family = none)]
pub unsafe fn cinematicMetadataTrack(&self) -> Retained<AVAssetTrack>;
#[cfg(feature = "objc2-core-media")]
#[unsafe(method(timeRange))]
#[unsafe(method_family = none)]
pub unsafe fn timeRange(&self) -> CMTimeRange;
#[cfg(feature = "objc2-core-foundation")]
#[unsafe(method(naturalSize))]
#[unsafe(method_family = none)]
pub unsafe fn naturalSize(&self) -> CGSize;
#[cfg(feature = "objc2-core-foundation")]
#[unsafe(method(preferredSize))]
#[unsafe(method_family = none)]
pub unsafe fn preferredSize(&self) -> CGSize;
#[cfg(feature = "objc2-core-foundation")]
#[unsafe(method(preferredTransform))]
#[unsafe(method_family = none)]
pub unsafe fn preferredTransform(&self) -> CGAffineTransform;
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}
impl CNAssetInfo {
extern_methods!(
#[cfg(feature = "objc2-av-foundation")]
#[unsafe(method(frameTimingTrack))]
#[unsafe(method_family = none)]
pub unsafe fn frameTimingTrack(&self) -> Retained<AVAssetTrack>;
#[cfg(feature = "objc2-av-foundation")]
#[unsafe(method(videoCompositionTracks))]
#[unsafe(method_family = none)]
pub unsafe fn videoCompositionTracks(&self) -> Retained<NSArray<AVAssetTrack>>;
#[unsafe(method(videoCompositionTrackIDs))]
#[unsafe(method_family = none)]
pub unsafe fn videoCompositionTrackIDs(&self) -> Retained<NSArray<NSNumber>>;
#[unsafe(method(sampleDataTrackIDs))]
#[unsafe(method_family = none)]
pub unsafe fn sampleDataTrackIDs(&self) -> Retained<NSArray<NSNumber>>;
);
}
extern_class!(
#[unsafe(super(CNAssetInfo, NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct CNCompositionInfo;
);
extern_conformance!(
unsafe impl NSObjectProtocol for CNCompositionInfo {}
);
impl CNCompositionInfo {
extern_methods!(
#[cfg(feature = "objc2-core-media")]
#[unsafe(method(insertTimeRange:ofCinematicAssetInfo:atTime:error:_))]
#[unsafe(method_family = none)]
pub unsafe fn insertTimeRange_ofCinematicAssetInfo_atTime_error(
&self,
time_range: CMTimeRange,
asset_info: &CNAssetInfo,
start_time: CMTime,
) -> Result<(), Retained<NSError>>;
);
}
impl CNCompositionInfo {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}
mod private_AVMutableCompositionCNComposition {
pub trait Sealed {}
}
#[doc(alias = "CNComposition")]
pub unsafe trait AVMutableCompositionCNComposition:
ClassType + Sized + private_AVMutableCompositionCNComposition::Sealed
{
extern_methods!(
#[cfg(feature = "objc2-core-media")]
#[unsafe(method(addTracksForCinematicAssetInfo:preferredStartingTrackID:))]
#[unsafe(method_family = none)]
unsafe fn addTracksForCinematicAssetInfo_preferredStartingTrackID(
&self,
asset_info: &CNAssetInfo,
preferred_starting_track_id: CMPersistentTrackID,
) -> Retained<CNCompositionInfo>;
);
}
#[cfg(feature = "objc2-av-foundation")]
impl private_AVMutableCompositionCNComposition::Sealed for AVMutableComposition {}
#[cfg(feature = "objc2-av-foundation")]
unsafe impl AVMutableCompositionCNComposition for AVMutableComposition {}