# PesReader

Artifact: [androidx.media3:media3-extractor](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/extractor/ts/PesReader.java+class:androidx.media3.extractor.ts.PesReader)

*** ** * ** ***


```
@UnstableApi
public final class PesReader implements TsPayloadReader
```

<br />

*** ** * ** ***

Parses PES packet data and extracts samples.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/extractor/ts/PesReader#PesReader(androidx.media3.extractor.ts.ElementaryStreamReader)(https://developer.android.com/reference/androidx/media3/extractor/ts/ElementaryStreamReader reader)` |

| ### Public methods |
|---|---|
| `boolean` | `https://developer.android.com/reference/androidx/media3/extractor/ts/PesReader#canConsumeSynthesizedEmptyPusi(boolean)(boolean isModeHls)` Determines if the parser can consume a synthesized empty pusi. |
| `void` | `https://developer.android.com/reference/androidx/media3/extractor/ts/PesReader#consume(androidx.media3.common.util.ParsableByteArray,int)(https://developer.android.com/reference/androidx/media3/common/util/ParsableByteArray data, @https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader.Flags int flags)` Consumes the payload of a TS packet. |
| `void` | `https://developer.android.com/reference/androidx/media3/extractor/ts/PesReader#init(androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ExtractorOutput,androidx.media3.extractor.ts.TsPayloadReader.TrackIdGenerator)( https://developer.android.com/reference/androidx/media3/common/util/TimestampAdjuster timestampAdjuster, https://developer.android.com/reference/androidx/media3/extractor/ExtractorOutput extractorOutput, https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader.TrackIdGenerator idGenerator )` Initializes the payload reader. |
| `void` | `https://developer.android.com/reference/androidx/media3/extractor/ts/PesReader#seek()()` Notifies the reader that a seek has occurred. |

| ### Inherited Constants |
|---|
| From [androidx.media3.extractor.ts.TsPayloadReader](https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader) |---|---| | `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader#FLAG_DATA_ALIGNMENT_INDICATOR() = 4` Indicates the presence of the data_alignment_indicator in the PES header. | | `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader#FLAG_PAYLOAD_UNIT_START_INDICATOR() = 1` Indicates the presence of the payload_unit_start_indicator in the TS packet header. | | `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader#FLAG_RANDOM_ACCESS_INDICATOR() = 2` Indicates the presence of the random_access_indicator in the TS packet header adaptation field. | |

## Public constructors

### PesReader

```
public PesReader(ElementaryStreamReader reader)
```

## Public methods

### canConsumeSynthesizedEmptyPusi

```
public boolean canConsumeSynthesizedEmptyPusi(boolean isModeHls)
```

Determines if the parser can consume a synthesized empty pusi.

| Parameters |
|---|---|
| `boolean isModeHls` | `True` if operating in HLS (HTTP Live Streaming) mode, `false` otherwise. |

### consume

```
public void consume(ParsableByteArray data, @TsPayloadReader.Flags int flags)
```

Consumes the payload of a TS packet.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/util/ParsableByteArray data` | The TS packet. The position will be set to the start of the payload. |
| `@https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader.Flags int flags` | See `https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader.Flags`. |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/ParserException` | If the payload could not be parsed. |

### init

```
public void init(
    TimestampAdjuster timestampAdjuster,
    ExtractorOutput extractorOutput,
    TsPayloadReader.TrackIdGenerator idGenerator
)
```

Initializes the payload reader.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/util/TimestampAdjuster timestampAdjuster` | A timestamp adjuster for offsetting and scaling sample timestamps. |
| `https://developer.android.com/reference/androidx/media3/extractor/ExtractorOutput extractorOutput` | The `https://developer.android.com/reference/androidx/media3/extractor/ExtractorOutput` that receives the extracted data. |
| `https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader.TrackIdGenerator idGenerator` | A `https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader.TrackIdGenerator` that generates unique track ids for the `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput`s. |

### seek

```
public void seek()
```

Notifies the reader that a seek has occurred.

Following a call to this method, the data passed to the next invocation of `https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader#consume(androidx.media3.common.util.ParsableByteArray,int)` will not be a continuation of the data that was previously passed. Hence the reader should reset any internal state.