Package com.google.android.exoplayer2.extractor.ts

## Class TsUtil

- java.lang.Object
- - com.google.android.exoplayer2.extractor.ts.TsUtil

-     public final class TsUtil
      extends Object

  Utilities method for extracting MPEG-TS streams.

- - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static int` | `findSyncBytePosition​(byte[] data, int startPosition, int limitPosition)` | Returns the position of the first TS_SYNC_BYTE within the range [startPosition, limitPosition) from the provided data array, or returns limitPosition if sync byte could not be found.
    `static boolean` | `isStartOfTsPacket​(byte[] data, int start, int limit, int searchPosition)` | Returns whether a TS packet starts at `searchPosition` according to the MPEG-TS synchronization recommendations.
    `static long` | `readPcrFromPacket​(ParsableByteArray packetBuffer, int startOfPacket, int pcrPid)` | Returns the PCR value read from a given TS packet.

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

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

- - ### Method Detail

    - #### isStartOfTsPacket

          public static boolean isStartOfTsPacket​(byte[] data,
                                                  int start,
                                                  int limit,
                                                  int searchPosition)

      Returns whether a TS packet starts at `searchPosition` according to the MPEG-TS synchronization recommendations.

      ISO/IEC 13818-1:2015 Annex G recommends that 5 sync bytes emulating the start of 5 consecutive TS packets should never occur as part of the TS packets' contents. So, this method returns true when `data` contains a sync byte at `searchPosition`, and said sync byte is also one of five consecutive sync bytes separated from each other by the size of a TS packet.

      Parameters:
        `data` - The array holding the data to search in.
        `start` - The first valid position in `data` from which a sync byte can be read.
        `limit` - The first invalid position in `data`, after which no data should be read.
        `searchPosition` - The position to check for a TS packet start.
      Returns:
        Whether a TS packet starts at `searchPosition`.

    - #### findSyncBytePosition

          public static int findSyncBytePosition​(byte[] data,
                                                 int startPosition,
                                                 int limitPosition)

      Returns the position of the first TS_SYNC_BYTE within the range [startPosition, limitPosition) from the provided data array, or returns limitPosition if sync byte could not be found.

    - #### readPcrFromPacket

          public static long readPcrFromPacket​(ParsableByteArray packetBuffer,
                                               int startOfPacket,
                                               int pcrPid)

      Returns the PCR value read from a given TS packet.
      Parameters:
        `packetBuffer` - The buffer that holds the packet.
        `startOfPacket` - The starting position of the packet in the buffer.
        `pcrPid` - The PID for valid packets that contain PCR values.
      Returns:
        The PCR value read from the packet, if its PID is equal to `pcrPid` and it contains a valid PCR value. Returns `C.TIME_UNSET` otherwise.