<!--
{
  "availability" : [
    "iOS: 10.0.0 -",
    "iPadOS: 10.0.0 -",
    "macCatalyst: 14.0.0 -",
    "macOS: 10.15.0 -",
    "tvOS: 17.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AVFoundation",
  "identifier" : "/documentation/AVFoundation/AVCapturePhotoOutput",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "AVFoundation"
    ],
    "preciseIdentifier" : "c:objc(cs)AVCapturePhotoOutput"
  },
  "title" : "AVCapturePhotoOutput"
}
-->

# AVCapturePhotoOutput

A capture output for still image, Live Photos, and other photography workflows.

```
class AVCapturePhotoOutput
```

## Overview

[`AVCapturePhotoOutput`](/documentation/AVFoundation/AVCapturePhotoOutput) provides an interface for capture workflows related to still photography. In addition to basic capture of still images, a photo output supports RAW-format capture, bracketed capture of multiple images, Live Photos, and wide-gamut color. You can output captured photos in a variety of formats and codecs, including RAW format DNG files, HEVC format HEIF files, and JPEG files.

To capture photos with the [`AVCapturePhotoOutput`](/documentation/AVFoundation/AVCapturePhotoOutput) class, follow these steps:

1. Create an [`AVCapturePhotoOutput`](/documentation/AVFoundation/AVCapturePhotoOutput) object. Use its properties to determine supported capture settings and to enable certain features (for example, whether to capture Live Photos).
2. Create and configure an [`AVCapturePhotoSettings`](/documentation/AVFoundation/AVCapturePhotoSettings) object to choose features and settings for a specific capture (for example, whether to enable image stabilization or flash).
3. Capture an image by passing your photo settings object to the [`capturePhoto(with:delegate:)`](/documentation/AVFoundation/AVCapturePhotoOutput/capturePhoto(with:delegate:)) method along with a delegate object implementing the [`AVCapturePhotoCaptureDelegate`](/documentation/AVFoundation/AVCapturePhotoCaptureDelegate) protocol. The photo capture output then calls your delegate to notify you of significant events during the capture process.

Some photo capture settings, such as the [`flashMode`](/documentation/AVFoundation/AVCapturePhotoSettings/flashMode) property, include options for automatic behavior. For such settings, the photo output determines whether to use that feature at the moment of capture—you don’t know when requesting a capture whether the feature will be enabled when the capture completes. When the photo capture output calls your [`AVCapturePhotoCaptureDelegate`](/documentation/AVFoundation/AVCapturePhotoCaptureDelegate) methods with information about the completed or in-progress capture, it also provides an [`AVCaptureResolvedPhotoSettings`](/documentation/AVFoundation/AVCaptureResolvedPhotoSettings) object that details which automatic features are set for that capture. The resolved settings object’s [`uniqueID`](/documentation/AVFoundation/AVCaptureResolvedPhotoSettings/uniqueID) property matches the [`uniqueID`](/documentation/AVFoundation/AVCapturePhotoSettings/uniqueID) value of the [`AVCapturePhotoSettings`](/documentation/AVFoundation/AVCapturePhotoSettings) object you used to request capture.

