<commit_before># Release notes #

### dev-v2 (not yet released) ###

* Add `PlaybackStatsListener` to collect `PlaybackStats` for playbacks analysis
  and analytics reporting (TODO: link to developer guide page/blog post).
* Add basic DRM support to the Cast demo app.
* Offline: Add `Scheduler` implementation that uses `WorkManager`.
* Display last frame when seeking to end of stream
  ([#2568](https://github.com/google/ExoPlayer/issues/2568)).
* Assume that encrypted content requires secure decoders in renderer support
  checks ([#5568](https://github.com/google/ExoPlayer/issues/5568)).
* Decoders: Prefer decoders that advertise format support over ones that do not,
  even if they are listed lower in the `MediaCodecList`.
* Audio: Fix an issue where not all audio was played out when the configuration
  for the underlying track was changing (e.g., at some period transitions).
* Add a workaround for broken raw audio decoding on Oppo R9
  ([#5782](https://github.com/google/ExoPlayer/issues/5782)).
* Add VR player demo.
* Wrap decoder exceptions in a new `DecoderException` class and report as
  renderer error.
* Add support for auto-detecting UDP streams in `DefaultDataSource`
  ([#6036](https://github.com/google/ExoPlayer/pull/6036)).
* Gracefully handle revoked `ACCESS_NETWORK_STATE` permission
  ([#6019](https://github.com/google/ExoPlayer/issues/6019)).
* Fix application of `maxAudioBitrate` for adaptive audio track groups
  ([#6006](https://github.com/google/ExoPlayer/issues/6006)).
* Fix decoding problems when seeking back after seeking beyond a mid-roll ad
  ([#6009](https://github.com/google/ExoPlayer/issues/6009)).

### 2.10.2 ###

* Add `ResolvingDataSource` for just-in-time resolution of `DataSpec`s
  ([#5779](https://github.com/google/ExoPlayer/issues/5779)).
* Add `SilenceMediaSource` that can be used to play silence of a given
  duration ([#5735](https://github.com/google/ExoPlayer/issues/5735)).
* Offline:
  * Prevent unexpected `DownloadHelper.Callback.onPrepared` callbacks after the
    preparation of the `DownloadHelper` failed
    ([#5915](https://github.com/google/ExoPlayer/issues/5915)).
  * Fix CacheUtil.cache() use too much data
    ([#5927](https://github.com/google/ExoPlayer/issues/5927)).
  * Fix misreporting cached bytes when caching is paused
    ([#5573](https://github.com/google/ExoPlayer/issues/5573)).
* UI:
  * Allow setting `DefaultTimeBar` attributes on `PlayerView` and
    `PlayerControlView`.
  * Change playback controls toggle from touch down to touch up events
    ([#5784](https://github.com/google/ExoPlayer/issues/5784)).
  * Fix issue where playback controls were not kept visible on key presses
    ([#5963](https://github.com/google/ExoPlayer/issues/5963)).
* Subtitles:
  * CEA-608: Handle XDS and TEXT modes
    ([#5807](https://github.com/google/ExoPlayer/pull/5807)).
  * TTML: Fix bitmap rendering
    ([#5633](https://github.com/google/ExoPlayer/pull/5633)).
* Add a `playWhenReady` flag to MediaSessionConnector.PlaybackPreparer methods
  to indicate whether a controller sent a play or only a prepare command. This
  allows to take advantage of decoder reuse with the MediaSessionConnector
  ([#5891](https://github.com/google/ExoPlayer/issues/5891)).
* Add `ProgressUpdateListener` to `PlayerControlView`
  ([#5834](https://github.com/google/ExoPlayer/issues/5834)).
* Allow enabling decoder fallback with `DefaultRenderersFactory`
  ([#5942](https://github.com/google/ExoPlayer/issues/5942)).
* Fix bug caused by parallel adaptive track selection using `Format`s without
  bitrate information
  ([#5971](https://github.com/google/ExoPlayer/issues/5971)).
* Fix bug in `CastPlayer.getCurrentWindowIndex()`
  ([#5955](https://github.com/google/ExoPlayer/issues/5955)).

### 2.10.1 ###

* Offline: Add option to remove all downloads.
* HLS: Fix `NullPointerException` when using HLS chunkless preparation
  ([#5868](https://github.com/google/ExoPlayer/issues/5868)).
* Fix handling of empty values and line terminators in SHOUTcast ICY metadata
  ([#5876](https://github.com/google/ExoPlayer/issues/5876)).
* Fix DVB subtitles for SDK 28
  ([#5862](https://github.com/google/ExoPlayer/issues/5862)).
* Add a workaround for a decoder failure on ZTE Axon7 mini devices when playing
  48kHz audio ([#5821](https://github.com/google/ExoPlayer/issues/5821)).

### 2.10.0 ###<commit_msg>Update release notes for 2.10.2 cherrypicks<commit_after># Release notes #

### dev-v2 (not yet released) ###

* Add `PlaybackStatsListener` to collect `PlaybackStats` for playbacks analysis
  and analytics reporting (TODO: link to developer guide page/blog post).
* Add basic DRM support to the Cast demo app.
* Offline: Add `Scheduler` implementation that uses `WorkManager`.
* Display last frame when seeking to end of stream
  ([#2568](https://github.com/google/ExoPlayer/issues/2568)).
* Assume that encrypted content requires secure decoders in renderer support
  checks ([#5568](https://github.com/google/ExoPlayer/issues/5568)).
* Decoders: Prefer decoders that advertise format support over ones that do not,
  even if they are listed lower in the `MediaCodecList`.
* Audio: Fix an issue where not all audio was played out when the configuration
  for the underlying track was changing (e.g., at some period transitions).
* Add a workaround for broken raw audio decoding on Oppo R9
  ([#5782](https://github.com/google/ExoPlayer/issues/5782)).
* Add VR player demo.
* Wrap decoder exceptions in a new `DecoderException` class and report as
  renderer error.

### 2.10.2 ###

* Add `ResolvingDataSource` for just-in-time resolution of `DataSpec`s
  ([#5779](https://github.com/google/ExoPlayer/issues/5779)).
* Add `SilenceMediaSource` that can be used to play silence of a given
  duration ([#5735](https://github.com/google/ExoPlayer/issues/5735)).
* Offline:
  * Prevent unexpected `DownloadHelper.Callback.onPrepared` callbacks after the
    preparation of the `DownloadHelper` failed
    ([#5915](https://github.com/google/ExoPlayer/issues/5915)).
  * Fix CacheUtil.cache() use too much data
    ([#5927](https://github.com/google/ExoPlayer/issues/5927)).
  * Fix misreporting cached bytes when caching is paused
    ([#5573](https://github.com/google/ExoPlayer/issues/5573)).
* UI:
  * Allow setting `DefaultTimeBar` attributes on `PlayerView` and
    `PlayerControlView`.
  * Change playback controls toggle from touch down to touch up events
    ([#5784](https://github.com/google/ExoPlayer/issues/5784)).
  * Fix issue where playback controls were not kept visible on key presses
    ([#5963](https://github.com/google/ExoPlayer/issues/5963)).
* Subtitles:
  * CEA-608: Handle XDS and TEXT modes
    ([#5807](https://github.com/google/ExoPlayer/pull/5807)).
  * TTML: Fix bitmap rendering
    ([#5633](https://github.com/google/ExoPlayer/pull/5633)).
* Add a `playWhenReady` flag to MediaSessionConnector.PlaybackPreparer methods
  to indicate whether a controller sent a play or only a prepare command. This
  allows to take advantage of decoder reuse with the MediaSessionConnector
  ([#5891](https://github.com/google/ExoPlayer/issues/5891)).
* Add `ProgressUpdateListener` to `PlayerControlView`
  ([#5834](https://github.com/google/ExoPlayer/issues/5834)).
* Add support for auto-detecting UDP streams in `DefaultDataSource`
  ([#6036](https://github.com/google/ExoPlayer/pull/6036)).
* Allow enabling decoder fallback with `DefaultRenderersFactory`
  ([#5942](https://github.com/google/ExoPlayer/issues/5942)).
* Gracefully handle revoked `ACCESS_NETWORK_STATE` permission
  ([#6019](https://github.com/google/ExoPlayer/issues/6019)).
* Fix decoding problems when seeking back after seeking beyond a mid-roll ad
  ([#6009](https://github.com/google/ExoPlayer/issues/6009)).
* Fix application of `maxAudioBitrate` for adaptive audio track groups
  ([#6006](https://github.com/google/ExoPlayer/issues/6006)).
* Fix bug caused by parallel adaptive track selection using `Format`s without
  bitrate information
  ([#5971](https://github.com/google/ExoPlayer/issues/5971)).
* Fix bug in `CastPlayer.getCurrentWindowIndex()`
  ([#5955](https://github.com/google/ExoPlayer/issues/5955)).

### 2.10.1 ###

* Offline: Add option to remove all downloads.
* HLS: Fix `NullPointerException` when using HLS chunkless preparation
  ([#5868](https://github.com/google/ExoPlayer/issues/5868)).
* Fix handling of empty values and line terminators in SHOUTcast ICY metadata
  ([#5876](https://github.com/google/ExoPlayer/issues/5876)).
* Fix DVB subtitles for SDK 28
  ([#5862](https://github.com/google/ExoPlayer/issues/5862)).
* Add a workaround for a decoder failure on ZTE Axon7 mini devices when playing
  48kHz audio ([#5821](https://github.com/google/ExoPlayer/issues/5821)).

### 2.10.0 ###
{'fraction_non_alphanumeric': 0.12944393801276208, 'fraction_numerical': 0.05104831358249772, 'mean_word_length': 4.619078104993598, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 50, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2525006', 'n_tokens_mistral': 2961, 'n_tokens_neox': 2649, 'n_words': 791}