# PlayerEmsgHandler

# PlayerEmsgHandler

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)

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/media3/exoplayer/dash/PlayerEmsgHandler "View this page in Java")

<br />

```
@UnstableApi
class PlayerEmsgHandler : Handler.Callback
```

<br />

*** ** * ** ***

Handles all emsg messages from all media tracks for the player.

This class will only respond to emsg messages which have schemeIdUri "urn:mpeg:dash:event:2012", and value "1"/"2"/"3". When it encounters one of these messages, it will handle the message according to Section 4.5.2.1 DASH -IF IOP Version 4.1:

- If both presentation time delta and event duration are zero, it means the media presentation has ended.
- Else, it will parse the message data from the emsg message to find the publishTime of the expired manifest, and mark manifest with publishTime smaller than that values to be expired.

In both cases, the DASH media source will be notified, and a manifest reload should be triggered.

## Summary

|                                                                                                                                                                  ### Nested types                                                                                                                                                                   |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `interface `[PlayerEmsgHandler.PlayerEmsgCallback](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerEmsgCallback) Callbacks for player emsg events encountered during DASH live stream.                                                                                                        |
| `inner class `[PlayerEmsgHandler.PlayerTrackEmsgHandler](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerTrackEmsgHandler)` : `[TrackOutput](https://developer.android.com/reference/kotlin/androidx/media3/extractor/TrackOutput) Handles emsg messages for a specific track for the player. |

|                                                                                                                                                                                                                                                                                                                                                                          ### Public constructors                                                                                                                                                                                                                                                                                                                                                                          |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [PlayerEmsgHandler](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/PlayerEmsgHandler#PlayerEmsgHandler(androidx.media3.exoplayer.dash.manifest.DashManifest,androidx.media3.exoplayer.dash.PlayerEmsgHandler.PlayerEmsgCallback,androidx.media3.exoplayer.upstream.Allocator))`(` ` manifest: `[DashManifest](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/manifest/DashManifest)`!,` ` playerEmsgCallback: `[PlayerEmsgHandler.PlayerEmsgCallback](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerEmsgCallback)`!,` ` allocator: `[Allocator](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Allocator)`!` `)` |

|                                                                         ### Public functions                                                                          |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)                                                                                   | [handleMessage](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/PlayerEmsgHandler#handleMessage(android.os.Message))`(message: `[Message](https://developer.android.com/reference/android/os/Message.html)`!)`                                                                                                                                                                                                                                            |
| [PlayerEmsgHandler.PlayerTrackEmsgHandler](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerTrackEmsgHandler)`!` | [newPlayerTrackEmsgHandler](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/PlayerEmsgHandler#newPlayerTrackEmsgHandler())`()` Returns a[TrackOutput](https://developer.android.com/reference/kotlin/androidx/media3/extractor/TrackOutput)that emsg messages could be written to.                                                                                                                                                                        |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)                                                                                         | [release](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/PlayerEmsgHandler#release())`()` Release this emsg handler.                                                                                                                                                                                                                                                                                                                                     |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)                                                                                         | [updateManifest](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/PlayerEmsgHandler#updateManifest(androidx.media3.exoplayer.dash.manifest.DashManifest))`(newManifest: `[DashManifest](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/manifest/DashManifest)`!)` Updates the[DashManifest](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/manifest/DashManifest)that this handler works on. |

## Public constructors

### PlayerEmsgHandler

```
PlayerEmsgHandler(
    manifest: DashManifest!,
    playerEmsgCallback: PlayerEmsgHandler.PlayerEmsgCallback!,
    allocator: Allocator!
)
```  

|                                                                                     Parameters                                                                                      |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|
| `manifest: `[DashManifest](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/manifest/DashManifest)`!`                                                  | The initial manifest.                                                                                                                             |
| `playerEmsgCallback: `[PlayerEmsgHandler.PlayerEmsgCallback](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/PlayerEmsgHandler.PlayerEmsgCallback)`!` | The callback that this event handler can invoke when handling emsg messages that generate DASH media source events.                               |
| `allocator: `[Allocator](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Allocator)`!`                                                            | An[Allocator](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Allocator)from which allocations can be obtained. |

## Public functions

### handleMessage

```
fun handleMessage(message: Message!): Boolean
```  

### newPlayerTrackEmsgHandler

```
fun newPlayerTrackEmsgHandler(): PlayerEmsgHandler.PlayerTrackEmsgHandler!
```

Returns a[TrackOutput](https://developer.android.com/reference/kotlin/androidx/media3/extractor/TrackOutput)that emsg messages could be written to.  

### release

```
fun release(): Unit
```

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

### updateManifest

```
fun updateManifest(newManifest: DashManifest!): Unit
```

Updates the[DashManifest](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/manifest/DashManifest)that this handler works on.  

|                                                              Parameters                                                               |
|---------------------------------------------------------------------------------------------------------------------------------------|-----------------------|
| `newManifest: `[DashManifest](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/dash/manifest/DashManifest)`!` | The updated manifest. |