---
title: AVVideoComposition
framework: avfoundation
role: symbol
role_heading: Class
path: avfoundation/avvideocomposition
---

# AVVideoComposition

An object that describes how to compose video frames at particular points in time.

## Declaration

```swift
class AVVideoComposition
```

## Overview

Overview If you use the built-in video compositor, the instructions a video composition contain can specify a spatial transformation, an opacity value, and a cropping rectangle for each video source. This values can vary over time by applying linear ramping functions. You can create a custom video compositor by implementing the AVVideoCompositing protocol. The system provides the custom video compositor with pixel buffers for each of its video sources during playback, and can perform arbitrary graphical operations on them to produce visual output.

## Topics

### Creating a video composition

- [init(configuration:)](avfoundation/avvideocomposition/init(configuration:).md)
- [AVVideoComposition.Configuration](avfoundation/avvideocomposition/configuration.md)
- [init(applyingFiltersTo:applier:)](avfoundation/avvideocomposition/init(applyingfiltersto:applier:).md)
- [videoComposition(with:applyingCIFiltersWithHandler:completionHandler:)](avfoundation/avvideocomposition/videocomposition(with:applyingcifilterswithhandler:completionhandler:).md)
- [AVAsynchronousCIImageFilteringRequest](avfoundation/avasynchronousciimagefilteringrequest.md)
- [AVCIImageFilteringParameters](avfoundation/avciimagefilteringparameters.md)
- [AVCIImageFilteringResult](avfoundation/avciimagefilteringresult.md)
- [videoComposition(withPropertiesOf:completionHandler:)](avfoundation/avvideocomposition/videocomposition(withpropertiesof:completionhandler:).md)
- [init(propertiesOf:)](avfoundation/avvideocomposition/init(propertiesof:).md)
- [init(asset:applyingCIFiltersWithHandler:)](avfoundation/avvideocomposition/init(asset:applyingcifilterswithhandler:).md)

### Inspecting the video composition

- [renderSize](avfoundation/avvideocomposition/rendersize.md)
- [renderScale](avfoundation/avvideocomposition/renderscale.md)
- [frameDuration](avfoundation/avvideocomposition/frameduration.md)
- [animationTool](avfoundation/avvideocomposition/animationtool.md)
- [colorPrimaries](avfoundation/avvideocomposition/colorprimaries.md)
- [colorTransferFunction](avfoundation/avvideocomposition/colortransferfunction.md)
- [colorYCbCrMatrix](avfoundation/avvideocomposition/colorycbcrmatrix.md)
- [customVideoCompositorClass](avfoundation/avvideocomposition/customvideocompositorclass.md)
- [outputBufferDescription](avfoundation/avvideocomposition/outputbufferdescription-3ayt8.md)
- [spatialVideoConfigurations](avfoundation/avvideocomposition/spatialvideoconfigurations-80iab.md)
- [AVSpatialVideoConfiguration](avfoundation/avspatialvideoconfiguration-swift.struct.md)

### Validating the time range

- [isValid(for:assetDuration:timeRange:validationDelegate:)](avfoundation/avvideocomposition/isvalid(for:assetduration:timerange:validationdelegate:).md)
- [AVVideoCompositionValidationHandling](avfoundation/avvideocompositionvalidationhandling.md)
- [determineValidity(for:timeRange:validationDelegate:completionHandler:)](avfoundation/avvideocomposition/determinevalidity(for:timerange:validationdelegate:completionhandler:).md)
- [isValid(for:timeRange:validationDelegate:)](avfoundation/avvideocomposition/isvalid(for:timerange:validationdelegate:).md)

### Reading instructions

- [instructions](avfoundation/avvideocomposition/instructions.md)
- [AVVideoCompositionInstructionProtocol](avfoundation/avvideocompositioninstructionprotocol.md)

### Identifying source tracks

- [sourceTrackIDForFrameTiming](avfoundation/avvideocomposition/sourcetrackidforframetiming.md)
- [sourceSampleDataTrackIDs](avfoundation/avvideocomposition/sourcesampledatatrackids-2hgue.md)

### Configuring HDR metadata

- [perFrameHDRDisplayMetadataPolicy](avfoundation/avvideocomposition/perframehdrdisplaymetadatapolicy-swift.property.md)
- [AVVideoComposition.PerFrameHDRDisplayMetadataPolicy](avfoundation/avvideocomposition/perframehdrdisplaymetadatapolicy-swift.struct.md)

### Initializers

- [init(propertiesOfAsset:)](avfoundation/avvideocomposition/init(propertiesofasset:).md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Inherited By

- [AVMutableVideoComposition](avfoundation/avmutablevideocomposition.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCopying](foundation/nscopying.md)
- [NSMutableCopying](foundation/nsmutablecopying.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Built-in video compositing

- [Editing and playing HDR video](avfoundation/editing-and-playing-hdr-video.md)
- [Debugging AVFoundation audio mixes, compositions, and video compositions](avfoundation/debugging-avfoundation-audio-mixes-compositions-and-video-compositions.md)
- [AVVideoCompositionInstruction](avfoundation/avvideocompositioninstruction-swift.class.md)
- [AVVideoCompositionLayerInstruction](avfoundation/avvideocompositionlayerinstruction.md)
- [AVMutableVideoComposition](avfoundation/avmutablevideocomposition.md)
- [AVMutableVideoCompositionInstruction](avfoundation/avmutablevideocompositioninstruction.md)
- [AVMutableVideoCompositionLayerInstruction](avfoundation/avmutablevideocompositionlayerinstruction.md)
