AudioFormat

public final class AudioFormat
extends Object implements Parcelable

java.lang.Object
   ↳ android.media.AudioFormat


The AudioFormat class is used to access a number of audio format and channel configuration constants. They are for instance used in AudioTrack and AudioRecord, as valid values in individual parameters of constructors like AudioTrack#AudioTrack(int, int, int, int, int, int), where the fourth parameter is one of the AudioFormat.ENCODING_* constants. The AudioFormat constants are also used in MediaFormat to specify audio related values commonly used in media, such as for MediaFormat#KEY_CHANNEL_MASK.

The AudioFormat.Builder class can be used to create instances of the AudioFormat format class. Refer to AudioFormat.Builder for documentation on the mechanics of the configuration and building of such instances. Here we describe the main concepts that the AudioFormat class allow you to convey in each instance, they are:

  1. sample rate
  2. encoding
  3. channel masks

Closely associated with the AudioFormat is the notion of an audio frame, which is used throughout the documentation to represent the minimum size complete unit of audio data.

Sample rate

Expressed in Hz, the sample rate in an AudioFormat instance expresses the number of audio samples for each channel per second in the content you are playing or recording. It is not the sample rate at which content is rendered or produced. For instance a sound at a media sample rate of 8000Hz can be played on a device operating at a sample rate of 48000Hz; the sample rate conversion is automatically handled by the platform, it will not play at 6x speed.

As of API Build.VERSION_CODES.M, sample rates up to 192kHz are supported for AudioRecord and AudioTrack, with sample rate conversion performed as needed. To improve efficiency and avoid lossy conversions, it is recommended to match the sample rate for AudioRecord and AudioTrack to the endpoint device sample rate, and limit the sample rate to no more than 48kHz unless there are special device capabilities that warrant a higher rate.

Encoding

Audio encoding is used to describe the bit representation of audio data, which can be either linear PCM or compressed audio, such as AC3 or DTS.

For linear PCM, the audio encoding describes the sample size, 8 bits, 16 bits, or 32 bits, and the sample representation, integer or float.

  • ENCODING_PCM_8BIT: The audio sample is a 8 bit unsigned integer in the range [0, 255], with a 128 offset for zero. This is typically stored as a Java byte in a byte array or ByteBuffer. Since the Java byte is signed, be careful with math operations and conversions as the most significant bit is inverted.
  • ENCODING_PCM_16BIT: The audio sample is a 16 bit signed integer typically stored as a Java short in a short array, but when the short is stored in a ByteBuffer, it is native endian (as compared to the default Java big endian). The short has full range from [-32768, 32767], and is sometimes interpreted as fixed point Q.15 data.
  • ENCODING_PCM_FLOAT: Introduced in API Build.VERSION_CODES.LOLLIPOP, this encoding specifies that the audio sample is a 32 bit IEEE single precision float. The sample can be manipulated as a Java float in a float array, though within a ByteBuffer it is stored in native endian byte order. The nominal range of ENCODING_PCM_FLOAT audio data is [-1.0, 1.0]. It is implementation dependent whether the positive maximum of 1.0 is included in the interval. Values outside of the nominal range are clamped before sending to the endpoint device. Beware that the handling of NaN is undefined; subnormals may be treated as zero; and infinities are generally clamped just like other values for AudioTrack – try to avoid infinities because they can easily generate a NaN.
    To achieve higher audio bit depth than a signed 16 bit integer short, it is recommended to use ENCODING_PCM_FLOAT for audio capture, processing, and playback. Floats are efficiently manipulated by modern CPUs, have greater precision than 24 bit signed integers, and have greater dynamic range than 32 bit signed integers. AudioRecord as of API Build.VERSION_CODES.M and AudioTrack as of API Build.VERSION_CODES.LOLLIPOP support ENCODING_PCM_FLOAT.
  • ENCODING_PCM_24BIT_PACKED: Introduced in API Build.VERSION_CODES.S, this encoding specifies the audio sample is an extended precision 24 bit signed integer stored as a 3 Java bytes in a ByteBuffer or byte array in native endian (see ByteOrder.nativeOrder()). Each sample has full range from [-8388608, 8388607], and can be interpreted as fixed point Q.23 data.
  • ENCODING_PCM_32BIT: Introduced in API Build.VERSION_CODES.S, this encoding specifies the audio sample is an extended precision 32 bit signed integer stored as a 4 Java bytes in a ByteBuffer or byte array in native endian (see ByteOrder.nativeOrder()). Each sample has full range from [-2147483648, 2147483647], and can be interpreted as fixed point Q.31 data.

For compressed audio, the encoding specifies the method of compression, for example ENCODING_AC3 and ENCODING_DTS. The compressed audio data is typically stored as bytes in a byte array or ByteBuffer. When a compressed audio encoding is specified for an AudioTrack, it creates a direct (non-mixed) track for output to an endpoint (such as HDMI) capable of decoding the compressed audio. For (most) other endpoints, which are not capable of decoding such compressed audio, you will need to decode the data first, typically by creating a MediaCodec. Alternatively, one may use MediaPlayer for playback of compressed audio files or streams.

When compressed audio is sent out through a direct AudioTrack, it need not be written in exact multiples of the audio access unit; this differs from MediaCodec input buffers.

Channel mask

Channel masks are used in AudioTrack and AudioRecord to describe the samples and their arrangement in the audio frame. They are also used in the endpoint (e.g. a USB audio interface, a DAC connected to headphones) to specify allowable configurations of a particular device.
As of API Build.VERSION_CODES.M, there are two types of channel masks: channel position masks and channel index masks.

Channel position masks
Channel position masks are the original Android channel masks, and are used since API Build.VERSION_CODES.BASE. For input and output, they imply a positional nature - the location of a speaker or a microphone for recording or playback.
For a channel position mask, each allowed channel position corresponds to a bit in the channel mask. If that channel position is present in the audio frame, that bit is set, otherwise it is zero. The order of the bits (from lsb to msb) corresponds to the order of that position's sample in the audio frame.
The canonical channel position masks by channel count are as follows:
channel countchannel position mask
1CHANNEL_OUT_MONO
2CHANNEL_OUT_STEREO
3CHANNEL_OUT_STEREO | CHANNEL_OUT_FRONT_CENTER
4CHANNEL_OUT_QUAD
5CHANNEL_OUT_QUAD | CHANNEL_OUT_FRONT_CENTER
6CHANNEL_OUT_5POINT1
7CHANNEL_OUT_5POINT1 | CHANNEL_OUT_BACK_CENTER
8CHANNEL_OUT_7POINT1_SURROUND

