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///
112/// Use of these properties where appropriate is preferred to help maintain future compatibility
113impl CNAssetInfo {
114    extern_methods!(
115        #[cfg(feature = "objc2-av-foundation")]
116        /// Track to be used for frame timing
117        #[unsafe(method(frameTimingTrack))]
118        #[unsafe(method_family = none)]
119        pub unsafe fn frameTimingTrack(&self) -> Retained<AVAssetTrack>;
120
121        #[cfg(feature = "objc2-av-foundation")]
122        /// Tracks required to construct AVAssetReaderVideoCompositionOutput.
123        #[unsafe(method(videoCompositionTracks))]
124        #[unsafe(method_family = none)]
125        pub unsafe fn videoCompositionTracks(&self) -> Retained<NSArray<AVAssetTrack>>;
126
127        /// Source video track IDs required to implement AVVideoCompositionInstruction protocol
128        #[unsafe(method(videoCompositionTrackIDs))]
129        #[unsafe(method_family = none)]
130        pub unsafe fn videoCompositionTrackIDs(&self) -> Retained<NSArray<NSNumber>>;
131
132        /// Source metadata track IDs required to implement AVVideoCompositionInstruction protocol
133        #[unsafe(method(sampleDataTrackIDs))]
134        #[unsafe(method_family = none)]
135        pub unsafe fn sampleDataTrackIDs(&self) -> Retained<NSArray<NSNumber>>;
136    );
137}
138
139extern_class!(
140    /// Information about composition tracks added to an AVComposition for a cinematic asset.
141    ///
142    /// See also [Apple's documentation](https://developer.apple.com/documentation/cinematic/cncompositioninfo?language=objc)
143    #[unsafe(super(CNAssetInfo, NSObject))]
144    #[derive(Debug, PartialEq, Eq, Hash)]
145    pub struct CNCompositionInfo;
146);
147
148extern_conformance!(
149    unsafe impl NSObjectProtocol for CNCompositionInfo {}
150);
151
152impl CNCompositionInfo {
153    extern_methods!(
154        #[cfg(feature = "objc2-core-media")]
155        /// Inserts a timeRange of a cinematic source asset into the corresponding tracks of a composition
156        /// - Parameters:
157        /// - timeRange: time range of the cinematic asset to be inserted
158        /// - assetInfo: identifies the tracks of the cinematic asset to be inserted
159        /// - atTime: the time at which the inserted tracks are to be presented by the composition; `kCMTimeInvalid` may be used to append at the end.
160        /// - error: AVError if it fails, as with `-[AVMutableCompositionTrack insertTimeRange:ofTrack:atTime:error:]`
161        /// - Returns: whether the insertion was successful
162        #[unsafe(method(insertTimeRange:ofCinematicAssetInfo:atTime:error:_))]
163        #[unsafe(method_family = none)]
164        pub unsafe fn insertTimeRange_ofCinematicAssetInfo_atTime_error(
165            &self,
166            time_range: CMTimeRange,
167            asset_info: &CNAssetInfo,
168            start_time: CMTime,
169        ) -> Result<(), Retained<NSError>>;
170    );
171}
172
173/// Methods declared on superclass `CNAssetInfo`.
174impl CNCompositionInfo {
175    extern_methods!(
176        #[unsafe(method(init))]
177        #[unsafe(method_family = init)]
178        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
179
180        #[unsafe(method(new))]
181        #[unsafe(method_family = new)]
182        pub unsafe fn new() -> Retained<Self>;
183    );
184}
185
186mod private_AVMutableCompositionCNComposition {
187    pub trait Sealed {}
188}
189
190/// Category "CNComposition" on [`AVMutableComposition`].
191#[doc(alias = "CNComposition")]
192pub unsafe trait AVMutableCompositionCNComposition:
193    ClassType + Sized + private_AVMutableCompositionCNComposition::Sealed
194{
195    extern_methods!(
196        #[cfg(feature = "objc2-core-media")]
197        /// Adds a group of empty tracks associated with a cinematic asset to a mutable composition.
198        /// - Returns: Information about the composition tracks added to the mutable composition.
199        /// Be sure to call insertTimeRange on the result to specify at least one time range of cinematic asset you'd like in the composition.
200        #[unsafe(method(addTracksForCinematicAssetInfo:preferredStartingTrackID:))]
201        #[unsafe(method_family = none)]
202        unsafe fn addTracksForCinematicAssetInfo_preferredStartingTrackID(
203            &self,
204            asset_info: &CNAssetInfo,
205            preferred_starting_track_id: CMPersistentTrackID,
206        ) -> Retained<CNCompositionInfo>;
207    );
208}
209
210#[cfg(feature = "objc2-av-foundation")]
211impl private_AVMutableCompositionCNComposition::Sealed for AVMutableComposition {}
212#[cfg(feature = "objc2-av-foundation")]
213unsafe impl AVMutableCompositionCNComposition for AVMutableComposition {}