objc2_av_foundation/generated/
AVAssetTrack.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-core-foundation")]
7use objc2_core_foundation::*;
8#[cfg(feature = "objc2-core-media")]
9use objc2_core_media::*;
10use objc2_foundation::*;
11
12use crate::*;
13
14extern_class!(
15    /// An AVAsset is an abstract class that defines AVFoundation's model for timed audiovisual media.
16    ///
17    /// Each asset contains a collection of tracks that are intended to be presented or processed together, each of a uniform media type, including but not limited to audio, video, text, closed captions, and subtitles.
18    ///
19    ///
20    /// AVAssets are often instantiated via its concrete subclass AVURLAsset with NSURLs that refer to audiovisual media resources, such as streams (including HTTP live streams), QuickTime movie files, MP3 files, and files of other types.
21    ///
22    /// They can also be instantiated using other concrete subclasses that extend the basic model for audiovisual media in useful ways, as AVComposition does for temporal editing.
23    ///
24    /// Properties of assets as a whole are defined by AVAsset. Additionally, references to instances of AVAssetTracks representing tracks of the collection can be obtained, so that each of these can be examined independently.
25    ///
26    /// Because of the nature of timed audiovisual media, upon successful initialization of an AVAsset some or all of the values for its keys may not be immediately available. The value of any key can be requested at any time, and AVAsset will always return its value synchronously, although it may have to block the calling thread in order to do so.
27    ///
28    /// In order to avoid blocking, clients can register their interest in particular keys and to become notified when their values become available. For further details, see AVAsynchronousKeyValueLoading.h. For clients who want to examine a subset of the tracks, metadata, and other parts of the asset, asynchronous methods like -loadTracksWithMediaType:completionHandler: can be used to load this information without blocking. When using these asynchronous methods, it is not necessary to load the associated property beforehand. Swift clients can also use the load(:) method to load properties in a type safe manner.
29    ///
30    /// On platforms other than macOS, it is particularly important to avoid blocking.  To preserve responsiveness, a synchronous request that blocks for too long (eg, a property request on an asset on a slow HTTP server) may lead to media services being reset.
31    ///
32    /// To play an instance of AVAsset, initialize an instance of AVPlayerItem with it, use the AVPlayerItem to set up its presentation state (such as whether only a limited timeRange of the asset should be played, etc.), and provide the AVPlayerItem to an AVPlayer according to whether the items is to be played by itself or together with a collection of other items. Full details available in AVPlayerItem.h and AVPlayer.h.
33    ///
34    /// AVAssets can also be inserted into AVMutableCompositions in order to assemble audiovisual constructs from one or more source assets.
35    ///
36    /// See also [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avassettrack?language=objc)
37    #[unsafe(super(NSObject))]
38    #[derive(Debug, PartialEq, Eq, Hash)]
39    pub struct AVAssetTrack;
40);
41
42#[cfg(feature = "AVAsynchronousKeyValueLoading")]
43unsafe impl AVAsynchronousKeyValueLoading for AVAssetTrack {}
44
45unsafe impl NSCopying for AVAssetTrack {}
46
47unsafe impl CopyingHelper for AVAssetTrack {
48    type Result = Self;
49}
50
51unsafe impl NSObjectProtocol for AVAssetTrack {}
52
53impl AVAssetTrack {
54    extern_methods!(
55        #[unsafe(method(init))]
56        #[unsafe(method_family = init)]
57        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
58
59        #[unsafe(method(new))]
60        #[unsafe(method_family = new)]
61        pub unsafe fn new() -> Retained<Self>;
62
63        #[cfg(feature = "AVAsset")]
64        #[unsafe(method(asset))]
65        #[unsafe(method_family = none)]
66        pub unsafe fn asset(&self) -> Option<Retained<AVAsset>>;
67
68        #[cfg(feature = "objc2-core-media")]
69        #[unsafe(method(trackID))]
70        #[unsafe(method_family = none)]
71        pub unsafe fn trackID(&self) -> CMPersistentTrackID;
72    );
73}
74
75/// AVAssetTrackBasicPropertiesAndCharacteristics.
76impl AVAssetTrack {
77    extern_methods!(
78        #[cfg(feature = "AVMediaFormat")]
79        #[unsafe(method(mediaType))]
80        #[unsafe(method_family = none)]
81        pub unsafe fn mediaType(&self) -> Retained<AVMediaType>;
82
83        #[unsafe(method(formatDescriptions))]
84        #[unsafe(method_family = none)]
85        pub unsafe fn formatDescriptions(&self) -> Retained<NSArray>;
86
87        #[unsafe(method(isPlayable))]
88        #[unsafe(method_family = none)]
89        pub unsafe fn isPlayable(&self) -> bool;
90
91        #[unsafe(method(isDecodable))]
92        #[unsafe(method_family = none)]
93        pub unsafe fn isDecodable(&self) -> bool;
94
95        #[unsafe(method(isEnabled))]
96        #[unsafe(method_family = none)]
97        pub unsafe fn isEnabled(&self) -> bool;
98
99        #[unsafe(method(isSelfContained))]
100        #[unsafe(method_family = none)]
101        pub unsafe fn isSelfContained(&self) -> bool;
102
103        #[unsafe(method(totalSampleDataLength))]
104        #[unsafe(method_family = none)]
105        pub unsafe fn totalSampleDataLength(&self) -> c_longlong;
106
107        #[cfg(feature = "AVMediaFormat")]
108        /// Reports whether the track references media with the specified media characteristic.
109        ///
110        /// Parameter `mediaCharacteristic`: The media characteristic of interest, e.g. AVMediaCharacteristicVisual, AVMediaCharacteristicAudible, AVMediaCharacteristicLegible, etc.,
111        /// as defined above.
112        ///
113        /// Returns: YES if the track references media with the specified characteristic, otherwise NO.
114        #[unsafe(method(hasMediaCharacteristic:))]
115        #[unsafe(method_family = none)]
116        pub unsafe fn hasMediaCharacteristic(
117            &self,
118            media_characteristic: &AVMediaCharacteristic,
119        ) -> bool;
120    );
121}
122
123/// AVAssetTrackTemporalProperties.
124impl AVAssetTrack {
125    extern_methods!(
126        #[cfg(feature = "objc2-core-media")]
127        #[unsafe(method(timeRange))]
128        #[unsafe(method_family = none)]
129        pub unsafe fn timeRange(&self) -> CMTimeRange;
130
131        #[cfg(feature = "objc2-core-media")]
132        #[unsafe(method(naturalTimeScale))]
133        #[unsafe(method_family = none)]
134        pub unsafe fn naturalTimeScale(&self) -> CMTimeScale;
135
136        #[unsafe(method(estimatedDataRate))]
137        #[unsafe(method_family = none)]
138        pub unsafe fn estimatedDataRate(&self) -> c_float;
139    );
140}
141
142/// AVAssetTrackLanguageProperties.
143impl AVAssetTrack {
144    extern_methods!(
145        #[unsafe(method(languageCode))]
146        #[unsafe(method_family = none)]
147        pub unsafe fn languageCode(&self) -> Option<Retained<NSString>>;
148
149        #[unsafe(method(extendedLanguageTag))]
150        #[unsafe(method_family = none)]
151        pub unsafe fn extendedLanguageTag(&self) -> Option<Retained<NSString>>;
152    );
153}
154
155/// AVAssetTrackPropertiesForVisualCharacteristic.
156impl AVAssetTrack {
157    extern_methods!(
158        #[cfg(feature = "objc2-core-foundation")]
159        #[unsafe(method(naturalSize))]
160        #[unsafe(method_family = none)]
161        pub unsafe fn naturalSize(&self) -> CGSize;
162
163        #[cfg(feature = "objc2-core-foundation")]
164        #[unsafe(method(preferredTransform))]
165        #[unsafe(method_family = none)]
166        pub unsafe fn preferredTransform(&self) -> CGAffineTransform;
167    );
168}
169
170/// AVAssetTrackPropertiesForAudibleCharacteristic.
171impl AVAssetTrack {
172    extern_methods!(
173        #[unsafe(method(preferredVolume))]
174        #[unsafe(method_family = none)]
175        pub unsafe fn preferredVolume(&self) -> c_float;
176
177        #[unsafe(method(hasAudioSampleDependencies))]
178        #[unsafe(method_family = none)]
179        pub unsafe fn hasAudioSampleDependencies(&self) -> bool;
180    );
181}
182
183/// AVAssetTrackPropertiesForFrameBasedCharacteristic.
184impl AVAssetTrack {
185    extern_methods!(
186        /// For tracks that carry a full frame per media sample, indicates the frame rate of the track in units of frames per second.
187        ///
188        /// For field-based video tracks that carry one field per media sample, the value of this property is the field rate, not the frame rate.
189        #[unsafe(method(nominalFrameRate))]
190        #[unsafe(method_family = none)]
191        pub unsafe fn nominalFrameRate(&self) -> c_float;
192
193        #[cfg(feature = "objc2-core-media")]
194        #[unsafe(method(minFrameDuration))]
195        #[unsafe(method_family = none)]
196        pub unsafe fn minFrameDuration(&self) -> CMTime;
197
198        /// Indicates whether samples in the track may have different values for their presentation and decode timestamps.
199        #[unsafe(method(requiresFrameReordering))]
200        #[unsafe(method_family = none)]
201        pub unsafe fn requiresFrameReordering(&self) -> bool;
202    );
203}
204
205/// AVAssetTrackSegments.
206impl AVAssetTrack {
207    extern_methods!(
208        #[cfg(feature = "AVAssetTrackSegment")]
209        #[unsafe(method(segments))]
210        #[unsafe(method_family = none)]
211        pub unsafe fn segments(&self) -> Retained<NSArray<AVAssetTrackSegment>>;
212
213        #[cfg(all(feature = "AVAssetTrackSegment", feature = "objc2-core-media"))]
214        /// Supplies the AVAssetTrackSegment from the segments array with a target timeRange that either contains the specified track time or is the closest to it among the target timeRanges of the track's segments.
215        ///
216        /// Parameter `trackTime`: The trackTime for which an AVAssetTrackSegment is requested.
217        ///
218        /// Returns: An AVAssetTrackSegment.
219        ///
220        /// If the trackTime does not map to a sample presentation time (e.g. it's outside the track's timeRange), the segment closest in time to the specified trackTime is returned.
221        #[deprecated = "Use loadSegmentForTrackTime:completionHandler: instead"]
222        #[unsafe(method(segmentForTrackTime:))]
223        #[unsafe(method_family = none)]
224        pub unsafe fn segmentForTrackTime(
225            &self,
226            track_time: CMTime,
227        ) -> Option<Retained<AVAssetTrackSegment>>;
228
229        #[cfg(all(
230            feature = "AVAssetTrackSegment",
231            feature = "block2",
232            feature = "objc2-core-media"
233        ))]
234        /// Loads the AVAssetTrackSegment from the segments array with a target timeRange that either contains the specified track time or is the closest to it among the target timeRanges of the track's segments.
235        ///
236        /// Parameter `trackTime`: The trackTime for which an AVAssetTrackSegment is requested.
237        ///
238        /// Parameter `completionHandler`: A block that is invoked when loading is complete, vending an AVAssetTrackSegment or an error.
239        ///
240        /// If the trackTime does not map to a sample presentation time (e.g. it's outside the track's timeRange), the segment closest in time to the specified trackTime is returned.
241        #[unsafe(method(loadSegmentForTrackTime:completionHandler:))]
242        #[unsafe(method_family = none)]
243        pub unsafe fn loadSegmentForTrackTime_completionHandler(
244            &self,
245            track_time: CMTime,
246            completion_handler: &block2::Block<dyn Fn(*mut AVAssetTrackSegment, *mut NSError)>,
247        );
248
249        #[cfg(feature = "objc2-core-media")]
250        /// Maps the specified trackTime through the appropriate time mapping and returns the resulting sample presentation time.
251        ///
252        /// Parameter `trackTime`: The trackTime for which a sample presentation time is requested.
253        ///
254        /// Returns: A CMTime; will be invalid if the trackTime is out of range
255        #[deprecated = "Use loadSamplePresentationTimeForTrackTime:completionHandler: instead"]
256        #[unsafe(method(samplePresentationTimeForTrackTime:))]
257        #[unsafe(method_family = none)]
258        pub unsafe fn samplePresentationTimeForTrackTime(&self, track_time: CMTime) -> CMTime;
259
260        #[cfg(all(feature = "block2", feature = "objc2-core-media"))]
261        /// Maps the specified trackTime through the appropriate time mapping and loads the resulting sample presentation time.
262        ///
263        /// Parameter `trackTime`: The trackTime for which a sample presentation time is requested.
264        ///
265        /// Parameter `completionHandler`: A block that is invoked when loading is complete, vending a CMTime (which will be invalid if the trackTime is out of range) or an error.
266        #[unsafe(method(loadSamplePresentationTimeForTrackTime:completionHandler:))]
267        #[unsafe(method_family = none)]
268        pub unsafe fn loadSamplePresentationTimeForTrackTime_completionHandler(
269            &self,
270            track_time: CMTime,
271            completion_handler: &block2::Block<dyn Fn(CMTime, *mut NSError)>,
272        );
273    );
274}
275
276/// AVAssetTrackMetadataReading.
277impl AVAssetTrack {
278    extern_methods!(
279        #[cfg(feature = "AVMetadataItem")]
280        #[unsafe(method(commonMetadata))]
281        #[unsafe(method_family = none)]
282        pub unsafe fn commonMetadata(&self) -> Retained<NSArray<AVMetadataItem>>;
283
284        #[cfg(feature = "AVMetadataItem")]
285        #[unsafe(method(metadata))]
286        #[unsafe(method_family = none)]
287        pub unsafe fn metadata(&self) -> Retained<NSArray<AVMetadataItem>>;
288
289        #[cfg(feature = "AVMetadataFormat")]
290        #[unsafe(method(availableMetadataFormats))]
291        #[unsafe(method_family = none)]
292        pub unsafe fn availableMetadataFormats(&self) -> Retained<NSArray<AVMetadataFormat>>;
293
294        #[cfg(all(feature = "AVMetadataFormat", feature = "AVMetadataItem"))]
295        /// Provides an NSArray of AVMetadataItems, one for each metadata item in the container of the specified format.
296        ///
297        /// Parameter `format`: The metadata format for which items are requested.
298        ///
299        /// Returns: An NSArray containing AVMetadataItems.
300        ///
301        /// Becomes callable without blocking when the key
302        /// "
303        /// availableMetadataFormats" has been loaded
304        #[deprecated = "Use loadMetadataForFormat:completionHandler: instead"]
305        #[unsafe(method(metadataForFormat:))]
306        #[unsafe(method_family = none)]
307        pub unsafe fn metadataForFormat(
308            &self,
309            format: &AVMetadataFormat,
310        ) -> Retained<NSArray<AVMetadataItem>>;
311
312        #[cfg(all(
313            feature = "AVMetadataFormat",
314            feature = "AVMetadataItem",
315            feature = "block2"
316        ))]
317        /// Loads an NSArray of AVMetadataItems, one for each metadata item in the container of the specified format.
318        ///
319        /// Parameter `format`: The metadata format for which items are requested.
320        ///
321        /// Parameter `completionHandler`: A block that is invoked when loading is complete, vending the array of metadata items (which may be empty if there is no metadata of the specified format) or an error.
322        #[unsafe(method(loadMetadataForFormat:completionHandler:))]
323        #[unsafe(method_family = none)]
324        pub unsafe fn loadMetadataForFormat_completionHandler(
325            &self,
326            format: &AVMetadataFormat,
327            completion_handler: &block2::Block<dyn Fn(*mut NSArray<AVMetadataItem>, *mut NSError)>,
328        );
329    );
330}
331
332/// The type of a track association.
333///
334/// See also [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avtrackassociationtype?language=objc)
335// NS_TYPED_ENUM
336pub type AVTrackAssociationType = NSString;
337
338extern "C" {
339    /// [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avtrackassociationtypeaudiofallback?language=objc)
340    pub static AVTrackAssociationTypeAudioFallback: &'static AVTrackAssociationType;
341}
342
343extern "C" {
344    /// [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avtrackassociationtypechapterlist?language=objc)
345    pub static AVTrackAssociationTypeChapterList: &'static AVTrackAssociationType;
346}
347
348extern "C" {
349    /// [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avtrackassociationtypeforcedsubtitlesonly?language=objc)
350    pub static AVTrackAssociationTypeForcedSubtitlesOnly: &'static AVTrackAssociationType;
351}
352
353extern "C" {
354    /// [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avtrackassociationtypeselectionfollower?language=objc)
355    pub static AVTrackAssociationTypeSelectionFollower: &'static AVTrackAssociationType;
356}
357
358extern "C" {
359    /// [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avtrackassociationtypetimecode?language=objc)
360    pub static AVTrackAssociationTypeTimecode: &'static AVTrackAssociationType;
361}
362
363extern "C" {
364    /// [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avtrackassociationtypemetadatareferent?language=objc)
365    pub static AVTrackAssociationTypeMetadataReferent: &'static AVTrackAssociationType;
366}
367
368/// AVAssetTrackTrackAssociations.
369impl AVAssetTrack {
370    extern_methods!(
371        #[unsafe(method(availableTrackAssociationTypes))]
372        #[unsafe(method_family = none)]
373        pub unsafe fn availableTrackAssociationTypes(
374            &self,
375        ) -> Retained<NSArray<AVTrackAssociationType>>;
376
377        /// Provides an NSArray of AVAssetTracks, one for each track associated with the receiver with the specified type of track association.
378        ///
379        /// Parameter `trackAssociationType`: The type of track association for which associated tracks are requested.
380        ///
381        /// Returns: An NSArray containing AVAssetTracks; may be empty if there is no associated tracks of the specified type.
382        ///
383        /// Becomes callable without blocking when the key
384        /// "
385        /// availableTrackAssociationTypes" has been loaded.
386        #[deprecated = "Use loadAssociatedTracksOfType:completionHandler: instead"]
387        #[unsafe(method(associatedTracksOfType:))]
388        #[unsafe(method_family = none)]
389        pub unsafe fn associatedTracksOfType(
390            &self,
391            track_association_type: &AVTrackAssociationType,
392        ) -> Retained<NSArray<AVAssetTrack>>;
393
394        #[cfg(feature = "block2")]
395        /// Provides an NSArray of AVAssetTracks, one for each track associated with the receiver with the specified type of track association.
396        ///
397        /// Parameter `trackAssociationType`: The type of track association for which associated tracks are requested.
398        ///
399        /// Parameter `completionHandler`: A block that is invoked when loading is comlete, vending an array of tracks (which may be empty if there is no associated tracks of the specified type) or an error.
400        /// `
401        #[unsafe(method(loadAssociatedTracksOfType:completionHandler:))]
402        #[unsafe(method_family = none)]
403        pub unsafe fn loadAssociatedTracksOfType_completionHandler(
404            &self,
405            track_association_type: &AVTrackAssociationType,
406            completion_handler: &block2::Block<dyn Fn(*mut NSArray<AVAssetTrack>, *mut NSError)>,
407        );
408    );
409}
410
411/// AVAssetTrackSampleCursorProvision.
412impl AVAssetTrack {
413    extern_methods!(
414        #[unsafe(method(canProvideSampleCursors))]
415        #[unsafe(method_family = none)]
416        pub unsafe fn canProvideSampleCursors(&self) -> bool;
417
418        #[cfg(all(feature = "AVSampleCursor", feature = "objc2-core-media"))]
419        /// Creates an instance of AVSampleCursor and positions it at or near the specified presentation timestamp.
420        ///
421        /// Parameter `presentationTimeStamp`: The desired initial presentation timestamp of the returned AVSampleCursor.
422        ///
423        /// Returns: An instance of AVSampleCursor.
424        ///
425        /// If the receiver's asset has a value of YES for providesPreciseDurationAndTiming, the sample cursor will be accurately positioned at the receiver's last media sample with presentation timestamp less than or equal to the desired timestamp, or, if there are no such samples, the first sample in presentation order.
426        /// If the receiver's asset has a value of NO for providesPreciseDurationAndTiming, and it is prohibitively expensive to locate the precise sample at the desired timestamp, the sample cursor may be approximately positioned.
427        /// This method will return nil if there are no samples in the track.
428        #[unsafe(method(makeSampleCursorWithPresentationTimeStamp:))]
429        #[unsafe(method_family = none)]
430        pub unsafe fn makeSampleCursorWithPresentationTimeStamp(
431            &self,
432            presentation_time_stamp: CMTime,
433        ) -> Option<Retained<AVSampleCursor>>;
434
435        #[cfg(feature = "AVSampleCursor")]
436        /// Creates an instance of AVSampleCursor and positions it at the receiver's first media sample in decode order.
437        ///
438        /// Returns: An instance of AVSampleCursor.
439        ///
440        /// This method will return nil if there are no samples in the track.
441        #[unsafe(method(makeSampleCursorAtFirstSampleInDecodeOrder))]
442        #[unsafe(method_family = none)]
443        pub unsafe fn makeSampleCursorAtFirstSampleInDecodeOrder(
444            &self,
445        ) -> Option<Retained<AVSampleCursor>>;
446
447        #[cfg(feature = "AVSampleCursor")]
448        /// Creates an instance of AVSampleCursor and positions it at the receiver's last media sample in decode order.
449        ///
450        /// Returns: An instance of AVSampleCursor.
451        ///
452        /// This method will return nil if there are no samples in the track.
453        #[unsafe(method(makeSampleCursorAtLastSampleInDecodeOrder))]
454        #[unsafe(method_family = none)]
455        pub unsafe fn makeSampleCursorAtLastSampleInDecodeOrder(
456            &self,
457        ) -> Option<Retained<AVSampleCursor>>;
458    );
459}
460
461extern "C" {
462    /// Posted when the timeRange of an AVFragmentedAssetTrack changes while the associated instance of AVFragmentedAsset is being minded by an AVFragmentedAssetMinder, but only for changes that occur after the status of the value of
463    /// "
464    /// timeRange" has reached AVKeyValueStatusLoaded.
465    ///
466    /// See also [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avassettracktimerangedidchangenotification?language=objc)
467    pub static AVAssetTrackTimeRangeDidChangeNotification: &'static NSString;
468}
469
470extern "C" {
471    /// Posted when the array of segments of an AVFragmentedAssetTrack changes while the associated instance of AVFragmentedAsset is being minded by an AVFragmentedAssetMinder, but only for changes that occur after the status of the value of
472    /// "
473    /// segments" has reached AVKeyValueStatusLoaded.
474    ///
475    /// See also [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avassettracksegmentsdidchangenotification?language=objc)
476    pub static AVAssetTrackSegmentsDidChangeNotification: &'static NSString;
477}
478
479extern "C" {
480    /// Posted when the collection of track associations of an AVAssetTrack changes, but only for changes that occur after the status of the value of
481    /// "
482    /// availableTrackAssociationTypes" has reached AVKeyValueStatusLoaded.
483    ///
484    /// See also [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avassettracktrackassociationsdidchangenotification?language=objc)
485    pub static AVAssetTrackTrackAssociationsDidChangeNotification: &'static NSString;
486}
487
488extern_class!(
489    /// [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avfragmentedassettrack?language=objc)
490    #[unsafe(super(AVAssetTrack, NSObject))]
491    #[derive(Debug, PartialEq, Eq, Hash)]
492    pub struct AVFragmentedAssetTrack;
493);
494
495unsafe impl Send for AVFragmentedAssetTrack {}
496
497unsafe impl Sync for AVFragmentedAssetTrack {}
498
499#[cfg(feature = "AVAsynchronousKeyValueLoading")]
500unsafe impl AVAsynchronousKeyValueLoading for AVFragmentedAssetTrack {}
501
502unsafe impl NSCopying for AVFragmentedAssetTrack {}
503
504unsafe impl CopyingHelper for AVFragmentedAssetTrack {
505    type Result = Self;
506}
507
508unsafe impl NSObjectProtocol for AVFragmentedAssetTrack {}
509
510impl AVFragmentedAssetTrack {
511    extern_methods!();
512}
513
514/// Methods declared on superclass `AVAssetTrack`.
515impl AVFragmentedAssetTrack {
516    extern_methods!(
517        #[unsafe(method(init))]
518        #[unsafe(method_family = init)]
519        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
520
521        #[unsafe(method(new))]
522        #[unsafe(method_family = new)]
523        pub unsafe fn new() -> Retained<Self>;
524    );
525}