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}