# DataSource.Factory

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

*** ** * ** ***


```
public interface DataSource.Factory
```

<br />

Known direct subclasses [CacheDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/cache/CacheDataSource.Factory), [DefaultDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/DefaultDataSource.Factory), [DefaultDataSourceFactory](https://developer.android.com/reference/androidx/media3/datasource/DefaultDataSourceFactory), [FakeDataSource.Factory](https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSource.Factory), [FileDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/FileDataSource.Factory), [HttpDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.Factory), [PriorityDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/PriorityDataSource.Factory), [PriorityDataSourceFactory](https://developer.android.com/reference/androidx/media3/datasource/PriorityDataSourceFactory), [ResolvingDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/ResolvingDataSource.Factory), [RtmpDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/rtmp/RtmpDataSource.Factory), [RtmpDataSourceFactory](https://developer.android.com/reference/androidx/media3/datasource/rtmp/RtmpDataSourceFactory)

|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/DefaultDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultDataSourceFactory` | **This class is deprecated.** Use `https://developer.android.com/reference/androidx/media3/datasource/DefaultDataSource.Factory` instead. <br /> |
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSource.Factory` | Factory to create a `https://developer.android.com/reference/androidx/media3/test/utils/FakeDataSource`. |
| `https://developer.android.com/reference/androidx/media3/datasource/FileDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/FileDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.Factory` | A factory for `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/PriorityDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/PriorityDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/PriorityDataSourceFactory` | **This class is deprecated.** Use `https://developer.android.com/reference/androidx/media3/datasource/PriorityDataSource.Factory`. <br /> |
| `https://developer.android.com/reference/androidx/media3/datasource/ResolvingDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/ResolvingDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/rtmp/RtmpDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/rtmp/RtmpDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/rtmp/RtmpDataSourceFactory` | **This class is deprecated.** Use `https://developer.android.com/reference/androidx/media3/datasource/rtmp/RtmpDataSource.Factory` instead. <br /> |

Known indirect subclasses [CronetDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/cronet/CronetDataSource.Factory), [DefaultHttpDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.Factory), [HttpDataSource.BaseFactory](https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.BaseFactory), [HttpEngineDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/HttpEngineDataSource.Factory), [KtorDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/ktor/KtorDataSource.Factory), [OkHttpDataSource.Factory](https://developer.android.com/reference/androidx/media3/datasource/okhttp/OkHttpDataSource.Factory)

|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/cronet/CronetDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/cronet/CronetDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/DefaultHttpDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.BaseFactory` | Base implementation of `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource.Factory` that sets default request properties. |
| `https://developer.android.com/reference/androidx/media3/datasource/HttpEngineDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/HttpEngineDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/ktor/KtorDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/ktor/KtorDataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/datasource/okhttp/OkHttpDataSource.Factory` | `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/androidx/media3/datasource/okhttp/OkHttpDataSource` instances. |

*** ** * ** ***

A factory for `https://developer.android.com/reference/androidx/media3/datasource/DataSource` instances.

## Summary

| ### Public methods |
|---|---|
| `abstract https://developer.android.com/reference/androidx/media3/datasource/DataSource` | `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory#createDataSource()()` Creates a `https://developer.android.com/reference/androidx/media3/datasource/DataSource` instance. |

## Public methods

### createDataSource

```
@UnstableApi
abstract DataSource createDataSource()
```

Creates a `https://developer.android.com/reference/androidx/media3/datasource/DataSource` instance.