<!--
{
  "availability" : [
    "iOS: 26.0.0 -",
    "iPadOS: 26.0.0 -",
    "macCatalyst: 26.0.0 -",
    "macOS: 15.4.0 -",
    "tvOS: 26.0.0 -",
    "visionOS: 26.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "VideoToolbox",
  "identifier" : "/documentation/VideoToolbox/VTFrameProcessor",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Video Toolbox"
    ],
    "preciseIdentifier" : "c:objc(cs)VTFrameProcessor"
  },
  "title" : "VTFrameProcessor"
}
-->

# VTFrameProcessor

A class that creates a new frame processor for the configured video effect.

```
class VTFrameProcessor
```

## Overview

Use this class to perform frame by frame processing on your video. Start by specifying a video effect by passing a [`VTFrameProcessorConfiguration`](/documentation/VideoToolbox/VTFrameProcessorConfiguration) object to the [`startSession(configuration:)`](/documentation/VideoToolbox/VTFrameProcessor/startSession(configuration:)) call. Once the session is created, [`process(parameters:completionHandler:)`](/documentation/VideoToolbox/VTFrameProcessor/process(parameters:completionHandler:)) is called in a loop to process your video’s frames one at a time. Once all the frames are processed, call an [`endSession()`](/documentation/VideoToolbox/VTFrameProcessor/endSession()) to finish all pending processing.

For successful processing, the caller needs to ensure that all buffers passed to the processWithParameters interface are unmodified (including attachments) until the function returns or the callback is received in the case of asynchronous mode.

## Topics

### Creating a frame processor

[`-  init`](/documentation/VideoToolbox/VTFrameProcessor/init())

Creates a new frame processor.

### Processing frames

[`-  startSessionWithConfiguration:error:`](/documentation/VideoToolbox/VTFrameProcessor/startSession(configuration:))

Starts a new session and configures the processor pipeline.

[`process(parameters:)`](/documentation/VideoToolbox/VTFrameProcessor/process(parameters:))

[`-  processWithParameters:completionHandler:`](/documentation/VideoToolbox/VTFrameProcessor/process(parameters:completionHandler:))

Asynchronously performs the video effect specified in the start session.

[`-  processWithCommandBuffer:parameters:`](/documentation/VideoToolbox/VTFrameProcessor/process(with:parameters:))

Asynchronously performs the video effect specified in the start session specifically for Metal.

[`-  endSession`](/documentation/VideoToolbox/VTFrameProcessor/endSession())

Performs all necessary tasks to end the session.

## Relationships

### Conforms To

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`CVarArg`](/documentation/Swift/CVarArg)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`Hashable`](/documentation/Swift/Hashable)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`Equatable`](/documentation/Swift/Equatable)

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)