These masks are an ORed composite of individual channel masks. For example CHANNEL_OUT_STEREO is composed of CHANNEL_OUT_FRONT_LEFT and CHANNEL_OUT_FRONT_RIGHT.

The following diagram represents the layout of the output channels, as seen from above the listener (in the center at the "lis" position, facing the front-center channel).

       TFL ----- TFC ----- TFR     T is Top
       |  \       |       /  |
       |   FL --- FC --- FR  |     F is Front
       |   |\     |     /|   |
       |   | BFL-BFC-BFR |   |     BF is Bottom Front
       |   |             |   |
       |   FWL   lis   FWR   |     W is Wide
       |   |             |   |
      TSL  SL    TC     SR  TSR    S is Side
       |   |             |   |
       |   BL --- BC -- BR   |     B is Back
       |  /               \  |
       TBL ----- TBC ----- TBR     C is Center, L/R is Left/Right
 
All "T" (top) channels are above the listener, all "BF" (bottom-front) channels are below the listener, all others are in the listener's horizontal plane. When used in conjunction, LFE1 and LFE2 are below the listener, when used alone, LFE plane is undefined. See the channel definitions for the abbreviations
Channel index masks
Channel index masks are introduced in API Build.VERSION_CODES.M. They allow the selection of a particular channel from the source or sink endpoint by number, i.e. the first channel, the second channel, and so forth. This avoids problems with artificially assigning positions to channels of an endpoint, or figuring what the ith position bit is within an endpoint's channel position mask etc.
Here's an example where channel index masks address this confusion: dealing with a 4 channel USB device. Using a position mask, and based on the channel count, this would be a CHANNEL_OUT_QUAD device, but really one is only interested in channel 0 through channel 3. The USB device would then have the following individual bit channel masks: CHANNEL_OUT_FRONT_LEFT, CHANNEL_OUT_FRONT_RIGHT, CHANNEL_OUT_BACK_LEFT and CHANNEL_OUT_BACK_RIGHT. But which is channel 0 and which is channel 3?
For a channel index mask, each channel number is represented as a bit in the mask, from the lsb (channel 0) upwards to the msb, numerically this bit value is 1 << channelNumber. A set bit indicates that channel is present in the audio frame, otherwise it is cleared. The order of the bits also correspond to that channel number's sample order in the audio frame.
For the previous 4 channel USB device example, the device would have a channel index mask 0xF. Suppose we wanted to select only the first and the third channels; this would correspond to a channel index mask 0x5 (the first and third bits set). If an AudioTrack uses this channel index mask, the audio frame would consist of two samples, the first sample of each frame routed to channel 0, and the second sample of each frame routed to channel 2. The canonical channel index masks by channel count are given by the formula (1 << channelCount) - 1.
Use cases
  • Channel position mask for an endpoint: CHANNEL_OUT_FRONT_LEFT, CHANNEL_OUT_FRONT_CENTER, etc. for HDMI home theater purposes.
  • Channel position mask for an audio stream: Creating an AudioTrack to output movie content, where 5.1 multichannel output is to be written.
  • Channel index mask for an endpoint: USB devices for which input and output do not correspond to left or right speaker or microphone.
  • Channel index mask for an audio stream: An AudioRecord may only want the third and fourth audio channels of the endpoint (i.e. the second channel pair), and not care the about position it corresponds to, in which case the channel index mask is 0xC. Multichannel AudioRecord sessions should use channel index masks.

Audio Frame

For linear PCM, an audio frame consists of a set of samples captured at the same time, whose count and channel association are given by the channel mask, and whose sample contents are specified by the encoding. For example, a stereo 16 bit PCM frame consists of two 16 bit linear PCM samples, with a frame size of 4 bytes. For compressed audio, an audio frame may alternately refer to an access unit of compressed data bytes that is logically grouped together for decoding and bitstream access (e.g. MediaCodec), or a single byte of compressed data (e.g. AudioTrack.getBufferSizeInFrames()), or the linear PCM frame result from decoding the compressed data (e.g.AudioTrack.getPlaybackHeadPosition()), depending on the context where audio frame is used. For the purposes of AudioFormat#getFrameSizeInBytes(), a compressed data format returns a frame size of 1 byte.

Summary

Nested classes

class AudioFormat.Builder

Builder class for AudioFormat objects. 

Constants

int CHANNEL_CONFIGURATION_DEFAULT

This constant was deprecated in API level 15. Use CHANNEL_OUT_DEFAULT or CHANNEL_IN_DEFAULT instead.

int CHANNEL_CONFIGURATION_INVALID

This constant was deprecated in API level 15. Use CHANNEL_INVALID instead.

int CHANNEL_CONFIGURATION_MONO

This constant was deprecated in API level 15. Use CHANNEL_OUT_MONO or CHANNEL_IN_MONO instead.

int CHANNEL_CONFIGURATION_STEREO

This constant was deprecated in API level 15. Use CHANNEL_OUT_STEREO or CHANNEL_IN_STEREO instead.

int CHANNEL_INVALID

Invalid audio channel mask

int CHANNEL_IN_BACK

int CHANNEL_IN_BACK_PROCESSED

int CHANNEL_IN_DEFAULT

int CHANNEL_IN_FRONT

int CHANNEL_IN_FRONT_PROCESSED

int CHANNEL_IN_LEFT

int CHANNEL_IN_LEFT_PROCESSED

int CHANNEL_IN_MONO

int CHANNEL_IN_PRESSURE

int CHANNEL_IN_RIGHT

int CHANNEL_IN_RIGHT_PROCESSED

int CHANNEL_IN_STEREO

int CHANNEL_IN_VOICE_DNLINK

int CHANNEL_IN_VOICE_UPLINK

