<!--
{
  "documentType" : "article",
  "framework" : "AVFoundation",
  "identifier" : "/documentation/AVFoundation/sample-buffer-playback",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Sample buffer playback"
}
-->

# Sample buffer playback

Create custom controllers to play and synchronize the timing of sample buffer streams.

## Topics

### Sample buffer generation

  <doc://com.apple.documentation/documentation/AVFAudio/playing-custom-audio-with-your-own-player>

[`AVSampleBufferRequest`](/documentation/AVFoundation/AVSampleBufferRequest)

An object that describes a sample buffer creation request.

[`AVSampleBufferGenerator`](/documentation/AVFoundation/AVSampleBufferGenerator)

An object that creates sample buffers.

[`AVSampleBufferGeneratorBatch`](/documentation/AVFoundation/AVSampleBufferGeneratorBatch)

An object that generates sample buffers in a batch.

### Presentation

[`AVQueuedSampleBufferRendering`](/documentation/AVFoundation/AVQueuedSampleBufferRendering)

Methods you can implement to enqueue sample buffers for presentation.

[`AVSampleBufferRenderSynchronizer`](/documentation/AVFoundation/AVSampleBufferRenderSynchronizer)

An object used to synchronize multiple queued sample buffers to a single timeline.

[`AVSampleBufferDisplayLayer`](/documentation/AVFoundation/AVSampleBufferDisplayLayer)

An object that displays compressed or uncompressed video frames.

[`AVSampleBufferVideoRenderer`](/documentation/AVFoundation/AVSampleBufferVideoRenderer)

An object that enqueues video sample buffers for rendering.

[`AVSampleBufferAudioRenderer`](/documentation/AVFoundation/AVSampleBufferAudioRenderer)

An object used to decompress audio and play compressed or uncompressed audio.

### Notifications

[`AVSampleBufferAudioRendererOutputConfigurationDidChangeNotification`](/documentation/AVFoundation/AVSampleBufferAudioRendererOutputConfigurationDidChangeNotification)

A notification that indicates the hardware configuration does not match the enqueued data format.

[`AVSampleBufferAudioRendererWasFlushedAutomaticallyNotification`](/documentation/AVFoundation/AVSampleBufferAudioRendererWasFlushedAutomaticallyNotification)

A notification that fires whenever the receiver’s enqueued media data has been flushed for a reason other than a call to the -flush method.

[`AVSampleBufferDisplayLayerOutputObscuredDueToInsufficientExternalProtectionDidChangeNotification`](/documentation/AVFoundation/AVSampleBufferDisplayLayerOutputObscuredDueToInsufficientExternalProtectionDidChangeNotification)

[`AVSampleBufferDisplayLayerReadyForDisplayDidChangeNotification`](/documentation/AVFoundation/AVSampleBufferDisplayLayerReadyForDisplayDidChangeNotification)

[`AVSampleBufferDisplayLayerRequiresFlushToResumeDecodingDidChangeNotification`](/documentation/AVFoundation/AVSampleBufferDisplayLayerRequiresFlushToResumeDecodingDidChangeNotification)

A notification the system posts when a sample buffer display layer changes its decoding requirements.



---

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)