<!--
{
  "documentType" : "article",
  "framework" : "VideoToolbox",
  "identifier" : "/documentation/VideoToolbox/compression-properties",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Compression Properties"
}
-->

# Compression Properties

Properties that you use to configure a compression session.

## Discussion> Note:
> Video encoders may not support all compression property keys.

## Topics

### Bitstream Configuration

[`kVTCompressionPropertyKey_Depth`](/documentation/VideoToolbox/kVTCompressionPropertyKey_Depth)

The pixel depth of the encoded video.

[`kVTCompressionPropertyKey_H264EntropyMode`](/documentation/VideoToolbox/kVTCompressionPropertyKey_H264EntropyMode)

The entropy encoding mode for H.264 compression.

[`kVTCompressionPropertyKey_HDRMetadataInsertionMode`](/documentation/VideoToolbox/kVTCompressionPropertyKey_HDRMetadataInsertionMode)

[`kVTCompressionPropertyKey_OutputBitDepth`](/documentation/VideoToolbox/kVTCompressionPropertyKey_OutputBitDepth)

[`kVTCompressionPropertyKey_PreserveAlphaChannel`](/documentation/VideoToolbox/kVTCompressionPropertyKey_PreserveAlphaChannel)

A key that specifies whether to encode the alpha channel of input video frames.

[`kVTCompressionPropertyKey_PreserveDynamicHDRMetadata`](/documentation/VideoToolbox/kVTCompressionPropertyKey_PreserveDynamicHDRMetadata)

Specifies whether to preserve dynamic HDR metadata on the input pixel buffer.

[`kVTCompressionPropertyKey_ProfileLevel`](/documentation/VideoToolbox/kVTCompressionPropertyKey_ProfileLevel)

The profile and level for the encoded bitstream.

### Buffers

[`kVTCompressionPropertyKey_NumberOfPendingFrames`](/documentation/VideoToolbox/kVTCompressionPropertyKey_NumberOfPendingFrames)

The number of pending frames in the compression session.

[`kVTCompressionPropertyKey_PixelBufferPoolIsShared`](/documentation/VideoToolbox/kVTCompressionPropertyKey_PixelBufferPoolIsShared)

A Boolean value indicating whether the common pixel buffer pool is shared between the video encoder and the session client.

[`kVTCompressionPropertyKey_VideoEncoderPixelBufferAttributes`](/documentation/VideoToolbox/kVTCompressionPropertyKey_VideoEncoderPixelBufferAttributes)

The video encoder’s pixel buffer attributes for the compression session.

### Camera Calibration

[`kVTCompressionPropertyKey_CameraCalibrationDataLensCollection`](/documentation/VideoToolbox/kVTCompressionPropertyKey_CameraCalibrationDataLensCollection)

[`kVTCompressionPropertyCameraCalibrationKey_ExtrinsicOrientationQuaternion`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_ExtrinsicOrientationQuaternion)

[`kVTCompressionPropertyCameraCalibrationKey_ExtrinsicOriginSource`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_ExtrinsicOriginSource)

[`kVTCompressionPropertyCameraCalibrationKey_IntrinsicMatrix`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_IntrinsicMatrix)

[`kVTCompressionPropertyCameraCalibrationKey_IntrinsicMatrixProjectionOffset`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_IntrinsicMatrixProjectionOffset)

[`kVTCompressionPropertyCameraCalibrationKey_IntrinsicMatrixReferenceDimensions`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_IntrinsicMatrixReferenceDimensions)

[`kVTCompressionPropertyCameraCalibrationKey_LensAlgorithmKind`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_LensAlgorithmKind)

[`kVTCompressionPropertyCameraCalibrationKey_LensDistortions`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_LensDistortions)

[`kVTCompressionPropertyCameraCalibrationKey_LensDomain`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_LensDomain)

[`kVTCompressionPropertyCameraCalibrationKey_LensFrameAdjustmentsPolynomialX`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_LensFrameAdjustmentsPolynomialX)

[`kVTCompressionPropertyCameraCalibrationKey_LensFrameAdjustmentsPolynomialY`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_LensFrameAdjustmentsPolynomialY)

[`kVTCompressionPropertyCameraCalibrationKey_LensIdentifier`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_LensIdentifier)

[`kVTCompressionPropertyCameraCalibrationKey_LensRole`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_LensRole)

[`kVTCompressionPropertyCameraCalibrationKey_RadialAngleLimit`](/documentation/VideoToolbox/kVTCompressionPropertyCameraCalibrationKey_RadialAngleLimit)