int CHANNEL_IN_X_AXIS

int CHANNEL_IN_Y_AXIS

int CHANNEL_IN_Z_AXIS

int CHANNEL_OUT_5POINT1

Output channel mask for 5.1

int CHANNEL_OUT_5POINT1POINT2

Output channel mask for 5.1.2 Same as 5.1 with the addition of left and right top channels

int CHANNEL_OUT_5POINT1POINT4

Output channel mask for 5.1.4 Same as 5.1 with the addition of four top channels

int CHANNEL_OUT_6POINT1

Output channel mask for 6.1 Same as 5.1 with the addition of the back center channel

int CHANNEL_OUT_7POINT1

This constant was deprecated in API level 23. Not the typical 7.1 surround configuration. Use CHANNEL_OUT_7POINT1_SURROUND instead.

int CHANNEL_OUT_7POINT1POINT2

Output channel mask for 7.1.2 Same as 7.1 with the addition of left and right top channels

int CHANNEL_OUT_7POINT1POINT4

Output channel mask for 7.1.4 Same as 7.1 with the addition of four top channels

int CHANNEL_OUT_7POINT1_SURROUND

Output channel mask for 7.1

int CHANNEL_OUT_9POINT1POINT4

Output channel mask for 9.1.4 Same as 7.1.4 with the addition of left and right front wide channels

int CHANNEL_OUT_9POINT1POINT6

Output channel mask for 9.1.6 Same as 9.1.4 with the addition of left and right top side channels

int CHANNEL_OUT_BACK_CENTER

Back center output channel (see BC in channel diagram)

int CHANNEL_OUT_BACK_LEFT

Back left output channel (see BL in channel diagram)

int CHANNEL_OUT_BACK_RIGHT

Back right output channel (see BR in channel diagram)

int CHANNEL_OUT_BOTTOM_FRONT_CENTER

Bottom front center output channel (see BFC in channel diagram below FC)

int CHANNEL_OUT_BOTTOM_FRONT_LEFT

Bottom front left output channel (see BFL in channel diagram below FL)

int CHANNEL_OUT_BOTTOM_FRONT_RIGHT

Bottom front right output channel (see BFR in channel diagram below FR)

int CHANNEL_OUT_DEFAULT

Default audio channel mask

int CHANNEL_OUT_FRONT_CENTER

Front center output channel (see FC in channel diagram)

int CHANNEL_OUT_FRONT_LEFT

Front left output channel (see FL in channel diagram)

int CHANNEL_OUT_FRONT_LEFT_OF_CENTER

int CHANNEL_OUT_FRONT_RIGHT

Front right output channel (see FR in channel diagram)

int CHANNEL_OUT_FRONT_RIGHT_OF_CENTER

int CHANNEL_OUT_FRONT_WIDE_LEFT

Front wide left output channel (see FWL in channel diagram)

int CHANNEL_OUT_FRONT_WIDE_RIGHT

Front wide right output channel (see FWR in channel diagram)

int CHANNEL_OUT_LOW_FREQUENCY

LFE "low frequency effect" channel When used in conjunction with CHANNEL_OUT_LOW_FREQUENCY_2, it is intended to contain the left low-frequency effect signal, also referred to as "LFE1" in ITU-R BS.2159-8

int CHANNEL_OUT_LOW_FREQUENCY_2

The second LFE channel When used in conjunction with CHANNEL_OUT_LOW_FREQUENCY, it is intended to contain the right low-frequency effect signal, also referred to as "LFE2" in ITU-R BS.2159-8

int CHANNEL_OUT_MONO

int CHANNEL_OUT_QUAD

int CHANNEL_OUT_SIDE_LEFT

Side left output channel (see SL in channel diagram)

int CHANNEL_OUT_SIDE_RIGHT

Side right output channel (see SR in channel diagram)

int CHANNEL_OUT_STEREO

int CHANNEL_OUT_SURROUND

int CHANNEL_OUT_TOP_BACK_CENTER

Top back center output channel (see TBC in channel diagram above BC)

int CHANNEL_OUT_TOP_BACK_LEFT

Top back left output channel (see TBL in channel diagram above BL)

int CHANNEL_OUT_TOP_BACK_RIGHT

Top back right output channel (see TBR in channel diagram above BR)

int CHANNEL_OUT_TOP_CENTER

Top center (above listener) output channel (see TC in channel diagram)

int CHANNEL_OUT_TOP_FRONT_CENTER

Top front center output channel (see TFC in channel diagram above FC)

int CHANNEL_OUT_TOP_FRONT_LEFT

Top front left output channel (see TFL in channel diagram above FL)

int CHANNEL_OUT_TOP_FRONT_RIGHT

Top front right output channel (see TFR in channel diagram above FR)

int CHANNEL_OUT_TOP_SIDE_LEFT

Top side left output channel (see TSL in channel diagram above SL)

int CHANNEL_OUT_TOP_SIDE_RIGHT

Top side right output channel (see TSR in channel diagram above SR)

int ENCODING_AAC_ELD

Audio data format: AAC ELD compressed

int ENCODING_AAC_HE_V1

Audio data format: AAC HE V1 compressed

int ENCODING_AAC_HE_V2

Audio data format: AAC HE V2 compressed

int ENCODING_AAC_LC

Audio data format: AAC LC compressed

int ENCODING_AAC_XHE

Audio data format: AAC xHE compressed

int ENCODING_AC3

Audio data format: AC-3 compressed, also known as Dolby Digital

int ENCODING_AC4

Audio data format: AC-4 sync frame transport format

int ENCODING_DEFAULT

Default audio data format

int ENCODING_DOLBY_MAT

Audio data format: Dolby MAT (Metadata-enhanced Audio Transmission) Dolby MAT bitstreams are used to transmit Dolby TrueHD, channel-based PCM, or PCM with metadata (object audio) over HDMI (e.g. Dolby Atmos content).

int ENCODING_DOLBY_TRUEHD

Audio data format: DOLBY TRUEHD compressed

int ENCODING_DRA

Audio data format: DRA compressed

int ENCODING_DSD

Audio data format: Direct Stream Digital

int ENCODING_DTS

