Even when fixed to the US locale (and thus avoiding surprising behaviour in e.g. Turkish locale with "i" and "I") there are unexpected behaviours when upper and lower casing non-ASCII characters. For example it's sometimes not symmetric, e.g.: "ẞ".toLowerCase() -> "ß" "ß".toUpperCase() -> "SS" In all the ExoPlayer usages we are either dealing with known-ASCII strings (e.g. MIME types) or comparing against ASCII constant strings anyway, so it seems easier to just use Guava's ASCII-only class in these cases. This change also includes some null-twiddling, because Util.toLowerInvariant() is null tolerant, while Ascii.toLowerCase() is not. Most of the usages were already non-null, and it was easy enough to change the remaining ones to be so by simple reordering of statements. I'll make an equivalent change for Util.toUpperInvariant() next. PiperOrigin-RevId: 368419813 |
||
|---|---|---|
| .. | ||
| src | ||
| build.gradle | ||
| README.md | ||
ExoPlayer DASH library module
Provides support for Dynamic Adaptive Streaming over HTTP (DASH) content.
Adding a dependency to this module is all that's required to enable playback of
DASH MediaItems added to an ExoPlayer or SimpleExoPlayer in their default
configurations. Internally, DefaultMediaSourceFactory will automatically
detect the presence of the module and convert DASH MediaItems into
DashMediaSource instances for playback.
Similarly, a DownloadManager in its default configuration will use
DefaultDownloaderFactory, which will automatically detect the presence of
the module and build DashDownloader instances to download DASH content.
For advanced playback use cases, applications can build DashMediaSource
instances and pass them directly to the player. For advanced download use cases,
DashDownloader can be used directly.
Links
- Developer Guide.
- Javadoc: Classes matching
com.google.android.exoplayer2.source.dash.*belong to this module.