# PlayerEmsgHandler.PlayerTrackEmsgHandler

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

*** ** * ** ***


```
public final inner class PlayerEmsgHandler.PlayerTrackEmsgHandler implements TrackOutput
```

<br />

*** ** * ** ***

Handles emsg messages for a specific track for the player.

## Summary

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerTrackEmsgHandler#format(androidx.media3.common.Format)(https://developer.android.com/reference/androidx/media3/common/Format format)` Called when the `https://developer.android.com/reference/androidx/media3/common/Format` of the track has been extracted from the stream. |
| `boolean` | `https://developer.android.com/reference/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerTrackEmsgHandler#maybeRefreshManifestBeforeLoadingNextChunk(long)( long presentationPositionUs )` For live streaming, check if the DASH manifest is expired before the next segment start time. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerTrackEmsgHandler#onChunkLoadCompleted(androidx.media3.exoplayer.source.chunk.Chunk)(https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk chunk)` Called when a chunk load has been completed. |
| `boolean` | `https://developer.android.com/reference/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerTrackEmsgHandler#onChunkLoadError(androidx.media3.exoplayer.source.chunk.Chunk)(https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk chunk)` Called when a chunk load has encountered an error. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerTrackEmsgHandler#release()()` Release this track emsg handler. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerTrackEmsgHandler#sampleData(androidx.media3.common.util.ParsableByteArray,int,int)( https://developer.android.com/reference/androidx/media3/common/util/ParsableByteArray data, int length, @https://developer.android.com/reference/androidx/media3/extractor/TrackOutput.SampleDataPart int sampleDataPart )` Called to write sample data to the output. |
| `int` | `https://developer.android.com/reference/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerTrackEmsgHandler#sampleData(androidx.media3.common.DataReader,int,boolean,int)( https://developer.android.com/reference/androidx/media3/common/DataReader input, int length, boolean allowEndOfInput, @https://developer.android.com/reference/androidx/media3/extractor/TrackOutput.SampleDataPart int sampleDataPart )` Called to write sample data to the output. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerTrackEmsgHandler#sampleMetadata(long,int,int,int,androidx.media3.extractor.TrackOutput.CryptoData)( long timeUs, int flags, int size, int offset, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/extractor/TrackOutput.CryptoData cryptoData )` Called when metadata associated with a sample has been extracted from the stream. |

