---
title: VTFrameSilo
framework: videotoolbox
role: collectionGroup
role_heading: API Collection
path: videotoolbox/vtframesilo-api-collection
---

# VTFrameSilo

An object that stores sample buffers from a multipass encoding session.

## Overview

Overview A frame silo object starts out empty and is populated by calls to VTFrameSiloAddSampleBuffer(_:sampleBuffer:) to add sample buffers in ascending decode order. After the first full pass, additional passes may be performed to replace sample buffers. Each such pass must begin with a call to VTFrameSiloSetTimeRangesForNextPass(_:timeRangeCount:timeRangeArray:), which takes a list of time ranges. Samples in these time ranges are deleted, and calls to VTFrameSiloAddSampleBuffer(_:sampleBuffer:) can then be made to provide replacements. Call VTFrameSiloCallFunctionForEachSampleBuffer(_:in:refcon:callback:) or VTFrameSiloCallBlockForEachSampleBuffer(_:in:handler:) to retrieve sample buffers. The frame silo object may write sample buffers and data to the backing file between addition and retrieval; don’t expect to get identical object pointers back. The sample buffers are ordered by decode timestamp.

## Topics

### Creating Frame Silos

- [VTFrameSiloCreate(allocator:fileURL:timeRange:options:frameSiloOut:)](videotoolbox/vtframesilocreate(allocator:fileurl:timerange:options:framesiloout:).md)

### Configuring Frame Silos

- [VTFrameSiloAddSampleBuffer(_:sampleBuffer:)](videotoolbox/vtframesiloaddsamplebuffer(_:samplebuffer:).md)
- [VTFrameSiloSetTimeRangesForNextPass(_:timeRangeCount:timeRangeArray:)](videotoolbox/vtframesilosettimerangesfornextpass(_:timerangecount:timerangearray:).md)
- [VTFrameSiloCallBlockForEachSampleBuffer(_:in:handler:)](videotoolbox/vtframesilocallblockforeachsamplebuffer(_:in:handler:).md)
- [VTFrameSiloCallFunctionForEachSampleBuffer(_:in:refcon:callback:)](videotoolbox/vtframesilocallfunctionforeachsamplebuffer(_:in:refcon:callback:).md)

### Inspecting Frame Silos

- [VTFrameSiloGetProgressOfCurrentPass(_:progressOut:)](videotoolbox/vtframesilogetprogressofcurrentpass(_:progressout:).md)
- [VTFrameSiloGetTypeID()](videotoolbox/vtframesilogettypeid().md)

### Data Types

- [VTFrameSilo](videotoolbox/vtframesilo.md)

## See Also

### Compression

- [Encoding video for low-latency conferencing](videotoolbox/encoding-video-for-low-latency-conferencing.md)
- [Encoding video for live streaming](videotoolbox/encoding-video-for-live-streaming.md)
- [Encoding video for offline transcoding](videotoolbox/encoding-video-for-offline-transcoding.md)
- [VTCompressionSession](videotoolbox/vtcompressionsession-api-collection.md)
- [VTDecompressionSession](videotoolbox/vtdecompressionsession-api-collection.md)
- [VTMultiPassStorage](videotoolbox/vtmultipassstorage-api-collection.md)
