<!--
{
  "documentType" : "article",
  "framework" : "professional_video_applications",
  "identifier" : "/documentation/Professional-Video-Applications/encoder-extensions",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Encoder Extensions"
}
-->

# Encoder Extensions

Add custom output file formats to the Final Cut Pro workflow.

## Discussion

The Compressor app provides a variety of transcoding formats to convert Final Cut Pro source media files into most common media formats. Create encoder extensions to add custom transcoding formats to the Compressor app, allowing Final Cut Pro users to convert their source media files to these output formats.

![Screenshot showing the encoder extension view inside the Compressor interface.](images/com.apple.professionalvideoapplications/media-3646161@2x.png)

You create an encoder extension using the Xcode template that comes with the SDK. The SDK has APIs that let you exchange data with the Compressor app and take advantage of Qmaster’s distributed processing service to improve the transcoding time in your extension.

You distribute the encoder extension inside a macOS app. When a user installs the macOS app containing your extension, the extension’s custom file format becomes available in the Compressor app’s Settings interface. Users can then choose your custom transcoding format to encode their Final Cut Pro projects. After encoding the source file into the custom format, the extension writes the encoded output to a user-specified destination.

> Important:
> The Compressor SDK is only available for encoder extensions written in Objective-C.

## Topics

### Essentials

[Building an Encoder Extension](/documentation/Professional-Video-Applications/building-an-encoder-extension)

Create an encoder extension in Xcode by using the Encoder Extension template.

### Information Property List Keys

The keys Xcode automatically sets in the information property list file when you create an encoder extension target.

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSExtension/ProExtensionPrincipalClass>

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSExtension/ProExtensionPrincipalViewControllerClass>

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSExtension/ProExtensionUUID>

### Encoder Extension Settings

[`protocol CompressorExtensionSettings`](/documentation/professional_video_applications/CompressorExtensionSettings)

A set of methods you use to manage the extension UI that displays the current encoder settings for users to view and customize.

[`protocol CompressorExtensionColorSpaces`](/documentation/professional_video_applications/CompressorExtensionColorSpaces)

An interface you use to specify the supported color spaces in an extension.

### Source Attributes

[`protocol CompressorExtensionSettingsOptional`](/documentation/professional_video_applications/CompressorExtensionSettingsOptional)

An interface you use to receive updated values of source media attributes.

### Encoder Attributes

[Encoder Attributes Settings](/documentation/Professional-Video-Applications/encoder-attributes-settings)

Encoder attributes specify the audio and video configuration values for the output format.

### Source File Decoding

[`protocol CompressorMediaDecoder`](/documentation/professional_video_applications/CompressorMediaDecoder)

An interface with methods you use to retrieve decoded video, audio, and image data from a source media file.

### Source File Encoding

[`protocol CompressorExtensionEncoder`](/documentation/professional_video_applications/CompressorExtensionEncoder)

An interface an extension implements to convert source media to the output format supported in your extension.



---

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)