Audio data format: DTS compressed

int ENCODING_DTS_HD

Audio data format: DTS HD compressed

int ENCODING_DTS_HD_MA

Audio data format: DTS HD Master Audio compressed DTS HD Master Audio stream is variable bit rate and contains lossless audio.

int ENCODING_DTS_UHD

This constant was deprecated in API level 34. Use ENCODING_DTS_UHD_P1 instead.

int ENCODING_DTS_UHD_P1

Audio data format: DTS UHD Profile-1 compressed (aka DTS:X Profile 1) Has the same meaning and value as the deprecated ENCODING_DTS_UHD.

int ENCODING_DTS_UHD_P2

Audio data format: DTS UHD Profile-2 compressed DTS-UHD Profile-2 supports delivery of Channel-Based Audio, Object-Based Audio and High Order Ambisonic presentations up to the fourth order.

int ENCODING_E_AC3

Audio data format: E-AC-3 compressed, also known as Dolby Digital Plus or DD+

int ENCODING_E_AC3_JOC

Audio data format: E-AC-3-JOC compressed E-AC-3-JOC streams can be decoded by downstream devices supporting ENCODING_E_AC3.

int ENCODING_IEC61937

Audio data format: compressed audio wrapped in PCM for HDMI or S/PDIF passthrough.

int ENCODING_INVALID

Invalid audio data format

int ENCODING_MP3

Audio data format: MP3 compressed

int ENCODING_MPEGH_BL_L3

Audio data format: MPEG-H baseline profile, level 3

int ENCODING_MPEGH_BL_L4

Audio data format: MPEG-H baseline profile, level 4

int ENCODING_MPEGH_LC_L3

Audio data format: MPEG-H low complexity profile, level 3

int ENCODING_MPEGH_LC_L4

Audio data format: MPEG-H low complexity profile, level 4

int ENCODING_OPUS

Audio data format: OPUS compressed.

int ENCODING_PCM_16BIT

Audio data format: PCM 16 bit per sample.

int ENCODING_PCM_24BIT_PACKED

Audio data format: PCM 24 bit per sample packed as 3 bytes.

int ENCODING_PCM_32BIT

Audio data format: PCM 32 bit per sample.

int ENCODING_PCM_8BIT

Audio data format: PCM 8 bit per sample.

int ENCODING_PCM_FLOAT

Audio data format: single-precision floating-point per sample

int SAMPLE_RATE_UNSPECIFIED

Sample rate will be a route-dependent value.

Inherited constants

Fields

public static final Creator<AudioFormat> CREATOR

Public methods

int describeContents()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.

boolean equals(Object o)

Indicates whether some other object is "equal to" this one.

int getChannelCount()

Return the channel count.

int getChannelIndexMask()

Return the channel index mask.

int getChannelMask()

Return the channel mask.

int getEncoding()

Return the encoding.

int getFrameSizeInBytes()

Return the frame size in bytes.

int getSampleRate()

Return the sample rate.

int hashCode()

Returns a hash code value for the object.

String toString()

Returns a string representation of the object.

void writeToParcel(Parcel dest, int flags)

Flatten this object in to a Parcel.

Inherited methods

Constants

CHANNEL_CONFIGURATION_DEFAULT

Added in API level 3
Deprecated in API level 15
public static final int CHANNEL_CONFIGURATION_DEFAULT

This constant was deprecated in API level 15.
Use CHANNEL_OUT_DEFAULT or CHANNEL_IN_DEFAULT instead.

Constant Value: 1 (0x00000001)

CHANNEL_CONFIGURATION_INVALID

Added in API level 3
Deprecated in API level 15
public static final int CHANNEL_CONFIGURATION_INVALID

This constant was deprecated in API level 15.
Use CHANNEL_INVALID instead.

Constant Value: 0 (0x00000000)

CHANNEL_CONFIGURATION_MONO

Added in API level 3
Deprecated in API level 15
public static final int CHANNEL_CONFIGURATION_MONO

This constant was deprecated in API level 15.
Use CHANNEL_OUT_MONO or CHANNEL_IN_MONO instead.

Constant Value: 2 (0x00000002)

CHANNEL_CONFIGURATION_STEREO

Added in API level 3
Deprecated in API level 15
public static final int CHANNEL_CONFIGURATION_STEREO

This constant was deprecated in API level 15.
Use CHANNEL_OUT_STEREO or CHANNEL_IN_STEREO instead.

Constant Value: 3 (0x00000003)

CHANNEL_INVALID

Added in API level 5
public static final int CHANNEL_INVALID

Invalid audio channel mask

Constant Value: 0 (0x00000000)

CHANNEL_IN_BACK

Added in API level 5
public static final int CHANNEL_IN_BACK

Constant Value: 32 (0x00000020)

CHANNEL_IN_BACK_PROCESSED

Added in API level 5
public static final int CHANNEL_IN_BACK_PROCESSED

Constant Value: 512 (0x00000200)

CHANNEL_IN_DEFAULT

Added in API level 5
public static final int CHANNEL_IN_DEFAULT

Constant Value: 1 (0x00000001)

CHANNEL_IN_FRONT

Added in API level 5
public static final int CHANNEL_IN_FRONT

Constant Value: 16 (0x00000010)

CHANNEL_IN_FRONT_PROCESSED

Added in API level 5
public static final int CHANNEL_IN_FRONT_PROCESSED

Constant Value: 256 (0x00000100)

CHANNEL_IN_LEFT

Added in API level 5
public static final int CHANNEL_IN_LEFT

Constant Value: 4 (0x00000004)

CHANNEL_IN_LEFT_PROCESSED

Added in API level 5
public static final int CHANNEL_IN_LEFT_PROCESSED

Constant Value: 64 (0x00000040)

CHANNEL_IN_MONO

Added in API level 5
public static final int CHANNEL_IN_MONO

Constant Value: 16 (0x00000010)

CHANNEL_IN_PRESSURE

Added in API level 5
public static final int CHANNEL_IN_PRESSURE

Constant Value: 1024 (0x00000400)

CHANNEL_IN_RIGHT

Added in API level 5
public static final int CHANNEL_IN_RIGHT

