<!--
{
  "documentType" : "article",
  "framework" : "AudioToolbox",
  "identifier" : "/documentation/AudioToolbox/audio-file-services",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Audio File Services"
}
-->

# Audio File Services

Read or write a variety of audio data to or from disk or a memory buffer.

## Discussion

This document describes Audio File Services, a C programming interface that enables you to read or write a wide variety of audio data to or from disk or a memory buffer.

With Audio File Services you can:

- Create, initialize, open, and close audio files
- Read and write audio files
- Optimize audio files
- Work with user data and global information

## Topics

### Creating and Initializing Audio Files

[`AudioFileCreateWithURL`](/documentation/AudioToolbox/AudioFileCreateWithURL(_:_:_:_:_:))

Creates a new audio file, or initializes an existing file, specified by a URL.

[`AudioFileInitializeWithCallbacks`](/documentation/AudioToolbox/AudioFileInitializeWithCallbacks(_:_:_:_:_:_:_:_:_:))

Deletes the content of an existing file and assigns callbacks to the audio file object.

### Opening and Closing Audio Files

[`AudioFileOpenURL`](/documentation/AudioToolbox/AudioFileOpenURL(_:_:_:_:))

Open an existing audio file specified by a URL.

[`AudioFileOpenWithCallbacks`](/documentation/AudioToolbox/AudioFileOpenWithCallbacks(_:_:_:_:_:_:_:))

Opens an existing file with callbacks you provide.

[`AudioFileClose`](/documentation/AudioToolbox/AudioFileClose(_:))

Closes an audio file.

### Reading and Writing Audio Files

[`AudioFileReadBytes`](/documentation/AudioToolbox/AudioFileReadBytes(_:_:_:_:_:))

Reads bytes of audio data from an audio file.

[`AudioFileWriteBytes`](/documentation/AudioToolbox/AudioFileWriteBytes(_:_:_:_:_:))

Writes bytes of audio data to an audio file.

[`AudioFileReadPacketData`](/documentation/AudioToolbox/AudioFileReadPacketData(_:_:_:_:_:_:_:))

Reads packets of audio data from an audio file.

[`AudioFileWritePackets`](/documentation/AudioToolbox/AudioFileWritePackets(_:_:_:_:_:_:_:))

Writes packets of audio data to an audio data file.

### Getting and Setting Audio File Properties

[`AudioFileGetProperty`](/documentation/AudioToolbox/AudioFileGetProperty(_:_:_:_:))

Gets the value of an audio file property.

[`AudioFileGetPropertyInfo`](/documentation/AudioToolbox/AudioFileGetPropertyInfo(_:_:_:_:))

Gets information about an audio file property, including the size of the property value and whether the value is writable.

[`AudioFileSetProperty`](/documentation/AudioToolbox/AudioFileSetProperty(_:_:_:_:))

Sets the value of an audio file property

### Working with User Data

[`AudioFileCountUserData`](/documentation/AudioToolbox/AudioFileCountUserData(_:_:_:))

Gets the number of user data items with a specified ID in a file.

[`AudioFileGetUserDataSize`](/documentation/AudioToolbox/AudioFileGetUserDataSize(_:_:_:_:))

Gets the size of a user data item in an audio file.

[`AudioFileGetUserDataSize64`](/documentation/AudioToolbox/AudioFileGetUserDataSize64(_:_:_:_:))

Gets the size of a user data item in an audio file.

[`AudioFileGetUserData`](/documentation/AudioToolbox/AudioFileGetUserData(_:_:_:_:_:))

Gets a chunk from an audio file.

[`AudioFileGetUserDataAtOffset`](/documentation/AudioToolbox/AudioFileGetUserDataAtOffset(_:_:_:_:_:_:))

Gets part of the data from a chunk in an audio file.

[`AudioFileSetUserData`](/documentation/AudioToolbox/AudioFileSetUserData(_:_:_:_:_:))

