Package com.google.android.exoplayer2.audio

## Class AacUtil

- java.lang.Object
- - com.google.android.exoplayer2.audio.AacUtil

-     public final class AacUtil
      extends Object

  Utility methods for handling AAC audio streams.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static interface` | `AacUtil.AacAudioObjectType` | Valid AAC Audio object types.
    `static class` | `AacUtil.Config` | Holds sample format information for AAC audio.

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static int` | `AAC_ELD_MAX_RATE_BYTES_PER_SECOND` | Maximum rate for an AAC ELD audio stream, in bytes per second.
    `static int` | `AAC_HE_AUDIO_SAMPLE_COUNT` | Number of raw audio samples that are produced per channel when decoding an AAC HE access unit.
    `static int` | `AAC_HE_V1_MAX_RATE_BYTES_PER_SECOND` | Maximum rate for an AAC HE V1 audio stream, in bytes per second.
    `static int` | `AAC_HE_V2_MAX_RATE_BYTES_PER_SECOND` | Maximum rate for an AAC HE V2 audio stream, in bytes per second.
    `static int` | `AAC_LC_AUDIO_SAMPLE_COUNT` | Number of raw audio samples that are produced per channel when decoding an AAC LC access unit.
    `static int` | `AAC_LC_MAX_RATE_BYTES_PER_SECOND` | Maximum rate for an AAC LC audio stream, in bytes per second.
    `static int` | `AAC_LD_AUDIO_SAMPLE_COUNT` | Number of raw audio samples that are produced per channel when decoding an AAC LD access unit.
    `static int` | `AAC_XHE_AUDIO_SAMPLE_COUNT` | Number of raw audio samples that are produced per channel when decoding an AAC XHE access unit.
    `static int` | `AAC_XHE_MAX_RATE_BYTES_PER_SECOND` | Maximum rate for an AAC XHE audio stream, in bytes per second.
    `static int` | `AUDIO_OBJECT_TYPE_AAC_ELD` |
    `static int` | `AUDIO_OBJECT_TYPE_AAC_ER_BSAC` |
    `static int` | `AUDIO_OBJECT_TYPE_AAC_LC` |
    `static int` | `AUDIO_OBJECT_TYPE_AAC_PS` |
    `static int` | `AUDIO_OBJECT_TYPE_AAC_SBR` |
    `static int` | `AUDIO_OBJECT_TYPE_AAC_XHE` |

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static byte[]` | `buildAacLcAudioSpecificConfig​(int sampleRate, int channelCount)` | Builds a simple AAC LC AudioSpecificConfig, as defined in ISO 14496-3 1.6.2.1
    `static byte[]` | `buildAudioSpecificConfig​(int audioObjectType, int sampleRateIndex, int channelConfig)` | Builds a simple AudioSpecificConfig, as defined in ISO 14496-3 1.6.2.1
    `static AacUtil.Config` | `parseAudioSpecificConfig​(byte[] audioSpecificConfig)` | Parses an AAC AudioSpecificConfig, as defined in ISO 14496-3 1.6.2.1
    `static AacUtil.Config` | `parseAudioSpecificConfig​(ParsableBitArray bitArray, boolean forceReadToEnd)` | Parses an AAC AudioSpecificConfig, as defined in ISO 14496-3 1.6.2.1

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### AAC_LC_AUDIO_SAMPLE_COUNT

          public static final int AAC_LC_AUDIO_SAMPLE_COUNT

      Number of raw audio samples that are produced per channel when decoding an AAC LC access unit.
      See Also:
        Constant Field Values

    - #### AAC_XHE_AUDIO_SAMPLE_COUNT

          public static final int AAC_XHE_AUDIO_SAMPLE_COUNT

      Number of raw audio samples that are produced per channel when decoding an AAC XHE access unit.
      See Also:
        Constant Field Values

    - #### AAC_HE_AUDIO_SAMPLE_COUNT

          public static final int AAC_HE_AUDIO_SAMPLE_COUNT

      Number of raw audio samples that are produced per channel when decoding an AAC HE access unit.
      See Also:
        Constant Field Values

    - #### AAC_LD_AUDIO_SAMPLE_COUNT

          public static final int AAC_LD_AUDIO_SAMPLE_COUNT

      Number of raw audio samples that are produced per channel when decoding an AAC LD access unit.
      See Also:
        Constant Field Values

    - #### AAC_LC_MAX_RATE_BYTES_PER_SECOND

          public static final int AAC_LC_MAX_RATE_BYTES_PER_SECOND

      Maximum rate for an AAC LC audio stream, in bytes per second.
      See Also:
        Constant Field Values

    - #### AAC_HE_V1_MAX_RATE_BYTES_PER_SECOND

          public static final int AAC_HE_V1_MAX_RATE_BYTES_PER_SECOND

      Maximum rate for an AAC HE V1 audio stream, in bytes per second.
      See Also:
        Constant Field Values

    - #### AAC_HE_V2_MAX_RATE_BYTES_PER_SECOND

          public static final int AAC_HE_V2_MAX_RATE_BYTES_PER_SECOND

      Maximum rate for an AAC HE V2 audio stream, in bytes per second.
      See Also:
        Constant Field Values

    - #### AAC_XHE_MAX_RATE_BYTES_PER_SECOND

          public static final int AAC_XHE_MAX_RATE_BYTES_PER_SECOND

      Maximum rate for an AAC XHE audio stream, in bytes per second.

      Fraunhofer documentation says "500 kbit/s and above" for stereo, so we use a rate generously above the 500 kbit/s level.

      See Also:
        Constant Field Values

    - #### AAC_ELD_MAX_RATE_BYTES_PER_SECOND

          public static final int AAC_ELD_MAX_RATE_BYTES_PER_SECOND

      Maximum rate for an AAC ELD audio stream, in bytes per second.

      Fraunhofer documentation shows AAC-ELD as useful for up to ~ 64 kbit/s so we use this value.

      See Also:
        Constant Field Values

    - #### AUDIO_OBJECT_TYPE_AAC_LC

          public static final int AUDIO_OBJECT_TYPE_AAC_LC

      See Also:
        Constant Field Values

    - #### AUDIO_OBJECT_TYPE_AAC_SBR

          public static final int AUDIO_OBJECT_TYPE_AAC_SBR

      See Also:
        Constant Field Values

    - #### AUDIO_OBJECT_TYPE_AAC_ER_BSAC

          public static final int AUDIO_OBJECT_TYPE_AAC_ER_BSAC

      See Also:
        Constant Field Values

    - #### AUDIO_OBJECT_TYPE_AAC_ELD

          public static final int AUDIO_OBJECT_TYPE_AAC_ELD

      See Also:
        Constant Field Values

    - #### AUDIO_OBJECT_TYPE_AAC_PS

          public static final int AUDIO_OBJECT_TYPE_AAC_PS

      See Also:
        Constant Field Values

    - #### AUDIO_OBJECT_TYPE_AAC_XHE

          public static final int AUDIO_OBJECT_TYPE_AAC_XHE

      See Also:
        Constant Field Values

  - ### Method Detail

    - #### parseAudioSpecificConfig

          public static AacUtil.Config parseAudioSpecificConfig​(byte[] audioSpecificConfig)
                                                         throws ParserException

      Parses an AAC AudioSpecificConfig, as defined in ISO 14496-3 1.6.2.1
      Parameters:
        `audioSpecificConfig` - A byte array containing the AudioSpecificConfig to parse.
      Returns:
        The parsed configuration.
      Throws:
        `ParserException` - If the AudioSpecificConfig cannot be parsed because it is invalid or unsupported.

    - #### parseAudioSpecificConfig

          public static AacUtil.Config parseAudioSpecificConfig​(ParsableBitArray bitArray,
                                                                boolean forceReadToEnd)
                                                         throws ParserException

      Parses an AAC AudioSpecificConfig, as defined in ISO 14496-3 1.6.2.1
      Parameters:
        `bitArray` - A `ParsableBitArray` containing the AudioSpecificConfig to parse. The position is advanced to the end of the AudioSpecificConfig.
        `forceReadToEnd` - Whether the entire AudioSpecificConfig should be read. Required for knowing the length of the configuration payload.
      Returns:
        The parsed configuration.
      Throws:
        `ParserException` - If the AudioSpecificConfig cannot be parsed because it is invalid or unsupported.

    - #### buildAacLcAudioSpecificConfig

          public static byte[] buildAacLcAudioSpecificConfig​(int sampleRate,
                                                             int channelCount)

      Builds a simple AAC LC AudioSpecificConfig, as defined in ISO 14496-3 1.6.2.1
      Parameters:
        `sampleRate` - The sample rate in Hz.
        `channelCount` - The channel count.
      Returns:
        The AudioSpecificConfig.

    - #### buildAudioSpecificConfig

          public static byte[] buildAudioSpecificConfig​(int audioObjectType,
                                                        int sampleRateIndex,
                                                        int channelConfig)

      Builds a simple AudioSpecificConfig, as defined in ISO 14496-3 1.6.2.1
      Parameters:
        `audioObjectType` - The audio object type.
        `sampleRateIndex` - The sample rate index.
        `channelConfig` - The channel configuration.
      Returns:
        The AudioSpecificConfig.