### Clean Aperture and Pixel Aspect Ratio

[`kVTCompressionPropertyKey_AspectRatio16x9`](/documentation/VideoToolbox/kVTCompressionPropertyKey_AspectRatio16x9)

A Boolean value indicating whether the DV video stream should have the 16x9 flag set.

[`kVTCompressionPropertyKey_CleanAperture`](/documentation/VideoToolbox/kVTCompressionPropertyKey_CleanAperture)

The clean aperture for encoded frames.

[`kVTCompressionPropertyKey_FieldCount`](/documentation/VideoToolbox/kVTCompressionPropertyKey_FieldCount)

The field count indicating whether the frames should be encoded progressive (1) or interlaced (2).

[`kVTCompressionPropertyKey_FieldDetail`](/documentation/VideoToolbox/kVTCompressionPropertyKey_FieldDetail)

Field ordering for encoded interlaced frames.

[`kVTCompressionPropertyKey_PixelAspectRatio`](/documentation/VideoToolbox/kVTCompressionPropertyKey_PixelAspectRatio)

The pixel aspect ratio for encoded frames.

[`kVTCompressionPropertyKey_ProgressiveScan`](/documentation/VideoToolbox/kVTCompressionPropertyKey_ProgressiveScan)

A Boolean value indicating whether the DV video stream should have the progressive flag set.

### Color

[`kVTCompressionPropertyKey_AlphaChannelMode`](/documentation/VideoToolbox/kVTCompressionPropertyKey_AlphaChannelMode)

[`kVTCompressionPropertyKey_ColorPrimaries`](/documentation/VideoToolbox/kVTCompressionPropertyKey_ColorPrimaries)

The color primaries for compressed content.

[`kVTCompressionPropertyKey_ContentLightLevelInfo`](/documentation/VideoToolbox/kVTCompressionPropertyKey_ContentLightLevelInfo)

[`kVTCompressionPropertyKey_GammaLevel`](/documentation/VideoToolbox/kVTCompressionPropertyKey_GammaLevel)

[`kVTCompressionPropertyKey_ICCProfile`](/documentation/VideoToolbox/kVTCompressionPropertyKey_ICCProfile)

The ICC profile for compressed content.

[`kVTCompressionPropertyKey_MasteringDisplayColorVolume`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MasteringDisplayColorVolume)

[`kVTCompressionPropertyKey_TransferFunction`](/documentation/VideoToolbox/kVTCompressionPropertyKey_TransferFunction)

The transfer function for compressed content.

[`kVTCompressionPropertyKey_YCbCrMatrix`](/documentation/VideoToolbox/kVTCompressionPropertyKey_YCbCrMatrix)

The YCbCr matrix for compressed content.

### Compression Presets

[`kVTCompressionPreset_Balanced`](/documentation/VideoToolbox/kVTCompressionPreset_Balanced)

[`kVTCompressionPreset_HighQuality`](/documentation/VideoToolbox/kVTCompressionPreset_HighQuality)

[`kVTCompressionPreset_HighSpeed`](/documentation/VideoToolbox/kVTCompressionPreset_HighSpeed)

[`kVTCompressionPreset_VideoConferencing`](/documentation/VideoToolbox/kVTCompressionPreset_VideoConferencing)

[`kVTCompressionPropertyKey_SupportedPresetDictionaries`](/documentation/VideoToolbox/kVTCompressionPropertyKey_SupportedPresetDictionaries)

### Encoder Selection

[`kVTCompressionPropertyKey_EncoderID`](/documentation/VideoToolbox/kVTCompressionPropertyKey_EncoderID)

Specifies a particular video encoder by its ID string.

[`kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder`](/documentation/VideoToolbox/kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder)

A Boolean value indicating whether hardware-accelerated video encoding is allowed, if available.

[`kVTVideoEncoderSpecification_EnableLowLatencyRateControl`](/documentation/VideoToolbox/kVTVideoEncoderSpecification_EnableLowLatencyRateControl)

Specifies to select an encoder that supports low-latency operation and enables low-latency mode.

[`kVTVideoEncoderSpecification_EncoderID`](/documentation/VideoToolbox/kVTVideoEncoderSpecification_EncoderID)

A key that indicates a particular video encoder to use.

[`kVTVideoEncoderSpecification_PreferredEncoderGPURegistryID`](/documentation/VideoToolbox/kVTVideoEncoderSpecification_PreferredEncoderGPURegistryID)

[`kVTVideoEncoderSpecification_RequiredEncoderGPURegistryID`](/documentation/VideoToolbox/kVTVideoEncoderSpecification_RequiredEncoderGPURegistryID)

