objc2_video_toolbox/generated/
VTFrameProcessor_SuperResolutionScaler.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5#[cfg(feature = "objc2")]
6use objc2::__framework_prelude::*;
7#[cfg(feature = "objc2-foundation")]
8use objc2_foundation::*;
9
10use crate::*;
11
12/// Configuration value you set to prioritize quality or performance.
13///
14/// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/vtsuperresolutionscalerconfigurationqualityprioritization?language=objc)
15// NS_ENUM
16#[cfg(feature = "objc2")]
17#[repr(transparent)]
18#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
19pub struct VTSuperResolutionScalerConfigurationQualityPrioritization(pub NSInteger);
20#[cfg(feature = "objc2")]
21impl VTSuperResolutionScalerConfigurationQualityPrioritization {
22    #[doc(alias = "VTSuperResolutionScalerConfigurationQualityPrioritizationNormal")]
23    pub const Normal: Self = Self(1);
24}
25
26#[cfg(feature = "objc2")]
27unsafe impl Encode for VTSuperResolutionScalerConfigurationQualityPrioritization {
28    const ENCODING: Encoding = NSInteger::ENCODING;
29}
30
31#[cfg(feature = "objc2")]
32unsafe impl RefEncode for VTSuperResolutionScalerConfigurationQualityPrioritization {
33    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
34}
35
36/// Available algorithm revisions.
37///
38/// A new enum case with a higher revision number is added when the processing algorithm is updated.
39/// The ``VTSuperResolutionScalerConfiguration/defaultRevision`` property provides the default algorithm revision.
40///
41/// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/vtsuperresolutionscalerconfigurationrevision?language=objc)
42// NS_ENUM
43#[cfg(feature = "objc2")]
44#[repr(transparent)]
45#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
46pub struct VTSuperResolutionScalerConfigurationRevision(pub NSInteger);
47#[cfg(feature = "objc2")]
48impl VTSuperResolutionScalerConfigurationRevision {
49    #[doc(alias = "VTSuperResolutionScalerConfigurationRevision1")]
50    pub const Revision1: Self = Self(1);
51}
52
53#[cfg(feature = "objc2")]
54unsafe impl Encode for VTSuperResolutionScalerConfigurationRevision {
55    const ENCODING: Encoding = NSInteger::ENCODING;
56}
57
58#[cfg(feature = "objc2")]
59unsafe impl RefEncode for VTSuperResolutionScalerConfigurationRevision {
60    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
61}
62
63/// Available super-resolution processor input types.
64///
65/// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/vtsuperresolutionscalerconfigurationinputtype?language=objc)
66// NS_ENUM
67#[cfg(feature = "objc2")]
68#[repr(transparent)]
69#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
70pub struct VTSuperResolutionScalerConfigurationInputType(pub NSInteger);
71#[cfg(feature = "objc2")]
72impl VTSuperResolutionScalerConfigurationInputType {
73    #[doc(alias = "VTSuperResolutionScalerConfigurationInputTypeVideo")]
74    pub const Video: Self = Self(1);
75    #[doc(alias = "VTSuperResolutionScalerConfigurationInputTypeImage")]
76    pub const Image: Self = Self(2);
77}
78
79#[cfg(feature = "objc2")]
80unsafe impl Encode for VTSuperResolutionScalerConfigurationInputType {
81    const ENCODING: Encoding = NSInteger::ENCODING;
82}
83
84#[cfg(feature = "objc2")]
85unsafe impl RefEncode for VTSuperResolutionScalerConfigurationInputType {
86    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
87}
88
89/// Available super-resolution processor model status types.
90///
91/// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/vtsuperresolutionscalerconfigurationmodelstatus?language=objc)
92// NS_ENUM
93#[cfg(feature = "objc2")]
94#[repr(transparent)]
95#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
96pub struct VTSuperResolutionScalerConfigurationModelStatus(pub NSInteger);
97#[cfg(feature = "objc2")]
98impl VTSuperResolutionScalerConfigurationModelStatus {
99    #[doc(alias = "VTSuperResolutionScalerConfigurationModelStatusDownloadRequired")]
100    pub const DownloadRequired: Self = Self(0);
101    #[doc(alias = "VTSuperResolutionScalerConfigurationModelStatusDownloading")]
102    pub const Downloading: Self = Self(1);
103    #[doc(alias = "VTSuperResolutionScalerConfigurationModelStatusReady")]
104    pub const Ready: Self = Self(2);
105}
106
107#[cfg(feature = "objc2")]
108unsafe impl Encode for VTSuperResolutionScalerConfigurationModelStatus {
109    const ENCODING: Encoding = NSInteger::ENCODING;
110}
111
112#[cfg(feature = "objc2")]
113unsafe impl RefEncode for VTSuperResolutionScalerConfigurationModelStatus {
114    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
115}
116
117/// Indicates the order of input frames.
118///
119/// When submitting ``VTSuperResolutionScalerParameters`` to the processor, you need to provide one of these values based on
120/// how the input frames are related to each other.
121///
122/// Use ``VTSuperResolutionScalerParametersSubmissionModeSequential`` to indicate that the current submission follows
123/// presentation time order without jumps or skips, when compared to previous submissions. This value provides better
124/// processor performance than other values.
125///
126/// Use ``VTSuperResolutionScalerParametersSubmissionModeRandom`` to indicate that the current submission has no relation
127/// to the previous submission. Typically, this indicates a jump or skip in the frame sequence. The processor clears
128/// internal caches when it receives this value in ``VTFrameProcessor/processWithParameters`` function call.
129///
130/// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/vtsuperresolutionscalerparameterssubmissionmode?language=objc)
131// NS_ENUM
132#[cfg(feature = "objc2")]
133#[repr(transparent)]
134#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
135pub struct VTSuperResolutionScalerParametersSubmissionMode(pub NSInteger);
136#[cfg(feature = "objc2")]
137impl VTSuperResolutionScalerParametersSubmissionMode {
138    #[doc(alias = "VTSuperResolutionScalerParametersSubmissionModeRandom")]
139    pub const Random: Self = Self(1);
140    #[doc(alias = "VTSuperResolutionScalerParametersSubmissionModeSequential")]
141    pub const Sequential: Self = Self(2);
142}
143
144#[cfg(feature = "objc2")]
145unsafe impl Encode for VTSuperResolutionScalerParametersSubmissionMode {
146    const ENCODING: Encoding = NSInteger::ENCODING;
147}
148
149#[cfg(feature = "objc2")]
150unsafe impl RefEncode for VTSuperResolutionScalerParametersSubmissionMode {
151    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
152}
153
154#[cfg(feature = "objc2")]
155extern_class!(
156    /// Configuration that you use to set up the super-resolution processor.
157    ///
158    /// This configuration enables the super-resolution processor on a `VTFrameProcessor` session.
159    ///
160    /// > Important: The super-resolution processor may require ML models which the framework needs to download in order to
161    /// operate. Before calling ``VTFrameProcessor/startSessionWithConfiguration:error:`` with an instance of this class,
162    /// it is important that you verify that the necessary models are present by checking ``configurationModelStatus``.
163    /// If models are not available, you can trigger model download using the ``downloadConfigurationModelWithCompletionHandler:``
164    /// method. Best practice is to confirm availability of models and drive download with user awareness and interaction
165    /// before engaging workflows that need this processor.
166    ///
167    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/vtsuperresolutionscalerconfiguration?language=objc)
168    #[unsafe(super(NSObject))]
169    #[derive(Debug, PartialEq, Eq, Hash)]
170    #[cfg(feature = "objc2")]
171    pub struct VTSuperResolutionScalerConfiguration;
172);
173
174#[cfg(feature = "objc2")]
175unsafe impl Send for VTSuperResolutionScalerConfiguration {}
176
177#[cfg(feature = "objc2")]
178unsafe impl Sync for VTSuperResolutionScalerConfiguration {}
179
180#[cfg(feature = "objc2")]
181extern_conformance!(
182    unsafe impl NSObjectProtocol for VTSuperResolutionScalerConfiguration {}
183);
184
185#[cfg(all(feature = "VTFrameProcessorConfiguration", feature = "objc2"))]
186extern_conformance!(
187    unsafe impl VTFrameProcessorConfiguration for VTSuperResolutionScalerConfiguration {}
188);
189
190#[cfg(feature = "objc2")]
191impl VTSuperResolutionScalerConfiguration {
192    extern_methods!(
193        /// Creates a new super-resolution scaler processor configuration.
194        ///
195        /// This processor increases resolution of an image or video.
196        /// Returns `nil` if dimensions are out of range or revision is unsupported.
197        ///
198        /// - Parameters:
199        /// - frameWidth: Width of source frame in pixels. With ``VTSuperResolutionScalerConfigurationInputTypeVideo``,
200        /// maximum width is 1920 on macOS and 1440 on iOS. With ``VTSuperResolutionScalerConfigurationInputTypeImage``,
201        /// maximum width is 1920.
202        /// - frameHeight: Height of source frame in pixels. With ``VTSuperResolutionScalerConfigurationInputTypeVideo``,
203        /// maximum height is 1080. With ``VTSuperResolutionScalerConfigurationInputTypeImage``, maximum height is 1920 on
204        /// macOS and 1080 on iOS.
205        /// - scaleFactor: Indicates the scale factor between input and output.
206        /// - inputType: Indicates the type of input, either video or image.
207        /// - usePrecomputedFlow: Boolean value to indicate that you provide optical flow; if false, this configuration
208        /// computes the optical flow on the fly.
209        /// - qualityPrioritization: A level you use to prioritize quality or performance; for more information about
210        /// supported levels, see ``VTSuperResolutionScalerConfigurationQualityPrioritization``.
211        /// - revision: The specific algorithm or configuration revision you use to perform the request.
212        #[unsafe(method(initWithFrameWidth:frameHeight:scaleFactor:inputType:usePrecomputedFlow:qualityPrioritization:revision:))]
213        #[unsafe(method_family = init)]
214        pub unsafe fn initWithFrameWidth_frameHeight_scaleFactor_inputType_usePrecomputedFlow_qualityPrioritization_revision(
215            this: Allocated<Self>,
216            frame_width: NSInteger,
217            frame_height: NSInteger,
218            scale_factor: NSInteger,
219            input_type: VTSuperResolutionScalerConfigurationInputType,
220            use_precomputed_flow: bool,
221            quality_prioritization: VTSuperResolutionScalerConfigurationQualityPrioritization,
222            revision: VTSuperResolutionScalerConfigurationRevision,
223        ) -> Option<Retained<Self>>;
224
225        #[unsafe(method(init))]
226        #[unsafe(method_family = init)]
227        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
228
229        #[unsafe(method(new))]
230        #[unsafe(method_family = new)]
231        pub unsafe fn new() -> Retained<Self>;
232
233        /// Width of source frame in pixels.
234        ///
235        /// This property is not atomic.
236        ///
237        /// # Safety
238        ///
239        /// This might not be thread-safe.
240        #[unsafe(method(frameWidth))]
241        #[unsafe(method_family = none)]
242        pub unsafe fn frameWidth(&self) -> NSInteger;
243
244        /// Height of source frame in pixels.
245        ///
246        /// This property is not atomic.
247        ///
248        /// # Safety
249        ///
250        /// This might not be thread-safe.
251        #[unsafe(method(frameHeight))]
252        #[unsafe(method_family = none)]
253        pub unsafe fn frameHeight(&self) -> NSInteger;
254
255        /// Indicates the type of input.
256        ///
257        /// This property is not atomic.
258        ///
259        /// # Safety
260        ///
261        /// This might not be thread-safe.
262        #[unsafe(method(inputType))]
263        #[unsafe(method_family = none)]
264        pub unsafe fn inputType(&self) -> VTSuperResolutionScalerConfigurationInputType;
265
266        /// Indicates that you provide optical flow.
267        ///
268        /// This property is not atomic.
269        ///
270        /// # Safety
271        ///
272        /// This might not be thread-safe.
273        #[unsafe(method(usesPrecomputedFlow))]
274        #[unsafe(method_family = none)]
275        pub unsafe fn usesPrecomputedFlow(&self) -> bool;
276
277        /// Indicates the scale factor between input and output.
278        ///
279        /// This property is not atomic.
280        ///
281        /// # Safety
282        ///
283        /// This might not be thread-safe.
284        #[unsafe(method(scaleFactor))]
285        #[unsafe(method_family = none)]
286        pub unsafe fn scaleFactor(&self) -> NSInteger;
287
288        /// A parameter to control quality and performance levels.
289        ///
290        /// For more information about supported levels, see ``VTSuperResolutionScalerConfigurationQualityPrioritization``.
291        ///
292        /// This property is not atomic.
293        ///
294        /// # Safety
295        ///
296        /// This might not be thread-safe.
297        #[unsafe(method(qualityPrioritization))]
298        #[unsafe(method_family = none)]
299        pub unsafe fn qualityPrioritization(
300            &self,
301        ) -> VTSuperResolutionScalerConfigurationQualityPrioritization;
302
303        /// The specific algorithm or configuration revision you use to perform the request.
304        ///
305        /// This property is not atomic.
306        ///
307        /// # Safety
308        ///
309        /// This might not be thread-safe.
310        #[unsafe(method(revision))]
311        #[unsafe(method_family = none)]
312        pub unsafe fn revision(&self) -> VTSuperResolutionScalerConfigurationRevision;
313
314        #[cfg(feature = "objc2-foundation")]
315        /// Provides the collection of currently supported algorithms or configuration revisions for the class of configuration.
316        ///
317        /// A property you use to introspect at runtime which revisions are available for each configuration.
318        #[unsafe(method(supportedRevisions))]
319        #[unsafe(method_family = none)]
320        pub unsafe fn supportedRevisions() -> Retained<NSIndexSet>;
321
322        /// Provides the default revision of a specific algorithm or configuration.
323        #[unsafe(method(defaultRevision))]
324        #[unsafe(method_family = none)]
325        pub unsafe fn defaultRevision() -> VTSuperResolutionScalerConfigurationRevision;
326
327        #[cfg(feature = "objc2-foundation")]
328        /// Available supported pixel formats for source frames for current configuration.
329        ///
330        /// This property is not atomic.
331        ///
332        /// # Safety
333        ///
334        /// This might not be thread-safe.
335        #[unsafe(method(frameSupportedPixelFormats))]
336        #[unsafe(method_family = none)]
337        pub unsafe fn frameSupportedPixelFormats(&self) -> Retained<NSArray<NSNumber>>;
338
339        #[cfg(feature = "objc2-foundation")]
340        /// Pixel buffer attributes dictionary that describes requirements for pixel buffers which represent source frames and reference frames.
341        ///
342        /// Use ``CVPixelBufferCreateResolvedAttributesDictionary`` to combine this dictionary with your pixel buffer attributes dictionary.
343        ///
344        /// This property is not atomic.
345        ///
346        /// # Safety
347        ///
348        /// This might not be thread-safe.
349        #[unsafe(method(sourcePixelBufferAttributes))]
350        #[unsafe(method_family = none)]
351        pub unsafe fn sourcePixelBufferAttributes(
352            &self,
353        ) -> Retained<NSDictionary<NSString, AnyObject>>;
354
355        #[cfg(feature = "objc2-foundation")]
356        /// Pixel buffer attributes dictionary that describes requirements for pixel buffers which represent destination frames.
357        ///
358        /// Use ``CVPixelBufferCreateResolvedAttributesDictionary`` to combine this dictionary with your pixel buffer attributes dictionary.
359        ///
360        /// This property is not atomic.
361        ///
362        /// # Safety
363        ///
364        /// This might not be thread-safe.
365        #[unsafe(method(destinationPixelBufferAttributes))]
366        #[unsafe(method_family = none)]
367        pub unsafe fn destinationPixelBufferAttributes(
368            &self,
369        ) -> Retained<NSDictionary<NSString, AnyObject>>;
370
371        /// Reports the download status of models that the system needs for the current configuration.
372        ///
373        /// This property is not atomic.
374        ///
375        /// # Safety
376        ///
377        /// This might not be thread-safe.
378        #[unsafe(method(configurationModelStatus))]
379        #[unsafe(method_family = none)]
380        pub unsafe fn configurationModelStatus(
381            &self,
382        ) -> VTSuperResolutionScalerConfigurationModelStatus;
383
384        #[cfg(all(feature = "block2", feature = "objc2-foundation"))]
385        /// Downloads models that the system needs for the current configuration.
386        ///
387        /// This method downloads model assets required for the current configuration in background. You should call this method
388        /// if ``configurationModelStatus`` is ``VTSuperResolutionScalerConfigurationModelStatusDownloadRequired``. After this
389        /// method is called, you can query ``configurationModelPercentageAvailable`` to determine progress of model asset
390        /// download process. If the download fails, the completion handler is invoked with an `NSError`, and the
391        /// ``configurationModelStatus`` goes back to ``VTSuperResolutionScalerConfigurationModelStatusDownloadRequired``. If
392        /// the download succeeds, the completion handler is invoked with `nil` NSError.
393        #[unsafe(method(downloadConfigurationModelWithCompletionHandler:))]
394        #[unsafe(method_family = none)]
395        pub unsafe fn downloadConfigurationModelWithCompletionHandler(
396            &self,
397            completion_handler: &block2::DynBlock<dyn Fn(*mut NSError)>,
398        );
399
400        /// Returns a floating point value between 0.0 and 1.0 indicating the percentage of required model assets that have been downloaded.
401        ///
402        /// This property is not atomic.
403        ///
404        /// # Safety
405        ///
406        /// This might not be thread-safe.
407        #[unsafe(method(configurationModelPercentageAvailable))]
408        #[unsafe(method_family = none)]
409        pub unsafe fn configurationModelPercentageAvailable(&self) -> c_float;
410
411        /// Reports whether the system supports this processor.
412        #[unsafe(method(isSupported))]
413        #[unsafe(method_family = none)]
414        pub unsafe fn isSupported() -> bool;
415
416        #[cfg(feature = "objc2-foundation")]
417        /// Reports the set of supported scale factors to use when initializing a super-resolution scaler configuration.
418        #[unsafe(method(supportedScaleFactors))]
419        #[unsafe(method_family = none)]
420        pub unsafe fn supportedScaleFactors() -> Retained<NSArray<NSNumber>>;
421    );
422}
423
424#[cfg(feature = "objc2")]
425extern_class!(
426    /// An object that contains both input and output parameters that the super-resolution processor needs to run on a frame.
427    ///
428    /// Use this object in the `processWithParameters` call of the `VTFrameProcessor` class. The output parameter for this class is `destinationFrame`, where the processor returns the output frame (as `VTFrameProcessorFrame`) back to you once `processWithParameters` completes.
429    ///
430    /// `VTSuperResolutionScalerParameters` are frame-level parameters.
431    ///
432    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/vtsuperresolutionscalerparameters?language=objc)
433    #[unsafe(super(NSObject))]
434    #[derive(Debug, PartialEq, Eq, Hash)]
435    #[cfg(feature = "objc2")]
436    pub struct VTSuperResolutionScalerParameters;
437);
438
439#[cfg(feature = "objc2")]
440extern_conformance!(
441    unsafe impl NSObjectProtocol for VTSuperResolutionScalerParameters {}
442);
443
444#[cfg(all(feature = "VTFrameProcessorParameters", feature = "objc2"))]
445extern_conformance!(
446    unsafe impl VTFrameProcessorParameters for VTSuperResolutionScalerParameters {}
447);
448
449#[cfg(feature = "objc2")]
450impl VTSuperResolutionScalerParameters {
451    extern_methods!(
452        #[cfg(feature = "VTFrameProcessorFrame")]
453        /// Creates a new super-resolution scaler parameters instance.
454        ///
455        /// Returns `nil` if `sourceFrame` or `destinationFrame` is `nil`, or if `sourceFrame` and reference frames have different pixel formats.
456        ///
457        /// - Parameters:
458        /// - sourceFrame: Current source frame; must be non `nil`.
459        /// - previousFrame: The previous source frame in presentation time order. For the first frame you can set this to `nil`.
460        /// - previousOutputFrame: The previous output frame in presentation time order. For the first frame you can set this to `nil`.
461        /// - opticalFlow: Optional `VTFrameProcessorOpticalFlow` object that contains forward and backward optical flow between the `sourceFrame` and `previousFrame`. You only need this if optical flow is pre-computed.
462        /// - submissionMode: Provides a hint to let the processor know whether you are submitting frames in presentation
463        /// sequence. For more information about supported modes see ``VTSuperResolutionScalerParametersSubmissionMode``.
464        /// - destinationFrame: User-allocated pixel buffer that receives the results.
465        #[unsafe(method(initWithSourceFrame:previousFrame:previousOutputFrame:opticalFlow:submissionMode:destinationFrame:))]
466        #[unsafe(method_family = init)]
467        pub unsafe fn initWithSourceFrame_previousFrame_previousOutputFrame_opticalFlow_submissionMode_destinationFrame(
468            this: Allocated<Self>,
469            source_frame: &VTFrameProcessorFrame,
470            previous_frame: Option<&VTFrameProcessorFrame>,
471            previous_output_frame: Option<&VTFrameProcessorFrame>,
472            optical_flow: Option<&VTFrameProcessorOpticalFlow>,
473            submission_mode: VTSuperResolutionScalerParametersSubmissionMode,
474            destination_frame: &VTFrameProcessorFrame,
475        ) -> Option<Retained<Self>>;
476
477        #[unsafe(method(init))]
478        #[unsafe(method_family = init)]
479        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
480
481        #[unsafe(method(new))]
482        #[unsafe(method_family = new)]
483        pub unsafe fn new() -> Retained<Self>;
484
485        #[cfg(feature = "VTFrameProcessorFrame")]
486        /// Current source frame, which must be non `nil`.
487        #[unsafe(method(sourceFrame))]
488        #[unsafe(method_family = none)]
489        pub unsafe fn sourceFrame(&self) -> Retained<VTFrameProcessorFrame>;
490
491        #[cfg(feature = "VTFrameProcessorFrame")]
492        /// Previous source frame in presentation time order, which is `nil` for the first frame.
493        #[unsafe(method(previousFrame))]
494        #[unsafe(method_family = none)]
495        pub unsafe fn previousFrame(&self) -> Option<Retained<VTFrameProcessorFrame>>;
496
497        #[cfg(feature = "VTFrameProcessorFrame")]
498        /// Previous output frame in presentation time order, which is `nil` for the first frame.
499        #[unsafe(method(previousOutputFrame))]
500        #[unsafe(method_family = none)]
501        pub unsafe fn previousOutputFrame(&self) -> Option<Retained<VTFrameProcessorFrame>>;
502
503        #[cfg(feature = "VTFrameProcessorFrame")]
504        /// Optional object that contains forward and backward optical flow with the previous frame.
505        ///
506        /// You only need this if optical flow is pre-computed. For the first frame this is `nil`.
507        #[unsafe(method(opticalFlow))]
508        #[unsafe(method_family = none)]
509        pub unsafe fn opticalFlow(&self) -> Option<Retained<VTFrameProcessorOpticalFlow>>;
510
511        /// Ordering of the input frames in this submission relative to the previous submission.
512        #[unsafe(method(submissionMode))]
513        #[unsafe(method_family = none)]
514        pub unsafe fn submissionMode(&self) -> VTSuperResolutionScalerParametersSubmissionMode;
515
516        #[cfg(feature = "VTFrameProcessorFrame")]
517        /// Destination frame that contains user-allocated pixel buffer that receives the results.
518        #[unsafe(method(destinationFrame))]
519        #[unsafe(method_family = none)]
520        pub unsafe fn destinationFrame(&self) -> Retained<VTFrameProcessorFrame>;
521    );
522}