# ContainerMediaChunk

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/ContainerMediaChunk.java+class:androidx.media3.exoplayer.source.chunk.ContainerMediaChunk)

*** ** * ** ***


```
@UnstableApi
public class ContainerMediaChunk extends BaseMediaChunk
```

<br />

|---|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||||
| ↳ | [androidx.media3.exoplayer.source.chunk.Chunk](https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk) ||||
|   | ↳ | [androidx.media3.exoplayer.source.chunk.MediaChunk](https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/MediaChunk) |||
|   |   | ↳ | [androidx.media3.exoplayer.source.chunk.BaseMediaChunk](https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunk) ||
|   |   |   | ↳ | [androidx.media3.exoplayer.source.chunk.ContainerMediaChunk](https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk) |

*** ** * ** ***

A `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunk` that uses an `https://developer.android.com/reference/androidx/media3/extractor/Extractor` to decode sample data.

## Summary

| ### Public fields |
|---|---|
| `long` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#nextLoadPosition()` |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#ContainerMediaChunk(androidx.media3.datasource.DataSource,androidx.media3.datasource.DataSpec,androidx.media3.common.Format,int,java.lang.Object,long,long,long,long,long,int,long,androidx.media3.exoplayer.source.chunk.ChunkExtractor)( https://developer.android.com/reference/androidx/media3/datasource/DataSource dataSource, https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec, https://developer.android.com/reference/androidx/media3/common/Format trackFormat, @https://developer.android.com/reference/androidx/media3/common/C.SelectionReason int trackSelectionReason, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/Object.html trackSelectionData, long startTimeUs, long endTimeUs, long clippedStartTimeUs, long clippedEndTimeUs, long chunkIndex, int chunkCount, long sampleOffsetUs, https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ChunkExtractor chunkExtractor )` |

| ### Public methods |
|---|---|
| `final void` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#cancelLoad()()` Cancels the load. |
| `long` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#getNextChunkIndex()()` Returns the next chunk index or `https://developer.android.com/reference/androidx/media3/common/C#INDEX_UNSET()` if it is not known. |
| `final long` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#getNextLoadPosition()()` Returns the next position to load in the chunk on a `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#load()`. |
| `final boolean` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#isLoadCanceled()()` Returns whether the current chunk's load has been canceled from `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#cancelLoad()`. |
| `boolean` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#isLoadCompleted()()` Returns whether the chunk has been fully loaded. |
| `final void` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#load()()` Performs the load, returning on completion or cancellation. |

| ### Protected methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ChunkExtractor.TrackOutputProvider` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#getTrackOutputProvider(androidx.media3.exoplayer.source.chunk.BaseMediaChunkOutput)(https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunkOutput baseMediaChunkOutput)` Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ChunkExtractor.TrackOutputProvider` to be used by the wrapped extractor. |
| `void` | `@https://checkerframework.org/api/com/google/errorprone/annotations/ForOverride.html https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#onLoadEnded()()` Method that is called to signal that a `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#load()` has concluded. |

### Inherited fields

From [androidx.media3.exoplayer.source.chunk.BaseMediaChunk](https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunk) `final long` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunk#clippedEndTimeUs()`

The time from which output will end, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` if output will end at the end of the chunk.
`final long` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunk#clippedStartTimeUs()`

The time from which output will begin, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` if output will begin from the start of the chunk.
`@https://checkerframework.org/api/org/checkerframework/checker/nullness/qual/MonotonicNonNull.html https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunkOutput` `@https://checkerframework.org/api/org/checkerframework/checker/nullness/qual/MonotonicNonNull.html
https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunk#output()` From [androidx.media3.exoplayer.source.chunk.Chunk](https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk) `final https://developer.android.com/reference/androidx/media3/datasource/StatsDataSource` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#dataSource()` `final https://developer.android.com/reference/androidx/media3/datasource/DataSpec` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#dataSpec()`

The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec` that defines the data to be loaded.
`final long` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#endTimeUs()`

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

Identifies the load task for this loadable.
`final long` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#startTimeUs()`

The start time of the media contained by the chunk, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` if the data being loaded does not contain media samples.
`final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#steeredPathwayId()`

The ID of the steered pathway from which data is being loaded, or `null` if not applicable.
`final https://developer.android.com/reference/androidx/media3/common/Format` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#trackFormat()`

The format of the track to which this chunk belongs.
`final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/Object.html` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#trackSelectionData()`

Optional data associated with the selection of the track to which this chunk belongs.
`final int` `@https://developer.android.com/reference/androidx/media3/common/C.SelectionReason
https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#trackSelectionReason()`

One of the `https://developer.android.com/reference/androidx/media3/common/C.SelectionReason` if the chunk belongs to a track.
`final int` `@https://developer.android.com/reference/androidx/media3/common/C.DataType
https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#type()`

The `https://developer.android.com/reference/androidx/media3/common/C.DataType` of the chunk.
From [androidx.media3.exoplayer.source.chunk.MediaChunk](https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/MediaChunk) `final long` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/MediaChunk#chunkIndex()`

The chunk index, or `https://developer.android.com/reference/androidx/media3/common/C#INDEX_UNSET()` if it is not known.

### Inherited methods

From [androidx.media3.exoplayer.source.chunk.BaseMediaChunk](https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunk) `final int` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunk#getFirstSampleIndex(int)(int trackIndex)`

Returns the index of the first sample in the specified track of the output that will originate from this chunk.
`final https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunkOutput` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunk#getOutput()()`

