Class AacUtil


  • public final class AacUtil
    extends Object
    Utility methods for handling AAC audio streams.
    • 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.
      • getEncodingForAudioObjectType

        @Encoding
        public static int getEncodingForAudioObjectType​(@AacAudioObjectType
                                                        int audioObjectType)
        Returns the encoding for a given AAC audio object type.