Package com.google.android.exoplayer2.util

## Class CodecSpecificDataUtil

- java.lang.Object
- - com.google.android.exoplayer2.util.CodecSpecificDataUtil

-     public final class CodecSpecificDataUtil
      extends Object

  Provides utilities for handling various types of codec-specific data.

- - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static String` | `buildAvcCodecString​(int profileIdc, int constraintsFlagsAndReservedZero2Bits, int levelIdc)` | Builds an RFC 6381 AVC codec string using the provided parameters.
    `static List<byte[]>` | `buildCea708InitializationData​(boolean isWideAspectRatio)` | Returns initialization data for formats with MIME type `MimeTypes.APPLICATION_CEA708`.
    `static String` | `buildHevcCodecString​(int generalProfileSpace, boolean generalTierFlag, int generalProfileIdc, int generalProfileCompatibilityFlags, int[] constraintBytes, int generalLevelIdc)` | Builds an RFC 6381 HEVC codec string using the provided parameters.
    `static byte[]` | `buildNalUnit​(byte[] data, int offset, int length)` | Constructs a NAL unit consisting of the NAL start code followed by the specified data.
    `static Pair<Integer,​Integer>` | `getVideoResolutionFromMpeg4VideoConfig​(byte[] videoSpecificConfig)` | Parses an MPEG-4 Visual configuration information, as defined in ISO/IEC14496-2.
    `static Pair<Integer,​Integer>` | `parseAlacAudioSpecificConfig​(byte[] audioSpecificConfig)` | Parses an ALAC AudioSpecificConfig (i.e.
    `static boolean` | `parseCea708InitializationData​(List<byte[]> initializationData)` | Returns whether the CEA-708 closed caption service with the given initialization data is formatted for displays with 16:9 aspect ratio.
    `static byte[][]` | `splitNalUnits​(byte[] data)` | Splits an array of NAL units.

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

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

- - ### Method Detail

    - #### parseAlacAudioSpecificConfig

          public static Pair<Integer,​Integer> parseAlacAudioSpecificConfig​(byte[] audioSpecificConfig)

      Parses an ALAC AudioSpecificConfig (i.e. an ALACSpecificConfig).
      Parameters:
        `audioSpecificConfig` - A byte array containing the AudioSpecificConfig to parse.
      Returns:
        A pair consisting of the sample rate in Hz and the channel count.

    - #### buildCea708InitializationData

          public static List<byte[]> buildCea708InitializationData​(boolean isWideAspectRatio)

      Returns initialization data for formats with MIME type `MimeTypes.APPLICATION_CEA708`.
      Parameters:
        `isWideAspectRatio` - Whether the CEA-708 closed caption service is formatted for displays with 16:9 aspect ratio.
      Returns:
        Initialization data for formats with MIME type `MimeTypes.APPLICATION_CEA708`.

    - #### parseCea708InitializationData

          public static boolean parseCea708InitializationData​(List<byte[]> initializationData)

      Returns whether the CEA-708 closed caption service with the given initialization data is formatted for displays with 16:9 aspect ratio.
      Parameters:
        `initializationData` - The initialization data to parse.
      Returns:
        Whether the CEA-708 closed caption service is formatted for displays with 16:9 aspect ratio.

    - #### getVideoResolutionFromMpeg4VideoConfig

          public static Pair<Integer,​Integer> getVideoResolutionFromMpeg4VideoConfig​(byte[] videoSpecificConfig)

      Parses an MPEG-4 Visual configuration information, as defined in ISO/IEC14496-2.
      Parameters:
        `videoSpecificConfig` - A byte array containing the MPEG-4 Visual configuration information to parse.
      Returns:
        A pair of the video's width and height.

    - #### buildAvcCodecString

          public static String buildAvcCodecString​(int profileIdc,
                                                   int constraintsFlagsAndReservedZero2Bits,
                                                   int levelIdc)

      Builds an RFC 6381 AVC codec string using the provided parameters.
      Parameters:
        `profileIdc` - The encoding profile.
        `constraintsFlagsAndReservedZero2Bits` - The constraint flags followed by the reserved zero 2 bits, all contained in the least significant byte of the integer.
        `levelIdc` - The encoding level.
      Returns:
        An RFC 6381 AVC codec string built using the provided parameters.

    - #### buildHevcCodecString

          public static String buildHevcCodecString​(int generalProfileSpace,
                                                    boolean generalTierFlag,
                                                    int generalProfileIdc,
                                                    int generalProfileCompatibilityFlags,
                                                    int[] constraintBytes,
                                                    int generalLevelIdc)

      Builds an RFC 6381 HEVC codec string using the provided parameters.

    - #### buildNalUnit

          public static byte[] buildNalUnit​(byte[] data,
                                            int offset,
                                            int length)

      Constructs a NAL unit consisting of the NAL start code followed by the specified data.
      Parameters:
        `data` - An array containing the data that should follow the NAL start code.
        `offset` - The start offset into `data`.
        `length` - The number of bytes to copy from `data`
      Returns:
        The constructed NAL unit.

    - #### splitNalUnits

          @Nullable
          public static byte[][] splitNalUnits​(byte[] data)

      Splits an array of NAL units.

      If the input consists of NAL start code delimited units, then the returned array consists of the split NAL units, each of which is still prefixed with the NAL start code. For any other input, null is returned.

      Parameters:
        `data` - An array of data.
      Returns:
        The individual NAL units, or null if the input did not consist of NAL start code delimited units.