# ClippingMediaSource.Builder

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

*** ** * ** ***


```
public final class ClippingMediaSource.Builder
```

<br />

*** ** * ** ***

A builder for `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#Builder(androidx.media3.exoplayer.source.MediaSource)(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource mediaSource)` Creates the builder. |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#build()()` Builds the `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setAllowDynamicClippingUpdates(boolean)(boolean allowDynamicClippingUpdates)` Sets whether the clipping of active media periods moves with a live window. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setAllowUnseekableMedia(boolean)(boolean allowUnseekableMedia)` Sets whether clipping to a non-zero start position in unseekable media is allowed. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setClippingConfiguration(androidx.media3.common.MediaItem.ClippingConfiguration)( https://developer.android.com/reference/androidx/media3/common/MediaItem.ClippingConfiguration clippingConfiguration )` Sets the `https://developer.android.com/reference/androidx/media3/common/MediaItem.ClippingConfiguration`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | `@https://developer.android.com/reference/androidx/media3/common/util/ExperimentalApi @https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setEnableClippingInMediaPeriod(boolean)(boolean enableClippingInMediaPeriod)` Sets whether to delegate end-position clipping to `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` instances. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setEnableInitialDiscontinuity(boolean)(boolean enableInitialDiscontinuity)` Sets whether to enable the initial discontinuity. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setEndPositionMs(long)(long endPositionMs)` Sets the clip end position. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setEndPositionUs(long)(long endPositionUs)` Sets the clip end position. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setRelativeToDefaultPosition(boolean)(boolean relativeToDefaultPosition)` Sets whether the start and end position are relative to the default position of the wrapped source's `https://developer.android.com/reference/androidx/media3/common/Timeline.Window`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setStartPositionMs(long)(long startPositionMs)` Sets the clip start position. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setStartPositionUs(long)(long startPositionUs)` Sets the clip start position. |

## Public constructors

### Builder

```
public Builder(MediaSource mediaSource)
```

Creates the builder.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource mediaSource` | The `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` to clip. |

## Public methods

### build

```
public ClippingMediaSource build()
```

Builds the `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource`.

### setAllowDynamicClippingUpdates

```
@CanIgnoreReturnValue
public ClippingMediaSource.Builder setAllowDynamicClippingUpdates(boolean allowDynamicClippingUpdates)
```

Sets whether the clipping of active media periods moves with a live window.

If `false`, playback ends when it reaches `endPositionUs` in the last reported live window at the time a media period was created.

The default value is `false`.

| Parameters |
|---|---|
| `boolean allowDynamicClippingUpdates` | Whether to allow dynamic clipping updates. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | This builder. |

### setAllowUnseekableMedia

```
@CanIgnoreReturnValue
public ClippingMediaSource.Builder setAllowUnseekableMedia(boolean allowUnseekableMedia)
```

Sets whether clipping to a non-zero start position in unseekable media is allowed.

Note that this is inefficient because the player needs to read and decode all samples from the beginning of the file and it should only be used if the clip start position is small and the entire data before the start position fits into memory.

The default value is `false`.

| Parameters |
|---|---|
| `boolean allowUnseekableMedia` | Whether a non-zero start position in unseekable media is allowed. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | This builder. |

### setClippingConfiguration

```
@CanIgnoreReturnValue
public ClippingMediaSource.Builder setClippingConfiguration(
    MediaItem.ClippingConfiguration clippingConfiguration
)
```

Sets the `https://developer.android.com/reference/androidx/media3/common/MediaItem.ClippingConfiguration`.

Calling this method overwrites the following setters:

- `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setStartPositionUs(long)`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setEndPositionUs(long)`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setEnableInitialDiscontinuity(boolean)`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setAllowDynamicClippingUpdates(boolean)`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setRelativeToDefaultPosition(boolean)`
- `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setAllowUnseekableMedia(boolean)`

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/MediaItem.ClippingConfiguration clippingConfiguration` | The `https://developer.android.com/reference/androidx/media3/common/MediaItem.ClippingConfiguration`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | This builder. |

### setEnableClippingInMediaPeriod

