objc2_video_toolbox/generated/
VTDecompressionProperties.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ptr::NonNull;
4use objc2_core_foundation::*;
5
6use crate::*;
7
8extern "C" {
9    /// A pixel buffer pool for pixel buffers being output by the decompression session.
10    ///
11    /// This pixel buffer pool is always compatible with the client's pixel buffer attributes
12    /// as specified when calling VTDecompressionSessionCreate.
13    ///
14    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_pixelbufferpool?language=objc)
15    pub static kVTDecompressionPropertyKey_PixelBufferPool: &'static CFString;
16}
17
18extern "C" {
19    /// Indicates whether a common pixel buffer pool is shared between
20    /// the video decoder and the session client.
21    ///
22    /// This is false if separate pools are used because the pixel buffer attributes specified
23    /// by the video decoder and the client were incompatible.
24    ///
25    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_pixelbufferpoolisshared?language=objc)
26    pub static kVTDecompressionPropertyKey_PixelBufferPoolIsShared: &'static CFString;
27}
28
29extern "C" {
30    /// Requests that the VTDecompressionSession use the value provided as a minimum buffer
31    /// count for its output CVPixelBufferPool, not releasing buffers while the number in
32    /// use is below this level.
33    ///
34    /// This property effectively requests that the kCVPixelBufferPoolMinimumBufferCountKey key
35    /// be used for the creation of the output CVPixelBufferPool.
36    ///
37    /// For general playback cases, standard CVPixelBufferPool age-out behaviour should be
38    /// sufficient and this property should not be needed.  This property should only be used in
39    /// unusual playback scenarios where a peak pool level is known, and the potential
40    /// memory overhead is an acceptable tradeoff for avoiding possible buffer reallocation.
41    ///
42    /// Setting this property to NULL or passing in the value 0 will clear this setting and
43    /// remove the minimum buffer count.
44    ///
45    /// Setting this property while a VTDecompressionSession is in use will result in the
46    /// creation of a new CVPixelBufferPool. This will cause new buffers to be allocated, and
47    /// existing buffers to be deallocated when they are released.
48    ///
49    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_outputpoolrequestedminimumbuffercount?language=objc)
50    pub static kVTDecompressionPropertyKey_OutputPoolRequestedMinimumBufferCount: &'static CFString;
51}
52
53extern "C" {
54    /// Returns the number of frames currently being decoded.
55    ///
56    /// This number may decrease asynchronously as frames are output.
57    ///
58    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_numberofframesbeingdecoded?language=objc)
59    pub static kVTDecompressionPropertyKey_NumberOfFramesBeingDecoded: &'static CFString;
60}
61
62extern "C" {
63    /// The minimum output presentation timestamp of the frames currently being decoded.
64    ///
65    /// This may change asynchronously as frames are output.
66    ///
67    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_minoutputpresentationtimestampofframesbeingdecoded?language=objc)
68    pub static kVTDecompressionPropertyKey_MinOutputPresentationTimeStampOfFramesBeingDecoded:
69        &'static CFString;
70}
71
72extern "C" {
73    /// The maximum output presentation timestamp of the frames currently being decoded.
74    ///
75    /// This may change asynchronously as frames are output.
76    ///
77    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_maxoutputpresentationtimestampofframesbeingdecoded?language=objc)
78    pub static kVTDecompressionPropertyKey_MaxOutputPresentationTimeStampOfFramesBeingDecoded:
79        &'static CFString;
80}
81
82extern "C" {
83    /// Indicates whether the content being decoded has interframe dependencies, if the decoder knows.
84    ///
85    /// This is an optional property for video decoders to implement.
86    ///
87    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_contenthasinterframedependencies?language=objc)
88    pub static kVTDecompressionPropertyKey_ContentHasInterframeDependencies: &'static CFString;
89}
90
91extern "C" {
92    /// If set to kCFBooleanTrue, the VideoToolbox will use a hardware accelerated video decoder if available.  If set to
93    /// kCFBooleanFalse, hardware decode will never be used.
94    ///
95    /// This key is set in the decoderSpecification passed in to VTDecompressionSessionCreate.  Set it
96    /// to kCFBooleanTrue to allow hardware accelerated decode.  To  prevent hardware decode,
97    /// this property can be set to kCFBooleanFalse.
98    /// In MacOS 10.15 and later, hardware decode is enabled in VTDecompressionSessions by default.
99    ///
100    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtvideodecoderspecification_enablehardwareacceleratedvideodecoder?language=objc)
101    pub static kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder:
102        &'static CFString;
103}
104
105extern "C" {
106    /// If set to kCFBooleanTrue, the VideoToolbox will try to allocate a hardware accelerated decoder and
107    /// return an error if that isn't possible.
108    /// Setting this key automatically implies kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder --
109    /// there is no need to set both and the Enable key does nothing if the Require key is set.
110    ///
111    /// This key is set in the decoderSpecification passed in to VTDecompressionSessionCreate.  Set it
112    /// to kCFBooleanTrue to require hardware accelerated decode.  If hardware acceleration is not
113    /// possible, the VTDecompressionSessionCreate call will fail.
114    /// This key is useful for clients that have their own software decode implementation or
115    /// those that may want to configure software and hardware decode sessions differently.
116    /// Hardware acceleration may be unavailable for a number of reasons.  A few common cases are:
117    /// - the machine does not have hardware acceleration capabilities
118    /// - the requested decoding format or configuration is not supported
119    /// - the hardware decode resources on the machine are busy
120    ///
121    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtvideodecoderspecification_requirehardwareacceleratedvideodecoder?language=objc)
122    pub static kVTVideoDecoderSpecification_RequireHardwareAcceleratedVideoDecoder:
123        &'static CFString;
124}
125
126extern "C" {
127    /// If set to kCFBooleanTrue, a hardware accelerated video decoder is being used.
128    ///
129    /// You can query this property using VTSessionCopyProperty after you have enabled hardware
130    /// accelerated decode using kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder
131    /// to see if a hardware accelerated decoder was selected.
132    ///
133    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_usinghardwareacceleratedvideodecoder?language=objc)
134    pub static kVTDecompressionPropertyKey_UsingHardwareAcceleratedVideoDecoder: &'static CFString;
135}
136
137extern "C" {
138    /// Hints the video decoder that decompression is, or is not, being performed in real time.
139    ///
140    /// For non-realtime decompression, clients may set this property to kCFBooleanFalse, which indicates that
141    /// it is OK to run this decode pipeline at a lower priority than is used for realtime decode.
142    /// By default, the VideoToolbox will treat the VTDecompressionSession as though it is being used for
143    /// realtime playback.  Setting the property to NULL is equivalent to setting it to kCFBooleanTrue.
144    ///
145    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_realtime?language=objc)
146    pub static kVTDecompressionPropertyKey_RealTime: &'static CFString;
147}
148
149extern "C" {
150    /// Hints to the video decoder that it should maximize power efficiency during decoding.
151    ///
152    /// For decompression where the client is operating in the background, clients may set this property to kCFBooleanTrue, which indicates that
153    /// the decoder can take steps to minimize impact on power usage and other system activity.
154    /// Setting the property to NULL is equivalent to setting it to kCFBooleanFalse.
155    /// Setting both kVTDecompressionPropertyKey_MaximizePowerEfficiency and kVTDecompressionPropertyKey_RealTime is unsupported and results in undefined behavior.
156    /// Not all video decoders may support this property
157    /// By default, this property is NULL.
158    ///
159    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_maximizepowerefficiency?language=objc)
160    pub static kVTDecompressionPropertyKey_MaximizePowerEfficiency: &'static CFString;
161}
162
163extern "C" {
164    /// Gets number of threads used by codec or suggests number of threads to use.
165    ///
166    /// This is an optional property for video decoders to implement.
167    ///
168    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_threadcount?language=objc)
169    pub static kVTDecompressionPropertyKey_ThreadCount: &'static CFString;
170}
171
172extern "C" {
173    /// Requests special handling of interlaced content.
174    ///
175    /// This is an optional property for video decoders to implement.
176    /// Decoders should only accept the modes that they will implement.
177    ///
178    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_fieldmode?language=objc)
179    pub static kVTDecompressionPropertyKey_FieldMode: &'static CFString;
180}
181
182extern "C" {
183    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionproperty_fieldmode_bothfields?language=objc)
184    pub static kVTDecompressionProperty_FieldMode_BothFields: &'static CFString;
185}
186
187extern "C" {
188    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionproperty_fieldmode_topfieldonly?language=objc)
189    pub static kVTDecompressionProperty_FieldMode_TopFieldOnly: &'static CFString;
190}
191
192extern "C" {
193    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionproperty_fieldmode_bottomfieldonly?language=objc)
194    pub static kVTDecompressionProperty_FieldMode_BottomFieldOnly: &'static CFString;
195}
196
197extern "C" {
198    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionproperty_fieldmode_singlefield?language=objc)
199    pub static kVTDecompressionProperty_FieldMode_SingleField: &'static CFString;
200}
201
202extern "C" {
203    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionproperty_fieldmode_deinterlacefields?language=objc)
204    pub static kVTDecompressionProperty_FieldMode_DeinterlaceFields: &'static CFString;
205}
206
207extern "C" {
208    /// Requests a specific deinterlacing technique.
209    ///
210    /// This is an optional property for video decoders to implement.
211    /// Decoders should only accept the modes that they will implement.
212    /// This property is only applicable if kVTDecompressionPropertyKey_FieldMode
213    /// is set to kVTDecompressionProperty_FieldMode_DeinterlaceFields.
214    ///
215    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_deinterlacemode?language=objc)
216    pub static kVTDecompressionPropertyKey_DeinterlaceMode: &'static CFString;
217}
218
219extern "C" {
220    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionproperty_deinterlacemode_verticalfilter?language=objc)
221    pub static kVTDecompressionProperty_DeinterlaceMode_VerticalFilter: &'static CFString;
222}
223
224extern "C" {
225    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionproperty_deinterlacemode_temporal?language=objc)
226    pub static kVTDecompressionProperty_DeinterlaceMode_Temporal: &'static CFString;
227}
228
229extern "C" {
230    /// Requests decoding at a smaller resolution than full-size.
231    ///
232    /// This is an optional property for video decoders to implement.
233    /// Decoders that only support a fixed set of resolutions should pick the smallest resolution
234    /// greater than or equal to the requested width x height.
235    ///
236    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_reducedresolutiondecode?language=objc)
237    pub static kVTDecompressionPropertyKey_ReducedResolutionDecode: &'static CFString;
238}
239
240extern "C" {
241    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionresolutionkey_width?language=objc)
242    pub static kVTDecompressionResolutionKey_Width: &'static CFString;
243}
244
245extern "C" {
246    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionresolutionkey_height?language=objc)
247    pub static kVTDecompressionResolutionKey_Height: &'static CFString;
248}
249
250extern "C" {
251    /// Requests approximation during decoding.
252    ///
253    /// This is an optional property for video decoders to implement.
254    /// Only decoders for which such approximations make sense should implement this property.
255    /// The meaning of the number of coefficients will be decoder-specific.
256    ///
257    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_reducedcoefficientdecode?language=objc)
258    pub static kVTDecompressionPropertyKey_ReducedCoefficientDecode: &'static CFString;
259}
260
261extern "C" {
262    /// Requests frame dropping.
263    ///
264    /// This is an optional property for video decoders to implement.
265    /// This number is a fraction between 0.0 and 1.0 that indicates what proportion of frames
266    /// should be delivered -- others may be dropped.
267    /// For example, 0.25 would indicate that only one frame in every 4 should be delivered.
268    /// This is a guideline; actual selection of frames is up to the decoder, which will know
269    /// which frames can be skipped without harm.
270    /// If the decoder does not support this property directly, but reports that the content has
271    /// no interframe dependencies, the video toolbox may step in and perform simple frame dropping.
272    ///
273    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_reducedframedelivery?language=objc)
274    pub static kVTDecompressionPropertyKey_ReducedFrameDelivery: &'static CFString;
275}
276
277extern "C" {
278    /// Requests that frames be filtered by type.
279    ///
280    /// This is an optional property for video decoders to implement.
281    /// If kVTDecompressionPropertyKey_ReducedFrameDelivery is supported and used in conjunction with
282    /// this property, the ReducedFrameDelivery is the proportion of the frames selected by this property:
283    /// 0.25 and IFrames would indicate that only one I frame in every four should be delivered.
284    ///
285    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_onlytheseframes?language=objc)
286    pub static kVTDecompressionPropertyKey_OnlyTheseFrames: &'static CFString;
287}
288
289extern "C" {
290    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionproperty_onlytheseframes_allframes?language=objc)
291    pub static kVTDecompressionProperty_OnlyTheseFrames_AllFrames: &'static CFString;
292}
293
294extern "C" {
295    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionproperty_onlytheseframes_nondroppableframes?language=objc)
296    pub static kVTDecompressionProperty_OnlyTheseFrames_NonDroppableFrames: &'static CFString;
297}
298
299extern "C" {
300    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionproperty_onlytheseframes_iframes?language=objc)
301    pub static kVTDecompressionProperty_OnlyTheseFrames_IFrames: &'static CFString;
302}
303
304extern "C" {
305    /// [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionproperty_onlytheseframes_keyframes?language=objc)
306    pub static kVTDecompressionProperty_OnlyTheseFrames_KeyFrames: &'static CFString;
307}
308
309extern "C" {
310    /// Requests that frames be filtered by temporal level.
311    ///
312    /// This is an optional property for video decoders to implement.
313    /// If kVTDecompressionProperty_TemporalLevelLimit is supported and the video track is
314    /// an hierarchical encoding with temporal levels, this property requests that decoding
315    /// be limited to the specified temporal level and lower.
316    /// For more information on temporal levels, see kCMSampleAttachmentKey_HEVCTemporalLevelInfo
317    /// in CoreMedia/CMSampleBuffer.h
318    ///
319    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionproperty_temporallevellimit?language=objc)
320    pub static kVTDecompressionProperty_TemporalLevelLimit: &'static CFString;
321}
322
323extern "C" {
324    /// Suggests how quality-of-service may be lowered in order to maintain realtime playback.
325    ///
326    /// This is an optional property for video decoders to implement.
327    /// This property value is an array containing either CFDictionaries of property key/value pairs, or
328    /// the array can contain special key values like kVTDecompressionProperty_TemporalLevelLimit.
329    /// The first entry in the array should contain the set of properties that restore the
330    /// default (full) quality of service; later entries should contain property sets with
331    /// decreasing qualities of service.  Clients may work their way down these tiers until they are
332    /// able to keep up with the frame rate.
333    ///
334    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_suggestedqualityofservicetiers?language=objc)
335    pub static kVTDecompressionPropertyKey_SuggestedQualityOfServiceTiers: &'static CFString;
336}
337
338extern "C" {
339    /// Provides hints about quality tradeoffs between pixel formats.
340    ///
341    /// This is an optional property for video decoders to implement.
342    /// This property value is an array containing CFNumbers holding CMPixelFormatType values,
343    /// ordered by quality from best to worse.
344    ///
345    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_supportedpixelformatsorderedbyquality?language=objc)
346    pub static kVTDecompressionPropertyKey_SupportedPixelFormatsOrderedByQuality: &'static CFString;
347}
348
349extern "C" {
350    /// Provides hints about speed tradeoffs between pixel formats.
351    ///
352    /// This is an optional property for video decoders to implement.
353    /// This property value is an array containing CFNumbers holding CMPixelFormatType values,
354    /// ordered by speed from fast to slow.
355    ///
356    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_supportedpixelformatsorderedbyperformance?language=objc)
357    pub static kVTDecompressionPropertyKey_SupportedPixelFormatsOrderedByPerformance:
358        &'static CFString;
359}
360
361extern "C" {
362    /// Indicates which pixel formats support reduced resolution decoding.
363    ///
364    /// This is an optional property for video decoders to implement.
365    /// This property value is an array containing CFNumbers holding CMPixelFormatType values.
366    ///
367    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_pixelformatswithreducedresolutionsupport?language=objc)
368    pub static kVTDecompressionPropertyKey_PixelFormatsWithReducedResolutionSupport:
369        &'static CFString;
370}
371
372extern "C" {
373    /// True if decoder is allowed to output buffers matching reduced frame dimensions in the bitstream rather than
374    /// under-filling them.
375    ///
376    /// This is an optional property only supported by video decoders for bitstream formats which have a provision
377    /// for specifying output dimensions per-frame, such as AV1.
378    ///
379    /// If a decoder does not support this property or if the property value is set to `kCFBooleanFalse`, all decoded
380    /// frames will have the same dimensions as specified in the format description. In this case, if the bitstream
381    /// changes the frame dimensions, the output buffer will be padded to the dimensions specified in the format
382    /// description.
383    ///
384    /// When this property is set to `kCFBooleanTrue`, the decoder will set the dimensions of each output buffer to
385    /// match the dimensions specified in the bitstream for that frame.
386    ///
387    /// In all cases, output buffer dimensions will never exceed the dimensions specified in the format description.
388    ///
389    /// In apps linked to SDK versions before this property was added, the AV1 decoder will behave as if this property
390    /// is set to `kCFBooleanFalse`. Otherwise, value of this property defaults to `kCFBooleanTrue` where supported.
391    ///
392    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_allowbitstreamtochangeframedimensions?language=objc)
393    pub static kVTDecompressionPropertyKey_AllowBitstreamToChangeFrameDimensions: &'static CFString;
394}
395
396extern "C" {
397    /// Requests particular pixel transfer features.
398    ///
399    /// This property is implemented by the video toolbox.
400    /// This property value is a CFDictionary containing properties from VTPixelTransferProperties.h.
401    ///
402    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_pixeltransferproperties?language=objc)
403    pub static kVTDecompressionPropertyKey_PixelTransferProperties: &'static CFString;
404}
405
406extern "C" {
407    /// If set, the VideoToolbox will only use a hardware decoder running on the GPU specified by the provided GPU registryID.
408    ///
409    /// This specification implies kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder.  A separate hardware decode opt-in is not required.
410    /// The GPU registryID can be obtained from a MTLDevice using [MTLDevice registryID] or can be obtained from OpenGL or OpenCL.
411    /// This option can only be used to specify a GPU registryID corresponding to a removable GPU (eGPU).
412    /// If 0 is specified for the required GPU registryID, the VideoToolbox will not utilize removable GPUs for decode.
413    ///
414    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtvideodecoderspecification_requireddecodergpuregistryid?language=objc)
415    pub static kVTVideoDecoderSpecification_RequiredDecoderGPURegistryID: &'static CFString;
416}
417
418extern "C" {
419    /// If set, the VideoToolbox will try to use a hardware decoder running on the GPU specified by the provided GPU registryID.  If the
420    /// GPU does not support decode of the specified format, the VideoToolbox will fall back to alternate decoders.
421    ///
422    /// This specification implies kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder.  A separate hardware decode opt-in is not required.
423    /// If both kVTVideoDecoderSpecification_PreferredDecoderGPURegistryID and kVTVideoDecoderSpecification_RequiredDecoderGPURegistryID are
424    /// set, kVTVideoDecoderSpecification_PreferredDecoderGPURegistryID will be ignored.
425    /// This specification can be used in conjunction with kVTVideoDecoderSpecification_RequireHardwareAcceleratedVideoDecoder to prevent a fallback
426    /// to software decode.
427    /// The GPU registryID can be obtained from a MTLDevice using [MTLDevice registryID] or can be obtained from OpenGL or OpenCL.
428    /// This option can only be used to specify a GPU registryID corresponding to a removable GPU (eGPU).
429    ///
430    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtvideodecoderspecification_preferreddecodergpuregistryid?language=objc)
431    pub static kVTVideoDecoderSpecification_PreferredDecoderGPURegistryID: &'static CFString;
432}
433
434extern "C" {
435    /// returns CFNumber indicating the gpu registryID of the decoder that was selected.  NULL indicates a built-in decoder or software decode was used.
436    ///
437    /// You can query this property using VTSessionCopyProperty after building a VTDecompressionSession to find out which GPU the decoder is using.
438    /// If a decoder based on a built-in GPU was used it will return NULL.  If a software decoder is used, it will return NULL
439    ///
440    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_usinggpuregistryid?language=objc)
441    pub static kVTDecompressionPropertyKey_UsingGPURegistryID: &'static CFString;
442}
443
444extern "C" {
445    /// This controls whether or not to propagate any per frame HDR
446    /// display metadata from the input compressed bitstream to the output pixel buffer.
447    ///
448    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_propagateperframehdrdisplaymetadata?language=objc)
449    pub static kVTDecompressionPropertyKey_PropagatePerFrameHDRDisplayMetadata: &'static CFString;
450}
451
452extern "C" {
453    /// Generates Per Frame HDR Metadata and attaches it to the resulting decoded CVPixelBuffers.
454    ///
455    /// If the color space and YCbCrMatrix matches a supported HDR format such as HLG (kCMFormatDescriptionTransferFunction_ITU_R_2100_HLG)
456    /// the decoded frame will be analyzed and metadata will be added as an attachment to the CVPixelBuffer.
457    ///
458    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_generateperframehdrdisplaymetadata?language=objc)
459    pub static kVTDecompressionPropertyKey_GeneratePerFrameHDRDisplayMetadata: &'static CFString;
460}
461
462extern "C" {
463    /// Indicates whether the decoder can produce RAW output requiring a VTRAWProcessingSession for post-decode processing.
464    ///
465    /// If this property is not implemented, it is assumed that the decoder does not produce RAW output.
466    /// If the decoder reports that it produces RAW output the VTDecompressionSession will internally invoke a VTRAWProcessingSession by default to produce
467    /// processed output.
468    /// If the client sets kVTDecompressionPropertyKey_RequestRAWOutput, the VTDecompressionSession will do no processing and return the decoder's native RAW
469    /// output, and any requested destinationImageBufferAttributes on the VTDecompressionSession will be ignored.
470    ///
471    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_decoderproducesrawoutput?language=objc)
472    pub static kVTDecompressionPropertyKey_DecoderProducesRAWOutput: &'static CFString;
473}
474
475extern "C" {
476    /// For decoders which produce RAW output, this property requests that the VTDecompressionSession provide output which has not been processed.
477    ///
478    /// When a decoder produces RAW output (signalled by kVTDecompressionPropertyKey_DecoderProducesRAWOutput) the VTDecompressionSession will automatically
479    /// invoke a VTRAWProcessingSession with default settings and emit processed frames by default, or when kVTDecompressionPropertyKey_RequestRAWOutput is set
480    /// to kCFBooleanFalse.
481    /// If a client wants to run a VTRAWProcessingSession on the RAW output themselves in order to control the post-decode processing of the decoded CVPixelBuffers,
482    /// they must set kVTDecompressionPropertyKey_RequestRAWOutput to kCFBooleanTrue.
483    /// If kVTDecompressionPropertyKey_RequestRAWOutput has been enabled and the decoder produces RAW output, the VTDecompressionSession
484    /// will return CVPixelBuffers in the decoder's native RAW format.  Any destinationImageBufferAttributes set on the VTDecompressionSession will be ignored.
485    ///
486    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_requestrawoutput?language=objc)
487    pub static kVTDecompressionPropertyKey_RequestRAWOutput: &'static CFString;
488}
489
490extern "C" {
491    /// Requests multi-image decoding of specific MV-HEVC VideoLayerIDs.
492    ///
493    /// MV-HEVC specific.
494    /// Requires that the VTDecompressionSession client use VTDecompressionSessionSetMultiImageCallback to install a callback capable of receiving CMTaggedBufferGroups in response to multi-image DecodeFrame requests.
495    /// The property value is a CFArray containing VideoLayerIDs as CFNumbers.
496    /// MV-HEVC VideoLayerIDs not in this list do not need to be output, and the decoder may skip decoding them if not otherwise necessary.
497    /// The property is NULL by default.
498    /// If this property is NULL, MV-HEVC shall be decoded ignoring layers other than the base layer.
499    /// Terminology note: in multi-image decompression, a single video sample (from one CMSampleBuffer) contains a single frame (with one PTS) that is decoded to produce multiple images.
500    ///
501    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecompressionpropertykey_requestedmvhevcvideolayerids?language=objc)
502    pub static kVTDecompressionPropertyKey_RequestedMVHEVCVideoLayerIDs: &'static CFString;
503}
504
505extern "C" {
506    /// Clockwise rotation (one of 0, 90, 180, 270) to be applied for proper display orientation.
507    ///
508    /// This value is used for content analysis to properly orient the image before analysis.
509    /// The value should be a CFNumber with values of 0, 90, 180, or 270, representing degrees of clockwise rotation.
510    /// This key is not used unless you have attached a ``SCVideoStreamAnalyzer`` to the decompression session.
511    ///
512    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecodeframeoptionkey_contentanalyzerrotation?language=objc)
513    pub static kVTDecodeFrameOptionKey_ContentAnalyzerRotation: &'static CFString;
514}
515
516extern "C" {
517    /// CGRect within the image to be used for content analysis, cropped before applying rotation.
518    ///
519    /// This value specifies a rectangle within the original frame that should be used for content analysis.
520    /// The cropping is applied before any rotation specified by kVTDecodeFrameOptionKey_ContentAnalyzerRotation.
521    /// The value should be a CFDictionary representing a CGRect created using CGRectCreateDictionaryRepresentation().
522    /// This key is not used unless you have attached a ``SCVideoStreamAnalyzer`` to the decompression session.
523    ///
524    /// See also [Apple's documentation](https://developer.apple.com/documentation/videotoolbox/kvtdecodeframeoptionkey_contentanalyzercroprectangle?language=objc)
525    pub static kVTDecodeFrameOptionKey_ContentAnalyzerCropRectangle: &'static CFString;
526}