Enabling certain photo features (Live Photo capture and high resolution capture) requires a reconfiguration of the capture render pipeline. To opt into these features, set the [`isHighResolutionCaptureEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isHighResolutionCaptureEnabled), [`isLivePhotoCaptureEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isLivePhotoCaptureEnabled), and [`isLivePhotoAutoTrimmingEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isLivePhotoAutoTrimmingEnabled) properties before calling your [`AVCaptureSession`](/documentation/AVFoundation/AVCaptureSession) object’s [`startRunning()`](/documentation/AVFoundation/AVCaptureSession/startRunning()) method. Changing any of these properties while the session is running disrupts the capture render pipeline: Live Photo captures in progress end immediately, unfulfilled photo requests abort, and video preview temporarily freezes.

Using a photo capture output adds other requirements to your [`AVCaptureSession`](/documentation/AVFoundation/AVCaptureSession) object:

- A capture session can’t support both Live Photo capture and movie file output. If your capture session includes an [`AVCaptureMovieFileOutput`](/documentation/AVFoundation/AVCaptureMovieFileOutput) object, the [`isLivePhotoCaptureSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isLivePhotoCaptureSupported) property becomes <doc://com.apple.documentation/documentation/Swift/false>. (As an alternative, you can use the [`AVCaptureVideoDataOutput`](/documentation/AVFoundation/AVCaptureVideoDataOutput) class to output video buffers at the same resolution as a simultaneous Live Photo capture).
- A capture session can’t contain both an [`AVCapturePhotoOutput`](/documentation/AVFoundation/AVCapturePhotoOutput) object and an [`AVCaptureStillImageOutput`](/documentation/AVFoundation/AVCaptureStillImageOutput) object. The [`AVCapturePhotoOutput`](/documentation/AVFoundation/AVCapturePhotoOutput) class includes all functionality of (and deprecates) the [`AVCaptureStillImageOutput`](/documentation/AVFoundation/AVCaptureStillImageOutput) class.

The [`AVCapturePhotoOutput`](/documentation/AVFoundation/AVCapturePhotoOutput) class implicitly supports wide-gamut color photography. If the source [`AVCaptureDevice`](/documentation/AVFoundation/AVCaptureDevice) object’s [`activeColorSpace`](/documentation/AVFoundation/AVCaptureDevice/activeColorSpace) value is [`AVCaptureColorSpace.P3_D65`](/documentation/AVFoundation/AVCaptureColorSpace/P3_D65), the capture output produces photos with wide color information (unless your [`AVCapturePhotoSettings`](/documentation/AVFoundation/AVCapturePhotoSettings) object specifies an output format that doesn’t support wide color).

## Topics

### Creating a photo output

[`init()`](/documentation/AVFoundation/AVCapturePhotoOutput/init())

Creates a new photo capture output object.

[`new`](/documentation/AVFoundation/AVCapturePhotoOutput/new)

Creates a new photo capture output object.

### Capturing a photo

[`capturePhoto(with:delegate:)`](/documentation/AVFoundation/AVCapturePhotoOutput/capturePhoto(with:delegate:))

Initiates a photo capture using the specified settings.

### Managing responsive capture

[`captureReadiness`](/documentation/AVFoundation/AVCapturePhotoOutput/captureReadiness-swift.property)

A value that specifies whether the photo output is ready to respond to new capture requests in a timely manner.

[`AVCapturePhotoOutput.CaptureReadiness`](/documentation/AVFoundation/AVCapturePhotoOutput/CaptureReadiness-swift.enum)

Constants that indicate whether the output is ready to receive capture requests.

[`isAutoDeferredPhotoDeliveryEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isAutoDeferredPhotoDeliveryEnabled)

A Boolean value that indicates the enabled state of automatic deferred photo delivery.

[`isAutoDeferredPhotoDeliverySupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isAutoDeferredPhotoDeliverySupported)

A Boolean value that indicates whether the photo output supports deferred photo delivery.

[`isFastCapturePrioritizationSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isFastCapturePrioritizationSupported)

A Boolean value that indicates whether the photo output supports fast capture prioritization.

[`isFastCapturePrioritizationEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isFastCapturePrioritizationEnabled)

A Boolean value that indicates whether the output enables fast capture prioritization.

[`isResponsiveCaptureSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isResponsiveCaptureSupported)

A Boolean value that indicates whether the photo output supports responsive capture.

[`isResponsiveCaptureEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isResponsiveCaptureEnabled)

A Boolean value that indicates whether the photo output configuration enables responsive capture.

[`isZeroShutterLagSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isZeroShutterLagSupported)

A Boolean value that indicates whether the photo output supports zero shutter lag.

[`isZeroShutterLagEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isZeroShutterLagEnabled)

