<!--
{
  "availability" : [
    "iOS: 4.0.0 -",
    "iPadOS: 4.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.7.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 6.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreMedia",
  "identifier" : "/documentation/CoreMedia/CMBufferQueue",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Core Media"
    ],
    "preciseIdentifier" : "c:@T@CMBufferQueueRef"
  },
  "title" : "CMBufferQueue"
}
-->

# CMBufferQueue

A reference to a buffer queue instance.

```
class CMBufferQueue
```

## Overview

A `CMBufferQueue` is a queue of timed buffers backed by a Core Foundation object.

## Topics

### Managing a Queue

[`enqueue(_:)`](/documentation/CoreMedia/CMBufferQueue/enqueue(_:))

Enqueues a buffer to the queue.

[`dequeue()`](/documentation/CoreMedia/CMBufferQueue/dequeue())

Dequeues a buffer from the queue.

[`dequeueIfDataReady()`](/documentation/CoreMedia/CMBufferQueue/dequeueIfDataReady())

Dequeues a buffer from the queue, if it’s ready.

[`markEndOfData()`](/documentation/CoreMedia/CMBufferQueue/markEndOfData())

Marks a buffer as being at the end of its data.

[`reset()`](/documentation/CoreMedia/CMBufferQueue/reset())

Empties the queue and resets its end-of-data state.

[`reset(_:)`](/documentation/CoreMedia/CMBufferQueue/reset(_:))

Resets a buffer with a callback block.

### Managing Triggers

[`installTrigger(condition:_:)`](/documentation/CoreMedia/CMBufferQueue/installTrigger(condition:_:))

Installs a trigger on the queue.

[`removeTrigger(_:)`](/documentation/CoreMedia/CMBufferQueue/removeTrigger(_:))

Removes a trigger from the queue.

[`testTrigger(_:)`](/documentation/CoreMedia/CMBufferQueue/testTrigger(_:))

Tests a trigger condition.

[`CMBufferQueue.TriggerToken`](/documentation/CoreMedia/CMBufferQueue/TriggerToken)

A type alias for a trigger token.

[`CMBufferQueue.TriggerCondition`](/documentation/CoreMedia/CMBufferQueue/TriggerCondition)

An enumeration of trigger conditions.

### Inspecting Duration and Timing

[`duration`](/documentation/CoreMedia/CMBufferQueue/duration)

The sum of all durations of buffers in the queue.

[`totalSize`](/documentation/CoreMedia/CMBufferQueue/totalSize)

The total size of all buffers in the queue.

[`firstDecodeTimeStamp`](/documentation/CoreMedia/CMBufferQueue/firstDecodeTimeStamp)

The decode timestamp of the first buffer in the queue.

[`firstPresentationTimeStamp`](/documentation/CoreMedia/CMBufferQueue/firstPresentationTimeStamp)

The presentation timestamp of the first buffer in the queue.

[`endPresentationTimeStamp`](/documentation/CoreMedia/CMBufferQueue/endPresentationTimeStamp)

The greatest end presentation timestamp.

[`minDecodeTimeStamp`](/documentation/CoreMedia/CMBufferQueue/minDecodeTimeStamp)

The earliest decode timestamp.

[`minPresentationTimeStamp`](/documentation/CoreMedia/CMBufferQueue/minPresentationTimeStamp)

The earliest presentation timestamp.

[`maxPresentationTimeStamp`](/documentation/CoreMedia/CMBufferQueue/maxPresentationTimeStamp)

The greatest presentation timestamp.

### Inspecting a Queue

[`isEmpty`](/documentation/CoreMedia/CMBufferQueue/isEmpty)

A Boolean value that indicates whether the queue contains buffers.

[`bufferCount`](/documentation/CoreMedia/CMBufferQueue/bufferCount)

The count of buffers in the queue.

[`head`](/documentation/CoreMedia/CMBufferQueue/head)

The element at the head of the queue.

[`containsEndOfData`](/documentation/CoreMedia/CMBufferQueue/containsEndOfData)

A Boolean value that indicates whether the buffer has its end-of-data state set.

[`isAtEndOfData`](/documentation/CoreMedia/CMBufferQueue/isAtEndOfData)

A Boolean value that indicates whether that queue is at the end of its data.

### Validating a Queue

[`setValidationHandler(_:)`](/documentation/CoreMedia/CMBufferQueue/setValidationHandler(_:))

Sets validation handler for the queue to call before enqueuing buffers.

### Accessing Buffers

[`buffers`](/documentation/CoreMedia/CMBufferQueue/buffers-swift.property)

The buffers that the queue contains.

### Accessing the Type Identifier

[`typeID`](/documentation/CoreMedia/CMBufferQueue/typeID)

The type identifier for this object.

### Data Types

[`CMBufferQueue.Buffers`](/documentation/CoreMedia/CMBufferQueue/Buffers-swift.struct)

A sequence of `CMBuffer`s.

[`CMBufferQueue.Handlers`](/documentation/CoreMedia/CMBufferQueue/Handlers)

[`CMBufferQueue.Error`](/documentation/CoreMedia/CMBufferQueue/Error)



---

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)