# Chunk

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

*** ** * ** ***


```
@UnstableApi
abstract class Chunk : Loader.Loadable
```

<br />

Known direct subclasses [DataChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/DataChunk), [InitializationChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/InitializationChunk), [MediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/MediaChunk)

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/DataChunk` | A base class for `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk` implementations where the data should be loaded into a ` byte[]` before being consumed. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/InitializationChunk` | A `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk` that uses an `https://developer.android.com/reference/kotlin/androidx/media3/extractor/Extractor` to decode initialization data for single track. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/MediaChunk` | An abstract base class for `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk`s that contain media samples. |

Known indirect subclasses [BaseMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/BaseMediaChunk), [ContainerMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk), [FakeMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMediaChunk), [SingleSampleMediaChunk](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/SingleSampleMediaChunk)

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/BaseMediaChunk` | A base implementation of `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/MediaChunk` that outputs to a `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/BaseMediaChunkOutput`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk` | A `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/BaseMediaChunk` that uses an `https://developer.android.com/reference/kotlin/androidx/media3/extractor/Extractor` to decode sample data. |
| `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMediaChunk` | Fake `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/MediaChunk`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/SingleSampleMediaChunk` | **This class is deprecated.** The only use for this class is subtitle playback, but it is only compatible with legacy subtitle decoding, which is not supported by default. <br /> |

*** ** * ** ***

An abstract base class for `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader.Loadable` implementations that load chunks of data required for the playback of streams.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#Chunk(androidx.media3.datasource.DataSource,androidx.media3.datasource.DataSpec,int,androidx.media3.common.Format,int,java.lang.Object,long,long,java.lang.String)( dataSource: https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource!, dataSpec: https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec!, @https://developer.android.com/reference/kotlin/androidx/media3/common/C.DataType type: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, trackFormat: https://developer.android.com/reference/kotlin/androidx/media3/common/Format!, @https://developer.android.com/reference/kotlin/androidx/media3/common/C.SelectionReason trackSelectionReason: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, trackSelectionData: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, startTimeUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, endTimeUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, steeredPathwayId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html? )` |

| ### Public functions |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#bytesLoaded()()` Returns the number of bytes that have been loaded. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#getDurationUs()()` Returns the duration of the chunk in microseconds. |
| `(https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-map/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!, (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!>!>!` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#getResponseHeaders()()` Returns the response headers associated with the last `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource#open(androidx.media3.datasource.DataSpec)` call. |
| `https://developer.android.com/reference/android/net/Uri.html!` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#getUri()()` Returns the `https://developer.android.com/reference/android/net/Uri.html` associated with the last `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource#open(androidx.media3.datasource.DataSpec)` call. |

| ### Public properties |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec!` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#dataSpec()` The `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec` that defines the data to be loaded. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#endTimeUs()` The end time of the media contained by the chunk, or `https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET()` if the data being loaded does not contain media samples. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#loadTaskId()` Identifies the load task for this loadable. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#startTimeUs()` The start time of the media contained by the chunk, or `https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET()` if the data being loaded does not contain media samples. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#steeredPathwayId()` The ID of the steered pathway from which data is being loaded, or `null` if not applicable. |
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Format!` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#trackFormat()` The format of the track to which this chunk belongs. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#trackSelectionData()` Optional data associated with the selection of the track to which this chunk belongs. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/C.SelectionReason https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#trackSelectionReason()` One of the `https://developer.android.com/reference/kotlin/androidx/media3/common/C.SelectionReason` if the chunk belongs to a track. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/C.DataType https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#type()` The `https://developer.android.com/reference/kotlin/androidx/media3/common/C.DataType` of the chunk. |

| ### Protected properties |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/StatsDataSource!` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#dataSource()` |

| ### Inherited functions |
|---|
| From [androidx.media3.exoplayer.upstream.Loader.Loadable](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader.Loadable) |---|---| | `abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader.Loadable#cancelLoad()()` Cancels the load. | | `abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/Loader.Loadable#load()()` Performs the load, returning on completion or cancellation. | |