Constant Value: 8 (0x00000008)

CHANNEL_IN_RIGHT_PROCESSED

Added in API level 5
public static final int CHANNEL_IN_RIGHT_PROCESSED

Constant Value: 128 (0x00000080)

CHANNEL_IN_STEREO

Added in API level 5
public static final int CHANNEL_IN_STEREO

Constant Value: 12 (0x0000000c)

Added in API level 5
public static final int CHANNEL_IN_VOICE_DNLINK

Constant Value: 32768 (0x00008000)

Added in API level 5
public static final int CHANNEL_IN_VOICE_UPLINK

Constant Value: 16384 (0x00004000)

CHANNEL_IN_X_AXIS

Added in API level 5
public static final int CHANNEL_IN_X_AXIS

Constant Value: 2048 (0x00000800)

CHANNEL_IN_Y_AXIS

Added in API level 5
public static final int CHANNEL_IN_Y_AXIS

Constant Value: 4096 (0x00001000)

CHANNEL_IN_Z_AXIS

Added in API level 5
public static final int CHANNEL_IN_Z_AXIS

Constant Value: 8192 (0x00002000)

CHANNEL_OUT_5POINT1

Added in API level 5
public static final int CHANNEL_OUT_5POINT1

Output channel mask for 5.1

Constant Value: 252 (0x000000fc)

CHANNEL_OUT_5POINT1POINT2

Added in API level 32
public static final int CHANNEL_OUT_5POINT1POINT2

Output channel mask for 5.1.2 Same as 5.1 with the addition of left and right top channels

Constant Value: 3145980 (0x003000fc)

CHANNEL_OUT_5POINT1POINT4

Added in API level 32
public static final int CHANNEL_OUT_5POINT1POINT4

Output channel mask for 5.1.4 Same as 5.1 with the addition of four top channels

Constant Value: 737532 (0x000b40fc)

CHANNEL_OUT_6POINT1

Added in API level 34
public static final int CHANNEL_OUT_6POINT1

Output channel mask for 6.1 Same as 5.1 with the addition of the back center channel

Constant Value: 1276 (0x000004fc)

CHANNEL_OUT_7POINT1

Added in API level 5
Deprecated in API level 23
public static final int CHANNEL_OUT_7POINT1

This constant was deprecated in API level 23.
Not the typical 7.1 surround configuration. Use CHANNEL_OUT_7POINT1_SURROUND instead.

Constant Value: 1020 (0x000003fc)

CHANNEL_OUT_7POINT1POINT2

Added in API level 32
public static final int CHANNEL_OUT_7POINT1POINT2

Output channel mask for 7.1.2 Same as 7.1 with the addition of left and right top channels

Constant Value: 3152124 (0x003018fc)

CHANNEL_OUT_7POINT1POINT4

Added in API level 32
public static final int CHANNEL_OUT_7POINT1POINT4

Output channel mask for 7.1.4 Same as 7.1 with the addition of four top channels

Constant Value: 743676 (0x000b58fc)

CHANNEL_OUT_7POINT1_SURROUND

Added in API level 23
public static final int CHANNEL_OUT_7POINT1_SURROUND

Output channel mask for 7.1

Constant Value: 6396 (0x000018fc)

CHANNEL_OUT_9POINT1POINT4

Added in API level 32
public static final int CHANNEL_OUT_9POINT1POINT4

Output channel mask for 9.1.4 Same as 7.1.4 with the addition of left and right front wide channels

Constant Value: 202070268 (0x0c0b58fc)

CHANNEL_OUT_9POINT1POINT6

Added in API level 32
public static final int CHANNEL_OUT_9POINT1POINT6

Output channel mask for 9.1.6 Same as 9.1.4 with the addition of left and right top side channels

Constant Value: 205215996 (0x0c3b58fc)

CHANNEL_OUT_BACK_CENTER

Added in API level 5
public static final int CHANNEL_OUT_BACK_CENTER

Back center output channel (see BC in channel diagram)

Constant Value: 1024 (0x00000400)

CHANNEL_OUT_BACK_LEFT

Added in API level 5
public static final int CHANNEL_OUT_BACK_LEFT

Back left output channel (see BL in channel diagram)

Constant Value: 64 (0x00000040)

CHANNEL_OUT_BACK_RIGHT

Added in API level 5
public static final int CHANNEL_OUT_BACK_RIGHT

Back right output channel (see BR in channel diagram)

Constant Value: 128 (0x00000080)

CHANNEL_OUT_BOTTOM_FRONT_CENTER

Added in API level 32
public static final int CHANNEL_OUT_BOTTOM_FRONT_CENTER

Bottom front center output channel (see BFC in channel diagram below FC)

Constant Value: 8388608 (0x00800000)

CHANNEL_OUT_BOTTOM_FRONT_LEFT

Added in API level 32
public static final int CHANNEL_OUT_BOTTOM_FRONT_LEFT

Bottom front left output channel (see BFL in channel diagram below FL)

Constant Value: 4194304 (0x00400000)

CHANNEL_OUT_BOTTOM_FRONT_RIGHT

Added in API level 32
public static final int CHANNEL_OUT_BOTTOM_FRONT_RIGHT

Bottom front right output channel (see BFR in channel diagram below FR)

Constant Value: 16777216 (0x01000000)

CHANNEL_OUT_DEFAULT

Added in API level 5
public static final int CHANNEL_OUT_DEFAULT

Default audio channel mask

Constant Value: 1 (0x00000001)

CHANNEL_OUT_FRONT_CENTER

Added in API level 5
public static final int CHANNEL_OUT_FRONT_CENTER

Front center output channel (see FC in channel diagram)

Constant Value: 16 (0x00000010)

CHANNEL_OUT_FRONT_LEFT

Added in API level 5
public static final int CHANNEL_OUT_FRONT_LEFT

Front left output channel (see FL in channel diagram)

Constant Value: 4 (0x00000004)

CHANNEL_OUT_FRONT_LEFT_OF_CENTER

Added in API level 5
public static final int CHANNEL_OUT_FRONT_LEFT_OF_CENTER

Constant Value: 256 (0x00000100)

