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}