A Boolean value that indicates whether the photo output configuration enables zero shutter lag.

### Determining supported pixel formats

[`availablePhotoPixelFormatTypes`](/documentation/AVFoundation/AVCapturePhotoOutput/availablePhotoPixelFormatTypes-3ydgm)

The pixel formats the capture output supports for photo capture.

[`availableRawPhotoPixelFormatTypes`](/documentation/AVFoundation/AVCapturePhotoOutput/availableRawPhotoPixelFormatTypes-9t9k5)

The pixel formats the capture output supports for RAW photo capture.

[`supportedPhotoPixelFormatTypes(for:)`](/documentation/AVFoundation/AVCapturePhotoOutput/supportedPhotoPixelFormatTypes(for:))

Returns the list of uncompressed pixel formats supported for photo data in the specified file type.

[`supportedRawPhotoPixelFormatTypes(for:)`](/documentation/AVFoundation/AVCapturePhotoOutput/supportedRawPhotoPixelFormatTypes(for:))

Returns the list of Bayer RAW pixel formats supported for photo data in the specified file type.

[`availablePhotoPixelFormatTypes`](/documentation/AVFoundation/AVCapturePhotoOutput/availablePhotoPixelFormatTypes-6eyb)

The pixel formats the capture output supports for photo capture.

[`availableRawPhotoPixelFormatTypes`](/documentation/AVFoundation/AVCapturePhotoOutput/availableRawPhotoPixelFormatTypes-5fatm)

The pixel formats the capture output supports for RAW photo capture.

[`supportedPhotoPixelFormatTypesForFileType:`](/documentation/AVFoundation/AVCapturePhotoOutput/supportedPhotoPixelFormatTypesForFileType:)

Returns the list of uncompressed pixel formats supported for photo data in the specified file type.

[`supportedRawPhotoPixelFormatTypesForFileType:`](/documentation/AVFoundation/AVCapturePhotoOutput/supportedRawPhotoPixelFormatTypesForFileType:)

Returns the list of Bayer RAW pixel formats supported for photo data in the specified file type.

[`isAppleProRAWPixelFormat(_:)`](/documentation/AVFoundation/AVCapturePhotoOutput/isAppleProRAWPixelFormat(_:))

Returns a Boolean value that indicates whether the pixel format is an Apple ProRAW format.

[`isBayerRAWPixelFormat(_:)`](/documentation/AVFoundation/AVCapturePhotoOutput/isBayerRAWPixelFormat(_:))

Returns a Boolean value that indicates whether the pixel format is a Bayer RAW format.

### Determining supported codec types

[`availablePhotoCodecTypes`](/documentation/AVFoundation/AVCapturePhotoOutput/availablePhotoCodecTypes)

The compression codecs this capture output currently supports for photo capture.

[`supportedPhotoCodecTypes(for:)`](/documentation/AVFoundation/AVCapturePhotoOutput/supportedPhotoCodecTypes(for:))

Returns the list of photo codecs (such as JPEG or HEVC) supported for photo data in the specified file type.

### Determining supported file types

[`availablePhotoFileTypes`](/documentation/AVFoundation/AVCapturePhotoOutput/availablePhotoFileTypes)

The list of file types currently supported for photo capture and output.

[`availableRawPhotoFileTypes`](/documentation/AVFoundation/AVCapturePhotoOutput/availableRawPhotoFileTypes)

The list of file types currently supported for RAW format capture and output.

### Suppressing the shutter sound

[`isShutterSoundSuppressionSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isShutterSoundSuppressionSupported)

A Boolean value that indicates whether the photo output supports suppressing the system shutter sound.

### Configuring ProRAW support

[`isAppleProRAWSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isAppleProRAWSupported)

A Boolean value that indicates whether the current device and configuration supports Apple ProRAW pixel formats.