CHANNEL_OUT_FRONT_RIGHT

Added in API level 5
public static final int CHANNEL_OUT_FRONT_RIGHT

Front right output channel (see FR in channel diagram)

Constant Value: 8 (0x00000008)

CHANNEL_OUT_FRONT_RIGHT_OF_CENTER

Added in API level 5
public static final int CHANNEL_OUT_FRONT_RIGHT_OF_CENTER

Constant Value: 512 (0x00000200)

CHANNEL_OUT_FRONT_WIDE_LEFT

Added in API level 32
public static final int CHANNEL_OUT_FRONT_WIDE_LEFT

Front wide left output channel (see FWL in channel diagram)

Constant Value: 67108864 (0x04000000)

CHANNEL_OUT_FRONT_WIDE_RIGHT

Added in API level 32
public static final int CHANNEL_OUT_FRONT_WIDE_RIGHT

Front wide right output channel (see FWR in channel diagram)

Constant Value: 134217728 (0x08000000)

CHANNEL_OUT_LOW_FREQUENCY

Added in API level 5
public static final int CHANNEL_OUT_LOW_FREQUENCY

LFE "low frequency effect" channel When used in conjunction with CHANNEL_OUT_LOW_FREQUENCY_2, it is intended to contain the left low-frequency effect signal, also referred to as "LFE1" in ITU-R BS.2159-8

Constant Value: 32 (0x00000020)

CHANNEL_OUT_LOW_FREQUENCY_2

Added in API level 32
public static final int CHANNEL_OUT_LOW_FREQUENCY_2

The second LFE channel When used in conjunction with CHANNEL_OUT_LOW_FREQUENCY, it is intended to contain the right low-frequency effect signal, also referred to as "LFE2" in ITU-R BS.2159-8

Constant Value: 33554432 (0x02000000)

CHANNEL_OUT_MONO

Added in API level 5
public static final int CHANNEL_OUT_MONO

Constant Value: 4 (0x00000004)

CHANNEL_OUT_QUAD

Added in API level 5
public static final int CHANNEL_OUT_QUAD

Constant Value: 204 (0x000000cc)

CHANNEL_OUT_SIDE_LEFT

Added in API level 21
public static final int CHANNEL_OUT_SIDE_LEFT

Side left output channel (see SL in channel diagram)

Constant Value: 2048 (0x00000800)

CHANNEL_OUT_SIDE_RIGHT

Added in API level 21
public static final int CHANNEL_OUT_SIDE_RIGHT

Side right output channel (see SR in channel diagram)

Constant Value: 4096 (0x00001000)

CHANNEL_OUT_STEREO

Added in API level 5
public static final int CHANNEL_OUT_STEREO

Constant Value: 12 (0x0000000c)

CHANNEL_OUT_SURROUND

Added in API level 5
public static final int CHANNEL_OUT_SURROUND

Constant Value: 1052 (0x0000041c)

CHANNEL_OUT_TOP_BACK_CENTER

Added in API level 32
public static final int CHANNEL_OUT_TOP_BACK_CENTER

Top back center output channel (see TBC in channel diagram above BC)

Constant Value: 262144 (0x00040000)

CHANNEL_OUT_TOP_BACK_LEFT

Added in API level 32
public static final int CHANNEL_OUT_TOP_BACK_LEFT

Top back left output channel (see TBL in channel diagram above BL)

Constant Value: 131072 (0x00020000)

CHANNEL_OUT_TOP_BACK_RIGHT

Added in API level 32
public static final int CHANNEL_OUT_TOP_BACK_RIGHT

Top back right output channel (see TBR in channel diagram above BR)

Constant Value: 524288 (0x00080000)

CHANNEL_OUT_TOP_CENTER

Added in API level 32
public static final int CHANNEL_OUT_TOP_CENTER

Top center (above listener) output channel (see TC in channel diagram)

Constant Value: 8192 (0x00002000)

CHANNEL_OUT_TOP_FRONT_CENTER

Added in API level 32
public static final int CHANNEL_OUT_TOP_FRONT_CENTER

Top front center output channel (see TFC in channel diagram above FC)

Constant Value: 32768 (0x00008000)

CHANNEL_OUT_TOP_FRONT_LEFT

Added in API level 32
public static final int CHANNEL_OUT_TOP_FRONT_LEFT

Top front left output channel (see TFL in channel diagram above FL)

Constant Value: 16384 (0x00004000)

CHANNEL_OUT_TOP_FRONT_RIGHT

Added in API level 32
public static final int CHANNEL_OUT_TOP_FRONT_RIGHT

Top front right output channel (see TFR in channel diagram above FR)

Constant Value: 65536 (0x00010000)

CHANNEL_OUT_TOP_SIDE_LEFT

Added in API level 32
public static final int CHANNEL_OUT_TOP_SIDE_LEFT

Top side left output channel (see TSL in channel diagram above SL)

Constant Value: 1048576 (0x00100000)

CHANNEL_OUT_TOP_SIDE_RIGHT

Added in API level 32
public static final int CHANNEL_OUT_TOP_SIDE_RIGHT

Top side right output channel (see TSR in channel diagram above SR)

Constant Value: 2097152 (0x00200000)

ENCODING_AAC_ELD

Added in API level 28
public static final int ENCODING_AAC_ELD

Audio data format: AAC ELD compressed

Constant Value: 15 (0x0000000f)

ENCODING_AAC_HE_V1

Added in API level 28
public static final int ENCODING_AAC_HE_V1

Audio data format: AAC HE V1 compressed

Constant Value: 11 (0x0000000b)

ENCODING_AAC_HE_V2

Added in API level 28
public static final int ENCODING_AAC_HE_V2

Audio data format: AAC HE V2 compressed

Constant Value: 12 (0x0000000c)

ENCODING_AAC_LC

Added in API level 28
public static final int ENCODING_AAC_LC

Audio data format: AAC LC compressed

Constant Value: 10 (0x0000000a)

ENCODING_AAC_XHE

Added in API level 28
public static final int ENCODING_AAC_XHE

Audio data format: AAC xHE compressed

Constant Value: 16 (0x00000010)

ENCODING_AC3