```
@ExperimentalApi
@CanIgnoreReturnValue
public ClippingMediaSource.Builder setEnableClippingInMediaPeriod(boolean enableClippingInMediaPeriod)
```

Sets whether to delegate end-position clipping to `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` instances.

The default value is determined by `https://developer.android.com/reference/androidx/media3/common/Flags#FLAG_ENABLE_CLIPPING_IN_MEDIA_PERIOD()`.

| Parameters |
|---|---|
| `boolean enableClippingInMediaPeriod` | Whether to delegate end-position clipping to `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` instances. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | This builder. |

### setEnableInitialDiscontinuity

```
@CanIgnoreReturnValue
public ClippingMediaSource.Builder setEnableInitialDiscontinuity(boolean enableInitialDiscontinuity)
```

Sets whether to enable the initial discontinuity.

This discontinuity is needed to handle pre-rolling samples from a previous keyframe if the start position doesn't fall onto a keyframe.

When starting from the beginning of the stream or when clipping a format that is guaranteed to have keyframes only, the discontinuity won't be applied even if enabled.

The default value is `true`.

| Parameters |
|---|---|
| `boolean enableInitialDiscontinuity` | Whether to enable the initial discontinuity. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | This builder. |

### setEndPositionMs

```
@CanIgnoreReturnValue
public ClippingMediaSource.Builder setEndPositionMs(long endPositionMs)
```

Sets the clip end position.

The end position is relative to the wrapped source's `https://developer.android.com/reference/androidx/media3/common/Timeline.Window`, unless `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setRelativeToDefaultPosition(boolean)` is set to `true`.

Specify `https://developer.android.com/reference/androidx/media3/common/C#TIME_END_OF_SOURCE()` to provide samples up to the end of the source. Specifying a position that exceeds the wrapped source's duration will also result in the end of the source not being clipped.

| Parameters |
|---|---|
| `long endPositionMs` | The clip end position in milliseconds, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_END_OF_SOURCE()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | This builder. |

### setEndPositionUs

```
@CanIgnoreReturnValue
public ClippingMediaSource.Builder setEndPositionUs(long endPositionUs)
```

Sets the clip end position.

The end position is relative to the wrapped source's `https://developer.android.com/reference/androidx/media3/common/Timeline.Window`, unless `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setRelativeToDefaultPosition(boolean)` is set to `true`.

Specify `https://developer.android.com/reference/androidx/media3/common/C#TIME_END_OF_SOURCE()` to provide samples up to the end of the source. Specifying a position that exceeds the wrapped source's duration will also result in the end of the source not being clipped.

| Parameters |
|---|---|
| `long endPositionUs` | The clip end position in microseconds, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_END_OF_SOURCE()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | This builder. |

### setRelativeToDefaultPosition

```
@CanIgnoreReturnValue
public ClippingMediaSource.Builder setRelativeToDefaultPosition(boolean relativeToDefaultPosition)
```

Sets whether the start and end position are relative to the default position of the wrapped source's `https://developer.android.com/reference/androidx/media3/common/Timeline.Window`.

The default value is `false`.

| Parameters |
|---|---|
| `boolean relativeToDefaultPosition` | Whether the start and end positions are relative to the default position of the wrapped source's `https://developer.android.com/reference/androidx/media3/common/Timeline.Window`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | This builder. |

### setStartPositionMs

```
@CanIgnoreReturnValue
public ClippingMediaSource.Builder setStartPositionMs(long startPositionMs)
```

Sets the clip start position.

The start position is relative to the wrapped source's `https://developer.android.com/reference/androidx/media3/common/Timeline.Window`, unless `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setRelativeToDefaultPosition(boolean)` is set to `true`.

| Parameters |
|---|---|
| `long startPositionMs` | The clip start position in milliseconds. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | This builder. |

### setStartPositionUs

```
@CanIgnoreReturnValue
public ClippingMediaSource.Builder setStartPositionUs(long startPositionUs)
```

Sets the clip start position.

The start position is relative to the wrapped source's `https://developer.android.com/reference/androidx/media3/common/Timeline.Window`, unless `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder#setRelativeToDefaultPosition(boolean)` is set to `true`.

| Parameters |
|---|---|
| `long startPositionUs` | The clip start position in microseconds. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | This builder. |