[`kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder`](/documentation/VideoToolbox/kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder)

A Boolean value indicating whether hardware-accelerated encoding is required.

### Encoding Hints

[`kVTCompressionPropertyKey_ExpectedDuration`](/documentation/VideoToolbox/kVTCompressionPropertyKey_ExpectedDuration)

The expected total duration of the compression session, if known.

[`kVTCompressionPropertyKey_ExpectedFrameRate`](/documentation/VideoToolbox/kVTCompressionPropertyKey_ExpectedFrameRate)

The expected frame rate, if known.

[`kVTCompressionPropertyKey_MaximumRealTimeFrameRate`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MaximumRealTimeFrameRate)

A value that specifies the maximum real time rate at which frames can be submitted to a compression session.

[`kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality`](/documentation/VideoToolbox/kVTCompressionPropertyKey_PrioritizeEncodingSpeedOverQuality)

A hint for the video encoder to maximize its speed during encoding, sacrificing quality if needed.

[`kVTCompressionPropertyKey_ReferenceBufferCount`](/documentation/VideoToolbox/kVTCompressionPropertyKey_ReferenceBufferCount)

[`kVTCompressionPropertyKey_SourceFrameCount`](/documentation/VideoToolbox/kVTCompressionPropertyKey_SourceFrameCount)

The number of source frames, if known.

[`kVTCompressionPropertyKey_SuggestedLookAheadFrameCount`](/documentation/VideoToolbox/kVTCompressionPropertyKey_SuggestedLookAheadFrameCount)

A value that requests that the encoder retain the specified number of frames during encoding.

### Frame Dependency

[`kVTCompressionPropertyKey_AllowFrameReordering`](/documentation/VideoToolbox/kVTCompressionPropertyKey_AllowFrameReordering)

A Boolean value that indicates whether frame reordering is enabled.

[`kVTCompressionPropertyKey_AllowOpenGOP`](/documentation/VideoToolbox/kVTCompressionPropertyKey_AllowOpenGOP)

Enables Open GOP (Group Of Pictures) encoding.

[`kVTCompressionPropertyKey_AllowTemporalCompression`](/documentation/VideoToolbox/kVTCompressionPropertyKey_AllowTemporalCompression)

A Boolean value indicating whether temporal compression is enabled.

[`kVTCompressionPropertyKey_MaxKeyFrameInterval`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MaxKeyFrameInterval)

The maximum interval between key frames, also known as the key frame rate.

