# FakeMediaPeriod.TrackDataFactory

Artifact: [androidx.media3:media3-test-utils](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/test/utils/FakeMediaPeriod.java+class:androidx.media3.test.utils.FakeMediaPeriod.TrackDataFactory)

*** ** * ** ***


```
public interface FakeMediaPeriod.TrackDataFactory
```

<br />

*** ** * ** ***

A factory to create the test data for a particular track.

## Summary

| ### Public methods |
|---|---|
| `abstract https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/test/utils/FakeSampleStream.FakeSampleStreamItem>` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaPeriod.TrackDataFactory#create(androidx.media3.common.Format,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)(https://developer.android.com/reference/androidx/media3/common/Format format, https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId)` Returns the list of `https://developer.android.com/reference/androidx/media3/test/utils/FakeSampleStream.FakeSampleStreamItem`s that will be written the sample queue during playback. |
| `default static https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaPeriod.TrackDataFactory` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaPeriod.TrackDataFactory#samplesWithRateDurationAndKeyframeInterval(long,float,long,int)( long initialSampleTimeUs, float sampleRate, long durationUs, int keyFrameInterval )` Creates a `TrackDataFactory` which generates samples at the given rate to cover the provided duration, with a specified key frame interval. |
| `default static https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaPeriod.TrackDataFactory` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaPeriod.TrackDataFactory#singleSampleWithTimeUs(long)(long sampleTimeUs)` Returns a factory that always provides a single keyframe sample with ` time=sampleTimeUs` and then end-of-stream. |

## Public methods

### create

```
abstract List<FakeSampleStream.FakeSampleStreamItem> create(Format format, MediaSource.MediaPeriodId mediaPeriodId)
```

Returns the list of `https://developer.android.com/reference/androidx/media3/test/utils/FakeSampleStream.FakeSampleStreamItem`s that will be written the sample queue during playback.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/Format format` | The format of the track to provide data for. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId` | The `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId` to provide data for. |

| Returns |
|---|---|
| `https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/test/utils/FakeSampleStream.FakeSampleStreamItem>` | The track data in the form of `https://developer.android.com/reference/androidx/media3/test/utils/FakeSampleStream.FakeSampleStreamItem`s. |

### samplesWithRateDurationAndKeyframeInterval

```
default static FakeMediaPeriod.TrackDataFactory samplesWithRateDurationAndKeyframeInterval(
    long initialSampleTimeUs,
    float sampleRate,
    long durationUs,
    int keyFrameInterval
)
```

Creates a `TrackDataFactory` which generates samples at the given rate to cover the provided duration, with a specified key frame interval.

| Parameters |
|---|---|
| `long initialSampleTimeUs` | The time of the initial sample, in microseconds. |
| `float sampleRate` | The number of samples per second. |
| `long durationUs` | The duration of samples to generate, in microseconds. |
| `int keyFrameInterval` | The number of samples between each keyframe (inclusive). |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaPeriod.TrackDataFactory` | The `TrackDataFactory`. |

### singleSampleWithTimeUs

```
default static FakeMediaPeriod.TrackDataFactory singleSampleWithTimeUs(long sampleTimeUs)
```

Returns a factory that always provides a single keyframe sample with `
time=sampleTimeUs` and then end-of-stream.