[`isAppleProRAWEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isAppleProRAWEnabled)

A Boolean value that indicates whether you’ve configured the photo output to deliver Apple ProRAW formats.

### Determining available settings

[`isContentAwareDistortionCorrectionSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isContentAwareDistortionCorrectionSupported)

A Boolean value that indicates whether the session’s current configuration supports content-aware distortion correction.

[`isContentAwareDistortionCorrectionEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isContentAwareDistortionCorrectionEnabled)

A Boolean value that indicates whether the photo render pipeline can perform content-aware distortion correction.

[`isLensStabilizationDuringBracketedCaptureSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isLensStabilizationDuringBracketedCaptureSupported)

A Boolean value indicating whether the capture output currently supports lens stabilization during bracketed image capture.

[`maxBracketedCapturePhotoCount`](/documentation/AVFoundation/AVCapturePhotoOutput/maxBracketedCapturePhotoCount)

The maximum number of images that the photo capture output can support in a single bracketed capture.

[`supportedFlashModes`](/documentation/AVFoundation/AVCapturePhotoOutput/supportedFlashModes-1n6nm)

A Swift array of flash settings this capture output currently supports.

[`supportedFlashModes`](/documentation/AVFoundation/AVCapturePhotoOutput/supportedFlashModes-4u69s)

The flash settings this capture output currently supports.

[`isAutoRedEyeReductionSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isAutoRedEyeReductionSupported)

A Boolean value indicating whether the capture output supports automatic red-eye reduction.

### Monitoring the visible scene

[`isFlashScene`](/documentation/AVFoundation/AVCapturePhotoOutput/isFlashScene)

A Boolean value indicating whether the scene currently being previewed by the camera warrants use of the flash.

[`photoSettingsForSceneMonitoring`](/documentation/AVFoundation/AVCapturePhotoOutput/photoSettingsForSceneMonitoring)

A photo settings object that controls how the photo output detects and handles automatic flash and stabilization modes.

### Configuring high-resolution still capture

[`maxPhotoDimensions`](/documentation/AVFoundation/AVCapturePhotoOutput/maxPhotoDimensions)

The maximum resolution of the requested photo.

### Configuring Live Photo capture

[`isLivePhotoCaptureSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isLivePhotoCaptureSupported)

A Boolean value that indicates whether the capture output currently supports Live Photo capture.

[`isLivePhotoCaptureEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isLivePhotoCaptureEnabled)

A Boolean value that indicates whether to configure the capture pipeline for Live Photo capture.

[`isLivePhotoCaptureSuspended`](/documentation/AVFoundation/AVCapturePhotoOutput/isLivePhotoCaptureSuspended)

A Boolean value that indicates whether Live Photo capture is currently in a suspended state.

[`preservesLivePhotoCaptureSuspendedOnSessionStop`](/documentation/AVFoundation/AVCapturePhotoOutput/preservesLivePhotoCaptureSuspendedOnSessionStop)

A Boolean value that indicates whether to preserve the suspended state of Live Photo capture when the session stops.

[`isLivePhotoAutoTrimmingEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isLivePhotoAutoTrimmingEnabled)

A Boolean value that indicates whether to automatically trim Live Photo movie captures to avoid excessive movement.

[`availableLivePhotoVideoCodecTypes`](/documentation/AVFoundation/AVCapturePhotoOutput/availableLivePhotoVideoCodecTypes)

An array of video codecs currently available for Live Photo movie captures.

### Configuring depth data capture

[`isDepthDataDeliverySupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isDepthDataDeliverySupported)

A Boolean value indicating whether the capture output currently supports depth data capture.

[`isDepthDataDeliveryEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isDepthDataDeliveryEnabled)

A Boolean value that specifies whether to configure the capture pipeline for depth data capture.

### Configuring Portrait Effects matte capture

[`isPortraitEffectsMatteDeliveryEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isPortraitEffectsMatteDeliveryEnabled)

A Boolean value indicating whether the capture output generates a portrait effects matte.

[`isPortraitEffectsMatteDeliverySupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isPortraitEffectsMatteDeliverySupported)