Added in API level 21
public static final int ENCODING_AC3

Audio data format: AC-3 compressed, also known as Dolby Digital

Constant Value: 5 (0x00000005)

ENCODING_AC4

Added in API level 28
public static final int ENCODING_AC4

Audio data format: AC-4 sync frame transport format

Constant Value: 17 (0x00000011)

ENCODING_DEFAULT

Added in API level 3
public static final int ENCODING_DEFAULT

Default audio data format

Constant Value: 1 (0x00000001)

ENCODING_DOLBY_MAT

Added in API level 29
public static final int ENCODING_DOLBY_MAT

Audio data format: Dolby MAT (Metadata-enhanced Audio Transmission) Dolby MAT bitstreams are used to transmit Dolby TrueHD, channel-based PCM, or PCM with metadata (object audio) over HDMI (e.g. Dolby Atmos content).

Constant Value: 19 (0x00000013)

ENCODING_DOLBY_TRUEHD

Added in API level 25
public static final int ENCODING_DOLBY_TRUEHD

Audio data format: DOLBY TRUEHD compressed

Constant Value: 14 (0x0000000e)

ENCODING_DRA

Added in API level 31
public static final int ENCODING_DRA

Audio data format: DRA compressed

Constant Value: 28 (0x0000001c)

ENCODING_DSD

Added in API level 34
public static final int ENCODING_DSD

Audio data format: Direct Stream Digital

Constant Value: 31 (0x0000001f)

ENCODING_DTS

Added in API level 23
public static final int ENCODING_DTS

Audio data format: DTS compressed

Constant Value: 7 (0x00000007)

ENCODING_DTS_HD

Added in API level 23
public static final int ENCODING_DTS_HD

Audio data format: DTS HD compressed

Constant Value: 8 (0x00000008)

ENCODING_DTS_HD_MA

Added in API level 34
public static final int ENCODING_DTS_HD_MA

Audio data format: DTS HD Master Audio compressed DTS HD Master Audio stream is variable bit rate and contains lossless audio. Use ENCODING_DTS_HD_MA for lossless audio content (DTS-HD MA Lossless) and use ENCODING_DTS_HD for other DTS bitstreams with extension substream (DTS 8Ch Discrete, DTS Hi Res, DTS Express).

Constant Value: 29 (0x0000001d)

ENCODING_DTS_UHD

Added in API level 31
Deprecated in API level 34
public static final int ENCODING_DTS_UHD

This constant was deprecated in API level 34.
Use ENCODING_DTS_UHD_P1 instead.

Audio data format: DTS UHD Profile-1 compressed (aka DTS:X Profile 1) Has the same meaning and value as ENCODING_DTS_UHD_P1.

Constant Value: 27 (0x0000001b)

ENCODING_DTS_UHD_P1

Added in API level 34
public static final int ENCODING_DTS_UHD_P1

Audio data format: DTS UHD Profile-1 compressed (aka DTS:X Profile 1) Has the same meaning and value as the deprecated ENCODING_DTS_UHD.

Constant Value: 27 (0x0000001b)

ENCODING_DTS_UHD_P2

Added in API level 34
public static final int ENCODING_DTS_UHD_P2

Audio data format: DTS UHD Profile-2 compressed DTS-UHD Profile-2 supports delivery of Channel-Based Audio, Object-Based Audio and High Order Ambisonic presentations up to the fourth order. Use ENCODING_DTS_UHD_P1 to transmit DTS UHD Profile 1 (aka DTS:X Profile 1) bitstream. Use ENCODING_DTS_UHD_P2 to transmit DTS UHD Profile 2 (aka DTS:X Profile 2) bitstream.

Constant Value: 30 (0x0000001e)

ENCODING_E_AC3

Added in API level 21
public static final int ENCODING_E_AC3

Audio data format: E-AC-3 compressed, also known as Dolby Digital Plus or DD+

Constant Value: 6 (0x00000006)

ENCODING_E_AC3_JOC

Added in API level 28
public static final int ENCODING_E_AC3_JOC

Audio data format: E-AC-3-JOC compressed E-AC-3-JOC streams can be decoded by downstream devices supporting ENCODING_E_AC3. Use ENCODING_E_AC3 as the AudioTrack encoding when the downstream device supports ENCODING_E_AC3 but not ENCODING_E_AC3_JOC.

Constant Value: 18 (0x00000012)

ENCODING_IEC61937

Added in API level 24
public static final int ENCODING_IEC61937

Audio data format: compressed audio wrapped in PCM for HDMI or S/PDIF passthrough. For devices whose SDK version is less than Build.VERSION_CODES.S, the channel mask of IEC61937 track must be CHANNEL_OUT_STEREO. Data should be written to the stream in a short[] array. If the data is written in a byte[] array then there may be endian problems on some platforms when converting to short internally.

Constant Value: 13 (0x0000000d)

ENCODING_INVALID

Added in API level 3
public static final int ENCODING_INVALID

Invalid audio data format

Constant Value: 0 (0x00000000)

ENCODING_MP3

Added in API level 28
public static final int ENCODING_MP3

Audio data format: MP3 compressed

Constant Value: 9 (0x00000009)

ENCODING_MPEGH_BL_L3

Added in API level 31
public static final int ENCODING_MPEGH_BL_L3

Audio data format: MPEG-H baseline profile, level 3

Constant Value: 23 (0x00000017)

ENCODING_MPEGH_BL_L4

Added in API level 31
public static final int ENCODING_MPEGH_BL_L4

Audio data format: MPEG-H baseline profile, level 4

Constant Value: 24 (0x00000018)

ENCODING_MPEGH_LC_L3

Added in API level 31
public static final int ENCODING_MPEGH_LC_L3

Audio data format: MPEG-H low complexity profile, level 3

Constant Value: 25 (0x00000019)

ENCODING_MPEGH_LC_L4

Added in API level 31
public static final int ENCODING_MPEGH_LC_L4

Audio data format: MPEG-H low complexity profile, level 4

Constant Value: 26 (0x0000001a)

ENCODING_OPUS

Added in API level 30
public static final int ENCODING_OPUS

Audio data format: OPUS compressed.

Constant Value: 20 (0x00000014)