Sets a user data item in an audio file.

[`AudioFileRemoveUserData`](/documentation/AudioToolbox/AudioFileRemoveUserData(_:_:_:))

Removes a user data item from an audio file.

### Working with Global Information

[`AudioFileGetGlobalInfoSize`](/documentation/AudioToolbox/AudioFileGetGlobalInfoSize(_:_:_:_:))

Gets the size of a global audio file property.

[`AudioFileGetGlobalInfo`](/documentation/AudioToolbox/AudioFileGetGlobalInfo(_:_:_:_:_:))

Copies the value of a global property into a buffer.

### Optimizing Audio Files

[`AudioFileOptimize`](/documentation/AudioToolbox/AudioFileOptimize(_:))

Consolidates audio data and performs other internal optimizations of the file structure.

### Parsing Audio File Content

[`NextAudioFileRegion`](/documentation/AudioToolbox/NextAudioFileRegion(_:))

Finds the next audio file region in a region list.

[`NumAudioFileMarkersToNumBytes`](/documentation/AudioToolbox/NumAudioFileMarkersToNumBytes(_:))

Returns the number of bytes corresponding to a specified number of audio file markers.

[`NumBytesToNumAudioFileMarkers`](/documentation/AudioToolbox/NumBytesToNumAudioFileMarkers(_:))

A macro that returns the number of audio file markers represented by a specified number of bytes.

### Callbacks

[`AudioFile_ReadProc`](/documentation/AudioToolbox/AudioFile_ReadProc)

Reads audio data when used in conjunction with the [`AudioFileOpenWithCallbacks(_:_:_:_:_:_:_:)`](/documentation/AudioToolbox/AudioFileOpenWithCallbacks(_:_:_:_:_:_:_:)) or [`AudioFileInitializeWithCallbacks(_:_:_:_:_:_:_:_:_:)`](/documentation/AudioToolbox/AudioFileInitializeWithCallbacks(_:_:_:_:_:_:_:_:_:)) functions.)

[`AudioFile_WriteProc`](/documentation/AudioToolbox/AudioFile_WriteProc)

A callback for writing file data when used in conjunction with the [`AudioFileOpenWithCallbacks(_:_:_:_:_:_:_:)`](/documentation/AudioToolbox/AudioFileOpenWithCallbacks(_:_:_:_:_:_:_:)) or [`AudioFileCreateWithURL(_:_:_:_:_:)`](/documentation/AudioToolbox/AudioFileCreateWithURL(_:_:_:_:_:)) functions.

[`AudioFile_GetSizeProc`](/documentation/AudioToolbox/AudioFile_GetSizeProc)

Gets file data size.

[`AudioFile_SetSizeProc`](/documentation/AudioToolbox/AudioFile_SetSizeProc)

Sets file data size.

### Data Types

[`AudioBytePacketTranslationFlags`](/documentation/AudioToolbox/AudioBytePacketTranslationFlags)

[`AudioFileFDFTable`](/documentation/AudioToolbox/AudioFileFDFTable)

[`AudioFileFDFTableExtended`](/documentation/AudioToolbox/AudioFileFDFTableExtended)

[`AudioFileFlags`](/documentation/AudioToolbox/AudioFileFlags)

[`AudioFileRegionFlags`](/documentation/AudioToolbox/AudioFileRegionFlags)

Flags that specify a playback direction for an audio file region structure.

[`AudioFileStreamParseFlags`](/documentation/AudioToolbox/AudioFileStreamParseFlags)

[`AudioFileStreamPropertyFlags`](/documentation/AudioToolbox/AudioFileStreamPropertyFlags)

[`AudioFileStreamSeekFlags`](/documentation/AudioToolbox/AudioFileStreamSeekFlags)

[`AudioFileID`](/documentation/AudioToolbox/AudioFileID)

An opaque data type that represents an audio file object.

[`AudioFilePropertyID`](/documentation/AudioToolbox/AudioFilePropertyID)