A Boolean value indicating whether the capture output currently supports delivery of a portrait effects matte.

[`portraitEffectsMatte`](/documentation/AVFoundation/AVCapturePhoto/portraitEffectsMatte)

The portrait effects matte captured with the photo.

### Configuring constant color

[`isConstantColorSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isConstantColorSupported)

A Boolean value that indicates whether a photo output supports constant color capture.

[`isConstantColorEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isConstantColorEnabled)

A Boolean value that indicates whether the photo output configures the render pipeline to perform constant color capture.

### Configuring orientation compensation

[`isCameraSensorOrientationCompensationSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isCameraSensorOrientationCompensationSupported)

[`isCameraSensorOrientationCompensationEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isCameraSensorOrientationCompensationEnabled)

### Configuring virtual device capture

[`isVirtualDeviceFusionSupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isVirtualDeviceFusionSupported)

A Boolean value that indicates whether the device supports virtual device image fusion.

[`isVirtualDeviceConstituentPhotoDeliverySupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isVirtualDeviceConstituentPhotoDeliverySupported)

A Boolean value that indicates whether the photo output configuration supports delivery of photos from constituent cameras of a virtual device.

[`isVirtualDeviceConstituentPhotoDeliveryEnabled`](/documentation/AVFoundation/AVCapturePhotoOutput/isVirtualDeviceConstituentPhotoDeliveryEnabled)

A Boolean value that indicates whether the photo output delivers photos from constituent cameras of a virtual device.

### Preparing for resource-intensive captures

[`preparedPhotoSettingsArray`](/documentation/AVFoundation/AVCapturePhotoOutput/preparedPhotoSettingsArray)

An array of photo settings for which the photo output has prepared capture resources.

[`setPreparedPhotoSettingsArray(_:completionHandler:)`](/documentation/AVFoundation/AVCapturePhotoOutput/setPreparedPhotoSettingsArray(_:completionHandler:))

Tells the photo capture output to prepare resources for future capture requests with the specified settings.

### Getting segmentation mattes

[`availableSemanticSegmentationMatteTypes`](/documentation/AVFoundation/AVCapturePhotoOutput/availableSemanticSegmentationMatteTypes)

An array of semantic segmentation matte types that may be captured and delivered along with the primary photo.

[`enabledSemanticSegmentationMatteTypes`](/documentation/AVFoundation/AVCapturePhotoOutput/enabledSemanticSegmentationMatteTypes)

The semantic segmentation matte types that the photo render pipeline delivers.

### Setting the capture prioritization

[`maxPhotoQualityPrioritization`](/documentation/AVFoundation/AVCapturePhotoOutput/maxPhotoQualityPrioritization)

The highest quality the photo output should prepare to deliver on a capture-by-capture basis.

[`AVCapturePhotoOutput.QualityPrioritization`](/documentation/AVFoundation/AVCapturePhotoOutput/QualityPrioritization)

Constants that indicate how to prioritize photo quality relative to capture speed.

### Determining calibration data delivery support

[`isCameraCalibrationDataDeliverySupported`](/documentation/AVFoundation/AVCapturePhotoOutput/isCameraCalibrationDataDeliverySupported)

A Boolean value that indicates whether the photo output currently supports the delivery of camera calibration data.

### Deprecated

[Deprecated symbols](/documentation/AVFoundation/avcapturephotooutput-deprecated-symbols)

Review unsupported symbols and their replacements.

### Instance properties

[`availableRawPhotoCodecTypes`](/documentation/AVFoundation/AVCapturePhotoOutput/availableRawPhotoCodecTypes)

### Instance methods

[`supportedRawPhotoCodecTypes(forRawPhotoPixelFormatType:fileType:)`](/documentation/AVFoundation/AVCapturePhotoOutput/supportedRawPhotoCodecTypes(forRawPhotoPixelFormatType:fileType:))



---

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)