[`kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration)

The maximum duration from one key frame to the next in seconds.

### Hardware Acceleration

[`kVTCompressionPropertyKey_UsingGPURegistryID`](/documentation/VideoToolbox/kVTCompressionPropertyKey_UsingGPURegistryID)

[`kVTCompressionPropertyKey_UsingHardwareAcceleratedVideoEncoder`](/documentation/VideoToolbox/kVTCompressionPropertyKey_UsingHardwareAcceleratedVideoEncoder)

A Boolean value indicating whether a hardware-accelerated video encoder is used.

### Long-Term Reference

[`kVTCompressionPropertyKey_EnableLTR`](/documentation/VideoToolbox/kVTCompressionPropertyKey_EnableLTR)

Enables Long Term Reference (LTR) frames during encoding.

[`kVTEncodeFrameOptionKey_AcknowledgedLTRTokens`](/documentation/VideoToolbox/kVTEncodeFrameOptionKey_AcknowledgedLTRTokens)

Enable Long Term Reference (LTR) frames during encoding.

[`kVTEncodeFrameOptionKey_ForceLTRRefresh`](/documentation/VideoToolbox/kVTEncodeFrameOptionKey_ForceLTRRefresh)

A Boolean value that indicates whether to force Long Term Reference (LTR).

[`kVTSampleAttachmentKey_RequireLTRAcknowledgementToken`](/documentation/VideoToolbox/kVTSampleAttachmentKey_RequireLTRAcknowledgementToken)

A number value that contains a unique token for this Long Term Reference (LTR).

### Multipass Storage

[`kVTCompressionPropertyKey_MultiPassStorage`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MultiPassStorage)

A property key that enables multipass compression and provides storage for encoder private data.

### Multiview Compression

[`kVTCompressionPropertyKey_MVHEVCLeftAndRightViewIDs`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MVHEVCLeftAndRightViewIDs)

Specifies which view identifier corresponds to the left eye and right eye.

[`kVTCompressionPropertyKey_MVHEVCVideoLayerIDs`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MVHEVCVideoLayerIDs)

The identifiers of the video layers to encode in a multiview encoding operation.

[`kVTCompressionPropertyKey_MVHEVCViewIDs`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MVHEVCViewIDs)

The identifiers of the views corresponding to the video layers in a multiview encoding operation.

### Parallelization

[`kVTCompressionPropertyKey_RecommendedParallelizationLimit`](/documentation/VideoToolbox/kVTCompressionPropertyKey_RecommendedParallelizationLimit)

The recommended number of compression sessions to instantiate in a parallel encoding configuration.

[`kVTCompressionPropertyKey_RecommendedParallelizedSubdivisionMinimumDuration`](/documentation/VideoToolbox/kVTCompressionPropertyKey_RecommendedParallelizedSubdivisionMinimumDuration)

The recommended minimum duration for a given subdivision in a parallel encoding configuration.

[`kVTCompressionPropertyKey_RecommendedParallelizedSubdivisionMinimumFrameCount`](/documentation/VideoToolbox/kVTCompressionPropertyKey_RecommendedParallelizedSubdivisionMinimumFrameCount)

The recommended minimum number of video frames for a given subdivision in a parallel encoding configuration.

### Per-Frame Configuration

[`kVTEncodeFrameOptionKey_BaseFrameQP`](/documentation/VideoToolbox/kVTEncodeFrameOptionKey_BaseFrameQP)

[`kVTEncodeFrameOptionKey_ForceKeyFrame`](/documentation/VideoToolbox/kVTEncodeFrameOptionKey_ForceKeyFrame)

Boolean value indicating whether the current frame is forced to be a key frame.

### Precompression Processing

[`kVTCompressionPropertyKey_PixelTransferProperties`](/documentation/VideoToolbox/kVTCompressionPropertyKey_PixelTransferProperties)

Properties for configuring a pixel transfer session.

### Quality Metrics

[`kVTCompressionPropertyKey_CalculateMeanSquaredError`](/documentation/VideoToolbox/kVTCompressionPropertyKey_CalculateMeanSquaredError)

[`kVTSampleAttachmentKey_QualityMetrics`](/documentation/VideoToolbox/kVTSampleAttachmentKey_QualityMetrics)

[`kVTSampleAttachmentQualityMetricsKey_ChromaBlueMeanSquaredError`](/documentation/VideoToolbox/kVTSampleAttachmentQualityMetricsKey_ChromaBlueMeanSquaredError)

[`kVTSampleAttachmentQualityMetricsKey_ChromaRedMeanSquaredError`](/documentation/VideoToolbox/kVTSampleAttachmentQualityMetricsKey_ChromaRedMeanSquaredError)

[`kVTSampleAttachmentQualityMetricsKey_LumaMeanSquaredError`](/documentation/VideoToolbox/kVTSampleAttachmentQualityMetricsKey_LumaMeanSquaredError)

### Quantization

[`kVTCompressionPropertyKey_MaxAllowedFrameQP`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MaxAllowedFrameQP)

The maximum allowed encoded frame QP (Quantization Parameter).

[`kVTCompressionPropertyKey_MinAllowedFrameQP`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MinAllowedFrameQP)

The minimum allowed encoded frame QP (Quantization Parameter).

[`kVTCompressionPropertyKey_SpatialAdaptiveQPLevel`](/documentation/VideoToolbox/kVTCompressionPropertyKey_SpatialAdaptiveQPLevel)

A value that controls spatial adaptation of the quantization parameter (QP) based on per-frame statistics.

[`kVTCompressionPropertyKey_SupportsBaseFrameQP`](/documentation/VideoToolbox/kVTCompressionPropertyKey_SupportsBaseFrameQP)

A value that indicates whether the encoder supports base frame QP requests.

### Rate Control

[`kVTCompressionPropertyKey_AverageBitRate`](/documentation/VideoToolbox/kVTCompressionPropertyKey_AverageBitRate)

The long-term desired average bit rate in bits per second.

[`kVTCompressionPropertyKey_ConstantBitRate`](/documentation/VideoToolbox/kVTCompressionPropertyKey_ConstantBitRate)

Requires that the encoder use a Constant Bit Rate algorithm.

[`kVTCompressionPropertyKey_DataRateLimits`](/documentation/VideoToolbox/kVTCompressionPropertyKey_DataRateLimits)

Zero, one, or two hard limits on data rate.

[`kVTCompressionPropertyKey_EstimatedAverageBytesPerFrame`](/documentation/VideoToolbox/kVTCompressionPropertyKey_EstimatedAverageBytesPerFrame)

An estimate of the expected size in bytes of a single encoded frame based on the current configuration.

[`kVTCompressionPropertyKey_MoreFramesAfterEnd`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MoreFramesAfterEnd)

A Boolean value indicating whether and how a compression session concatenates frames with other compressed frames to form a longer series.

[`kVTCompressionPropertyKey_MoreFramesBeforeStart`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MoreFramesBeforeStart)

A Boolean value that indicates whether and how a compression session concatenates frames with other compressed frames to form a longer series.

[`kVTCompressionPropertyKey_Quality`](/documentation/VideoToolbox/kVTCompressionPropertyKey_Quality)

The desired compression quality.

[`kVTCompressionPropertyKey_TargetQualityForAlpha`](/documentation/VideoToolbox/kVTCompressionPropertyKey_TargetQualityForAlpha)

The target quality to use for encoding the alpha channel.

[`kVTCompressionPropertyKey_VariableBitRate`](/documentation/VideoToolbox/kVTCompressionPropertyKey_VariableBitRate)

[`kVTCompressionPropertyKey_VBVBufferDuration`](/documentation/VideoToolbox/kVTCompressionPropertyKey_VBVBufferDuration)

[`kVTCompressionPropertyKey_VBVInitialDelayPercentage`](/documentation/VideoToolbox/kVTCompressionPropertyKey_VBVInitialDelayPercentage)

[`kVTCompressionPropertyKey_VBVMaxBitRate`](/documentation/VideoToolbox/kVTCompressionPropertyKey_VBVMaxBitRate)

### Runtime Restrictions

[`kVTCompressionPropertyKey_MaxFrameDelayCount`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MaxFrameDelayCount)

The maximum number of frames that a compressor is allowed to hold before it must output a compressed frame.

[`kVTCompressionPropertyKey_MaxH264SliceBytes`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MaxH264SliceBytes)

The maximum slice size for H.264 encoding.

[`kVTCompressionPropertyKey_MaximizePowerEfficiency`](/documentation/VideoToolbox/kVTCompressionPropertyKey_MaximizePowerEfficiency)

[`kVTCompressionPropertyKey_RealTime`](/documentation/VideoToolbox/kVTCompressionPropertyKey_RealTime)

A Boolean value indicating whether it’s recommended that the video encoder perform compression in real time.

### Temporal Scalability

[`kVTCompressionPropertyKey_BaseLayerBitRateFraction`](/documentation/VideoToolbox/kVTCompressionPropertyKey_BaseLayerBitRateFraction)

[`kVTCompressionPropertyKey_BaseLayerFrameRate`](/documentation/VideoToolbox/kVTCompressionPropertyKey_BaseLayerFrameRate)

[`kVTCompressionPropertyKey_BaseLayerFrameRateFraction`](/documentation/VideoToolbox/kVTCompressionPropertyKey_BaseLayerFrameRateFraction)

### Video Extended Usage (VEXU) Signaling

[`kVTCompressionPropertyKey_HasLeftStereoEyeView`](/documentation/VideoToolbox/kVTCompressionPropertyKey_HasLeftStereoEyeView)

[`kVTCompressionPropertyKey_HasRightStereoEyeView`](/documentation/VideoToolbox/kVTCompressionPropertyKey_HasRightStereoEyeView)

[`kVTCompressionPropertyKey_HeroEye`](/documentation/VideoToolbox/kVTCompressionPropertyKey_HeroEye)

A value that indicates which eye is the primary eye when rendering in 2D.

[`kVTCompressionPropertyKey_HorizontalDisparityAdjustment`](/documentation/VideoToolbox/kVTCompressionPropertyKey_HorizontalDisparityAdjustment)

A value that indicates a relative shift of the left and right images, which changes the zero parallax plane.

[`kVTCompressionPropertyKey_HorizontalFieldOfView`](/documentation/VideoToolbox/kVTCompressionPropertyKey_HorizontalFieldOfView)

[`kVTCompressionPropertyKey_ProjectionKind`](/documentation/VideoToolbox/kVTCompressionPropertyKey_ProjectionKind)

A value that indicates the projection kind.

[`kVTCompressionPropertyKey_StereoCameraBaseline`](/documentation/VideoToolbox/kVTCompressionPropertyKey_StereoCameraBaseline)

A value that specifies the distance between centers of the lenses of the camera system.

[`kVTCompressionPropertyKey_ViewPackingKind`](/documentation/VideoToolbox/kVTCompressionPropertyKey_ViewPackingKind)

A value that indicates the view packing kind.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)