An audio file property identifier.

[`AudioFile_SMPTE_Time`](/documentation/AudioToolbox/AudioFile_SMPTE_Time)

A data structure for describing SMPTE (Society of Motion Picture and Television Engineers) time.

[`AudioFileMarker`](/documentation/AudioToolbox/AudioFileMarker)

Annotates a position in an audio file.

[`AudioFileMarkerList`](/documentation/AudioToolbox/AudioFileMarkerList)

A list of markers associated with an audio file, including their SMPTE time type, the number of markers, and the markers themselves.

[`AudioFileRegion`](/documentation/AudioToolbox/AudioFileRegion)

An audio file region specifies a segment of audio data.

[`AudioFileRegionList`](/documentation/AudioToolbox/AudioFileRegionList)

A list of the audio file regions in a file.

[`AudioFramePacketTranslation`](/documentation/AudioToolbox/AudioFramePacketTranslation)

A structure that specifies frame and packet translations.

[`AudioBytePacketTranslation`](/documentation/AudioToolbox/AudioBytePacketTranslation)

A data structure used by the [`kAudioFilePropertyByteToPacket`](/documentation/AudioToolbox/kAudioFilePropertyByteToPacket) and [`kAudioFilePropertyPacketToByte`](/documentation/AudioToolbox/kAudioFilePropertyPacketToByte) properties.

[`AudioFilePacketTableInfo`](/documentation/AudioToolbox/AudioFilePacketTableInfo)

Contains information about the number of valid frames in a file and where they begin and end.

[`AudioFileTypeAndFormatID`](/documentation/AudioToolbox/AudioFileTypeAndFormatID)

A specifier for the constant[`kAudioFileGlobalInfo_AvailableStreamDescriptionsForFormat`](/documentation/AudioToolbox/kAudioFileGlobalInfo_AvailableStreamDescriptionsForFormat).

[`AudioIndependentPacketTranslation`](/documentation/AudioToolbox/AudioIndependentPacketTranslation)

[`AudioPacketDependencyInfoTranslation`](/documentation/AudioToolbox/AudioPacketDependencyInfoTranslation)

[`AudioPacketRangeByteCountTranslation`](/documentation/AudioToolbox/AudioPacketRangeByteCountTranslation)

[`AudioPacketRollDistanceTranslation`](/documentation/AudioToolbox/AudioPacketRollDistanceTranslation)

### Enumerations

[`AudioBytePacketTranslationFlags`](/documentation/AudioToolbox/AudioBytePacketTranslationFlags)

[`AudioFileFlags`](/documentation/AudioToolbox/AudioFileFlags)

[`AudioFilePermissions`](/documentation/AudioToolbox/AudioFilePermissions)

Flags for use when opening an audio file.

[`AudioFileRegionFlags`](/documentation/AudioToolbox/AudioFileRegionFlags)

Flags that specify a playback direction for an audio file region structure.

[`AudioFileStreamParseFlags`](/documentation/AudioToolbox/AudioFileStreamParseFlags)

[`AudioFileStreamPropertyFlags`](/documentation/AudioToolbox/AudioFileStreamPropertyFlags)

[`AudioFileStreamSeekFlags`](/documentation/AudioToolbox/AudioFileStreamSeekFlags)

### Constants

[`AudioFileTypeID`](/documentation/AudioToolbox/AudioFileTypeID)

Operating system constants that indicate the type of file to be written or a hint about what type of file to expect from data provided.

[Audio File Creation Flags](/documentation/AudioToolbox/audio_file_creation_flags)

Flags to set when creating an audio file.

[`AudioFilePermissions`](/documentation/AudioToolbox/AudioFilePermissions)

Flags for use when opening an audio file.

[Audio File Loop Direction Constants](/documentation/AudioToolbox/1576494-audio-file-loop-direction-consta)

The playback direction of a looped segment of an audio file.