| ### Inherited Constants |
|---|
| From [androidx.media3.extractor.TrackOutput](https://developer.android.com/reference/androidx/media3/extractor/TrackOutput) |---|---| | `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput#SAMPLE_DATA_PART_ENCRYPTION() = 1` Sample encryption data. | | `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput#SAMPLE_DATA_PART_MAIN() = 0` Main media sample data. | | `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput#SAMPLE_DATA_PART_SUPPLEMENTAL() = 2` Sample supplemental data. | |

| ### Inherited methods |
|---|
| From [androidx.media3.extractor.TrackOutput](https://developer.android.com/reference/androidx/media3/extractor/TrackOutput) |---|---| | `void` | `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput#durationUs(long)(long durationUs)` Called to set the duration of the track in microseconds. | | `void` | `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput#sampleData(androidx.media3.common.util.ParsableByteArray,int)(https://developer.android.com/reference/androidx/media3/common/util/ParsableByteArray data, int length)` Equivalent to `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput#sampleData(androidx.media3.common.util.ParsableByteArray,int,int)` sampleData(data, length, SAMPLE_DATA_PART_MAIN)}. | | `int` | `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput#sampleData(androidx.media3.common.DataReader,int,boolean)(https://developer.android.com/reference/androidx/media3/common/DataReader input, int length, boolean allowEndOfInput)` Equivalent to `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput#sampleData(androidx.media3.common.DataReader,int,boolean,int)`. | |

## Public methods

### format

```
public void format(Format format)
```

Called when the `https://developer.android.com/reference/androidx/media3/common/Format` of the track has been extracted from the stream.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/Format format` | The extracted `https://developer.android.com/reference/androidx/media3/common/Format`. |

### maybeRefreshManifestBeforeLoadingNextChunk

```
public boolean maybeRefreshManifestBeforeLoadingNextChunk(
    long presentationPositionUs
)
```

For live streaming, check if the DASH manifest is expired before the next segment start time. If it is, the DASH media source will be notified to refresh the manifest.

| Parameters |
|---|---|
| `long presentationPositionUs` | The next load position in presentation time. |

| Returns |
|---|---|
| `boolean` | True if manifest refresh has been requested, false otherwise. |

### onChunkLoadCompleted

```
public void onChunkLoadCompleted(Chunk chunk)
```

Called when a chunk load has been completed.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk chunk` | The chunk whose load has been completed. |

### onChunkLoadError

```
public boolean onChunkLoadError(Chunk chunk)
```

Called when a chunk load has encountered an error.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk chunk` | The chunk whose load encountered an error. |

| Returns |
|---|---|
| `boolean` | Whether a manifest refresh has been requested. |

### release

```
public void release()
```

Release this track emsg handler. It should not be reused after this call.

### sampleData

```
public void sampleData(
    ParsableByteArray data,
    int length,
    @TrackOutput.SampleDataPart int sampleDataPart
)
```

Called to write sample data to the output.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/util/ParsableByteArray data` | A `https://developer.android.com/reference/androidx/media3/common/util/ParsableByteArray` from which to read the sample data. |
| `int length` | The number of bytes to read, starting from `data.getPosition()`. |
| `@https://developer.android.com/reference/androidx/media3/extractor/TrackOutput.SampleDataPart int sampleDataPart` | The part of the sample data to which this call corresponds. |

### sampleData

```
public int sampleData(
    DataReader input,
    int length,
    boolean allowEndOfInput,
    @TrackOutput.SampleDataPart int sampleDataPart
)
```

Called to write sample data to the output.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/DataReader input` | A `https://developer.android.com/reference/androidx/media3/common/DataReader` from which to read the sample data. |
| `int length` | The maximum length to read from the input. |
| `boolean allowEndOfInput` | True if encountering the end of the input having read no data is allowed, and should result in `https://developer.android.com/reference/androidx/media3/common/C#RESULT_END_OF_INPUT()` being returned. False if it should be considered an error, causing an `https://developer.android.com/reference/java/io/EOFException.html` to be thrown. |
| `@https://developer.android.com/reference/androidx/media3/extractor/TrackOutput.SampleDataPart int sampleDataPart` | The part of the sample data to which this call corresponds. |

| Returns |
|---|---|
| `int` | The number of bytes appended. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/io/IOException.html` | If an error occurred reading from the input. |

### sampleMetadata

```
public void sampleMetadata(
    long timeUs,
    int flags,
    int size,
    int offset,
    @Nullable TrackOutput.CryptoData cryptoData
)
```

Called when metadata associated with a sample has been extracted from the stream.

The corresponding sample data will have already been passed to the output via calls to `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput#sampleData(androidx.media3.common.DataReader,int,boolean)` or `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput#sampleData(androidx.media3.common.util.ParsableByteArray,int)`.

| Parameters |
|---|---|
| `long timeUs` | The media timestamp associated with the sample, in microseconds. |
| `int flags` | Flags associated with the sample. See `C.BUFFER_FLAG_*`. |
| `int size` | The size of the sample data, in bytes. |
| `int offset` | The number of bytes that have been passed to `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput#sampleData(androidx.media3.common.DataReader,int,boolean)` or `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput#sampleData(androidx.media3.common.util.ParsableByteArray,int)` since the last byte belonging to the sample whose metadata is being passed. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/extractor/TrackOutput.CryptoData cryptoData` | The encryption data required to decrypt the sample. May be null. |