---
title: Video Toolbox
framework: Video Toolbox
role: collection
role_heading: Framework
platforms: [iOS 6.0+, iPadOS 6.0+, Mac Catalyst 13.0+, macOS 10.8+, tvOS 10.2+, visionOS 1.0+]
path: videotoolbox
---

# Video Toolbox

Work directly with hardware-accelerated video encoding and decoding capabilities.

## Overview

Overview VideoToolbox is a low-level framework that provides direct access to hardware encoders and decoders. It provides services for video compression and decompression, and for conversion between raster image formats stored in CoreVideo pixel buffers. These services are provided in the form of session objects (compression, decompression, and pixel transfer), which are vended as Core Foundation (CF) types. Apps that don’t need direct access to hardware encoders and decoders shouldn’t need to use VideoToolbox directly.

## Topics

### Frame Processing

- [Frame processing](videotoolbox/frame-processing.md)

### Motion Estimation

- [VTMotionEstimationSession](videotoolbox/vtmotionestimationsession.md)

### Compression

- [Encoding video for low-latency conferencing](videotoolbox/encoding-video-for-low-latency-conferencing.md)
- [Encoding video for live streaming](videotoolbox/encoding-video-for-live-streaming.md)
- [Encoding video for offline transcoding](videotoolbox/encoding-video-for-offline-transcoding.md)
- [VTCompressionSession](videotoolbox/vtcompressionsession-api-collection.md)
- [VTDecompressionSession](videotoolbox/vtdecompressionsession-api-collection.md)
- [VTFrameSilo](videotoolbox/vtframesilo-api-collection.md)
- [VTMultiPassStorage](videotoolbox/vtmultipassstorage-api-collection.md)

### Transformation

- [VTPixelTransferSession](videotoolbox/vtpixeltransfersession-api-collection.md)
- [VTPixelRotationSession](videotoolbox/vtpixelrotationsession-api-collection.md)

### RAW Processing

- [VTRAWProcessingSession](videotoolbox/vtrawprocessingsession.md)

### Media Extension

- [VTExtensionPropertiesKey](videotoolbox/vtextensionpropertieskey.md)

### HDR Metadata

- [VTHDRPerFrameMetadataGenerationSession](videotoolbox/vthdrperframemetadatagenerationsession.md)

### Codec Support

- [VTIsHardwareDecodeSupported(_:)](videotoolbox/vtishardwaredecodesupported(_:).md)
- [VTRegisterProfessionalVideoWorkflowVideoEncoders()](videotoolbox/vtregisterprofessionalvideoworkflowvideoencoders().md)
- [VTRegisterProfessionalVideoWorkflowVideoDecoders()](videotoolbox/vtregisterprofessionalvideoworkflowvideodecoders().md)
- [VTRegisterSupplementalVideoDecoderIfAvailable(_:)](videotoolbox/vtregistersupplementalvideodecoderifavailable(_:).md)
- [VTCopySupportedPropertyDictionaryForEncoder(width:height:codecType:encoderSpecification:encoderIDOut:supportedPropertiesOut:)](videotoolbox/vtcopysupportedpropertydictionaryforencoder(width:height:codectype:encoderspecification:encoderidout:supportedpropertiesout:).md)
- [VTCopyVideoEncoderList(_:_:)](videotoolbox/vtcopyvideoencoderlist(_:_:).md)
- [Video Encoder List Keys](videotoolbox/video-encoder-list-keys.md)

### Utilities

- [VTCreateCGImageFromCVPixelBuffer(_:options:imageOut:)](videotoolbox/vtcreatecgimagefromcvpixelbuffer(_:options:imageout:).md)

### Data Types

- [VTSession](videotoolbox/vtsession-api-collection.md)
- [VTInt32Point](videotoolbox/vtint32point.md)
- [VTInt32Size](videotoolbox/vtint32size.md)

### Errors

- [Error Code Constants](videotoolbox/1490398-error-code-constants.md)

### Reference

- [VideoToolbox Reference](videotoolbox/videotoolbox-reference.md)

### Variables

- [kVTCompressionPreset_ConsistentQuality](videotoolbox/kvtcompressionpreset_consistentquality.md)
- [kVTCompressionPropertyKey_ConstantQualityFactor](videotoolbox/kvtcompressionpropertykey_constantqualityfactor.md)
- [kVTCompressionPropertyKey_LogTransferFunction](videotoolbox/kvtcompressionpropertykey_logtransferfunction.md)
- [kVTLogTransferFunctionMismatchErr](videotoolbox/kvtlogtransferfunctionmismatcherr.md)
- [kVTProjectionKind_AppleImmersiveVideo](videotoolbox/kvtprojectionkind_appleimmersivevideo.md)
