objc2_cinematic/generated/
CNAssetInfo.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6#[cfg(feature = "objc2-av-foundation")]
7use objc2_av_foundation::*;
8#[cfg(feature = "objc2-core-foundation")]
9use objc2_core_foundation::*;
10#[cfg(feature = "objc2-core-media")]
11use objc2_core_media::*;
12use objc2_foundation::*;
13
14use crate::*;
15
16extern_class!(
17    /// Information associated with an AVAsset for a cinematic video.
18    ///
19    /// See also [Apple's documentation](https://developer.apple.com/documentation/cinematic/cnassetinfo?language=objc)
20    #[unsafe(super(NSObject))]
21    #[derive(Debug, PartialEq, Eq, Hash)]
22    pub struct CNAssetInfo;
23);
24
25extern_conformance!(
26    unsafe impl NSObjectProtocol for CNAssetInfo {}
27);
28
29impl CNAssetInfo {
30    extern_methods!(
31        #[cfg(all(feature = "block2", feature = "objc2-av-foundation"))]
32        /// Check if asset is cinematic asynchronously.
33        #[unsafe(method(checkIfCinematic:completionHandler:))]
34        #[unsafe(method_family = none)]
35        pub unsafe fn checkIfCinematic_completionHandler(
36            asset: &AVAsset,
37            completion_handler: &block2::DynBlock<dyn Fn(Bool)>,
38        );
39
40        #[cfg(all(feature = "block2", feature = "objc2-av-foundation"))]
41        /// Load cinematic asset information asynchronously.
42        #[unsafe(method(loadFromAsset:completionHandler:))]
43        #[unsafe(method_family = none)]
44        pub unsafe fn loadFromAsset_completionHandler(
45            asset: &AVAsset,
46            completion_handler: &block2::DynBlock<dyn Fn(*mut CNAssetInfo, *mut NSError)>,
47        );
48
49        #[cfg(feature = "objc2-av-foundation")]
50        #[unsafe(method(asset))]
51        #[unsafe(method_family = none)]
52        pub unsafe fn asset(&self) -> Retained<AVAsset>;
53
54        #[cfg(feature = "objc2-av-foundation")]
55        #[unsafe(method(allCinematicTracks))]
56        #[unsafe(method_family = none)]
57        pub unsafe fn allCinematicTracks(&self) -> Retained<NSArray<AVAssetTrack>>;
58
59        #[cfg(feature = "objc2-av-foundation")]
60        #[unsafe(method(cinematicVideoTrack))]
61        #[unsafe(method_family = none)]
62        pub unsafe fn cinematicVideoTrack(&self) -> Retained<AVAssetTrack>;
63
64        #[cfg(feature = "objc2-av-foundation")]
65        #[unsafe(method(cinematicDisparityTrack))]
66        #[unsafe(method_family = none)]
67        pub unsafe fn cinematicDisparityTrack(&self) -> Retained<AVAssetTrack>;
68
69        #[cfg(feature = "objc2-av-foundation")]
70        #[unsafe(method(cinematicMetadataTrack))]
71        #[unsafe(method_family = none)]
72        pub unsafe fn cinematicMetadataTrack(&self) -> Retained<AVAssetTrack>;
73
74        #[cfg(feature = "objc2-core-media")]
75        /// Time range over which all cinematic tracks are valid.
76        #[unsafe(method(timeRange))]
77        #[unsafe(method_family = none)]
78        pub unsafe fn timeRange(&self) -> CMTimeRange;
79
80        #[cfg(feature = "objc2-core-foundation")]
81        /// Natural size at which cinematic video would be rendered
82        #[unsafe(method(naturalSize))]
83        #[unsafe(method_family = none)]
84        pub unsafe fn naturalSize(&self) -> CGSize;
85
86        #[cfg(feature = "objc2-core-foundation")]
87        /// Natural size at which cinematic video would be displayed.
88        /// Same as naturalSize with preferredTransform applied.
89        #[unsafe(method(preferredSize))]
90        #[unsafe(method_family = none)]
91        pub unsafe fn preferredSize(&self) -> CGSize;
92
93        #[cfg(feature = "objc2-core-foundation")]
94        /// The preferred transform of the rendered image for display purposes.
95        /// Always the identity transform or a multiple of a 90ยบ rotation with no scaling.
96        #[unsafe(method(preferredTransform))]
97        #[unsafe(method_family = none)]
98        pub unsafe fn preferredTransform(&self) -> CGAffineTransform;
99
100        #[unsafe(method(init))]
101        #[unsafe(method_family = init)]
102        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
103
104        #[unsafe(method(new))]
105        #[unsafe(method_family = new)]
106        pub unsafe fn new() -> Retained<Self>;
107    );
108}
109
110/// AbstractTracks.
111/// Use of these properties where appropriate is preferred to help maintain future compatibility
112impl CNAssetInfo {
113    extern_methods!(
114        #[cfg(feature = "objc2-av-foundation")]
115        /// Track to be used for frame timing
116        #[unsafe(method(frameTimingTrack))]
117        #[unsafe(method_family = none)]
118        pub unsafe fn frameTimingTrack(&self) -> Retained<AVAssetTrack>;
119
120        #[cfg(feature = "objc2-av-foundation")]
121        /// Tracks required to construct AVAssetReaderVideoCompositionOutput.
122        #[unsafe(method(videoCompositionTracks))]
123        #[unsafe(method_family = none)]
124        pub unsafe fn videoCompositionTracks(&self) -> Retained<NSArray<AVAssetTrack>>;
125
126        /// Source video track IDs required to implement AVVideoCompositionInstruction protocol
127        #[unsafe(method(videoCompositionTrackIDs))]
128        #[unsafe(method_family = none)]
129        pub unsafe fn videoCompositionTrackIDs(&self) -> Retained<NSArray<NSNumber>>;
130
131        /// Source metadata track IDs required to implement AVVideoCompositionInstruction protocol
132        #[unsafe(method(sampleDataTrackIDs))]
133        #[unsafe(method_family = none)]
134        pub unsafe fn sampleDataTrackIDs(&self) -> Retained<NSArray<NSNumber>>;
135    );
136}
137
138extern_class!(
139    /// Information about composition tracks added to an AVComposition for a cinematic asset.
140    ///
141    /// See also [Apple's documentation](https://developer.apple.com/documentation/cinematic/cncompositioninfo?language=objc)
142    #[unsafe(super(CNAssetInfo, NSObject))]
143    #[derive(Debug, PartialEq, Eq, Hash)]
144    pub struct CNCompositionInfo;
145);
146
147extern_conformance!(
148    unsafe impl NSObjectProtocol for CNCompositionInfo {}
149);
150
151impl CNCompositionInfo {
152    extern_methods!(
153        #[cfg(feature = "objc2-core-media")]
154        /// Inserts a timeRange of a cinematic source asset into the corresponding tracks of a composition
155        /// - Parameters:
156        /// - timeRange: time range of the cinematic asset to be inserted
157        /// - assetInfo: identifies the tracks of the cinematic asset to be inserted
158        /// - atTime: the time at which the inserted tracks are to be presented by the composition; `kCMTimeInvalid` may be used to append at the end.
159        /// - error: AVError if it fails, as with `-[AVMutableCompositionTrack insertTimeRange:ofTrack:atTime:error:]`
160        /// - Returns: whether the insertion was successful
161        #[unsafe(method(insertTimeRange:ofCinematicAssetInfo:atTime:error:_))]
162        #[unsafe(method_family = none)]
163        pub unsafe fn insertTimeRange_ofCinematicAssetInfo_atTime_error(
164            &self,
165            time_range: CMTimeRange,
166            asset_info: &CNAssetInfo,
167            start_time: CMTime,
168        ) -> Result<(), Retained<NSError>>;
169    );
170}
171
172/// Methods declared on superclass `CNAssetInfo`.
173impl CNCompositionInfo {
174    extern_methods!(
175        #[unsafe(method(init))]
176        #[unsafe(method_family = init)]
177        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
178
179        #[unsafe(method(new))]
180        #[unsafe(method_family = new)]
181        pub unsafe fn new() -> Retained<Self>;
182    );
183}
184
185mod private_AVMutableCompositionCNComposition {
186    pub trait Sealed {}
187}
188
189/// Category "CNComposition" on [`AVMutableComposition`].
190#[doc(alias = "CNComposition")]
191pub unsafe trait AVMutableCompositionCNComposition:
192    ClassType + Sized + private_AVMutableCompositionCNComposition::Sealed
193{
194    extern_methods!(
195        #[cfg(feature = "objc2-core-media")]
196        /// Adds a group of empty tracks associated with a cinematic asset to a mutable composition.
197        /// - Returns: Information about the composition tracks added to the mutable composition.
198        /// Be sure to call insertTimeRange on the result to specify at least one time range of cinematic asset you'd like in the composition.
199        #[unsafe(method(addTracksForCinematicAssetInfo:preferredStartingTrackID:))]
200        #[unsafe(method_family = none)]
201        unsafe fn addTracksForCinematicAssetInfo_preferredStartingTrackID(
202            &self,
203            asset_info: &CNAssetInfo,
204            preferred_starting_track_id: CMPersistentTrackID,
205        ) -> Retained<CNCompositionInfo>;
206    );
207}
208
209#[cfg(feature = "objc2-av-foundation")]
210impl private_AVMutableCompositionCNComposition::Sealed for AVMutableComposition {}
211#[cfg(feature = "objc2-av-foundation")]
212unsafe impl AVMutableCompositionCNComposition for AVMutableComposition {}