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

# AVCaptureDataOutputSynchronizer

An object that coordinates time-matched delivery of data from multiple capture outputs.

```
class AVCaptureDataOutputSynchronizer
```

## Overview

Use this class when you need to capture media from multiple capture outputs and want to receive all data samples from the same timestamp in a single delegate callback.

For example, when you use an [`AVCaptureDataOutputSynchronizer`](/documentation/AVFoundation/AVCaptureDataOutputSynchronizer) object to coordinate the output of [`AVCaptureVideoDataOutput`](/documentation/AVFoundation/AVCaptureVideoDataOutput) and [`AVCaptureDepthDataOutput`](/documentation/AVFoundation/AVCaptureDepthDataOutput) objects, you can easily match each captured video frame to depth information captured at the same moment.

## Topics

### Configuring synchronized capture

[`init(dataOutputs: [AVCaptureOutput])`](/documentation/AVFoundation/AVCaptureDataOutputSynchronizer/init(dataOutputs:))

Creates a capture output synchronizer for the specified capture outputs.

[`var dataOutputs: [AVCaptureOutput]`](/documentation/AVFoundation/AVCaptureDataOutputSynchronizer/dataOutputs)

The list of data outputs governed by this data output synchronizer.

### Receiving synchronized capture data

[`func setDelegate((any AVCaptureDataOutputSynchronizerDelegate)?, queue: dispatch_queue_t?)`](/documentation/AVFoundation/AVCaptureDataOutputSynchronizer/setDelegate(_:queue:))

Designates a delegate object to receive synchronized data and a dispatch queue for delivering that data.

[`var delegate: (any AVCaptureDataOutputSynchronizerDelegate)?`](/documentation/AVFoundation/AVCaptureDataOutputSynchronizer/delegate)

A delegate object that receives synchronized capture data.

[`var delegateCallbackQueue: dispatch_queue_t?`](/documentation/AVFoundation/AVCaptureDataOutputSynchronizer/delegateCallbackQueue)

A dispatch queue for delivering synchronized capture data.

[`protocol AVCaptureDataOutputSynchronizerDelegate`](/documentation/AVFoundation/AVCaptureDataOutputSynchronizerDelegate)

Methods for receiving captured data from multiple capture outputs synchronized to the same timestamp.

## Relationships

### Conforms To

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

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

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

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

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

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

### 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)