## Public constructors

### Chunk

```
Chunk(
    dataSource: DataSource!,
    dataSpec: DataSpec!,
    @C.DataType type: Int,
    trackFormat: Format!,
    @C.SelectionReason trackSelectionReason: Int,
    trackSelectionData: Any?,
    startTimeUs: Long,
    endTimeUs: Long,
    steeredPathwayId: String?
)
```

| Parameters |
|---|---|
| `dataSource: https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource!` | The source from which the data should be loaded. |
| `dataSpec: https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec!` | Defines the data to be loaded. |
| `@https://developer.android.com/reference/kotlin/androidx/media3/common/C.DataType type: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | See `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#type()`. |
| `trackFormat: https://developer.android.com/reference/kotlin/androidx/media3/common/Format!` | See `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#trackFormat()`. |
| `@https://developer.android.com/reference/kotlin/androidx/media3/common/C.SelectionReason trackSelectionReason: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | See `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#trackSelectionReason()`. |
| `trackSelectionData: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | See `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#trackSelectionData()`. |
| `startTimeUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | See `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#startTimeUs()`. |
| `endTimeUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | See `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#endTimeUs()`. |
| `steeredPathwayId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?` | See `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/chunk/Chunk#steeredPathwayId()`. |

## Public functions

### bytesLoaded

```
fun bytesLoaded(): Long
```

Returns the number of bytes that have been loaded. Must only be called after the load completed, failed, or was canceled.

### getDurationUs

```
fun getDurationUs(): Long
```

Returns the duration of the chunk in microseconds.

### getResponseHeaders

```
fun getResponseHeaders(): (Mutable)Map<String!, (Mutable)List<String!>!>!
```

Returns the response headers associated with the last `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource#open(androidx.media3.datasource.DataSpec)` call. Must only be called after the load completed, failed, or was canceled.

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource#getResponseHeaders()` |   |

### getUri

```
fun getUri(): Uri!
```

Returns the `https://developer.android.com/reference/android/net/Uri.html` associated with the last `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource#open(androidx.media3.datasource.DataSpec)` call. If redirection occurred, this is the redirected uri. Must only be called after the load completed, failed, or was canceled.

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource#getUri()` |   |

## Public properties

### dataSpec

```
val dataSpec: DataSpec!
```

The `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec` that defines the data to be loaded.

### endTimeUs

```
val endTimeUs: Long
```

The end time of the media contained by the chunk, or `https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET()` if the data being loaded does not contain media samples.

### loadTaskId

```
val loadTaskId: Long
```

Identifies the load task for this loadable.

### startTimeUs

```
val startTimeUs: Long
```

The start time of the media contained by the chunk, or `https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET()` if the data being loaded does not contain media samples.

### steeredPathwayId

```
val steeredPathwayId: String?
```

The ID of the steered pathway from which data is being loaded, or `null` if not applicable.

### trackFormat

```
val trackFormat: Format!
```

The format of the track to which this chunk belongs.

### trackSelectionData

```
val trackSelectionData: Any?
```

Optional data associated with the selection of the track to which this chunk belongs. Null if the chunk does not belong to a track, or if there is no associated track selection data.

### trackSelectionReason

```
@C.SelectionReason
val trackSelectionReason: Int
```

One of the `https://developer.android.com/reference/kotlin/androidx/media3/common/C.SelectionReason` if the chunk belongs to a track. `https://developer.android.com/reference/kotlin/androidx/media3/common/C#SELECTION_REASON_UNKNOWN()` if the chunk does not belong to a track, or if the selection reason is unknown.

### type

```
@C.DataType
val type: Int
```

The `https://developer.android.com/reference/kotlin/androidx/media3/common/C.DataType` of the chunk. For reporting only.

## Protected properties

### dataSource

```
protected val dataSource: StatsDataSource!
```