Returns the output most recently passed to `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunk#init(androidx.media3.exoplayer.source.chunk.BaseMediaChunkOutput)`.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunk#init(androidx.media3.exoplayer.source.chunk.BaseMediaChunkOutput)(https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunkOutput output)`

Initializes the chunk for loading, setting the `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunkOutput` that will receive samples as they are loaded.
From [androidx.media3.exoplayer.source.chunk.Chunk](https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk) `final long` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#bytesLoaded()()`

Returns the number of bytes that have been loaded.
`final long` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#getDurationUs()()`

Returns the duration of the chunk in microseconds.
`final https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/java/lang/String.html>>` `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#getResponseHeaders()()`

Returns the response headers associated with the last `https://developer.android.com/reference/androidx/media3/datasource/DataSource#open(androidx.media3.datasource.DataSpec)` call.
`final https://developer.android.com/reference/android/net/Uri.html` `https://developer.android.com/reference/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/androidx/media3/datasource/DataSource#open(androidx.media3.datasource.DataSpec)` call.

## Public fields

### nextLoadPosition

```
public long nextLoadPosition
```

## Public constructors

### ContainerMediaChunk

```
public ContainerMediaChunk(
    DataSource dataSource,
    DataSpec dataSpec,
    Format trackFormat,
    @C.SelectionReason int trackSelectionReason,
    @Nullable Object trackSelectionData,
    long startTimeUs,
    long endTimeUs,
    long clippedStartTimeUs,
    long clippedEndTimeUs,
    long chunkIndex,
    int chunkCount,
    long sampleOffsetUs,
    ChunkExtractor chunkExtractor
)
```

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSource dataSource` | The source from which the data should be loaded. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec` | Defines the data to be loaded. |
| `https://developer.android.com/reference/androidx/media3/common/Format trackFormat` | See `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#trackFormat()`. |
| `@https://developer.android.com/reference/androidx/media3/common/C.SelectionReason int trackSelectionReason` | See `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#trackSelectionReason()`. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/Object.html trackSelectionData` | See `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/Chunk#trackSelectionData()`. |
| `long startTimeUs` | The start time of the media contained by the chunk, in microseconds. |
| `long endTimeUs` | The end time of the media contained by the chunk, in microseconds. |
| `long clippedStartTimeUs` | The time in the chunk from which output will begin, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` to output from the start of the chunk. |
| `long clippedEndTimeUs` | The time in the chunk from which output will end, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` to output to the end of the chunk. |
| `long chunkIndex` | The index of the chunk, or `https://developer.android.com/reference/androidx/media3/common/C#INDEX_UNSET()` if it is not known. |
| `int chunkCount` | The number of chunks in the underlying media that are spanned by this instance. Normally equal to one, but may be larger if multiple chunks as defined by the underlying media are being merged into a single load. |
| `long sampleOffsetUs` | An offset to add to the sample timestamps parsed by the extractor. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ChunkExtractor chunkExtractor` | A wrapped extractor to use for parsing the data. |

## Public methods

### cancelLoad

```
public final void cancelLoad()
```

Cancels the load.

Loadable implementations should ensure that a currently executing `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/Loader.Loadable#load()` call will exit reasonably quickly after this method is called. The `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/Loader.Loadable#load()` call may exit either by returning or by throwing an `https://developer.android.com/reference/java/io/IOException.html`.

If there is a currently executing `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/Loader.Loadable#load()` call, then the thread on which that call is being made will be interrupted immediately after the call to this method. Hence implementations do not need to (and should not attempt to) interrupt the loading thread themselves.

Although the loading thread will be interrupted, Loadable implementations should not use the interrupted status of the loading thread in `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/Loader.Loadable#load()` to determine whether the load has been canceled. This approach is not robust \[Internal ref: b/79223737\]. Instead, implementations should use their own flag to signal cancelation (for example, using `https://developer.android.com/reference/java/util/concurrent/atomic/AtomicBoolean.html`).

### getNextChunkIndex

```
public long getNextChunkIndex()
```

Returns the next chunk index or `https://developer.android.com/reference/androidx/media3/common/C#INDEX_UNSET()` if it is not known.

### getNextLoadPosition

```
public final long getNextLoadPosition()
```

Returns the next position to load in the chunk on a `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#load()`.

### isLoadCanceled

```
public final boolean isLoadCanceled()
```

Returns whether the current chunk's load has been canceled from `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#cancelLoad()`.

### isLoadCompleted

```
public boolean isLoadCompleted()
```

Returns whether the chunk has been fully loaded.

### load

```
public final void load()
```

Performs the load, returning on completion or cancellation.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/io/IOException.html` | If the input could not be loaded. |

## Protected methods

### getTrackOutputProvider

```
protected ChunkExtractor.TrackOutputProvider getTrackOutputProvider(BaseMediaChunkOutput baseMediaChunkOutput)
```

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ChunkExtractor.TrackOutputProvider` to be used by the wrapped extractor.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunkOutput baseMediaChunkOutput` | The `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunkOutput` most recently passed to `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/BaseMediaChunk#init(androidx.media3.exoplayer.source.chunk.BaseMediaChunkOutput)`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ChunkExtractor.TrackOutputProvider` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ChunkExtractor.TrackOutputProvider` to be used by the wrapped extractor. |

### onLoadEnded

```
@ForOverride
protected void onLoadEnded()
```

Method that is called to signal that a `https://developer.android.com/reference/androidx/media3/exoplayer/source/chunk/ContainerMediaChunk#load()` has concluded. This is called in both successful and error scenarios before the `https://developer.android.com/reference/androidx/media3/datasource/DataSource` is closed.