# androidx.media3.datasource

*** ** * ** ***

## Interfaces

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/ByteArrayDataSource.UriResolver` | Functional interface to resolve from `https://developer.android.com/reference/android/net/Uri.html` to `byte[]`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSink` | A component to which streams of data can be written. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSink.Factory` | A factory for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSink` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` | Reads data from URI-identified resources. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory` | A factory for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource` | An HTTP `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.Factory` | A factory for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/ResolvingDataSource.Resolver` | Resolves `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/TransferListener` | A listener of data transfer events. |

## Classes

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/AesCipherDataSink` | A wrapping `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSink` that encrypts the data being consumed. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/AesCipherDataSource` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` that decrypts the data read from an upstream source. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/AesFlushingCipher` | A flushing variant of a AES/CTR/NoPadding `https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/AssetDataSource` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` for reading from a local asset. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/BaseDataSource` | Base `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` implementation to keep a list of `https://developer.android.com/reference/kotlin/androidx/media3/datasource/TransferListener`s. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/BitmapUtil` | Utility methods for `https://developer.android.com/reference/android/graphics/Bitmap.html` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/ByteArrayDataSink` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSink` for writing to a byte array. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/ByteArrayDataSource` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` for reading from a byte array. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/ContentDataSource` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` for reading from a content URI. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSchemeDataSource` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` for reading data URLs, as defined by RFC 2397. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSourceBitmapLoader` | A `https://developer.android.com/reference/kotlin/androidx/media3/common/util/BitmapLoader` implementation that uses a `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` to support fetching images from URIs and `https://developer.android.com/reference/android/graphics/BitmapFactory.html` to load them into `https://developer.android.com/reference/android/graphics/Bitmap.html`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSourceBitmapLoader.Builder` | A builder for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSourceBitmapLoader` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSourceInputStream` | Allows data corresponding to a given `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec` to be read from a `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` and consumed through an `https://developer.android.com/reference/java/io/InputStream.html`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSourceUtil` | Utility methods for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec` | Defines a region of data in a resource. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec.Builder` | Builds `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DefaultDataSource` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` that supports multiple URI schemes. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DefaultDataSource.Factory` | `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DefaultDataSource` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DefaultDataSourceFactory` | **This class is deprecated.** Use `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DefaultDataSource.Factory` instead. <br /> |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DefaultHttpDataSource` | An `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource` that uses Android's `https://developer.android.com/reference/java/net/HttpURLConnection.html`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DefaultHttpDataSource.Factory` | `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DefaultHttpDataSource` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/FileDataSource` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` for reading local files. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/FileDataSource.Factory` | `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/FileDataSource` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/FileDescriptorDataSource` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` for reading from a `https://developer.android.com/reference/java/io/FileDescriptor.html`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.BaseFactory` | Base implementation of `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.Factory` that sets default request properties. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.RequestProperties` | Stores HTTP request properties (aka HTTP headers) and provides methods to modify the headers in a thread safe way to avoid the potential of creating snapshots of an inconsistent or unintended state. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpEngineDataSource` | DataSource without intermediate buffer based on `https://developer.android.com/reference/android/net/http/HttpEngine.html` set using `https://developer.android.com/reference/android/net/http/UrlRequest.html`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpEngineDataSource.Factory` | `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpEngineDataSource` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpUtil` | Utility methods for HTTP. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/MediaDataSourceAdapter` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` for reading from a `https://developer.android.com/reference/android/media/MediaDataSource.html`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/PlaceholderDataSource` | A DataSource which provides no data. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/PriorityDataSource` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` that can be used as part of a task registered with a `https://developer.android.com/reference/kotlin/androidx/media3/common/PriorityTaskManager`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/PriorityDataSource.Factory` | `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/PriorityDataSource` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/PriorityDataSourceFactory` | **This class is deprecated.** Use `https://developer.android.com/reference/kotlin/androidx/media3/datasource/PriorityDataSource.Factory`. <br /> |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/RawResourceDataSource` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` for reading a raw resource. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/ResolvingDataSource` | `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` wrapper allowing just-in-time resolution of `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/ResolvingDataSource.Factory` | `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory` for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/ResolvingDataSource` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/StatsDataSource` | `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` wrapper which keeps track of bytes transferred, redirected uris, and response headers. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/TeeDataSource` | Tees data into a `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSink` as the data is read. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/UdpDataSource` | A UDP `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource`. |

## Exceptions

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/AssetDataSource.AssetDataSourceException` | Thrown when an `https://developer.android.com/reference/java/io/IOException.html` is encountered reading a local asset. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/ContentDataSource.ContentDataSourceException` | Thrown when an `https://developer.android.com/reference/java/io/IOException.html` is encountered reading from a content URI. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSourceException` | Used to specify reason of a DataSource error. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/FileDataSource.FileDataSourceException` | Thrown when a `https://developer.android.com/reference/kotlin/androidx/media3/datasource/FileDataSource` encounters an error reading a file. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.CleartextNotPermittedException` | Thrown when cleartext HTTP traffic is not permitted. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.HttpDataSourceException` | Thrown when an error is encountered when trying to read from a `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.InvalidContentTypeException` | Thrown when the content type is invalid. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.InvalidResponseCodeException` | Thrown when an attempt to open a connection results in a response code not in the 2xx range. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpEngineDataSource.OpenException` | Thrown when an error is encountered when trying to open a `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpEngineDataSource`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/RawResourceDataSource.RawResourceDataSourceException` | Thrown when an `https://developer.android.com/reference/java/io/IOException.html` is encountered reading from a raw resource. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/UdpDataSource.UdpDataSourceException` | Thrown when an error is encountered when trying to read from a `https://developer.android.com/reference/kotlin/androidx/media3/datasource/UdpDataSource`. |

## Annotations

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec.Flags` | The flags that apply to any request for data. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec.HttpMethod` | HTTP methods supported by ExoPlayer `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource`s. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.HttpDataSourceException.Type` | The type of operation that produced the error. |