ENCODING_PCM_16BIT

Added in API level 3
public static final int ENCODING_PCM_16BIT

Audio data format: PCM 16 bit per sample. Guaranteed to be supported by devices.

Constant Value: 2 (0x00000002)

ENCODING_PCM_24BIT_PACKED

Added in API level 31
public static final int ENCODING_PCM_24BIT_PACKED

Audio data format: PCM 24 bit per sample packed as 3 bytes. The bytes are in little-endian order, so the least significant byte comes first in the byte array. Not guaranteed to be supported by devices, may be emulated if not supported.

Constant Value: 21 (0x00000015)

ENCODING_PCM_32BIT

Added in API level 31
public static final int ENCODING_PCM_32BIT

Audio data format: PCM 32 bit per sample. Not guaranteed to be supported by devices, may be emulated if not supported.

Constant Value: 22 (0x00000016)

ENCODING_PCM_8BIT

Added in API level 3
public static final int ENCODING_PCM_8BIT

Audio data format: PCM 8 bit per sample. Not guaranteed to be supported by devices.

Constant Value: 3 (0x00000003)

ENCODING_PCM_FLOAT

Added in API level 21
public static final int ENCODING_PCM_FLOAT

Audio data format: single-precision floating-point per sample

Constant Value: 4 (0x00000004)

SAMPLE_RATE_UNSPECIFIED

Added in API level 24
public static final int SAMPLE_RATE_UNSPECIFIED

Sample rate will be a route-dependent value. For AudioTrack, it is usually the sink sample rate, and for AudioRecord it is usually the source sample rate.

Constant Value: 0 (0x00000000)

Fields

CREATOR

Added in API level 24
public static final Creator<AudioFormat> CREATOR

Public methods

describeContents

Added in API level 24
public int describeContents ()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. For example, if the object will include a file descriptor in the output of writeToParcel(android.os.Parcel, int), the return value of this method must include the CONTENTS_FILE_DESCRIPTOR bit.

Returns
int a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either 0 or CONTENTS_FILE_DESCRIPTOR

equals

Added in API level 3
public boolean equals (Object o)

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
o Object: the reference object with which to compare.

Returns
boolean true if this object is the same as the obj argument; false otherwise.

getChannelCount

Added in API level 23
public int getChannelCount ()

Return the channel count.

Returns
int the channel count derived from the channel position mask or the channel index mask. Zero is returned if both the channel position mask and the channel index mask are not set.

getChannelIndexMask

Added in API level 23
public int getChannelIndexMask ()

Return the channel index mask. See the section on channel masks for more information about the difference between index-based masks, and position-based masks (as returned by getChannelMask()).

Returns
int one of the values that can be set in Builder#setChannelIndexMask(int) or AudioFormat#CHANNEL_INVALID if not set or an invalid mask was used.

getChannelMask

Added in API level 21
public int getChannelMask ()

Return the channel mask. See the section on channel masks for more information about the difference between index-based masks(as returned by getChannelIndexMask()) and the position-based mask returned by this function.

Returns
int one of the values that can be set in Builder#setChannelMask(int) or AudioFormat#CHANNEL_INVALID if not set.

getEncoding

Added in API level 21
public int getEncoding ()

Return the encoding. See the section on encodings for more information about the different types of supported audio encoding.

Returns
int one of the values that can be set in Builder#setEncoding(int) or AudioFormat#ENCODING_INVALID if not set. Value is ENCODING_DEFAULT, ENCODING_PCM_16BIT, ENCODING_PCM_8BIT, ENCODING_PCM_FLOAT, ENCODING_AC3, ENCODING_E_AC3, ENCODING_DTS, ENCODING_DTS_HD, ENCODING_MP3, ENCODING_AAC_LC, ENCODING_AAC_HE_V1, ENCODING_AAC_HE_V2, ENCODING_IEC61937, ENCODING_DOLBY_TRUEHD, ENCODING_AAC_ELD, ENCODING_AAC_XHE, ENCODING_AC4, ENCODING_E_AC3_JOC, ENCODING_DOLBY_MAT, ENCODING_OPUS, ENCODING_PCM_24BIT_PACKED, ENCODING_PCM_32BIT, ENCODING_MPEGH_BL_L3, ENCODING_MPEGH_BL_L4, ENCODING_MPEGH_LC_L3, ENCODING_MPEGH_LC_L4, ENCODING_DTS_UHD_P1, ENCODING_DRA, ENCODING_DTS_HD_MA, ENCODING_DTS_UHD_P2, or ENCODING_DSD

getFrameSizeInBytes

Added in API level 29
public int getFrameSizeInBytes ()

Return the frame size in bytes. For PCM or PCM packed compressed data this is the size of a sample multiplied by the channel count. For all other cases, including invalid/unset channel masks, this will return 1 byte. As an example, a stereo 16-bit PCM format would have a frame size of 4 bytes, an 8 channel float PCM format would have a frame size of 32 bytes, and a compressed data format (not packed in PCM) would have a frame size of 1 byte. Both AudioRecord or AudioTrack process data in multiples of this frame size.

Returns
int The audio frame size in bytes corresponding to the encoding and the channel mask. Value is 1 or greater

getSampleRate

Added in API level 21
public int getSampleRate ()

Return the sample rate.

Returns
int one of the values that can be set in Builder#setSampleRate(int) or SAMPLE_RATE_UNSPECIFIED if not set.

hashCode

Added in API level 3
public int hashCode ()

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.

Returns
int a hash code value for this object.

toString

Added in API level 3
public String toString ()

Returns a string representation of the object.

Returns
String a string representation of the object.

writeToParcel

Added in API level 24
public void writeToParcel (Parcel dest, 
                int flags)

Flatten this object in to a Parcel.

Parameters
dest Parcel: The Parcel in which the object should be written. This value cannot be null.

flags int: Additional flags about how the object should be written. May be 0 or Parcelable.PARCELABLE_WRITE_RETURN_VALUE. Value is either 0 or a combination of Parcelable.PARCELABLE_WRITE_RETURN_VALUE, and android.os.Parcelable.PARCELABLE_ELIDE_DUPLICATES