A specification of the features and settings to use for a photo capture request that captures multiple images with varied settings.


@interface AVCapturePhotoBracketSettings : AVCapturePhotoSettings


To take a bracketed capture, you create and configure an AVCapturePhotoBracketSettings object, using AVCaptureBracketedStillImageSettings objects to describe the individual captures in the bracket, and then pass it to the AVCapturePhotoOutput capturePhotoWithSettings:delegate: method.

To request a bracketed capture, follow these steps:

  1. Create an array of AVCaptureBracketedStillImageSettings objects describing the number of images to capture in the bracket and the variations on capture settings between them.

  2. Create a bracketed photo settings object with the initWithFormat:rawPixelFormatType:bracketedSettings: initializer, passing the array of bracketed still image settings, along with the processed format (such as JPEG) or RAW format to capture images in.

  3. Configure other settings to share across all images in the bracket, such as the lensStabilizationEnabled property and certain inherited properties.

  4. Initiate capture by passing the bracketed photo settings object to your photo output’s capturePhotoWithSettings:delegate: method, along with a delegate object to receive messages about the progress and results of the capture.

  5. The photo output calls your delegate’s captureOutput:didFinishProcessingPhotoSampleBuffer:previewPhotoSampleBuffer:resolvedSettings:bracketSettings:error: or captureOutput:didFinishProcessingRawPhotoSampleBuffer:previewPhotoSampleBuffer:resolvedSettings:bracketSettings:error: methods many times corresponding to the number of captures in the bracket. Each call provides the AVCaptureBracketedStillImageSettings object indicating which capture in the bracket the captured image corresponds to.

Listing 1 illustrates capturing a bracket of three RAW images with varying exposure value settings.

Listing 1

Capturing a Multi-Exposure Bracket

- (void)captureRAWAutoExposureBracket {
    if ( myCapturePhotoOutput.maxBracketedCapturePhotoCount < 3 ) { return; }
    // Specify a 3-shot bracket, where exposure compensation varies between each shot.
    NSArray *bracketedStillImageSettings = @[ [AVCaptureAutoExposureBracketedStillImageSettings autoExposureSettingsWithExposureTargetBias:-2.],
                              [AVCaptureAutoExposureBracketedStillImageSettings autoExposureSettingsWithExposureTargetBias:0.],
                              [AVCaptureAutoExposureBracketedStillImageSettings autoExposureSettingsWithExposureTargetBias:2.] ];
     OSType rawFormat = [[myCapturePhotoOutput.availableRawPhotoCVPixelFormatTypes firstObject] intValue];
    AVCapturePhotoBracketSettings *settings = [[AVCapturePhotoBracketSettings alloc] initWithFormat:nil rawPixelFormatType:rawFormat bracketedSettings:bracketedStillImageSettings];
    settings.lensStabilizationEnabled = myCapturePhotoOutput.isLensStabilizationDuringBracketedCaptureSupported;
    [myCapturePhotoOutput capturePhotoWithSettings:settings delegate:self];
    // Three RAW photos will be delivered to the delegate.


Creating a Bracket Settings Object

+ photoBracketSettingsWithRawPixelFormatType:rawFileType:processedFormat:processedFileType:bracketedSettings:

Creates a photo settings object for capture in both RAW format and a processed format.

+ photoBracketSettingsWithRawPixelFormatType:processedFormat:bracketedSettings:

Creates a photo settings object for the specified bracket of captures, in the specified formats.

Working with Bracketed Settings


An array describing the number of and settings for images to produce in a bracketed capture.


A Boolean value that specifies whether to stabilize the lens for the duration of the bracketed capture.

Bracketed Settings Types


A configuration for defining bracketed photo captures in terms of bias relative to automatic exposure.


A configuration for defining bracketed photo captures in terms of specific exposure and ISO values.


The abstract superclass for bracketed photo capture settings.


See Also

Capturing a Photo

- capturePhotoWithSettings:delegate:

Initiates a photo capture using the specified settings.


A specification of the features and settings to use for a single photo capture request.


A description of the features and settings in use for an in-progress or complete photo capture request.