[Audio File Marker Types](/documentation/AudioToolbox/1576492-audio-file-marker-types)

A type of marker within a file used in the `mType` field of the [`AudioFileMarker`](/documentation/AudioToolbox/AudioFileMarker) structure.

[`AudioFileRegionFlags`](/documentation/AudioToolbox/AudioFileRegionFlags)

Flags that specify a playback direction for an audio file region structure.

[Audio File Packet Translation Flags](/documentation/AudioToolbox/audio_file_packet_translation_flags)

Flags specified in a packet translation structure.

[Info String Keys](/documentation/AudioToolbox/info-string-keys)

Key values of properties to get and set using Audio File Services functions and provide a common way to get the same information out of several different kinds of files.

[Audio File Properties](/documentation/AudioToolbox/1576499-audio-file-properties)

Properties used by the functions described in getting and setting pieces of data in audio files. See Working with Global Information for details.

[Audio File Global Info Properties](/documentation/AudioToolbox/1576495-audio-file-global-info-propertie)

Access these properties using the functions described in Working with Global Information.

### Result Codes

This table lists the result codes defined for Audio File Services.

[`kAudioFileUnspecifiedError`](/documentation/AudioToolbox/kAudioFileUnspecifiedError)

An unspecified error has occurred.

[`kAudioFileUnsupportedFileTypeError`](/documentation/AudioToolbox/kAudioFileUnsupportedFileTypeError)

The file type is not supported.

[`kAudioFileUnsupportedDataFormatError`](/documentation/AudioToolbox/kAudioFileUnsupportedDataFormatError)

The data format is not supported by this file type.

[`kAudioFileUnsupportedPropertyError`](/documentation/AudioToolbox/kAudioFileUnsupportedPropertyError)

The property is not supported.

[`kAudioFileBadPropertySizeError`](/documentation/AudioToolbox/kAudioFileBadPropertySizeError)

The size of the property data was not correct.

[`kAudioFilePermissionsError`](/documentation/AudioToolbox/kAudioFilePermissionsError)

The operation violated the file permissions. For example, an attempt was made to write to a file opened with the `kAudioFileReadPermission` constant.

[`kAudioFileNotOptimizedError`](/documentation/AudioToolbox/kAudioFileNotOptimizedError)

The chunks following the audio data chunk are preventing the extension of the audio data chunk. To write more data, you must optimize the file.

[`kAudioFileInvalidChunkError`](/documentation/AudioToolbox/kAudioFileInvalidChunkError)

Either the chunk does not exist in the file or it is not supported by the file.

[`kAudioFileDoesNotAllow64BitDataSizeError`](/documentation/AudioToolbox/kAudioFileDoesNotAllow64BitDataSizeError)

The file offset was too large for the file type. The AIFF and WAVE file format types have 32-bit file size limits.

[`kAudioFileInvalidPacketOffsetError`](/documentation/AudioToolbox/kAudioFileInvalidPacketOffsetError)

A packet offset was past the end of the file, or not at the end of the file when a VBR format was written,  or a corrupt packet size was read when the packet table was built.

[`kAudioFileInvalidFileError`](/documentation/AudioToolbox/kAudioFileInvalidFileError)

The file is malformed, or otherwise not a valid instance of an audio file of its type.

[`kAudioFileOperationNotSupportedError`](/documentation/AudioToolbox/kAudioFileOperationNotSupportedError)

The operation cannot be performed.

[`kAudioFileNotOpenError`](/documentation/AudioToolbox/kAudioFileNotOpenError)

The file is closed.

[`kAudioFileEndOfFileError`](/documentation/AudioToolbox/kAudioFileEndOfFileError)

End of file.

[`kAudioFilePositionError`](/documentation/AudioToolbox/kAudioFilePositionError)

Invalid file position.

[`kAudioFileFileNotFoundError`](/documentation/AudioToolbox/kAudioFileFileNotFoundError)

File not found.



---

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)