---
title: Audio File Stream Services
framework: audiotoolbox
role: collectionGroup
role_heading: API Collection
path: audiotoolbox/audio-file-stream-services
---

# Audio File Stream Services

Parse streamed audio files as the data arrives on the user’s computer.

## Overview

Overview Audio File Stream Services provides the interface for parsing streamed audio files—in which only a limited window of data is available at a time. Audio file streams, by nature, are not random access. When you request data from a stream, earlier data might no longer be accessible and later data might not yet be available. In addition, the data you obtain (and then provide to a parser) might include partial packets. To parse streamed audio data, then, a parser must remember data from partially satisfied requests, and must be able to wait for the remainder of that data. In other words, a parser must be able to suspend parsing as needed and then resume where it left off. To use a parser, you pass data from a streamed audio file, as you acquire it, to the parser. When the parser has a complete packet of audio data or a complete property, it invokes a callback function. Your callbacks then process the parsed data—such as by playing it or writing it to disk. Here, in outline form, is a typical usage pattern for an audio file stream parser: Create a new audio file stream parser by calling the AudioFileStreamOpen(_:_:_:_:_:) function. Pass pointers to your callback functions for audio data and metadata (AudioFileStream_PacketsProc and AudioFileStream_PropertyListenerProc). The AudioFileStreamOpen(_:_:_:_:_:) function gives you a reference to the new parser. Acquire some streamed data. Call the AudioFileStreamParseBytes(_:_:_:_:) function when you have data to pass to the parser. Send the data to the parser sequentially and, if possible, without gaps. When the parser acquires a usable buffer of audio data, it invokes your audio data callback. Your callback can then play the data, write it to a file, or otherwise process it. When the parser acquires metadata, it invokes your property callback—which in turn can obtain the property value by calling the AudioFileStreamGetPropertyInfo(_:_:_:_:) and AudioFileStreamGetProperty(_:_:_:_:) functions. When finished parsing a stream, call the AudioFileStreamClose(_:) function to close and deallocate the parser. Audio File Stream Services supports the following audio data types: AIFF AIFC WAVE CAF NeXT ADTS MPEG Audio Layer 3 AAC

## Topics

### Opening Audio File Streams

- [AudioFileStreamOpen(_:_:_:_:_:)](audiotoolbox/audiofilestreamopen(_:_:_:_:_:).md)

### Supplying Data to the Parser

- [AudioFileStreamParseBytes(_:_:_:_:)](audiotoolbox/audiofilestreamparsebytes(_:_:_:_:).md)

### Seeking Packets in the Data Stream

- [AudioFileStreamSeek(_:_:_:_:)](audiotoolbox/audiofilestreamseek(_:_:_:_:).md)

### Working with Data Stream Property Information

- [AudioFileStreamGetPropertyInfo(_:_:_:_:)](audiotoolbox/audiofilestreamgetpropertyinfo(_:_:_:_:).md)
- [AudioFileStreamGetProperty(_:_:_:_:)](audiotoolbox/audiofilestreamgetproperty(_:_:_:_:).md)
- [AudioFileStreamSetProperty(_:_:_:_:)](audiotoolbox/audiofilestreamsetproperty(_:_:_:_:).md)

### Closing an Audio File Stream

- [AudioFileStreamClose(_:)](audiotoolbox/audiofilestreamclose(_:).md)

### Callbacks

- [AudioFileStream_PropertyListenerProc](audiotoolbox/audiofilestream_propertylistenerproc.md)
- [AudioFileStream_PacketsProc](audiotoolbox/audiofilestream_packetsproc.md)

### Data Types

- [AudioFileStreamPropertyID](audiotoolbox/audiofilestreampropertyid.md)
- [AudioFileStreamID](audiotoolbox/audiofilestreamid.md)

### Enumerations

- [Audio File Stream Errors](audiotoolbox/1391572-audio-file-stream-errors.md)
- [Audio File Types](audiotoolbox/1576497-audio-file-types.md)

### Constants

- [Audio File Stream Flags](audiotoolbox/audio-file-stream-flags.md)
- [Audio File Stream Properties](audiotoolbox/1391506-audio-file-stream-properties.md)

### Result Codes

- [Audio File Errors](audiotoolbox/1576500-audio-file-errors.md)
- [kAudioFileStreamError_UnsupportedFileType](audiotoolbox/kaudiofilestreamerror_unsupportedfiletype.md)
- [kAudioFileStreamError_UnsupportedDataFormat](audiotoolbox/kaudiofilestreamerror_unsupporteddataformat.md)
- [kAudioFileStreamError_UnsupportedProperty](audiotoolbox/kaudiofilestreamerror_unsupportedproperty.md)
- [kAudioFileStreamError_BadPropertySize](audiotoolbox/kaudiofilestreamerror_badpropertysize.md)
- [kAudioFileStreamError_NotOptimized](audiotoolbox/kaudiofilestreamerror_notoptimized.md)
- [kAudioFileStreamError_InvalidPacketOffset](audiotoolbox/kaudiofilestreamerror_invalidpacketoffset.md)
- [kAudioFileStreamError_InvalidFile](audiotoolbox/kaudiofilestreamerror_invalidfile.md)
- [kAudioFileStreamError_ValueUnknown](audiotoolbox/kaudiofilestreamerror_valueunknown.md)
- [kAudioFileStreamError_DataUnavailable](audiotoolbox/kaudiofilestreamerror_dataunavailable.md)
- [kAudioFileStreamError_IllegalOperation](audiotoolbox/kaudiofilestreamerror_illegaloperation.md)
- [kAudioFileStreamError_UnspecifiedError](audiotoolbox/kaudiofilestreamerror_unspecifiederror.md)
- [kAudioFileStreamError_DiscontinuityCantRecover](audiotoolbox/kaudiofilestreamerror_discontinuitycantrecover.md)

## See Also

### Audio Files and Formats

- [Audio Format Services](audiotoolbox/audio-format-services.md)
- [Audio File Services](audiotoolbox/audio-file-services.md)
- [Extended Audio File Services](audiotoolbox/extended-audio-file-services.md)
- [Audio File Components](audiotoolbox/audio-file-components.md)
- [Core Audio File Format](audiotoolbox/core-audio-file-format.md)
