1*30877f79SAndroid Build Coastguard Worker# Release notes 2*30877f79SAndroid Build Coastguard Worker 3*30877f79SAndroid Build Coastguard Worker### dev-v2 (not yet released) 4*30877f79SAndroid Build Coastguard Worker 5*30877f79SAndroid Build Coastguard Worker* Core library: 6*30877f79SAndroid Build Coastguard Worker * Support preferred video role flags in track selection 7*30877f79SAndroid Build Coastguard Worker ((#9402)[https://github.com/google/ExoPlayer/issues/9402]). 8*30877f79SAndroid Build Coastguard Worker * Prefer audio content preferences (for example, "default" audio track or 9*30877f79SAndroid Build Coastguard Worker track matching system Locale language) over technical track selection 10*30877f79SAndroid Build Coastguard Worker constraints (for example, preferred MIME type, or maximum channel 11*30877f79SAndroid Build Coastguard Worker count). 12*30877f79SAndroid Build Coastguard Worker * Prohibit duplicate `TrackGroup`s in a `TrackGroupArray`. `TrackGroup`s 13*30877f79SAndroid Build Coastguard Worker can always be made distinguishable by setting an `id` in the 14*30877f79SAndroid Build Coastguard Worker `TrackGroup` constructor. This fixes a crash when resuming playback 15*30877f79SAndroid Build Coastguard Worker after backgrounding the app with an active track override 16*30877f79SAndroid Build Coastguard Worker ((#9718)[https://github.com/google/ExoPlayer/issues/9718]). 17*30877f79SAndroid Build Coastguard Worker * Sleep and retry when creating a `MediaCodec` instance fails. This works 18*30877f79SAndroid Build Coastguard Worker around an issue that occurs on some devices when switching a surface 19*30877f79SAndroid Build Coastguard Worker from a secure codec to another codec 20*30877f79SAndroid Build Coastguard Worker (#8696)[https://github.com/google/ExoPlayer/issues/8696]. 21*30877f79SAndroid Build Coastguard Worker * Add `MediaCodecAdapter.getMetrics()` to allow users obtain metrics data 22*30877f79SAndroid Build Coastguard Worker from `MediaCodec`. 23*30877f79SAndroid Build Coastguard Worker ([#9766](https://github.com/google/ExoPlayer/issues/9766)). 24*30877f79SAndroid Build Coastguard Worker * Amend logic in `AdaptiveTrackSelection` to allow a quality increase 25*30877f79SAndroid Build Coastguard Worker under sufficient network bandwidth even if playback is very close to the 26*30877f79SAndroid Build Coastguard Worker live edge ((#9784)[https://github.com/google/ExoPlayer/issues/9784]). 27*30877f79SAndroid Build Coastguard Worker * Fix Maven dependency resolution 28*30877f79SAndroid Build Coastguard Worker ((#8353)[https://github.com/google/ExoPlayer/issues/8353]). 29*30877f79SAndroid Build Coastguard Worker* Android 12 compatibility: 30*30877f79SAndroid Build Coastguard Worker * Upgrade the Cast extension to depend on 31*30877f79SAndroid Build Coastguard Worker `com.google.android.gms:play-services-cast-framework:20.1.0`. Earlier 32*30877f79SAndroid Build Coastguard Worker versions of `play-services-cast-framework` are not compatible with apps 33*30877f79SAndroid Build Coastguard Worker targeting Android 12, and will crash with an `IllegalArgumentException` 34*30877f79SAndroid Build Coastguard Worker when creating `PendingIntent`s 35*30877f79SAndroid Build Coastguard Worker ([#9528](https://github.com/google/ExoPlayer/issues/9528)). 36*30877f79SAndroid Build Coastguard Worker* Audio: 37*30877f79SAndroid Build Coastguard Worker * Add a `Builder` to `DefaultAudioSink` and deprecate the existing 38*30877f79SAndroid Build Coastguard Worker constructors. 39*30877f79SAndroid Build Coastguard Worker * Change `AudioCapabilities` APIs to require passing explicitly 40*30877f79SAndroid Build Coastguard Worker `AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES` instead of `null`. 41*30877f79SAndroid Build Coastguard Worker* Extractors: 42*30877f79SAndroid Build Coastguard Worker * Fix inconsistency with spec in H.265 SPS nal units parsing 43*30877f79SAndroid Build Coastguard Worker ((#9719)[https://github.com/google/ExoPlayer/issues/9719]). 44*30877f79SAndroid Build Coastguard Worker* Text: 45*30877f79SAndroid Build Coastguard Worker * Add a `MediaItem.SubtitleConfiguration#id` field which is propagated to 46*30877f79SAndroid Build Coastguard Worker the `Format#id` field of the subtitle track created from the 47*30877f79SAndroid Build Coastguard Worker configuration 48*30877f79SAndroid Build Coastguard Worker ((#9673)[https://github.com/google/ExoPlayer/issues/9673]). 49*30877f79SAndroid Build Coastguard Worker * Rename `DecoderCounters#inputBufferCount` to `queuedInputBufferCount`. 50*30877f79SAndroid Build Coastguard Worker* DRM: 51*30877f79SAndroid Build Coastguard Worker * Remove `playbackLooper` from `DrmSessionManager.(pre)acquireSession`. 52*30877f79SAndroid Build Coastguard Worker When a `DrmSessionManager` is used by an app in a custom `MediaSource`, 53*30877f79SAndroid Build Coastguard Worker the `playbackLooper` needs to be passed to `DrmSessionManager.setPlayer` 54*30877f79SAndroid Build Coastguard Worker instead. 55*30877f79SAndroid Build Coastguard Worker* IMA: 56*30877f79SAndroid Build Coastguard Worker * Add a method to `AdPlaybackState` to allow resetting an ad group so that 57*30877f79SAndroid Build Coastguard Worker it can be played again 58*30877f79SAndroid Build Coastguard Worker ([#9615](https://github.com/google/ExoPlayer/issues/9615)). 59*30877f79SAndroid Build Coastguard Worker* DASH: 60*30877f79SAndroid Build Coastguard Worker * Support the `forced-subtitle` track role 61*30877f79SAndroid Build Coastguard Worker ([#9727](https://github.com/google/ExoPlayer/issues/9727)). 62*30877f79SAndroid Build Coastguard Worker * Stop interpreting the `main` track role as `C.SELECTION_FLAG_DEFAULT`. 63*30877f79SAndroid Build Coastguard Worker* HLS: 64*30877f79SAndroid Build Coastguard Worker * Use chunkless preparation by default to improve start up time. If your 65*30877f79SAndroid Build Coastguard Worker renditions contain muxed closed-caption tracks that are *not* declared 66*30877f79SAndroid Build Coastguard Worker in the master playlist, you should add them to the master playlist to be 67*30877f79SAndroid Build Coastguard Worker available for playback, or turn off chunkless preparation with 68*30877f79SAndroid Build Coastguard Worker `HlsMediaSource.Factory.setAllowChunklessPreparation(false)`. 69*30877f79SAndroid Build Coastguard Worker * Support key-frame accurate seeking in HLS 70*30877f79SAndroid Build Coastguard Worker ([#2882](https://github.com/google/ExoPlayer/issues/2882)). 71*30877f79SAndroid Build Coastguard Worker * Correctly populate `Format.label` for audio only HLS streams 72*30877f79SAndroid Build Coastguard Worker ([#9608](https://github.com/google/ExoPlayer/issues/9608)). 73*30877f79SAndroid Build Coastguard Worker * Timestamp adjuster initialization occurs after opening the `DataSource` 74*30877f79SAndroid Build Coastguard Worker ([#9777](https://github.com/google/ExoPlayer/pull/9777)). 75*30877f79SAndroid Build Coastguard Worker* UI: 76*30877f79SAndroid Build Coastguard Worker * Fix the color of the numbers in `StyledPlayerView` rewind and 77*30877f79SAndroid Build Coastguard Worker fastforward buttons when using certain themes 78*30877f79SAndroid Build Coastguard Worker ([#9765](https://github.com/google/ExoPlayer/issues/9765)). 79*30877f79SAndroid Build Coastguard Worker* Transformer: 80*30877f79SAndroid Build Coastguard Worker * Increase required min API version to 21. 81*30877f79SAndroid Build Coastguard Worker * `TransformationException` is now used to describe errors that occur 82*30877f79SAndroid Build Coastguard Worker during a transformation. 83*30877f79SAndroid Build Coastguard Worker * Add `TransformationRequest` for specifying the transformation options. 84*30877f79SAndroid Build Coastguard Worker* MediaSession extension: 85*30877f79SAndroid Build Coastguard Worker * Remove deprecated call to `onStop(/* reset= */ true)` and provide an 86*30877f79SAndroid Build Coastguard Worker opt-out flag for apps that don't want to clear the playlist on stop. 87*30877f79SAndroid Build Coastguard Worker* RTSP: 88*30877f79SAndroid Build Coastguard Worker * Provide a client API to override the `SocketFactory` used for any server 89*30877f79SAndroid Build Coastguard Worker connection ([#9606](https://github.com/google/ExoPlayer/pull/9606)). 90*30877f79SAndroid Build Coastguard Worker * Prefers DIGEST authentication method over BASIC if both are present. 91*30877f79SAndroid Build Coastguard Worker ([#9800](https://github.com/google/ExoPlayer/issues/9800)). 92*30877f79SAndroid Build Coastguard Worker* Cast extension 93*30877f79SAndroid Build Coastguard Worker * Fix bug that prevented `CastPlayer` from calling `onIsPlayingChanged` 94*30877f79SAndroid Build Coastguard Worker correctly. 95*30877f79SAndroid Build Coastguard Worker* Remove deprecated symbols: 96*30877f79SAndroid Build Coastguard Worker * Remove `MediaSourceFactory#setDrmSessionManager`, 97*30877f79SAndroid Build Coastguard Worker `MediaSourceFactory#setDrmHttpDataSourceFactory`, and 98*30877f79SAndroid Build Coastguard Worker `MediaSourceFactory#setDrmUserAgent`. Use 99*30877f79SAndroid Build Coastguard Worker `MediaSourceFactory#setDrmSessionManagerProvider` instead. 100*30877f79SAndroid Build Coastguard Worker * Remove `MediaSourceFactory#setStreamKeys`. Use 101*30877f79SAndroid Build Coastguard Worker `MediaItem.Builder#setStreamKeys` instead. 102*30877f79SAndroid Build Coastguard Worker * Remove `MediaSourceFactory#createMediaSource(Uri)`. Use 103*30877f79SAndroid Build Coastguard Worker `MediaSourceFactory#createMediaSource(MediaItem)` instead. 104*30877f79SAndroid Build Coastguard Worker * Remove `setTag` from `DashMediaSource`, `HlsMediaSource` and 105*30877f79SAndroid Build Coastguard Worker `SsMediaSource`. Use `MediaItem.Builder#setTag` instead. 106*30877f79SAndroid Build Coastguard Worker * Remove `DashMediaSource#setLivePresentationDelayMs(long, boolean)`. Use 107*30877f79SAndroid Build Coastguard Worker `MediaItem.Builder#setLiveConfiguration` and 108*30877f79SAndroid Build Coastguard Worker `MediaItem.LiveConfiguration.Builder#setTargetOffsetMs` to override the 109*30877f79SAndroid Build Coastguard Worker manifest, or `DashMediaSource#setFallbackTargetLiveOffsetMs` to provide 110*30877f79SAndroid Build Coastguard Worker a fallback value. 111*30877f79SAndroid Build Coastguard Worker 112*30877f79SAndroid Build Coastguard Worker### 2.16.1 (2021-11-18) 113*30877f79SAndroid Build Coastguard Worker 114*30877f79SAndroid Build Coastguard Worker* Core Library: 115*30877f79SAndroid Build Coastguard Worker * Fix track selection issue where overriding one track group did not 116*30877f79SAndroid Build Coastguard Worker disable other track groups of the same type 117*30877f79SAndroid Build Coastguard Worker ([#9675](https://github.com/google/ExoPlayer/issues/9675)). 118*30877f79SAndroid Build Coastguard Worker * Fix track selection issue where a mixture of non-empty and empty track 119*30877f79SAndroid Build Coastguard Worker overrides is not applied correctly 120*30877f79SAndroid Build Coastguard Worker ([#9649](https://github.com/google/ExoPlayer/issues/9649)). 121*30877f79SAndroid Build Coastguard Worker * Add protected method `DefaultRenderersFactory.getCodecAdapterFactory()` 122*30877f79SAndroid Build Coastguard Worker so that subclasses of `DefaultRenderersFactory` that override 123*30877f79SAndroid Build Coastguard Worker `buildVideoRenderers()` or `buildAudioRenderers()` can access the codec 124*30877f79SAndroid Build Coastguard Worker adapter factory and pass it to `MediaCodecRenderer` instances they 125*30877f79SAndroid Build Coastguard Worker create. 126*30877f79SAndroid Build Coastguard Worker * Propagate ICY header fields `name` and `genre` to 127*30877f79SAndroid Build Coastguard Worker `MediaMetadata.station` and `MediaMetadata.genre` respectively so that 128*30877f79SAndroid Build Coastguard Worker they reach the app via `Player.Listener.onMediaMetadataChanged()` 129*30877f79SAndroid Build Coastguard Worker ([#9677](https://github.com/google/ExoPlayer/issues/9677)). 130*30877f79SAndroid Build Coastguard Worker * Remove null keys from `DefaultHttpDataSource#getResponseHeaders`. 131*30877f79SAndroid Build Coastguard Worker* Extractors: 132*30877f79SAndroid Build Coastguard Worker * WAV: Add support for RF64 streams 133*30877f79SAndroid Build Coastguard Worker ([#9543](https://github.com/google/ExoPlayer/issues/9543)). 134*30877f79SAndroid Build Coastguard Worker* DASH: 135*30877f79SAndroid Build Coastguard Worker * Add parsed essential and supplemental properties to the `Representation` 136*30877f79SAndroid Build Coastguard Worker ([#9579](https://github.com/google/ExoPlayer/issues/9579)). 137*30877f79SAndroid Build Coastguard Worker* HLS: 138*30877f79SAndroid Build Coastguard Worker * Correctly populate `Format.label` for audio only HLS streams 139*30877f79SAndroid Build Coastguard Worker ([#9608](https://github.com/google/ExoPlayer/issues/9608)). 140*30877f79SAndroid Build Coastguard Worker 141*30877f79SAndroid Build Coastguard Worker### 2.16.0 (2021-11-04) 142*30877f79SAndroid Build Coastguard Worker 143*30877f79SAndroid Build Coastguard Worker* Core Library: 144*30877f79SAndroid Build Coastguard Worker * Deprecate `SimpleExoPlayer`. All functionality has been moved to 145*30877f79SAndroid Build Coastguard Worker `ExoPlayer` instead. `ExoPlayer.Builder` can be used instead of 146*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.Builder`. 147*30877f79SAndroid Build Coastguard Worker * Add track selection methods to the `Player` interface, for example, 148*30877f79SAndroid Build Coastguard Worker `Player.getCurrentTracksInfo` and `Player.setTrackSelectionParameters`. 149*30877f79SAndroid Build Coastguard Worker These methods can be used instead of directly accessing the track 150*30877f79SAndroid Build Coastguard Worker selector. 151*30877f79SAndroid Build Coastguard Worker * Enable MediaCodec asynchronous queueing by default on devices with API 152*30877f79SAndroid Build Coastguard Worker level >= 31. Add methods in `DefaultMediaCodecRendererFactory` and 153*30877f79SAndroid Build Coastguard Worker `DefaultRenderersFactory` to force enable or force disable asynchronous 154*30877f79SAndroid Build Coastguard Worker queueing ([6348](https://github.com/google/ExoPlayer/issues/6348)). 155*30877f79SAndroid Build Coastguard Worker * Remove final dependency on `jcenter()`. 156*30877f79SAndroid Build Coastguard Worker * Fix `mediaMetadata` being reset when media is repeated 157*30877f79SAndroid Build Coastguard Worker ([#9458](https://github.com/google/ExoPlayer/issues/9458)). 158*30877f79SAndroid Build Coastguard Worker * Adjust `ExoPlayer` `MediaMetadata` update priority, such that values 159*30877f79SAndroid Build Coastguard Worker input through the `MediaItem.MediaMetadata` are used above media derived 160*30877f79SAndroid Build Coastguard Worker values. 161*30877f79SAndroid Build Coastguard Worker * Move `com.google.android.exoplayer2.device.DeviceInfo` to 162*30877f79SAndroid Build Coastguard Worker `com.google.android.exoplayer2.DeviceInfo`. 163*30877f79SAndroid Build Coastguard Worker * Move `com.google.android.exoplayer2.drm.DecryptionException` to 164*30877f79SAndroid Build Coastguard Worker `com.google.android.exoplayer2.decoder.CryptoException`. 165*30877f79SAndroid Build Coastguard Worker * Move `com.google.android.exoplayer2.upstream.cache.CachedRegionTracker` 166*30877f79SAndroid Build Coastguard Worker to `com.google.android.exoplayer2.upstream.CachedRegionTracker`. 167*30877f79SAndroid Build Coastguard Worker * Move `Player.addListener(EventListener)` and 168*30877f79SAndroid Build Coastguard Worker `Player.removeListener(EventListener)` out of `Player` into subclasses. 169*30877f79SAndroid Build Coastguard Worker* Android 12 compatibility: 170*30877f79SAndroid Build Coastguard Worker * Keep `DownloadService` started and in the foreground whilst waiting for 171*30877f79SAndroid Build Coastguard Worker requirements to be met on Android 12. This is necessary due to new 172*30877f79SAndroid Build Coastguard Worker [foreground service launch restrictions](https://developer.android.com/about/versions/12/foreground-services). 173*30877f79SAndroid Build Coastguard Worker `DownloadService.getScheduler` will not be called on Android 12 devices. 174*30877f79SAndroid Build Coastguard Worker * Disable platform transcoding when playing content URIs on Android 12. 175*30877f79SAndroid Build Coastguard Worker * Add `ExoPlayer.setVideoChangeFrameRateStrategy` to allow disabling of 176*30877f79SAndroid Build Coastguard Worker calls from the player to `Surface.setFrameRate`. This is useful for 177*30877f79SAndroid Build Coastguard Worker applications wanting to call `Surface.setFrameRate` directly from 178*30877f79SAndroid Build Coastguard Worker application code with Android 12's `Surface.CHANGE_FRAME_RATE_ALWAYS`. 179*30877f79SAndroid Build Coastguard Worker * Upgrade the WorkManager extension to depend on 180*30877f79SAndroid Build Coastguard Worker `androidx.work:work-runtime:2.7.0`. Earlier versions of `work-runtime` 181*30877f79SAndroid Build Coastguard Worker are not compatible with apps targeting Android 12, and will crash with 182*30877f79SAndroid Build Coastguard Worker an `IllegalArgumentException` when creating `PendingIntent`s 183*30877f79SAndroid Build Coastguard Worker ([#9181](https://github.com/google/ExoPlayer/issues/9181)). 184*30877f79SAndroid Build Coastguard Worker* Video: 185*30877f79SAndroid Build Coastguard Worker * Fix bug in `MediaCodecVideoRenderer` that resulted in re-using a 186*30877f79SAndroid Build Coastguard Worker released `Surface` when playing without an app-provided `Surface` 187*30877f79SAndroid Build Coastguard Worker ([#9476](https://github.com/google/ExoPlayer/issues/9476)). 188*30877f79SAndroid Build Coastguard Worker* DRM: 189*30877f79SAndroid Build Coastguard Worker * Log an error (instead of throwing `IllegalStateException`) when calling 190*30877f79SAndroid Build Coastguard Worker `DefaultDrmSession#release()` on a fully released session 191*30877f79SAndroid Build Coastguard Worker ([#9392](https://github.com/google/ExoPlayer/issues/9392)). 192*30877f79SAndroid Build Coastguard Worker* UI: 193*30877f79SAndroid Build Coastguard Worker * `SubtitleView` no longer implements `TextOutput`. `SubtitleView` 194*30877f79SAndroid Build Coastguard Worker implements `Player.Listener`, so can be registered to a player with 195*30877f79SAndroid Build Coastguard Worker `Player.addListener`. 196*30877f79SAndroid Build Coastguard Worker * Fix initial timestamp display in `PlayerControlView` 197*30877f79SAndroid Build Coastguard Worker ([#9524](https://github.com/google/ExoPlayer/issues/9254)). 198*30877f79SAndroid Build Coastguard Worker * Fix capitalization of languages in the track selector 199*30877f79SAndroid Build Coastguard Worker ([#9452](https://github.com/google/ExoPlayer/issues/9452)). 200*30877f79SAndroid Build Coastguard Worker* Extractors: 201*30877f79SAndroid Build Coastguard Worker * MP4: Correctly handle HEVC tracks with pixel aspect ratios other than 1. 202*30877f79SAndroid Build Coastguard Worker * MP4: Add support for Dolby TrueHD (only for unfragmented streams) 203*30877f79SAndroid Build Coastguard Worker ([#9496](https://github.com/google/ExoPlayer/issues/9496)). 204*30877f79SAndroid Build Coastguard Worker * MP4: Avoid throwing `ArrayIndexOutOfBoundsException` when parsing 205*30877f79SAndroid Build Coastguard Worker invalid `colr` boxes produced by some device cameras 206*30877f79SAndroid Build Coastguard Worker ([#9332](https://github.com/google/ExoPlayer/issues/9332)). 207*30877f79SAndroid Build Coastguard Worker * MP4: Parse HDR static metadata from the `clli` and `mdcv` boxes. 208*30877f79SAndroid Build Coastguard Worker * TS: Correctly handle HEVC tracks with pixel aspect ratios other than 1. 209*30877f79SAndroid Build Coastguard Worker * TS: Map stream type 0x80 to H262 210*30877f79SAndroid Build Coastguard Worker ([#9472](https://github.com/google/ExoPlayer/issues/9472)). 211*30877f79SAndroid Build Coastguard Worker* Downloads and caching: 212*30877f79SAndroid Build Coastguard Worker * Modify `DownloadService` behavior when `DownloadService.getScheduler` 213*30877f79SAndroid Build Coastguard Worker returns `null`, or returns a `Scheduler` that does not support the 214*30877f79SAndroid Build Coastguard Worker requirements for downloads to continue. In both cases, `DownloadService` 215*30877f79SAndroid Build Coastguard Worker will now remain started and in the foreground whilst waiting for 216*30877f79SAndroid Build Coastguard Worker requirements to be met. 217*30877f79SAndroid Build Coastguard Worker * Modify `DownloadService` behavior when running on Android 12 and above. 218*30877f79SAndroid Build Coastguard Worker See the "Android 12 compatibility" section above. 219*30877f79SAndroid Build Coastguard Worker* RTSP: 220*30877f79SAndroid Build Coastguard Worker * Support RFC4566 SDP attribute field grammar 221*30877f79SAndroid Build Coastguard Worker ([#9430](https://github.com/google/ExoPlayer/issues/9430)). 222*30877f79SAndroid Build Coastguard Worker* DASH: 223*30877f79SAndroid Build Coastguard Worker * Populate `Format.sampleMimeType`, `width` and `height` for image 224*30877f79SAndroid Build Coastguard Worker `AdaptationSet` elements 225*30877f79SAndroid Build Coastguard Worker ([#9500](https://github.com/google/ExoPlayer/issues/9500)). 226*30877f79SAndroid Build Coastguard Worker* HLS: 227*30877f79SAndroid Build Coastguard Worker * Fix rounding error in HLS playlists 228*30877f79SAndroid Build Coastguard Worker ([#9575](https://github.com/google/ExoPlayer/issues/9575)). 229*30877f79SAndroid Build Coastguard Worker * Fix `NoSuchElementException` thrown when an HLS manifest declares 230*30877f79SAndroid Build Coastguard Worker `#EXT-X-RENDITION-REPORT` at the beginning of the playlist 231*30877f79SAndroid Build Coastguard Worker ([#9592](https://github.com/google/ExoPlayer/issues/9592)). 232*30877f79SAndroid Build Coastguard Worker* RTMP extension: 233*30877f79SAndroid Build Coastguard Worker * Upgrade to `io.antmedia:rtmp_client`, which does not rely on `jcenter()` 234*30877f79SAndroid Build Coastguard Worker ([#9591](https://github.com/google/ExoPlayer/issues/9591)). 235*30877f79SAndroid Build Coastguard Worker* MediaSession extension: 236*30877f79SAndroid Build Coastguard Worker * Rename 237*30877f79SAndroid Build Coastguard Worker `MediaSessionConnector.QueueNavigator#onCurrentWindowIndexChanged` to 238*30877f79SAndroid Build Coastguard Worker `onCurrentMediaItemIndexChanged`. 239*30877f79SAndroid Build Coastguard Worker* Transformer: 240*30877f79SAndroid Build Coastguard Worker * Avoid sending a duplicate timestamp to the encoder with the end of 241*30877f79SAndroid Build Coastguard Worker stream buffer. 242*30877f79SAndroid Build Coastguard Worker* Remove deprecated symbols: 243*30877f79SAndroid Build Coastguard Worker * Remove `Renderer.VIDEO_SCALING_MODE_*` constants. Use identically named 244*30877f79SAndroid Build Coastguard Worker constants in `C` instead. 245*30877f79SAndroid Build Coastguard Worker * Remove `C.MSG_*` constants. Use identically named constants in 246*30877f79SAndroid Build Coastguard Worker `Renderer` instead, except for `C.MSG_SET_SURFACE`, which is replaced 247*30877f79SAndroid Build Coastguard Worker with `Renderer.MSG_SET_VIDEO_OUTPUT`. 248*30877f79SAndroid Build Coastguard Worker * Remove `DeviceListener`. Use `Player.Listener` instead. 249*30877f79SAndroid Build Coastguard Worker * Remove `CacheDataSourceFactory`. Use `CacheDataSource.Factory` instead. 250*30877f79SAndroid Build Coastguard Worker * Remove `CacheDataSinkFactory`. Use `CacheDataSink.Factory` instead. 251*30877f79SAndroid Build Coastguard Worker * Remove `FileDataSourceFactory`. Use `FileDataSource.Factory` instead. 252*30877f79SAndroid Build Coastguard Worker * Remove `SimpleExoPlayer.addMetadataOutput` and `removeMetadataOutput`. 253*30877f79SAndroid Build Coastguard Worker Use `Player.addListener` and `Player.Listener` instead. 254*30877f79SAndroid Build Coastguard Worker * Remove `SimpleExoPlayer.addAudioListener`, `removeAudioListener` and 255*30877f79SAndroid Build Coastguard Worker `AudioListener`. Use `Player.addListener` and `Player.Listener` instead. 256*30877f79SAndroid Build Coastguard Worker * Remove `SimpleExoPlayer.addVideoListener`, `removeVideoListener` and 257*30877f79SAndroid Build Coastguard Worker `VideoListener`. Use `Player.addListener` and `Player.Listener` instead. 258*30877f79SAndroid Build Coastguard Worker * Remove `DefaultHttpDataSourceFactory`. Use 259*30877f79SAndroid Build Coastguard Worker `DefaultHttpDataSource.Factory` instead. 260*30877f79SAndroid Build Coastguard Worker * Remove `SingleSampleMediaSource.createMediaSource(Uri, Format, long)`. 261*30877f79SAndroid Build Coastguard Worker Use `SingleSampleMediaSource.createMediaSource(MediaItem.Subtitle, 262*30877f79SAndroid Build Coastguard Worker long)` instead. 263*30877f79SAndroid Build Coastguard Worker * Remove `HttpDataSource.Factory.getDefaultRequestProperties`. Use 264*30877f79SAndroid Build Coastguard Worker `HttpDataSource.Factory.setDefaultRequestProperties` instead. 265*30877f79SAndroid Build Coastguard Worker * Remove `GvrAudioProcessor` and the GVR extension, which has been 266*30877f79SAndroid Build Coastguard Worker deprecated since 2.11.0. 267*30877f79SAndroid Build Coastguard Worker * Remove `DownloadService.onDownloadChanged` and 268*30877f79SAndroid Build Coastguard Worker `DownloadService.onDownloadRemoved`. Instead, use 269*30877f79SAndroid Build Coastguard Worker `DownloadManager.addListener` to register a listener directly to the 270*30877f79SAndroid Build Coastguard Worker `DownloadManager` returned through `DownloadService.getDownloadManager`. 271*30877f79SAndroid Build Coastguard Worker * Remove `Player.getCurrentStaticMetadata`, 272*30877f79SAndroid Build Coastguard Worker `Player.Listener.onStaticMetadataChanged` and 273*30877f79SAndroid Build Coastguard Worker `Player.EVENT_STATIC_METADATA_CHANGED`. Use `Player.getMediaMetadata`, 274*30877f79SAndroid Build Coastguard Worker `Player.Listener.onMediaMetadataChanged` and 275*30877f79SAndroid Build Coastguard Worker `Player.EVENT_MEDIA_METADATA_CHANGED` for convenient access to 276*30877f79SAndroid Build Coastguard Worker structured metadata, or access the raw static metadata directly from the 277*30877f79SAndroid Build Coastguard Worker `TrackSelection#getFormat()`. 278*30877f79SAndroid Build Coastguard Worker * Remove `ControlDispatcher` and `DefaultControlDispatcher`. Operations 279*30877f79SAndroid Build Coastguard Worker can be customized by using a `ForwardingPlayer`, or when configuring the 280*30877f79SAndroid Build Coastguard Worker player (for example by using 281*30877f79SAndroid Build Coastguard Worker `ExoPlayer.Builder.setSeekBackIncrementMs`). 282*30877f79SAndroid Build Coastguard Worker 283*30877f79SAndroid Build Coastguard Worker### 2.15.1 (2021-09-20) 284*30877f79SAndroid Build Coastguard Worker 285*30877f79SAndroid Build Coastguard Worker* Core Library: 286*30877f79SAndroid Build Coastguard Worker * Fix track selection in `StyledPlayerControlView` when using 287*30877f79SAndroid Build Coastguard Worker `ForwardingPlayer`. 288*30877f79SAndroid Build Coastguard Worker * Fix `FlagSet#equals` on API levels below 24. 289*30877f79SAndroid Build Coastguard Worker * Fix `NullPointerException` being thrown from `CacheDataSource` when 290*30877f79SAndroid Build Coastguard Worker reading a fully cached resource with `DataSpec.position` equal to the 291*30877f79SAndroid Build Coastguard Worker resource length. 292*30877f79SAndroid Build Coastguard Worker * Fix a bug when [depending on ExoPlayer locally](README.md#locally) with 293*30877f79SAndroid Build Coastguard Worker a relative path 294*30877f79SAndroid Build Coastguard Worker ([#9403](https://github.com/google/ExoPlayer/issues/9403)). 295*30877f79SAndroid Build Coastguard Worker * Better handle invalid seek requests. Seeks to positions that are before 296*30877f79SAndroid Build Coastguard Worker the start or after the end of the media are now handled as seeks to the 297*30877f79SAndroid Build Coastguard Worker start and end respectively 298*30877f79SAndroid Build Coastguard Worker ([8906](https://github.com/google/ExoPlayer/issues/8906)). 299*30877f79SAndroid Build Coastguard Worker * Rename `MimeTypes.AUDIO_DTS_UHD` to `MimeTypes.AUDIO_DTS_X` and add 300*30877f79SAndroid Build Coastguard Worker required profile to its value 301*30877f79SAndroid Build Coastguard Worker ([#9429](https://github.com/google/ExoPlayer/issues/9429)). 302*30877f79SAndroid Build Coastguard Worker* Extractors: 303*30877f79SAndroid Build Coastguard Worker * Support TS packets without PTS flag 304*30877f79SAndroid Build Coastguard Worker ([#9294](https://github.com/google/ExoPlayer/issues/9294)). 305*30877f79SAndroid Build Coastguard Worker * Fix issue decoding ID3 tags containing UTF-16 encoded strings 306*30877f79SAndroid Build Coastguard Worker ([#9087](https://github.com/google/ExoPlayer/issues/9087)). 307*30877f79SAndroid Build Coastguard Worker* Video: 308*30877f79SAndroid Build Coastguard Worker * Request smaller decoder input buffers for Dolby Vision. This fixes an 309*30877f79SAndroid Build Coastguard Worker issue that could cause UHD Dolby Vision playbacks to fail on some 310*30877f79SAndroid Build Coastguard Worker devices, including Amazon Fire TV 4K. 311*30877f79SAndroid Build Coastguard Worker* DRM: 312*30877f79SAndroid Build Coastguard Worker * Fix `DefaultDrmSessionManager` to correctly eagerly release preacquired 313*30877f79SAndroid Build Coastguard Worker DRM sessions when there's a shortage of DRM resources on the device. 314*30877f79SAndroid Build Coastguard Worker* Downloads and caching: 315*30877f79SAndroid Build Coastguard Worker * Workaround platform issue that can cause a `SecurityException` to be 316*30877f79SAndroid Build Coastguard Worker thrown from `Requirements.isInternetConnectivityValidated` on devices 317*30877f79SAndroid Build Coastguard Worker running Android 11 318*30877f79SAndroid Build Coastguard Worker ([#9002](https://github.com/google/ExoPlayer/issues/9002)). 319*30877f79SAndroid Build Coastguard Worker* DASH: 320*30877f79SAndroid Build Coastguard Worker * Use identical cache keys for downloading and playing DASH segments 321*30877f79SAndroid Build Coastguard Worker ([#9370](https://github.com/google/ExoPlayer/issues/9370)). 322*30877f79SAndroid Build Coastguard Worker * Fix base URL selection and load error handling when base URLs are shared 323*30877f79SAndroid Build Coastguard Worker across adaptation sets. 324*30877f79SAndroid Build Coastguard Worker* HLS: 325*30877f79SAndroid Build Coastguard Worker * Fix bug where the player would get stuck if all download attempts fail 326*30877f79SAndroid Build Coastguard Worker and would not raise an error to the application 327*30877f79SAndroid Build Coastguard Worker ([#9390](https://github.com/google/ExoPlayer/issues/9390)). 328*30877f79SAndroid Build Coastguard Worker* RTSP: 329*30877f79SAndroid Build Coastguard Worker * Handle when additional spaces are in SDP's RTPMAP atrribute 330*30877f79SAndroid Build Coastguard Worker ([#9379](https://github.com/google/ExoPlayer/issues/9379)). 331*30877f79SAndroid Build Coastguard Worker * Handle partial URIs in RTP-Info headers 332*30877f79SAndroid Build Coastguard Worker ([#9346](https://github.com/google/ExoPlayer/issues/9346)). 333*30877f79SAndroid Build Coastguard Worker * Fix RTSP Session header handling 334*30877f79SAndroid Build Coastguard Worker ([#9416](https://github.com/google/ExoPlayer/issues/9416)). 335*30877f79SAndroid Build Coastguard Worker * Fix RTSP WWW-Authenticate header parsing 336*30877f79SAndroid Build Coastguard Worker ([#9428](https://github.com/google/ExoPlayer/issues/9428)). 337*30877f79SAndroid Build Coastguard Worker* UI: 338*30877f79SAndroid Build Coastguard Worker * Use `defStyleAttr` when obtaining styled attributes in 339*30877f79SAndroid Build Coastguard Worker `StyledPlayerView`, `PlayerView` and `PlayerControlView` 340*30877f79SAndroid Build Coastguard Worker ([#9024](https://github.com/google/ExoPlayer/issues/9024)). 341*30877f79SAndroid Build Coastguard Worker * Fix accessibility focus in `PlayerControlView` 342*30877f79SAndroid Build Coastguard Worker ([#9111](https://github.com/google/ExoPlayer/issues/9111)). 343*30877f79SAndroid Build Coastguard Worker * Fix issue that `StyledPlayerView` and `PlayerView` don't update UI when 344*30877f79SAndroid Build Coastguard Worker available player commands change. 345*30877f79SAndroid Build Coastguard Worker* Cast extension: 346*30877f79SAndroid Build Coastguard Worker * Implement `CastPlayer.setPlaybackParameters(PlaybackParameters)` to 347*30877f79SAndroid Build Coastguard Worker support setting the playback speed 348*30877f79SAndroid Build Coastguard Worker ([#6784](https://github.com/google/ExoPlayer/issues/6784)). 349*30877f79SAndroid Build Coastguard Worker 350*30877f79SAndroid Build Coastguard Worker### 2.15.0 (2021-08-10) 351*30877f79SAndroid Build Coastguard Worker 352*30877f79SAndroid Build Coastguard Worker* Core Library: 353*30877f79SAndroid Build Coastguard Worker * Add `MediaCodecAdapter.needsReconfiguration` method. 354*30877f79SAndroid Build Coastguard Worker * Add `getSeekBackIncrement`, `seekBack`, `getSeekForwardIncrement`, 355*30877f79SAndroid Build Coastguard Worker `seekForward`, `getMaxSeekToPreviousPosition`, `seekToPrevious` and 356*30877f79SAndroid Build Coastguard Worker `seekToNext` methods to `Player`. 357*30877f79SAndroid Build Coastguard Worker * Rename `Player` methods: 358*30877f79SAndroid Build Coastguard Worker * `hasPrevious` to `hasPreviousWindow`. 359*30877f79SAndroid Build Coastguard Worker * `previous` to `seekToPreviousWindow`. 360*30877f79SAndroid Build Coastguard Worker * `hasNext` to `hasNextWindow`. 361*30877f79SAndroid Build Coastguard Worker * `next` to `seekToNextWindow`. 362*30877f79SAndroid Build Coastguard Worker * Rename `Player` commands: 363*30877f79SAndroid Build Coastguard Worker * `COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM` to 364*30877f79SAndroid Build Coastguard Worker `COMMAND_SEEK_IN_CURRENT_WINDOW`. 365*30877f79SAndroid Build Coastguard Worker * `COMMAND_SEEK_TO_NEXT_MEDIA_ITEM` to `COMMAND_SEEK_TO_NEXT_WINDOW`. 366*30877f79SAndroid Build Coastguard Worker * `COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM` to 367*30877f79SAndroid Build Coastguard Worker `COMMAND_SEEK_TO_PREVIOUS_WINDOW`. 368*30877f79SAndroid Build Coastguard Worker * `COMMAND_SEEK_TO_MEDIA_ITEM` to `COMMAND_SEEK_TO_WINDOW`. 369*30877f79SAndroid Build Coastguard Worker * `COMMAND_GET_MEDIA_ITEMS` to `COMMAND_GET_TIMELINE`. 370*30877f79SAndroid Build Coastguard Worker * Rename `Player.EventFlags` IntDef to `Player.Event`. 371*30877f79SAndroid Build Coastguard Worker * Make `Player` depend on the new `PlaybackException` class instead of 372*30877f79SAndroid Build Coastguard Worker `ExoPlaybackException`: 373*30877f79SAndroid Build Coastguard Worker * `Player.getPlayerError` now returns a `PlaybackException`. 374*30877f79SAndroid Build Coastguard Worker * `Player.Listener.onPlayerError` now receives a `PlaybackException`. 375*30877f79SAndroid Build Coastguard Worker * Add a new listener method `Player.Listener.onPlayerErrorChanged`, 376*30877f79SAndroid Build Coastguard Worker which is equivalent to `onPlayerError` except that it is also called 377*30877f79SAndroid Build Coastguard Worker when the player error becomes `null`. 378*30877f79SAndroid Build Coastguard Worker * `Player` implementations like `ExoPlayer` may use 379*30877f79SAndroid Build Coastguard Worker `PlaybackException` subclasses (like `ExoPlaybackException`), so 380*30877f79SAndroid Build Coastguard Worker users can downcast the `PlaybackException` instance to obtain 381*30877f79SAndroid Build Coastguard Worker implementation-specific fields (like 382*30877f79SAndroid Build Coastguard Worker `ExoPlaybackException.rendererIndex`). 383*30877f79SAndroid Build Coastguard Worker * `PlaybackException` introduces an `errorCode` which identifies the cause 384*30877f79SAndroid Build Coastguard Worker of the failure in order to simplify error handling 385*30877f79SAndroid Build Coastguard Worker ([#1611](https://github.com/google/ExoPlayer/issues/1611)). 386*30877f79SAndroid Build Coastguard Worker * Add a `DefaultMediaDescriptionAdapter` for the 387*30877f79SAndroid Build Coastguard Worker `PlayerNotificationManager`, that makes use of the `Player` 388*30877f79SAndroid Build Coastguard Worker `MediaMetadata` to populate the notification fields. 389*30877f79SAndroid Build Coastguard Worker * Add `@FallbackType` to `LoadErrorHandlingPolicy` to support 390*30877f79SAndroid Build Coastguard Worker customization of the exclusion duration for locations and tracks. 391*30877f79SAndroid Build Coastguard Worker * Change interface of `LoadErrorHandlingPolicy` to support configuring the 392*30877f79SAndroid Build Coastguard Worker behavior of track and location fallback. Location fallback is currently 393*30877f79SAndroid Build Coastguard Worker only supported for DASH manifests with multiple base URLs. 394*30877f79SAndroid Build Coastguard Worker * Restrict use of `AudioTrack.isDirectPlaybackSupported` to TVs, to avoid 395*30877f79SAndroid Build Coastguard Worker listing audio offload encodings as supported for passthrough mode on 396*30877f79SAndroid Build Coastguard Worker mobile devices 397*30877f79SAndroid Build Coastguard Worker ([#9239](https://github.com/google/ExoPlayer/issues/9239)). 398*30877f79SAndroid Build Coastguard Worker* Extractors: 399*30877f79SAndroid Build Coastguard Worker * Add support for DTS-UHD in MP4 400*30877f79SAndroid Build Coastguard Worker ([#9163](https://github.com/google/ExoPlayer/issues/9163)). 401*30877f79SAndroid Build Coastguard Worker* Text: 402*30877f79SAndroid Build Coastguard Worker * TTML: Inherit the `rubyPosition` value from a containing `<span 403*30877f79SAndroid Build Coastguard Worker ruby="container">` element. 404*30877f79SAndroid Build Coastguard Worker * WebVTT: Add support for CSS `font-size` property 405*30877f79SAndroid Build Coastguard Worker ([#8964](https://github.com/google/ExoPlayer/issues/8964)). 406*30877f79SAndroid Build Coastguard Worker* Ad playback: 407*30877f79SAndroid Build Coastguard Worker * Support changing ad break positions in the player logic 408*30877f79SAndroid Build Coastguard Worker ([#5067](https://github.com/google/ExoPlayer/issues/5067)). 409*30877f79SAndroid Build Coastguard Worker * Support resuming content with an offset after an ad group. 410*30877f79SAndroid Build Coastguard Worker* UI: 411*30877f79SAndroid Build Coastguard Worker * Add `setUseRewindAction` and `setUseFastForwardAction` to 412*30877f79SAndroid Build Coastguard Worker `PlayerNotificationManager`, and `setUseFastForwardActionInCompactView` 413*30877f79SAndroid Build Coastguard Worker and `setUseRewindActionInCompactView` to show the actions in compact 414*30877f79SAndroid Build Coastguard Worker view mode. 415*30877f79SAndroid Build Coastguard Worker * Remove `rewind_increment` and `fastforward_increment` attributes from 416*30877f79SAndroid Build Coastguard Worker `PlayerControlView` and `StyledPlayerControlView`. These increments can 417*30877f79SAndroid Build Coastguard Worker be customized by configuring the `Player` (see `setSeekBackIncrementMs` 418*30877f79SAndroid Build Coastguard Worker and `setSeekForwardIncrementMs` in `SimpleExoPlayer.Builder`), or by 419*30877f79SAndroid Build Coastguard Worker using a `ForwardingPlayer` that overrides `getSeekBackIncrement`, 420*30877f79SAndroid Build Coastguard Worker `seekBack`, `getSeekForwardIncrement` and `seekForward`. The rewind and 421*30877f79SAndroid Build Coastguard Worker fast forward buttons can be disabled by using a `ForwardingPlayer` that 422*30877f79SAndroid Build Coastguard Worker removes `COMMAND_SEEK_BACK` and `COMMAND_SEEK_FORWARD` from the 423*30877f79SAndroid Build Coastguard Worker available commands. 424*30877f79SAndroid Build Coastguard Worker * Update `DefaultControlDispatcher` `getRewindIncrementMs` and 425*30877f79SAndroid Build Coastguard Worker `getFastForwardIncrementMs` to take the player as parameter. 426*30877f79SAndroid Build Coastguard Worker* DASH: 427*30877f79SAndroid Build Coastguard Worker * Add support for multiple base URLs and DVB attributes in the manifest. 428*30877f79SAndroid Build Coastguard Worker Apps that are using `DefaultLoadErrorHandlingPolicy` with such manifests 429*30877f79SAndroid Build Coastguard Worker have base URL fallback automatically enabled 430*30877f79SAndroid Build Coastguard Worker ([#771](https://github.com/google/ExoPlayer/issues/771), 431*30877f79SAndroid Build Coastguard Worker [#7654](https://github.com/google/ExoPlayer/issues/7654)). 432*30877f79SAndroid Build Coastguard Worker* HLS: 433*30877f79SAndroid Build Coastguard Worker * Fix issue that could cause some playbacks to be stuck buffering 434*30877f79SAndroid Build Coastguard Worker ([#8850](https://github.com/google/ExoPlayer/issues/8850), 435*30877f79SAndroid Build Coastguard Worker [#9153](https://github.com/google/ExoPlayer/issues/9153)). 436*30877f79SAndroid Build Coastguard Worker * Report audio track type in 437*30877f79SAndroid Build Coastguard Worker `AnalyticsListener.onDownstreamFormatChanged()` for audio-only 438*30877f79SAndroid Build Coastguard Worker playlists, so that the `PlaybackStatsListener` can derive audio 439*30877f79SAndroid Build Coastguard Worker format-related information 440*30877f79SAndroid Build Coastguard Worker ([#9175](https://github.com/google/ExoPlayer/issues/9175)). 441*30877f79SAndroid Build Coastguard Worker* RTSP: 442*30877f79SAndroid Build Coastguard Worker * Use standard RTSP header names 443*30877f79SAndroid Build Coastguard Worker ([#9182](https://github.com/google/ExoPlayer/issues/9182)). 444*30877f79SAndroid Build Coastguard Worker * Handle an extra semicolon in SDP fmtp attribute 445*30877f79SAndroid Build Coastguard Worker ([#9247](https://github.com/google/ExoPlayer/pull/9247)). 446*30877f79SAndroid Build Coastguard Worker * Fix handling of special characters in the RTSP session ID 447*30877f79SAndroid Build Coastguard Worker ([#9254](https://github.com/google/ExoPlayer/issues/9254)). 448*30877f79SAndroid Build Coastguard Worker* SmoothStreaming: 449*30877f79SAndroid Build Coastguard Worker * Propagate `StreamIndex` element `Name` attribute value as `Format` label 450*30877f79SAndroid Build Coastguard Worker ([#9252](https://github.com/google/ExoPlayer/issues/9252)). 451*30877f79SAndroid Build Coastguard Worker* Cronet extension: 452*30877f79SAndroid Build Coastguard Worker * Add `CronetDataSource.Factory.setRequestPriority` to allow setting the 453*30877f79SAndroid Build Coastguard Worker priority of requests made by `CronetDataSource` instances. 454*30877f79SAndroid Build Coastguard Worker* OkHttp extension: 455*30877f79SAndroid Build Coastguard Worker * Switch to OkHttp 4.9.1. This increases the extension's minimum SDK 456*30877f79SAndroid Build Coastguard Worker version requirement from 16 to 21. 457*30877f79SAndroid Build Coastguard Worker* Remove deprecated symbols: 458*30877f79SAndroid Build Coastguard Worker * Remove `CastPlayer` specific playlist manipulation methods. Use 459*30877f79SAndroid Build Coastguard Worker `setMediaItems`, `addMediaItems`, `removeMediaItem` and `moveMediaItem` 460*30877f79SAndroid Build Coastguard Worker instead. 461*30877f79SAndroid Build Coastguard Worker * Remove `Format.create` methods. Use `Format.Builder` instead. 462*30877f79SAndroid Build Coastguard Worker * Remove `MediaSource.getTag`. Use `MediaSource.getMediaItem` and 463*30877f79SAndroid Build Coastguard Worker `MediaItem.PlaybackProperties.tag` instead. 464*30877f79SAndroid Build Coastguard Worker * Remove `PlaybackPreparer`. UI components that previously had 465*30877f79SAndroid Build Coastguard Worker `setPlaybackPreparer` methods will now call `Player.prepare` by default. 466*30877f79SAndroid Build Coastguard Worker If this behavior is sufficient, use of `PlaybackPreparer` can be removed 467*30877f79SAndroid Build Coastguard Worker from application code without replacement. For custom preparation logic, 468*30877f79SAndroid Build Coastguard Worker use a `ForwardingPlayer` that implements custom preparation logic in 469*30877f79SAndroid Build Coastguard Worker `prepare`. 470*30877f79SAndroid Build Coastguard Worker * Remove `Player.Listener.onTimelineChanged(Timeline, Object, int)`. Use 471*30877f79SAndroid Build Coastguard Worker `Player.Listener.onTimelineChanged(Timeline, int)` instead. The manifest 472*30877f79SAndroid Build Coastguard Worker can be accessed using `Player.getCurrentManifest`. 473*30877f79SAndroid Build Coastguard Worker * Remove `Player.getCurrentTag`. Use `Player.getCurrentMediaItem` and 474*30877f79SAndroid Build Coastguard Worker `MediaItem.PlaybackProperties.tag` instead. 475*30877f79SAndroid Build Coastguard Worker * Remove `Player.getPlaybackError`. Use `Player.getPlayerError` instead. 476*30877f79SAndroid Build Coastguard Worker * Remove `PlayerNotificationManager` constructors and `createWith` 477*30877f79SAndroid Build Coastguard Worker methods. Use `PlayerNotificationManager.Builder` instead. 478*30877f79SAndroid Build Coastguard Worker * Remove `PlayerNotificationManager.setNotificationListener`. Use 479*30877f79SAndroid Build Coastguard Worker `PlayerNotificationManager.Builder.setNotificationListener` instead. 480*30877f79SAndroid Build Coastguard Worker * Remove `PlayerNotificationManager` `setUseNavigationActions` and 481*30877f79SAndroid Build Coastguard Worker `setUseNavigationActionsInCompactView`. Use `setUseNextAction`, 482*30877f79SAndroid Build Coastguard Worker `setUsePreviousAction`, `setUseNextActionInCompactView` and 483*30877f79SAndroid Build Coastguard Worker `setUsePreviousActionInCompactView` instead. 484*30877f79SAndroid Build Coastguard Worker * Remove `setRewindIncrementMs` and `setFastForwardIncrementMs` from UI 485*30877f79SAndroid Build Coastguard Worker components. These increments can be customized by configuring the 486*30877f79SAndroid Build Coastguard Worker `Player` (see `setSeekBackIncrementMs` and `setSeekForwardIncrementMs` 487*30877f79SAndroid Build Coastguard Worker in `SimpleExoPlayer.Builder`), or by using a `ForwardingPlayer` that 488*30877f79SAndroid Build Coastguard Worker overrides `getSeekBackIncrement`, `seekBack`, `getSeekForwardIncrement` 489*30877f79SAndroid Build Coastguard Worker and `seekForward`. The rewind and fast forward buttons can be disabled 490*30877f79SAndroid Build Coastguard Worker by using a `ForwardingPlayer` that removes `COMMAND_SEEK_BACK` and 491*30877f79SAndroid Build Coastguard Worker `COMMAND_SEEK_FORWARD` from the available commands. 492*30877f79SAndroid Build Coastguard Worker * Remove `Timeline.getWindow(int, Window, boolean)`. Use 493*30877f79SAndroid Build Coastguard Worker `Timeline.getWindow(int, Window)` instead, which will always set tags. 494*30877f79SAndroid Build Coastguard Worker 495*30877f79SAndroid Build Coastguard Worker### 2.14.2 (2021-07-20) 496*30877f79SAndroid Build Coastguard Worker 497*30877f79SAndroid Build Coastguard Worker* Core Library: 498*30877f79SAndroid Build Coastguard Worker * Explicitly mark several methods on `SimpleExoPlayer` as `@Deprecated`. 499*30877f79SAndroid Build Coastguard Worker These methods are all overrides and are already deprecated on `Player` 500*30877f79SAndroid Build Coastguard Worker and the respective `ExoPlayer` component classes (since 2.14.0). 501*30877f79SAndroid Build Coastguard Worker* Video: 502*30877f79SAndroid Build Coastguard Worker * Fix `IncorrectContextUseViolation` strict mode warning on Android 11 503*30877f79SAndroid Build Coastguard Worker ([#8246](https://github.com/google/ExoPlayer/pull/8246)). 504*30877f79SAndroid Build Coastguard Worker* Audio: 505*30877f79SAndroid Build Coastguard Worker * Fix track selection for E-AC-3 streams. 506*30877f79SAndroid Build Coastguard Worker * Use `AudioTrack.isDirectPlaybackSupported` to check for encoded audio 507*30877f79SAndroid Build Coastguard Worker passthrough capability from API 29 onwards, instead of using the HDMI 508*30877f79SAndroid Build Coastguard Worker audio plug intent 509*30877f79SAndroid Build Coastguard Worker ([#6500](https://github.com/google/ExoPlayer/pull/6500)). 510*30877f79SAndroid Build Coastguard Worker* Extractors: 511*30877f79SAndroid Build Coastguard Worker * Fix issue where a `trun` atom could be associated with the wrong track 512*30877f79SAndroid Build Coastguard Worker in an FMP4 stream 513*30877f79SAndroid Build Coastguard Worker ([#9056](https://github.com/google/ExoPlayer/pull/9056)). The fix 514*30877f79SAndroid Build Coastguard Worker removes a previous workaround to handle content in which the `track_ID` 515*30877f79SAndroid Build Coastguard Worker is set incorrectly 516*30877f79SAndroid Build Coastguard Worker ([#4083](https://github.com/google/ExoPlayer/issues/4083)). Such content 517*30877f79SAndroid Build Coastguard Worker is malformed and should be re-encoded. 518*30877f79SAndroid Build Coastguard Worker * Improve support for truncated Ogg streams 519*30877f79SAndroid Build Coastguard Worker ([#7608](https://github.com/google/ExoPlayer/issues/7608)). 520*30877f79SAndroid Build Coastguard Worker * Add support for MP4 H263 atom type 521*30877f79SAndroid Build Coastguard Worker ([#9158](https://github.com/google/ExoPlayer/issues/9158)). 522*30877f79SAndroid Build Coastguard Worker * Fix issue around TS synchronization when reading a file's duration 523*30877f79SAndroid Build Coastguard Worker ([#9100](https://github.com/google/ExoPlayer/pull/9100)). 524*30877f79SAndroid Build Coastguard Worker* HLS: 525*30877f79SAndroid Build Coastguard Worker * Fix issue where playback of a live event could become stuck rather than 526*30877f79SAndroid Build Coastguard Worker transitioning to `STATE_ENDED` when the event ends 527*30877f79SAndroid Build Coastguard Worker ([#9067](https://github.com/google/ExoPlayer/issues/9067)). 528*30877f79SAndroid Build Coastguard Worker * Fix issue where a new initialization segment, as specified by an 529*30877f79SAndroid Build Coastguard Worker `EXT-X-MAP` tag in a media playlist, would not be loaded when 530*30877f79SAndroid Build Coastguard Worker encountered during playback 531*30877f79SAndroid Build Coastguard Worker ([#9004](https://github.com/google/ExoPlayer/issues/9004)). 532*30877f79SAndroid Build Coastguard Worker * Forward the `FRAME-RATE` value from the master playlist to renditions. 533*30877f79SAndroid Build Coastguard Worker ([#8960](https://github.com/google/ExoPlayer/issues/8960)). 534*30877f79SAndroid Build Coastguard Worker * Fix issue where HLS events would start at positions greater than 535*30877f79SAndroid Build Coastguard Worker specified by an `EXT-X-START` tag when placed in a playlist 536*30877f79SAndroid Build Coastguard Worker ([#9037](https://github.com/google/ExoPlayer/issues/9037)). 537*30877f79SAndroid Build Coastguard Worker* Ad playback: 538*30877f79SAndroid Build Coastguard Worker * Use the content URI when auto-generating an ad ID (in addition to the 539*30877f79SAndroid Build Coastguard Worker media ID and ad tag URI) 540*30877f79SAndroid Build Coastguard Worker ([#9106](https://github.com/google/ExoPlayer/issues/9106). 541*30877f79SAndroid Build Coastguard Worker* DRM: 542*30877f79SAndroid Build Coastguard Worker * Allow repeated provisioning in `DefaultDrmSession(Manager)`. 543*30877f79SAndroid Build Coastguard Worker * Fix a crash due to `DefaultDrmSessionManager.release()` incorrectly 544*30877f79SAndroid Build Coastguard Worker releasing too many keep-alive `DefaultDrmSession` references, resulting 545*30877f79SAndroid Build Coastguard Worker in `DefaultDrmSession.release()` throwing an `IllegalStateException` 546*30877f79SAndroid Build Coastguard Worker ([#9193](https://github.com/google/ExoPlayer/issues/9193)). 547*30877f79SAndroid Build Coastguard Worker* Metadata: 548*30877f79SAndroid Build Coastguard Worker * Fix handling of emsg messages with an unset duration 549*30877f79SAndroid Build Coastguard Worker ([#9123](https://github.com/google/ExoPlayer/issues/9123)). 550*30877f79SAndroid Build Coastguard Worker* UI: 551*30877f79SAndroid Build Coastguard Worker * Add `PendingIntent.FLAG_IMMUTABLE` when creating broadcast intents in 552*30877f79SAndroid Build Coastguard Worker `PlayerNotificationManager`. This is required by a 553*30877f79SAndroid Build Coastguard Worker [behaviour change](https://developer.android.com/about/versions/12/behavior-changes-12#pending-intent-mutability) 554*30877f79SAndroid Build Coastguard Worker in Android 12. 555*30877f79SAndroid Build Coastguard Worker * Fix focusability of `StyledPlayerView` and `StyledPlayerControlView` 556*30877f79SAndroid Build Coastguard Worker popup menus on API levels prior to 26 557*30877f79SAndroid Build Coastguard Worker ([#9061](https://github.com/google/ExoPlayer/issues/9061)). 558*30877f79SAndroid Build Coastguard Worker * Fix progress bar flickering immediately after the user seeks 559*30877f79SAndroid Build Coastguard Worker ([#9049](https://github.com/google/ExoPlayer/pull/9049)). 560*30877f79SAndroid Build Coastguard Worker * Fix `StyledPlayerView` and `StyledPlayerControlView` popup menu items 561*30877f79SAndroid Build Coastguard Worker not expanding to occupy the full width of the popup 562*30877f79SAndroid Build Coastguard Worker ([#9086](https://github.com/google/ExoPlayer/issues/9086)). 563*30877f79SAndroid Build Coastguard Worker * Don't propagate `AttributeSet` from `SubtitleView` constructor into 564*30877f79SAndroid Build Coastguard Worker `CanvasSubtitleOutput`. Just passing the `Context` is enough, and 565*30877f79SAndroid Build Coastguard Worker ensures programmatic changes to the `SubtitleView` will propagate down. 566*30877f79SAndroid Build Coastguard Worker* RTSP: 567*30877f79SAndroid Build Coastguard Worker * Fix session description (SDP) parsing to use a HashMap-like behaviour 568*30877f79SAndroid Build Coastguard Worker for duplicated attributes. 569*30877f79SAndroid Build Coastguard Worker ([#9014](https://github.com/google/ExoPlayer/issues/9014)). 570*30877f79SAndroid Build Coastguard Worker * Allow using absolute URI in the control attribute in a media description 571*30877f79SAndroid Build Coastguard Worker ([#9183](https://github.com/google/ExoPlayer/issues/9183)). 572*30877f79SAndroid Build Coastguard Worker * Allow the timeout to be customised via 573*30877f79SAndroid Build Coastguard Worker `RtspMediaSource.Factory.setTimeoutMs`. 574*30877f79SAndroid Build Coastguard Worker 575*30877f79SAndroid Build Coastguard Worker### 2.14.1 (2021-06-11) 576*30877f79SAndroid Build Coastguard Worker 577*30877f79SAndroid Build Coastguard Worker* Core Library: 578*30877f79SAndroid Build Coastguard Worker * Fix gradle config to allow specifying a relative path for 579*30877f79SAndroid Build Coastguard Worker `exoplayerRoot` when [depending on ExoPlayer locally](README.md#locally) 580*30877f79SAndroid Build Coastguard Worker ([#8927](https://github.com/google/ExoPlayer/issues/8927)). 581*30877f79SAndroid Build Coastguard Worker * Update `MediaItem.Builder` javadoc to discourage calling setters that 582*30877f79SAndroid Build Coastguard Worker will be (currently) ignored if another setter is not also called. 583*30877f79SAndroid Build Coastguard Worker* Extractors: 584*30877f79SAndroid Build Coastguard Worker * Add support for MPEG-H 3D Audio in MP4 extractors 585*30877f79SAndroid Build Coastguard Worker ([#8860](https://github.com/google/ExoPlayer/pull/8860)). 586*30877f79SAndroid Build Coastguard Worker* Video: 587*30877f79SAndroid Build Coastguard Worker * Fix bug that could cause `CodecException: Error 0xffffffff` to be thrown 588*30877f79SAndroid Build Coastguard Worker from `MediaCodec.native_setSurface` in use cases that involve both 589*30877f79SAndroid Build Coastguard Worker swapping the output `Surface` and a mixture of secure and non-secure 590*30877f79SAndroid Build Coastguard Worker content being played 591*30877f79SAndroid Build Coastguard Worker ([#8776](https://github.com/google/ExoPlayer/issues/8776)). 592*30877f79SAndroid Build Coastguard Worker* HLS: 593*30877f79SAndroid Build Coastguard Worker * Use the `PRECISE` attribute in `EXT-X-START` to select the default start 594*30877f79SAndroid Build Coastguard Worker position. 595*30877f79SAndroid Build Coastguard Worker * Fix a bug where skipping into spliced-in chunks triggered an assertion 596*30877f79SAndroid Build Coastguard Worker error ([#8937](https://github.com/google/ExoPlayer/issues/8937)). 597*30877f79SAndroid Build Coastguard Worker* DRM: 598*30877f79SAndroid Build Coastguard Worker * Keep secure `MediaCodec` instances initialized when disabling (but not 599*30877f79SAndroid Build Coastguard Worker resetting) `MediaCodecRenderer`. This helps re-use secure decoders in 600*30877f79SAndroid Build Coastguard Worker more contexts, which avoids the 'black flash' caused by detaching a 601*30877f79SAndroid Build Coastguard Worker `Surface` from a secure decoder on some devices 602*30877f79SAndroid Build Coastguard Worker ([#8842](https://github.com/google/ExoPlayer/issues/8842)). It will also 603*30877f79SAndroid Build Coastguard Worker result in DRM license refresh network requests while the player is 604*30877f79SAndroid Build Coastguard Worker stopped if `Player#setForegroundMode` is true. 605*30877f79SAndroid Build Coastguard Worker * Fix issue where offline keys were unnecessarily (and incorrectly) 606*30877f79SAndroid Build Coastguard Worker restored into a session before being released. This call sequence is 607*30877f79SAndroid Build Coastguard Worker explicitly disallowed in OEMCrypto v16. 608*30877f79SAndroid Build Coastguard Worker* UI: 609*30877f79SAndroid Build Coastguard Worker * Keep subtitle language features embedded (e.g. rubies & tate-chu-yoko) 610*30877f79SAndroid Build Coastguard Worker in `Cue.text` even when `SubtitleView#setApplyEmbeddedStyles()` is 611*30877f79SAndroid Build Coastguard Worker `false`. 612*30877f79SAndroid Build Coastguard Worker * Fix `NullPointerException` in `StyledPlayerView` that could occur after 613*30877f79SAndroid Build Coastguard Worker calling `StyledPlayerView.setPlayer(null)` 614*30877f79SAndroid Build Coastguard Worker ([#8985](https://github.com/google/ExoPlayer/issues/8985)). 615*30877f79SAndroid Build Coastguard Worker* RTSP: 616*30877f79SAndroid Build Coastguard Worker * Add support for RTSP basic and digest authentication 617*30877f79SAndroid Build Coastguard Worker ([#8941](https://github.com/google/ExoPlayer/issues/8941)). 618*30877f79SAndroid Build Coastguard Worker * Enable using repeat mode and playlist with RTSP 619*30877f79SAndroid Build Coastguard Worker ([#8994](https://github.com/google/ExoPlayer/issues/8994)). 620*30877f79SAndroid Build Coastguard Worker * Add `RtspMediaSource.Factory` option to set the RTSP user agent. 621*30877f79SAndroid Build Coastguard Worker * Add `RtspMediaSource.Factory` option to force using TCP for streaming. 622*30877f79SAndroid Build Coastguard Worker* GL demo app: 623*30877f79SAndroid Build Coastguard Worker * Fix texture transformation to avoid green bars shown on some videos 624*30877f79SAndroid Build Coastguard Worker ([#8992](https://github.com/google/ExoPlayer/issues/8992)). 625*30877f79SAndroid Build Coastguard Worker 626*30877f79SAndroid Build Coastguard Worker### 2.14.0 (2021-05-13) 627*30877f79SAndroid Build Coastguard Worker 628*30877f79SAndroid Build Coastguard Worker* Core Library: 629*30877f79SAndroid Build Coastguard Worker * Move `Player` components to `ExoPlayer`. For example 630*30877f79SAndroid Build Coastguard Worker `Player.VideoComponent` is now `ExoPlayer.VideoComponent`. 631*30877f79SAndroid Build Coastguard Worker * The most used methods of `Player`'s audio, video, text and metadata 632*30877f79SAndroid Build Coastguard Worker components have been added directly to `Player`. 633*30877f79SAndroid Build Coastguard Worker * Add `Player.getAvailableCommands`, `Player.isCommandAvailable` and 634*30877f79SAndroid Build Coastguard Worker `Listener.onAvailableCommandsChanged` to query which commands that can 635*30877f79SAndroid Build Coastguard Worker be executed on the player. 636*30877f79SAndroid Build Coastguard Worker * Add a `Player.Listener` interface to receive all player events. 637*30877f79SAndroid Build Coastguard Worker Component listeners and `EventListener` have been deprecated. 638*30877f79SAndroid Build Coastguard Worker * Add `Player.getMediaMetadata`, which returns a combined and structured 639*30877f79SAndroid Build Coastguard Worker `MediaMetadata` object. Changes to metadata are reported to 640*30877f79SAndroid Build Coastguard Worker `Listener.onMediaMetadataChanged`. 641*30877f79SAndroid Build Coastguard Worker * `Player.setPlaybackParameters` no longer accepts null, use 642*30877f79SAndroid Build Coastguard Worker `PlaybackParameters.DEFAULT` instead. 643*30877f79SAndroid Build Coastguard Worker * Report information about the old and the new playback positions to 644*30877f79SAndroid Build Coastguard Worker `Listener.onPositionDiscontinuity`. Add `DISCONTINUITY_REASON_SKIP` and 645*30877f79SAndroid Build Coastguard Worker `DISCONTINUITY_REASON_REMOVE` as discontinuity reasons, and rename 646*30877f79SAndroid Build Coastguard Worker `DISCONTINUITY_REASON_PERIOD_TRANSITION` to 647*30877f79SAndroid Build Coastguard Worker `DISCONTINUITY_REASON_AUTO_TRANSITION`. Remove 648*30877f79SAndroid Build Coastguard Worker `DISCONTINUITY_REASON_AD_INSERTION`, for which 649*30877f79SAndroid Build Coastguard Worker `DISCONTINUITY_REASON_AUTO_TRANSITION` is used instead 650*30877f79SAndroid Build Coastguard Worker ([#6163](https://github.com/google/ExoPlayer/issues/6163), 651*30877f79SAndroid Build Coastguard Worker [#4768](https://github.com/google/ExoPlayer/issues/4768)). 652*30877f79SAndroid Build Coastguard Worker * Deprecate `ExoPlayer.Builder`. Use `SimpleExoPlayer.Builder` instead. 653*30877f79SAndroid Build Coastguard Worker * Move `Player.getRendererCount` and `Player.getRendererType` to 654*30877f79SAndroid Build Coastguard Worker `ExoPlayer`. 655*30877f79SAndroid Build Coastguard Worker * Use an empty string instead of the URI if the media ID is not explicitly 656*30877f79SAndroid Build Coastguard Worker set with `MediaItem.Builder.setMediaId(String)`. 657*30877f79SAndroid Build Coastguard Worker * Remove `MediaCodecRenderer.configureCodec()` and add 658*30877f79SAndroid Build Coastguard Worker `MediaCodecRenderer.getMediaCodecConfiguration()`. The new method is 659*30877f79SAndroid Build Coastguard Worker called just before the `MediaCodec` is created and returns the 660*30877f79SAndroid Build Coastguard Worker parameters needed to create and configure the `MediaCodec` instance. 661*30877f79SAndroid Build Coastguard Worker Applications can override `MediaCodecRenderer.onCodecInitialized()` to 662*30877f79SAndroid Build Coastguard Worker be notified after a `MediaCodec` is initialized, or they can inject a 663*30877f79SAndroid Build Coastguard Worker custom `MediaCodecAdapter.Factory` if they want to control how the 664*30877f79SAndroid Build Coastguard Worker `MediaCodec` is configured. 665*30877f79SAndroid Build Coastguard Worker * Promote `AdaptiveTrackSelection.AdaptationCheckpoint` to `public` 666*30877f79SAndroid Build Coastguard Worker visibility to allow Kotlin subclasses of 667*30877f79SAndroid Build Coastguard Worker `AdaptiveTrackSelection.Factory` 668*30877f79SAndroid Build Coastguard Worker ([#8830](https://github.com/google/ExoPlayer/issues/8830)). 669*30877f79SAndroid Build Coastguard Worker * Fix bug when transitions from content to ad periods called 670*30877f79SAndroid Build Coastguard Worker `onMediaItemTransition` by mistake. 671*30877f79SAndroid Build Coastguard Worker * `AdsLoader.AdViewProvider` and `AdsLoader.OverlayInfo` have been renamed 672*30877f79SAndroid Build Coastguard Worker `com.google.android.exoplayer2.ui.AdViewProvider` and 673*30877f79SAndroid Build Coastguard Worker `com.google.android.exoplayer2.ui.AdOverlayInfo` respectively. 674*30877f79SAndroid Build Coastguard Worker * `CaptionStyleCompat` has been moved to the 675*30877f79SAndroid Build Coastguard Worker `com.google.android.exoplayer2.ui` package. 676*30877f79SAndroid Build Coastguard Worker * `DebugTextViewHelper` has been moved from the `ui` package to the `util` 677*30877f79SAndroid Build Coastguard Worker package. 678*30877f79SAndroid Build Coastguard Worker* RTSP: 679*30877f79SAndroid Build Coastguard Worker * Initial support for RTSP playbacks 680*30877f79SAndroid Build Coastguard Worker ([#55](https://github.com/google/ExoPlayer/issues/55)). 681*30877f79SAndroid Build Coastguard Worker* Downloads and caching: 682*30877f79SAndroid Build Coastguard Worker * Fix `CacheWriter` to correctly handle cases where the request `DataSpec` 683*30877f79SAndroid Build Coastguard Worker extends beyond the end of the underlying resource. Caching will now 684*30877f79SAndroid Build Coastguard Worker succeed in this case, with data up to the end of the resource being 685*30877f79SAndroid Build Coastguard Worker cached. This behaviour is enabled by default, and so the 686*30877f79SAndroid Build Coastguard Worker `allowShortContent` parameter has been removed 687*30877f79SAndroid Build Coastguard Worker ([#7326](https://github.com/google/ExoPlayer/issues/7326)). 688*30877f79SAndroid Build Coastguard Worker * Fix `CacheWriter` to correctly handle `DataSource.close` failures, for 689*30877f79SAndroid Build Coastguard Worker which it cannot be assumed that data was successfully written to the 690*30877f79SAndroid Build Coastguard Worker cache. 691*30877f79SAndroid Build Coastguard Worker* DRM: 692*30877f79SAndroid Build Coastguard Worker * Prepare DRM sessions (and fetch keys) ahead of the playback position 693*30877f79SAndroid Build Coastguard Worker ([#4133](https://github.com/google/ExoPlayer/issues/4133)). 694*30877f79SAndroid Build Coastguard Worker * Only dispatch DRM session acquire and release events once per period 695*30877f79SAndroid Build Coastguard Worker when playing content that uses the same encryption keys for both audio & 696*30877f79SAndroid Build Coastguard Worker video tracks. Previously, separate acquire and release events were 697*30877f79SAndroid Build Coastguard Worker dispatched for each track in each period. 698*30877f79SAndroid Build Coastguard Worker * Include the session state in DRM session-acquired listener methods. 699*30877f79SAndroid Build Coastguard Worker* UI: 700*30877f79SAndroid Build Coastguard Worker * Add `PlayerNotificationManager.Builder`, with the ability to specify 701*30877f79SAndroid Build Coastguard Worker which group the notification should belong to. 702*30877f79SAndroid Build Coastguard Worker * Remove `setUseSensorRotation` from `PlayerView` and `StyledPlayerView`. 703*30877f79SAndroid Build Coastguard Worker Instead, cast the view returned by `getVideoSurfaceView` to 704*30877f79SAndroid Build Coastguard Worker `SphericalGLSurfaceView`, and then call `setUseSensorRotation` on the 705*30877f79SAndroid Build Coastguard Worker `SphericalGLSurfaceView` directly. 706*30877f79SAndroid Build Coastguard Worker* Analytics: 707*30877f79SAndroid Build Coastguard Worker * Add `onAudioCodecError` and `onVideoCodecError` to `AnalyticsListener`. 708*30877f79SAndroid Build Coastguard Worker* Video: 709*30877f79SAndroid Build Coastguard Worker * Add `Player.getVideoSize()` to retrieve the current size of the video 710*30877f79SAndroid Build Coastguard Worker stream. Add `Listener.onVideoSizeChanged(VideoSize)` and deprecate 711*30877f79SAndroid Build Coastguard Worker `Listener.onVideoSizeChanged(int, int, int, float)`. 712*30877f79SAndroid Build Coastguard Worker* Audio: 713*30877f79SAndroid Build Coastguard Worker * Report unexpected audio discontinuities to 714*30877f79SAndroid Build Coastguard Worker `AnalyticsListener.onAudioSinkError` 715*30877f79SAndroid Build Coastguard Worker ([#6384](https://github.com/google/ExoPlayer/issues/6384)). 716*30877f79SAndroid Build Coastguard Worker * Allow forcing offload for gapless content even if gapless playback is 717*30877f79SAndroid Build Coastguard Worker not supported. 718*30877f79SAndroid Build Coastguard Worker * Allow fall back from DTS-HD to DTS when playing via passthrough. 719*30877f79SAndroid Build Coastguard Worker* Text: 720*30877f79SAndroid Build Coastguard Worker * Fix overlapping lines when using `SubtitleView.VIEW_TYPE_WEB`. 721*30877f79SAndroid Build Coastguard Worker * Parse SSA/ASS underline & strikethrough info in `Style:` lines 722*30877f79SAndroid Build Coastguard Worker ([#8435](https://github.com/google/ExoPlayer/issues/8435)). 723*30877f79SAndroid Build Coastguard Worker * Ensure TTML `tts:textAlign` is correctly propagated from `<p>` nodes to 724*30877f79SAndroid Build Coastguard Worker child nodes. 725*30877f79SAndroid Build Coastguard Worker * Support TTML `ebutts:multiRowAlign` attributes. 726*30877f79SAndroid Build Coastguard Worker* Allow the use of Android platform extractors through 727*30877f79SAndroid Build Coastguard Worker [MediaParser](https://developer.android.com/reference/android/media/MediaParser). 728*30877f79SAndroid Build Coastguard Worker Only supported on API 30+. 729*30877f79SAndroid Build Coastguard Worker * You can use platform extractors for progressive media by passing 730*30877f79SAndroid Build Coastguard Worker `MediaParserExtractorAdapter.FACTORY` when creating a 731*30877f79SAndroid Build Coastguard Worker `ProgressiveMediaSource.Factory`. 732*30877f79SAndroid Build Coastguard Worker * You can use platform extractors for HLS by passing 733*30877f79SAndroid Build Coastguard Worker `MediaParserHlsMediaChunkExtractor.FACTORY` when creating a 734*30877f79SAndroid Build Coastguard Worker `HlsMediaSource.Factory`. 735*30877f79SAndroid Build Coastguard Worker * You can use platform extractors for DASH by passing a 736*30877f79SAndroid Build Coastguard Worker `DefaultDashChunkSource` that uses `MediaParserChunkExtractor.FACTORY` 737*30877f79SAndroid Build Coastguard Worker when creating a `DashMediaSource.Factory`. 738*30877f79SAndroid Build Coastguard Worker* Cast extension: 739*30877f79SAndroid Build Coastguard Worker * Trigger `onMediaItemTransition` event for all reasons except 740*30877f79SAndroid Build Coastguard Worker `MEDIA_ITEM_TRANSITION_REASON_REPEAT`. 741*30877f79SAndroid Build Coastguard Worker* MediaSession extension: 742*30877f79SAndroid Build Coastguard Worker * Remove dependency on `exoplayer-core`, relying only `exoplayer-common` 743*30877f79SAndroid Build Coastguard Worker instead. To achieve this, `TimelineQueueEditor` uses a new 744*30877f79SAndroid Build Coastguard Worker `MediaDescriptionConverter` interface, and no longer relies on 745*30877f79SAndroid Build Coastguard Worker `ConcatenatingMediaSource`. 746*30877f79SAndroid Build Coastguard Worker* Remove deprecated symbols: 747*30877f79SAndroid Build Coastguard Worker * Remove `ExoPlayerFactory`. Use `SimpleExoPlayer.Builder` instead. 748*30877f79SAndroid Build Coastguard Worker * Remove `Player.DefaultEventListener`. Use `Player.Listener` instead. 749*30877f79SAndroid Build Coastguard Worker * Remove `ExtractorMediaSource`. Use `ProgressiveMediaSource` instead. 750*30877f79SAndroid Build Coastguard Worker * Remove `DefaultMediaSourceEventListener`. Use `MediaSourceEventListener` 751*30877f79SAndroid Build Coastguard Worker instead. 752*30877f79SAndroid Build Coastguard Worker * Remove `DashManifest` constructor. Use the remaining constructor with 753*30877f79SAndroid Build Coastguard Worker `programInformation` and `serviceDescription` set to `null` instead. 754*30877f79SAndroid Build Coastguard Worker * Remove `CryptoInfo.getFrameworkCryptoInfoV16`. Use 755*30877f79SAndroid Build Coastguard Worker `CryptoInfo.getFrameworkCryptoInfo` instead. 756*30877f79SAndroid Build Coastguard Worker * Remove `NotificationUtil.createNotificationChannel(Context, String, int, 757*30877f79SAndroid Build Coastguard Worker int)`. Use `createNotificationChannel(Context, String, int, int, int)` 758*30877f79SAndroid Build Coastguard Worker instead. 759*30877f79SAndroid Build Coastguard Worker * Remove `PlayerNotificationManager.setNotificationListener`. Use 760*30877f79SAndroid Build Coastguard Worker `PlayerNotificationManager.Builder.setNotificationListener` instead. 761*30877f79SAndroid Build Coastguard Worker * Remove `PlayerNotificationManager.NotificationListener` 762*30877f79SAndroid Build Coastguard Worker `onNotificationStarted(int, Notification)` and 763*30877f79SAndroid Build Coastguard Worker `onNotificationCancelled(int)`. Use `onNotificationPosted(int, 764*30877f79SAndroid Build Coastguard Worker Notification, boolean)` and `onNotificationCancelled(int, boolean)` 765*30877f79SAndroid Build Coastguard Worker instead. 766*30877f79SAndroid Build Coastguard Worker * Remove `DownloadNotificationUtil`. Use `DownloadNotificationHelper` 767*30877f79SAndroid Build Coastguard Worker instead. 768*30877f79SAndroid Build Coastguard Worker * Remove `extension-jobdispatcher` module. Use the `extension-workmanager` 769*30877f79SAndroid Build Coastguard Worker module instead. 770*30877f79SAndroid Build Coastguard Worker 771*30877f79SAndroid Build Coastguard Worker### 2.13.3 (2021-04-14) 772*30877f79SAndroid Build Coastguard Worker 773*30877f79SAndroid Build Coastguard Worker* Published via the Google Maven repository (i.e., google()) rather than 774*30877f79SAndroid Build Coastguard Worker JCenter. 775*30877f79SAndroid Build Coastguard Worker* Core: 776*30877f79SAndroid Build Coastguard Worker * Reset playback speed when live playback speed control becomes unused 777*30877f79SAndroid Build Coastguard Worker ([#8664](https://github.com/google/ExoPlayer/issues/8664)). 778*30877f79SAndroid Build Coastguard Worker * Fix playback position issue when re-preparing playback after a 779*30877f79SAndroid Build Coastguard Worker `BehindLiveWindowException` 780*30877f79SAndroid Build Coastguard Worker ([#8675](https://github.com/google/ExoPlayer/issues/8675)). 781*30877f79SAndroid Build Coastguard Worker * Assume Dolby Vision content is encoded as H264 when calculating maximum 782*30877f79SAndroid Build Coastguard Worker codec input size 783*30877f79SAndroid Build Coastguard Worker ([#8705](https://github.com/google/ExoPlayer/issues/8705)). 784*30877f79SAndroid Build Coastguard Worker* UI: 785*30877f79SAndroid Build Coastguard Worker * Fix `StyledPlayerView` scrubber not reappearing correctly in some cases 786*30877f79SAndroid Build Coastguard Worker ([#8646](https://github.com/google/ExoPlayer/issues/8646)). 787*30877f79SAndroid Build Coastguard Worker * Fix measurement of `StyledPlayerView` and `StyledPlayerControlView` when 788*30877f79SAndroid Build Coastguard Worker `wrap_content` is used 789*30877f79SAndroid Build Coastguard Worker ([#8726](https://github.com/google/ExoPlayer/issues/8726)). 790*30877f79SAndroid Build Coastguard Worker * Fix `StyledPlayerControlView` to stay in full mode (rather than minimal 791*30877f79SAndroid Build Coastguard Worker mode) when possible 792*30877f79SAndroid Build Coastguard Worker ([#8763](https://github.com/google/ExoPlayer/issues/8763)). 793*30877f79SAndroid Build Coastguard Worker* DASH: 794*30877f79SAndroid Build Coastguard Worker * Parse `forced_subtitle` role from DASH manifests 795*30877f79SAndroid Build Coastguard Worker ([#8781](https://github.com/google/ExoPlayer/issues/8781)). 796*30877f79SAndroid Build Coastguard Worker* DASH: 797*30877f79SAndroid Build Coastguard Worker * Fix rounding error that could cause `SegmentTemplate.getSegmentCount()` 798*30877f79SAndroid Build Coastguard Worker to return incorrect values 799*30877f79SAndroid Build Coastguard Worker ([#8804](https://github.com/google/ExoPlayer/issues/8804)). 800*30877f79SAndroid Build Coastguard Worker* HLS: 801*30877f79SAndroid Build Coastguard Worker * Fix bug of ignoring `EXT-X-START` when setting the live target offset 802*30877f79SAndroid Build Coastguard Worker ([#8764](https://github.com/google/ExoPlayer/pull/8764)). 803*30877f79SAndroid Build Coastguard Worker * Fix incorrect application of byte ranges to `EXT-X-MAP` tags 804*30877f79SAndroid Build Coastguard Worker ([#8783](https://github.com/google/ExoPlayer/issues/8783)). 805*30877f79SAndroid Build Coastguard Worker * Fix issue that could cause playback to become stuck if corresponding 806*30877f79SAndroid Build Coastguard Worker `EXT-X-DISCONTINUITY` tags in different media playlists occur at 807*30877f79SAndroid Build Coastguard Worker different positions in time 808*30877f79SAndroid Build Coastguard Worker ([#8372](https://github.com/google/ExoPlayer/issues/8372)). 809*30877f79SAndroid Build Coastguard Worker * Fix issue that could cause playback of on-demand content to not start in 810*30877f79SAndroid Build Coastguard Worker cases where the media playlists referenced by the master playlist have 811*30877f79SAndroid Build Coastguard Worker different starting `EXT-X-PROGRAM-DATE-TIME` tags. 812*30877f79SAndroid Build Coastguard Worker * Fix container type detection for segments with incorrect file extension 813*30877f79SAndroid Build Coastguard Worker or HTTP Content-Type 814*30877f79SAndroid Build Coastguard Worker ([#8733](https://github.com/google/ExoPlayer/issues/8733)). 815*30877f79SAndroid Build Coastguard Worker* Extractors: 816*30877f79SAndroid Build Coastguard Worker * Add support for `GContainer` and `GContainerItem` XMP namespace prefixes 817*30877f79SAndroid Build Coastguard Worker in JPEG motion photo parsing. 818*30877f79SAndroid Build Coastguard Worker * Allow JFIF APP0 marker segment preceding Exif APP1 segment in 819*30877f79SAndroid Build Coastguard Worker `JpegExtractor`. 820*30877f79SAndroid Build Coastguard Worker* Text: 821*30877f79SAndroid Build Coastguard Worker * Parse SSA/ASS bold & italic info in `Style:` lines 822*30877f79SAndroid Build Coastguard Worker ([#8435](https://github.com/google/ExoPlayer/issues/8435)). 823*30877f79SAndroid Build Coastguard Worker * Don't display subtitles after the end position of the current media 824*30877f79SAndroid Build Coastguard Worker period (if known). This ensures sideloaded subtitles respect the end 825*30877f79SAndroid Build Coastguard Worker point of `ClippingMediaPeriod` and prevents content subtitles from 826*30877f79SAndroid Build Coastguard Worker continuing to be displayed over mid-roll ads 827*30877f79SAndroid Build Coastguard Worker ([#5317](https://github.com/google/ExoPlayer/issues/5317), 828*30877f79SAndroid Build Coastguard Worker [#8456](https://github.com/google/ExoPlayer/issues/8456)). 829*30877f79SAndroid Build Coastguard Worker * Fix CEA-708 priority handling to sort cues in the order defined by the 830*30877f79SAndroid Build Coastguard Worker spec ([#8704](https://github.com/google/ExoPlayer/issues/8704)). 831*30877f79SAndroid Build Coastguard Worker * Support TTML `textEmphasis` attributes, used for Japanese boutens. 832*30877f79SAndroid Build Coastguard Worker * Support TTML `shear` attributes. 833*30877f79SAndroid Build Coastguard Worker* Metadata: 834*30877f79SAndroid Build Coastguard Worker * Ensure that timed metadata near the end of a period is not dropped 835*30877f79SAndroid Build Coastguard Worker ([#8710](https://github.com/google/ExoPlayer/issues/8710)). 836*30877f79SAndroid Build Coastguard Worker* Cast extension: 837*30877f79SAndroid Build Coastguard Worker * Fix `onPositionDiscontinuity` event so that it is not triggered with 838*30877f79SAndroid Build Coastguard Worker reason `DISCONTINUITY_REASON_PERIOD_TRANSITION` after a seek to another 839*30877f79SAndroid Build Coastguard Worker media item and so that it is not triggered after a timeline change. 840*30877f79SAndroid Build Coastguard Worker* IMA extension: 841*30877f79SAndroid Build Coastguard Worker * Fix error caused by `AdPlaybackState` ad group times being cleared, 842*30877f79SAndroid Build Coastguard Worker which can occur if the `ImaAdsLoader` is released while an ad is pending 843*30877f79SAndroid Build Coastguard Worker loading ([#8693](https://github.com/google/ExoPlayer/issues/8693)). 844*30877f79SAndroid Build Coastguard Worker * Upgrade IMA SDK dependency to 3.23.0, fixing an issue with 845*30877f79SAndroid Build Coastguard Worker `NullPointerExceptions` within `WebView` callbacks 846*30877f79SAndroid Build Coastguard Worker ([#8447](https://github.com/google/ExoPlayer/issues/8447)). 847*30877f79SAndroid Build Coastguard Worker* FFmpeg extension: Fix playback failure when switching to TrueHD tracks 848*30877f79SAndroid Build Coastguard Worker during playback ([#8616](https://github.com/google/ExoPlayer/issues/8616)). 849*30877f79SAndroid Build Coastguard Worker 850*30877f79SAndroid Build Coastguard Worker### 2.13.2 (2021-02-25) 851*30877f79SAndroid Build Coastguard Worker 852*30877f79SAndroid Build Coastguard Worker* Extractors: 853*30877f79SAndroid Build Coastguard Worker * Add support for MP4 and QuickTime meta atoms that are not full atoms. 854*30877f79SAndroid Build Coastguard Worker* UI: 855*30877f79SAndroid Build Coastguard Worker * Make conditions to enable UI actions consistent in 856*30877f79SAndroid Build Coastguard Worker `DefaultControlDispatcher`, `PlayerControlView`, 857*30877f79SAndroid Build Coastguard Worker `StyledPlayerControlView`, `PlayerNotificationManager` and 858*30877f79SAndroid Build Coastguard Worker `TimelineQueueNavigator`. 859*30877f79SAndroid Build Coastguard Worker * Fix conditions to enable seeking to next/previous media item to handle 860*30877f79SAndroid Build Coastguard Worker the case where a live stream has ended. 861*30877f79SAndroid Build Coastguard Worker* Audio: 862*30877f79SAndroid Build Coastguard Worker * Fix `SimpleExoPlayer` reporting audio session ID as 0 in some cases 863*30877f79SAndroid Build Coastguard Worker ([#8585](https://github.com/google/ExoPlayer/issues/8585)). 864*30877f79SAndroid Build Coastguard Worker* IMA extension: 865*30877f79SAndroid Build Coastguard Worker * Fix a bug where playback could get stuck when seeking into a playlist 866*30877f79SAndroid Build Coastguard Worker item with ads, if the preroll ad had preloaded but the window position 867*30877f79SAndroid Build Coastguard Worker of the seek should instead trigger playback of a midroll. 868*30877f79SAndroid Build Coastguard Worker * Fix a bug with playback of ads in playlists, where the incorrect period 869*30877f79SAndroid Build Coastguard Worker index was used when deciding whether to trigger playback of an ad after 870*30877f79SAndroid Build Coastguard Worker a seek. 871*30877f79SAndroid Build Coastguard Worker* Text: 872*30877f79SAndroid Build Coastguard Worker * Parse SSA/ASS font size in `Style:` lines 873*30877f79SAndroid Build Coastguard Worker ([#8435](https://github.com/google/ExoPlayer/issues/8435)). 874*30877f79SAndroid Build Coastguard Worker* VP9 extension: Update to use NDK r21 875*30877f79SAndroid Build Coastguard Worker ([#8581](https://github.com/google/ExoPlayer/issues/8581)). 876*30877f79SAndroid Build Coastguard Worker* FLAC extension: Update to use NDK r21 877*30877f79SAndroid Build Coastguard Worker ([#8581](https://github.com/google/ExoPlayer/issues/8581)). 878*30877f79SAndroid Build Coastguard Worker* Opus extension: Update to use NDK r21 879*30877f79SAndroid Build Coastguard Worker ([#8581](https://github.com/google/ExoPlayer/issues/8581)). 880*30877f79SAndroid Build Coastguard Worker* FFmpeg extension: Update to use NDK r21 881*30877f79SAndroid Build Coastguard Worker ([#8581](https://github.com/google/ExoPlayer/issues/8581)). 882*30877f79SAndroid Build Coastguard Worker 883*30877f79SAndroid Build Coastguard Worker### 2.13.1 (2021-02-12) 884*30877f79SAndroid Build Coastguard Worker 885*30877f79SAndroid Build Coastguard Worker* Live streaming: 886*30877f79SAndroid Build Coastguard Worker * Fix playback issue for HLS live streams without program date time 887*30877f79SAndroid Build Coastguard Worker information ([#8560](https://github.com/google/ExoPlayer/issues/8560)). 888*30877f79SAndroid Build Coastguard Worker * Fix playback issue for multi-period DASH live streams 889*30877f79SAndroid Build Coastguard Worker ([#8537](https://github.com/google/ExoPlayer/issues/8537)). 890*30877f79SAndroid Build Coastguard Worker * Fix playback failures when playing live streams with video tunneling 891*30877f79SAndroid Build Coastguard Worker enabled ([#8570](https://github.com/google/ExoPlayer/issues/8570)). 892*30877f79SAndroid Build Coastguard Worker* IMA extension: 893*30877f79SAndroid Build Coastguard Worker * Fix handling of repeated ad loads, to avoid ads being discarded if the 894*30877f79SAndroid Build Coastguard Worker user seeks away and then back to a preloaded postroll (for example). 895*30877f79SAndroid Build Coastguard Worker * Fix a bug where an assertion would fail if the player started to buffer 896*30877f79SAndroid Build Coastguard Worker an ad media period before the ad URI was known then an ad state update 897*30877f79SAndroid Build Coastguard Worker arrived that didn't set the ad URI. 898*30877f79SAndroid Build Coastguard Worker * Add `ImaAdsLoader.focusSkipButton` to allow apps to request that the 899*30877f79SAndroid Build Coastguard Worker skip button should receive UI focus, if shown 900*30877f79SAndroid Build Coastguard Worker ([#8565](https://github.com/google/ExoPlayer/issues/8565)). 901*30877f79SAndroid Build Coastguard Worker* DRM: 902*30877f79SAndroid Build Coastguard Worker * Re-use the previous `DrmSessionManager` instance when playing a playlist 903*30877f79SAndroid Build Coastguard Worker (if possible) 904*30877f79SAndroid Build Coastguard Worker ([#8523](https://github.com/google/ExoPlayer/issues/8523)). 905*30877f79SAndroid Build Coastguard Worker * Propagate DRM configuration when creating media sources for ad content 906*30877f79SAndroid Build Coastguard Worker ([#8568](https://github.com/google/ExoPlayer/issues/8568)). 907*30877f79SAndroid Build Coastguard Worker * Only release 'keepalive' references to `DrmSession` in 908*30877f79SAndroid Build Coastguard Worker `DefaultDrmSessionManager#release()` if keepalive is enabled 909*30877f79SAndroid Build Coastguard Worker ([#8576](https://github.com/google/ExoPlayer/issues/8576)). 910*30877f79SAndroid Build Coastguard Worker 911*30877f79SAndroid Build Coastguard Worker### 2.13.0 (2021-02-04) 912*30877f79SAndroid Build Coastguard Worker 913*30877f79SAndroid Build Coastguard Worker* Core library: 914*30877f79SAndroid Build Coastguard Worker * Verify correct thread usage in `SimpleExoPlayer` by default. Opt-out is 915*30877f79SAndroid Build Coastguard Worker still possible until the next major release using 916*30877f79SAndroid Build Coastguard Worker `setThrowsWhenUsingWrongThread(false)` 917*30877f79SAndroid Build Coastguard Worker ([#4463](https://github.com/google/ExoPlayer/issues/4463)). 918*30877f79SAndroid Build Coastguard Worker * Add `Player.getCurrentStaticMetadata` and 919*30877f79SAndroid Build Coastguard Worker `EventListener.onStaticMetadataChanged` to expose static metadata 920*30877f79SAndroid Build Coastguard Worker belonging to the currently playing stream 921*30877f79SAndroid Build Coastguard Worker ([#7266](https://github.com/google/ExoPlayer/issues/7266)). 922*30877f79SAndroid Build Coastguard Worker * Add `PlayerMessage.setLooper` and deprecate `PlayerMessage.setHandler`. 923*30877f79SAndroid Build Coastguard Worker * Add option to `MergingMediaSource` to clip the durations of all sources 924*30877f79SAndroid Build Coastguard Worker to have the same length 925*30877f79SAndroid Build Coastguard Worker ([#8422](https://github.com/google/ExoPlayer/issues/8422)). 926*30877f79SAndroid Build Coastguard Worker * Remove `Player.setVideoDecoderOutputBufferRenderer` from Player API. Use 927*30877f79SAndroid Build Coastguard Worker `setVideoSurfaceView` and `clearVideoSurfaceView` instead. 928*30877f79SAndroid Build Coastguard Worker * Default `SingleSampleMediaSource.treatLoadErrorsAsEndOfStream` to `true` 929*30877f79SAndroid Build Coastguard Worker so that errors loading external subtitle files do not cause playback to 930*30877f79SAndroid Build Coastguard Worker fail ([#8430](https://github.com/google/ExoPlayer/issues/8430)). A 931*30877f79SAndroid Build Coastguard Worker warning will be logged by `SingleSampleMediaPeriod` whenever a load 932*30877f79SAndroid Build Coastguard Worker error is treated as though the end of the stream has been reached. 933*30877f79SAndroid Build Coastguard Worker * Time out on release to prevent ANRs if an underlying platform call is 934*30877f79SAndroid Build Coastguard Worker stuck ([#4352](https://github.com/google/ExoPlayer/issues/4352)). 935*30877f79SAndroid Build Coastguard Worker * Time out when detaching a surface to prevent ANRs if the underlying 936*30877f79SAndroid Build Coastguard Worker platform call is stuck 937*30877f79SAndroid Build Coastguard Worker ([#5887](https://github.com/google/ExoPlayer/issues/5887)). 938*30877f79SAndroid Build Coastguard Worker * Fix bug where `AnalyticsListener` callbacks could arrive in the wrong 939*30877f79SAndroid Build Coastguard Worker order ([#8048](https://github.com/google/ExoPlayer/issues/8048)). 940*30877f79SAndroid Build Coastguard Worker* Media transformation: 941*30877f79SAndroid Build Coastguard Worker * Add a new `transformer` module for converting media streams. The 942*30877f79SAndroid Build Coastguard Worker initially available transformations are changing the container format, 943*30877f79SAndroid Build Coastguard Worker removing tracks, and slow motion flattening. 944*30877f79SAndroid Build Coastguard Worker* Low latency live streaming: 945*30877f79SAndroid Build Coastguard Worker * Support low-latency DASH (also known as ULL-CMAF) and Apple's 946*30877f79SAndroid Build Coastguard Worker low-latency HLS extension. 947*30877f79SAndroid Build Coastguard Worker * Add `LiveConfiguration` to `MediaItem` to define live offset and 948*30877f79SAndroid Build Coastguard Worker playback speed adjustment parameters. The same parameters can be set on 949*30877f79SAndroid Build Coastguard Worker `DefaultMediaSourceFactory` to apply for all `MediaItems`. 950*30877f79SAndroid Build Coastguard Worker * Add `LivePlaybackSpeedControl` to control playback speed adjustments 951*30877f79SAndroid Build Coastguard Worker during live playbacks. Such adjustments allow the player to stay close 952*30877f79SAndroid Build Coastguard Worker to the live offset. `DefaultLivePlaybackSpeedControl` is provided as a 953*30877f79SAndroid Build Coastguard Worker default implementation. 954*30877f79SAndroid Build Coastguard Worker * Add `targetLiveOffsetUs` parameter to `LoadControl.shouldStartPlayback`. 955*30877f79SAndroid Build Coastguard Worker* Extractors: 956*30877f79SAndroid Build Coastguard Worker * Populate codecs string for H.264/AVC in MP4, Matroska and FLV streams to 957*30877f79SAndroid Build Coastguard Worker allow decoder capability checks based on codec profile and level 958*30877f79SAndroid Build Coastguard Worker ([#8393](https://github.com/google/ExoPlayer/issues/8393)). 959*30877f79SAndroid Build Coastguard Worker * Populate codecs string for H.265/HEVC in MP4, Matroska and MPEG-TS 960*30877f79SAndroid Build Coastguard Worker streams to allow decoder capability checks based on codec profile and 961*30877f79SAndroid Build Coastguard Worker level ([#8393](https://github.com/google/ExoPlayer/issues/8393)). 962*30877f79SAndroid Build Coastguard Worker * Add support for playing JPEG motion photos 963*30877f79SAndroid Build Coastguard Worker ([#5405](https://github.com/google/ExoPlayer/issues/5405)). 964*30877f79SAndroid Build Coastguard Worker * Handle sample size mismatches between raw audio `stsd` information and 965*30877f79SAndroid Build Coastguard Worker `stsz` fixed sample size in MP4 extractors. 966*30877f79SAndroid Build Coastguard Worker * Fix Vorbis private codec data parsing in the Matroska extractor 967*30877f79SAndroid Build Coastguard Worker ([#8496](https://github.com/google/ExoPlayer/issues/8496)). 968*30877f79SAndroid Build Coastguard Worker* Track selection: 969*30877f79SAndroid Build Coastguard Worker * Move `Player.getTrackSelector` to the `ExoPlayer` interface. 970*30877f79SAndroid Build Coastguard Worker * Move the mutable parts of `TrackSelection` into an `ExoTrackSelection` 971*30877f79SAndroid Build Coastguard Worker subclass. 972*30877f79SAndroid Build Coastguard Worker * Allow parallel adaptation of video and audio 973*30877f79SAndroid Build Coastguard Worker ([#5111](https://github.com/google/ExoPlayer/issues/5111)). 974*30877f79SAndroid Build Coastguard Worker * Simplify enabling tunneling with `DefaultTrackSelector`. 975*30877f79SAndroid Build Coastguard Worker `ParametersBuilder.setTunnelingAudioSessionId` has been replaced with 976*30877f79SAndroid Build Coastguard Worker `ParametersBuilder.setTunnelingEnabled`. The player's audio session ID 977*30877f79SAndroid Build Coastguard Worker will be used, and so a tunneling specific ID is no longer needed. 978*30877f79SAndroid Build Coastguard Worker * Add additional configuration parameters to `DefaultTrackSelector`. 979*30877f79SAndroid Build Coastguard Worker `DefaultTrackSelector.ParametersBuilder` now includes: 980*30877f79SAndroid Build Coastguard Worker * `setPreferredVideoMimeType`, `setPreferredVideoMimeTypes`, 981*30877f79SAndroid Build Coastguard Worker `setPreferredAudioMimeType` and `setPreferredAudioMimeTypes` for 982*30877f79SAndroid Build Coastguard Worker specifying preferred video and audio MIME type(s) 983*30877f79SAndroid Build Coastguard Worker ([#8320](https://github.com/google/ExoPlayer/issues/8320)). 984*30877f79SAndroid Build Coastguard Worker * `setPreferredAudioLanguages` and `setPreferredTextLanguages` for 985*30877f79SAndroid Build Coastguard Worker specifying multiple preferred audio and text languages. 986*30877f79SAndroid Build Coastguard Worker * `setPreferredAudioRoleFlags` for specifying preferred audio role 987*30877f79SAndroid Build Coastguard Worker flags. 988*30877f79SAndroid Build Coastguard Worker * Forward `Timeline` and `MediaPeriodId` to `TrackSelection.Factory`. 989*30877f79SAndroid Build Coastguard Worker* DASH: 990*30877f79SAndroid Build Coastguard Worker * Support low-latency DASH playback (`availabilityTimeOffset` and 991*30877f79SAndroid Build Coastguard Worker `ServiceDescription` tags) 992*30877f79SAndroid Build Coastguard Worker ([#4904](https://github.com/google/ExoPlayer/issues/4904)). 993*30877f79SAndroid Build Coastguard Worker * Improve logic for determining whether to refresh the manifest when a 994*30877f79SAndroid Build Coastguard Worker chunk load error occurs in a live streams that contains EMSG data 995*30877f79SAndroid Build Coastguard Worker ([#8408](https://github.com/google/ExoPlayer/issues/8408)). 996*30877f79SAndroid Build Coastguard Worker* HLS: 997*30877f79SAndroid Build Coastguard Worker * Support playlist delta updates, blocking playlist reloads and rendition 998*30877f79SAndroid Build Coastguard Worker reports. 999*30877f79SAndroid Build Coastguard Worker * Support low-latency HLS playback (`EXT-X-PART` and preload hints) 1000*30877f79SAndroid Build Coastguard Worker ([#5011](https://github.com/google/ExoPlayer/issues/5011)). 1001*30877f79SAndroid Build Coastguard Worker* UI: 1002*30877f79SAndroid Build Coastguard Worker * Improve `StyledPlayerControlView` button animations. 1003*30877f79SAndroid Build Coastguard Worker * Miscellaneous fixes for `StyledPlayerControlView` in minimal mode. 1004*30877f79SAndroid Build Coastguard Worker* DRM: 1005*30877f79SAndroid Build Coastguard Worker * Fix playback failure when switching from PlayReady protected content to 1006*30877f79SAndroid Build Coastguard Worker Widevine or Clearkey protected content in a playlist. 1007*30877f79SAndroid Build Coastguard Worker * Add `ExoMediaDrm.KeyRequest.getRequestType` 1008*30877f79SAndroid Build Coastguard Worker ([#7847](https://github.com/google/ExoPlayer/issues/7847)). 1009*30877f79SAndroid Build Coastguard Worker * Drop key and provision responses if `DefaultDrmSession` is released 1010*30877f79SAndroid Build Coastguard Worker while waiting for the response. This prevents harmless log messages of 1011*30877f79SAndroid Build Coastguard Worker the form: `IllegalStateException: sending message to a Handler on a dead 1012*30877f79SAndroid Build Coastguard Worker thread` ([#8328](https://github.com/google/ExoPlayer/issues/8328)). 1013*30877f79SAndroid Build Coastguard Worker * Allow apps to fully customize DRM behaviour for each `MediaItem` by 1014*30877f79SAndroid Build Coastguard Worker passing a `DrmSessionManagerProvider` to `MediaSourceFactory` 1015*30877f79SAndroid Build Coastguard Worker ([#8466](https://github.com/google/ExoPlayer/issues/8466)). 1016*30877f79SAndroid Build Coastguard Worker* Analytics: 1017*30877f79SAndroid Build Coastguard Worker * Add an `onEvents` callback to `Player.EventListener` and 1018*30877f79SAndroid Build Coastguard Worker `AnalyticsListener`. When one or more player states change 1019*30877f79SAndroid Build Coastguard Worker simultaneously, `onEvents` is called once after all of the callbacks 1020*30877f79SAndroid Build Coastguard Worker associated with the individual state changes. 1021*30877f79SAndroid Build Coastguard Worker * Pass a `DecoderReuseEvaluation` to `AnalyticsListener`'s 1022*30877f79SAndroid Build Coastguard Worker `onVideoInputFormatChanged` and `onAudioInputFormatChanged` methods. The 1023*30877f79SAndroid Build Coastguard Worker `DecoderReuseEvaluation` indicates whether it was possible to re-use an 1024*30877f79SAndroid Build Coastguard Worker existing decoder instance for the new format, and if not then the 1025*30877f79SAndroid Build Coastguard Worker reasons why. 1026*30877f79SAndroid Build Coastguard Worker* Video: 1027*30877f79SAndroid Build Coastguard Worker * Fall back to AVC/HEVC decoders for Dolby Vision streams with level 10 to 1028*30877f79SAndroid Build Coastguard Worker 13 ([#8530](https://github.com/google/ExoPlayer/issues/8530)). 1029*30877f79SAndroid Build Coastguard Worker * Fix VP9 format capability checks on API level 23 and earlier. The 1030*30877f79SAndroid Build Coastguard Worker platform does not correctly report the VP9 level supported by the 1031*30877f79SAndroid Build Coastguard Worker decoder in this case, so we estimate it based on the decoder's maximum 1032*30877f79SAndroid Build Coastguard Worker supported bitrate. 1033*30877f79SAndroid Build Coastguard Worker* Audio: 1034*30877f79SAndroid Build Coastguard Worker * Fix handling of audio session IDs 1035*30877f79SAndroid Build Coastguard Worker ([#8190](https://github.com/google/ExoPlayer/issues/8190)). 1036*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer` now generates an audio session ID on construction, 1037*30877f79SAndroid Build Coastguard Worker which can be immediately queried by calling 1038*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.getAudioSessionId`. The audio session ID will only 1039*30877f79SAndroid Build Coastguard Worker change if application code calls `SimpleExoPlayer.setAudioSessionId`. 1040*30877f79SAndroid Build Coastguard Worker * Replace `onAudioSessionId` with `onAudioSessionIdChanged` in 1041*30877f79SAndroid Build Coastguard Worker `AudioListener` and `AnalyticsListener`. Note that 1042*30877f79SAndroid Build Coastguard Worker `onAudioSessionIdChanged` is called in fewer cases than 1043*30877f79SAndroid Build Coastguard Worker `onAudioSessionId` was called, due to the improved handling of audio 1044*30877f79SAndroid Build Coastguard Worker session IDs as described above. 1045*30877f79SAndroid Build Coastguard Worker * Retry playback after some types of `AudioTrack` error. 1046*30877f79SAndroid Build Coastguard Worker * Create E-AC3 JOC passthrough `AudioTrack` instances using the maximum 1047*30877f79SAndroid Build Coastguard Worker supported channel count (instead of assuming 6 channels) from API 29. 1048*30877f79SAndroid Build Coastguard Worker* Text: 1049*30877f79SAndroid Build Coastguard Worker * Add support for the SSA `primaryColour` style attribute 1050*30877f79SAndroid Build Coastguard Worker ([#8435](https://github.com/google/ExoPlayer/issues/8435)). 1051*30877f79SAndroid Build Coastguard Worker * Fix CEA-708 sequence number discontinuity handling 1052*30877f79SAndroid Build Coastguard Worker ([#1807](https://github.com/google/ExoPlayer/issues/1807)). 1053*30877f79SAndroid Build Coastguard Worker * Fix CEA-708 handling of unexpectedly small packets 1054*30877f79SAndroid Build Coastguard Worker ([#1807](https://github.com/google/ExoPlayer/issues/1807)). 1055*30877f79SAndroid Build Coastguard Worker* Data sources: 1056*30877f79SAndroid Build Coastguard Worker * For `HttpDataSource` implementations, default to using the user agent of 1057*30877f79SAndroid Build Coastguard Worker the underlying network stack. 1058*30877f79SAndroid Build Coastguard Worker * Deprecate `HttpDataSource.Factory.getDefaultRequestProperties`. 1059*30877f79SAndroid Build Coastguard Worker `HttpDataSource.Factory.setDefaultRequestProperties` instead. 1060*30877f79SAndroid Build Coastguard Worker * Add `DefaultHttpDataSource.Factory` and deprecate 1061*30877f79SAndroid Build Coastguard Worker `DefaultHttpDataSourceFactory`. 1062*30877f79SAndroid Build Coastguard Worker* Metadata retriever: 1063*30877f79SAndroid Build Coastguard Worker * Parse Google Photos HEIC and JPEG motion photo metadata. 1064*30877f79SAndroid Build Coastguard Worker* IMA extension: 1065*30877f79SAndroid Build Coastguard Worker * Add support for playback of ads in playlists 1066*30877f79SAndroid Build Coastguard Worker ([#3750](https://github.com/google/ExoPlayer/issues/3750)). 1067*30877f79SAndroid Build Coastguard Worker * Add `ImaAdsLoader.Builder.setEnableContinuousPlayback` for setting 1068*30877f79SAndroid Build Coastguard Worker whether to request ads for continuous playback. 1069*30877f79SAndroid Build Coastguard Worker * Upgrade IMA SDK dependency to 3.22.0. This fixes leaking of the ad view 1070*30877f79SAndroid Build Coastguard Worker group ([#7344](https://github.com/google/ExoPlayer/issues/7344), 1071*30877f79SAndroid Build Coastguard Worker [#8339](https://github.com/google/ExoPlayer/issues/8339)). 1072*30877f79SAndroid Build Coastguard Worker * Fix a bug that could cause the next content position played after a seek 1073*30877f79SAndroid Build Coastguard Worker to snap back to the cue point of the preceding ad, rather than the 1074*30877f79SAndroid Build Coastguard Worker requested content position. 1075*30877f79SAndroid Build Coastguard Worker * Fix a regression that caused an ad group to be skipped after an initial 1076*30877f79SAndroid Build Coastguard Worker seek to a non-zero position. Unsupported VPAID ads will still be 1077*30877f79SAndroid Build Coastguard Worker skipped, but only after the preload timeout rather than instantly 1078*30877f79SAndroid Build Coastguard Worker ([#8428](https://github.com/google/ExoPlayer/issues/8428), 1079*30877f79SAndroid Build Coastguard Worker [#7832](https://github.com/google/ExoPlayer/issues/7832)). 1080*30877f79SAndroid Build Coastguard Worker * Fix a regression that caused a short ad followed by another ad to be 1081*30877f79SAndroid Build Coastguard Worker skipped due to playback being stuck buffering waiting for the second ad 1082*30877f79SAndroid Build Coastguard Worker to load ([#8492](https://github.com/google/ExoPlayer/issues/8492)). 1083*30877f79SAndroid Build Coastguard Worker* FFmpeg extension: 1084*30877f79SAndroid Build Coastguard Worker * Link the FFmpeg library statically, saving 350KB in binary size on 1085*30877f79SAndroid Build Coastguard Worker average. 1086*30877f79SAndroid Build Coastguard Worker* OkHttp extension: 1087*30877f79SAndroid Build Coastguard Worker * Add `OkHttpDataSource.Factory` and deprecate `OkHttpDataSourceFactory`. 1088*30877f79SAndroid Build Coastguard Worker* Cronet extension: 1089*30877f79SAndroid Build Coastguard Worker * Add `CronetDataSource.Factory` and deprecate `CronetDataSourceFactory`. 1090*30877f79SAndroid Build Coastguard Worker * Support setting the user agent on `CronetDataSource.Factory` and 1091*30877f79SAndroid Build Coastguard Worker `CronetEngineWrapper`. 1092*30877f79SAndroid Build Coastguard Worker* MediaSession extension: 1093*30877f79SAndroid Build Coastguard Worker * Support `setPlaybackSpeed(float)` and disable it by default. Use 1094*30877f79SAndroid Build Coastguard Worker `MediaSessionConnector.setEnabledPlaybackActions(long)` to enable 1095*30877f79SAndroid Build Coastguard Worker ([#8229](https://github.com/google/ExoPlayer/issues/8229)). 1096*30877f79SAndroid Build Coastguard Worker* Remove deprecated symbols: 1097*30877f79SAndroid Build Coastguard Worker * `AdaptiveMediaSourceEventListener`. Use `MediaSourceEventListener` 1098*30877f79SAndroid Build Coastguard Worker instead. 1099*30877f79SAndroid Build Coastguard Worker * `DashMediaSource.Factory.setMinLoadableRetryCount(int)`. Use 1100*30877f79SAndroid Build Coastguard Worker `DashMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)` 1101*30877f79SAndroid Build Coastguard Worker instead. 1102*30877f79SAndroid Build Coastguard Worker * `DefaultAnalyticsListener`. Use `AnalyticsListener` instead. 1103*30877f79SAndroid Build Coastguard Worker * `DefaultLoadControl` constructors. Use `DefaultLoadControl.Builder` 1104*30877f79SAndroid Build Coastguard Worker instead. 1105*30877f79SAndroid Build Coastguard Worker * `DrmInitData.get(UUID)`. Use `DrmInitData.get(int)` and 1106*30877f79SAndroid Build Coastguard Worker `DrmInitData.SchemeData.matches(UUID)` instead. 1107*30877f79SAndroid Build Coastguard Worker * `ExtractorsMediaSource.Factory.setMinLoadableRetryCount(int)`. Use 1108*30877f79SAndroid Build Coastguard Worker `ExtractorsMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)` 1109*30877f79SAndroid Build Coastguard Worker instead. 1110*30877f79SAndroid Build Coastguard Worker * `FixedTrackSelection.Factory`. If you need to disable adaptive selection 1111*30877f79SAndroid Build Coastguard Worker in `DefaultTrackSelector`, enable the 1112*30877f79SAndroid Build Coastguard Worker `DefaultTrackSelector.Parameters.forceHighestSupportedBitrate` flag. 1113*30877f79SAndroid Build Coastguard Worker * `HlsMediaSource.Factory.setMinLoadableRetryCount(int)`. Use 1114*30877f79SAndroid Build Coastguard Worker `HlsMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)` 1115*30877f79SAndroid Build Coastguard Worker instead. 1116*30877f79SAndroid Build Coastguard Worker * `MappedTrackInfo.getTrackFormatSupport(int, int, int)`. Use 1117*30877f79SAndroid Build Coastguard Worker `MappedTrackInfo.getTrackSupport(int, int, int)` instead. 1118*30877f79SAndroid Build Coastguard Worker * `MappedTrackInfo.getTrackTypeRendererSupport(int)`. Use 1119*30877f79SAndroid Build Coastguard Worker `MappedTrackInfo.getTypeSupport(int)` instead. 1120*30877f79SAndroid Build Coastguard Worker * `MappedTrackInfo.getUnassociatedTrackGroups()`. Use 1121*30877f79SAndroid Build Coastguard Worker `MappedTrackInfo.getUnmappedTrackGroups()` instead. 1122*30877f79SAndroid Build Coastguard Worker * `MappedTrackInfo.length`. Use `MappedTrackInfo.getRendererCount()` 1123*30877f79SAndroid Build Coastguard Worker instead. 1124*30877f79SAndroid Build Coastguard Worker * `Player.DefaultEventListener.onTimelineChanged(Timeline, Object)`. Use 1125*30877f79SAndroid Build Coastguard Worker `Player.EventListener.onTimelineChanged(Timeline, int)` instead. 1126*30877f79SAndroid Build Coastguard Worker * `Player.setAudioAttributes(AudioAttributes)`. Use 1127*30877f79SAndroid Build Coastguard Worker `Player.AudioComponent.setAudioAttributes(AudioAttributes, boolean)` 1128*30877f79SAndroid Build Coastguard Worker instead. 1129*30877f79SAndroid Build Coastguard Worker * `PlayerView.setDefaultArtwork(Bitmap)`. Use 1130*30877f79SAndroid Build Coastguard Worker `PlayerView.setDefaultArtwork(Drawable)` instead. 1131*30877f79SAndroid Build Coastguard Worker * `PlayerView.setShowBuffering(boolean)`. Use 1132*30877f79SAndroid Build Coastguard Worker `PlayerView.setShowBuffering(int)` instead. 1133*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.clearMetadataOutput(MetadataOutput)`. Use 1134*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.removeMetadataOutput(MetadataOutput)` instead. 1135*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.clearTextOutput(TextOutput)`. Use 1136*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.removeTextOutput(TextOutput)` instead. 1137*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.clearVideoListener()`. Use 1138*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.removeVideoListener(VideoListener)` instead. 1139*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.getAudioStreamType()`. Use 1140*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.getAudioAttributes()` instead. 1141*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.setAudioDebugListener(AudioRendererEventListener)`. Use 1142*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.addAnalyticsListener(AnalyticsListener)` instead. 1143*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.setAudioStreamType(int)`. Use 1144*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.setAudioAttributes(AudioAttributes)` instead. 1145*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.setMetadataOutput(MetadataOutput)`. Use 1146*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.addMetadataOutput(MetadataOutput)` instead. If your 1147*30877f79SAndroid Build Coastguard Worker application is calling `SimpleExoPlayer.setMetadataOutput(null)`, make 1148*30877f79SAndroid Build Coastguard Worker sure to replace this call with a call to 1149*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.removeMetadataOutput(MetadataOutput)`. 1150*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.setPlaybackParams(PlaybackParams)`. Use 1151*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.setPlaybackParameters(PlaybackParameters)` instead. 1152*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.setTextOutput(TextOutput)`. Use 1153*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.addTextOutput(TextOutput)` instead. If your application 1154*30877f79SAndroid Build Coastguard Worker is calling `SimpleExoPlayer.setTextOutput(null)`, make sure to replace 1155*30877f79SAndroid Build Coastguard Worker this call with a call to `SimpleExoPlayer.removeTextOutput(TextOutput)`. 1156*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.setVideoDebugListener(VideoRendererEventListener)`. Use 1157*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.addAnalyticsListener(AnalyticsListener)` instead. 1158*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.setVideoListener(VideoListener)`. Use 1159*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.addVideoListener(VideoListener)` instead. If your 1160*30877f79SAndroid Build Coastguard Worker application is calling `SimpleExoPlayer.setVideoListener(null)`, make 1161*30877f79SAndroid Build Coastguard Worker sure to replace this call with a call to 1162*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.removeVideoListener(VideoListener)`. 1163*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.VideoListener`. Use 1164*30877f79SAndroid Build Coastguard Worker `com.google.android.exoplayer2.video.VideoListener` instead. 1165*30877f79SAndroid Build Coastguard Worker * `SingleSampleMediaSource.EventListener` and constructors. Use 1166*30877f79SAndroid Build Coastguard Worker `MediaSourceEventListener` and `SingleSampleMediaSource.Factory` 1167*30877f79SAndroid Build Coastguard Worker instead. 1168*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer.addVideoDebugListener`, 1169*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.removeVideoDebugListener`, 1170*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.addAudioDebugListener` and 1171*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.removeAudioDebugListener`. Use 1172*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.addAnalyticsListener` and 1173*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.removeAnalyticsListener` instead. 1174*30877f79SAndroid Build Coastguard Worker * `SingleSampleMediaSource.Factory.setMinLoadableRetryCount(int)`. Use 1175*30877f79SAndroid Build Coastguard Worker `SingleSampleMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)` 1176*30877f79SAndroid Build Coastguard Worker instead. 1177*30877f79SAndroid Build Coastguard Worker * `SsMediaSource.Factory.setMinLoadableRetryCount(int)`. Use 1178*30877f79SAndroid Build Coastguard Worker `SsMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)` 1179*30877f79SAndroid Build Coastguard Worker instead. 1180*30877f79SAndroid Build Coastguard Worker 1181*30877f79SAndroid Build Coastguard Worker### 2.12.3 (2021-01-13) 1182*30877f79SAndroid Build Coastguard Worker 1183*30877f79SAndroid Build Coastguard Worker* Core library: 1184*30877f79SAndroid Build Coastguard Worker * Fix `MediaCodecRenderer` issue where empty streams would fail to play in 1185*30877f79SAndroid Build Coastguard Worker bypass mode ([#8374](https://github.com/google/ExoPlayer/issues/8374)). 1186*30877f79SAndroid Build Coastguard Worker * Fix playback issues after seeking during an ad 1187*30877f79SAndroid Build Coastguard Worker ([#8349](https://github.com/google/ExoPlayer/issues/8349)). 1188*30877f79SAndroid Build Coastguard Worker * Fix propagation of `LoadErrorHandlingPolicy` from 1189*30877f79SAndroid Build Coastguard Worker `DefaultMediaSourceFactory` into `SingleSampleMediaSource.Factory` when 1190*30877f79SAndroid Build Coastguard Worker creating subtitle media sources from 1191*30877f79SAndroid Build Coastguard Worker `MediaItem.playbackProperties.subtitles` 1192*30877f79SAndroid Build Coastguard Worker ([#8430](https://github.com/google/ExoPlayer/issues/8430)). 1193*30877f79SAndroid Build Coastguard Worker* UI: 1194*30877f79SAndroid Build Coastguard Worker * Fix issue where pop-up menus belonging to `StyledPlayerControlView` 1195*30877f79SAndroid Build Coastguard Worker would not be dismissed when tapping outside of the menu area or pressing 1196*30877f79SAndroid Build Coastguard Worker the back button, on API level 22 and earlier 1197*30877f79SAndroid Build Coastguard Worker ([#8272](https://github.com/google/ExoPlayer/issues/8272)). 1198*30877f79SAndroid Build Coastguard Worker* Downloads: 1199*30877f79SAndroid Build Coastguard Worker * Fix crash in `DownloadManager` that could occur when adding a stopped 1200*30877f79SAndroid Build Coastguard Worker download with the same ID as a download currently being removed 1201*30877f79SAndroid Build Coastguard Worker ([#8419](https://github.com/google/ExoPlayer/issues/8419)). 1202*30877f79SAndroid Build Coastguard Worker* Text: 1203*30877f79SAndroid Build Coastguard Worker * Gracefully handle null-terminated subtitle content in Matroska 1204*30877f79SAndroid Build Coastguard Worker containers. 1205*30877f79SAndroid Build Coastguard Worker * Fix CEA-708 anchor positioning 1206*30877f79SAndroid Build Coastguard Worker ([#1807](https://github.com/google/ExoPlayer/issues/1807)). 1207*30877f79SAndroid Build Coastguard Worker* IMA extension: 1208*30877f79SAndroid Build Coastguard Worker * Fix a condition where playback could get stuck before an empty ad 1209*30877f79SAndroid Build Coastguard Worker ([#8205](https://github.com/google/ExoPlayer/issues/8205)). 1210*30877f79SAndroid Build Coastguard Worker * Log a warning rather than throwing when reaching the end of the stream 1211*30877f79SAndroid Build Coastguard Worker with an ad playing but without ad media info 1212*30877f79SAndroid Build Coastguard Worker ([#8290](https://github.com/google/ExoPlayer/issues/8290)). 1213*30877f79SAndroid Build Coastguard Worker* Media2 extension: 1214*30877f79SAndroid Build Coastguard Worker * Make media2-extension depend on AndroidX media2:media2-session:1.1.0 to 1215*30877f79SAndroid Build Coastguard Worker fix a deadlock while creating PlaybackStateCompat internally. 1216*30877f79SAndroid Build Coastguard Worker ([#8011](https://github.com/google/ExoPlayer/issues/8011)). 1217*30877f79SAndroid Build Coastguard Worker 1218*30877f79SAndroid Build Coastguard Worker### 2.12.2 (2020-12-01) 1219*30877f79SAndroid Build Coastguard Worker 1220*30877f79SAndroid Build Coastguard Worker* Core library: 1221*30877f79SAndroid Build Coastguard Worker * Suppress exceptions from registering and unregistering the stream volume 1222*30877f79SAndroid Build Coastguard Worker receiver ([#8087](https://github.com/google/ExoPlayer/issues/8087), 1223*30877f79SAndroid Build Coastguard Worker [#8106](https://github.com/google/ExoPlayer/issues/8106)). 1224*30877f79SAndroid Build Coastguard Worker * Suppress ProGuard warnings caused by Guava's compile-only dependencies 1225*30877f79SAndroid Build Coastguard Worker ([#8103](https://github.com/google/ExoPlayer/issues/8103)). 1226*30877f79SAndroid Build Coastguard Worker * Fix issue that could cause playback to freeze when selecting tracks, if 1227*30877f79SAndroid Build Coastguard Worker extension audio renderers are being used 1228*30877f79SAndroid Build Coastguard Worker ([#8203](https://github.com/google/ExoPlayer/issues/8203)). 1229*30877f79SAndroid Build Coastguard Worker* UI: 1230*30877f79SAndroid Build Coastguard Worker * Fix incorrect color and text alignment of the `StyledPlayerControlView` 1231*30877f79SAndroid Build Coastguard Worker fast forward and rewind buttons, when used together with the 1232*30877f79SAndroid Build Coastguard Worker `com.google.android.material` library 1233*30877f79SAndroid Build Coastguard Worker ([#7898](https://github.com/google/ExoPlayer/issues/7898)). 1234*30877f79SAndroid Build Coastguard Worker * Add `dispatchPrepare(Player)` to `ControlDispatcher` and implement it in 1235*30877f79SAndroid Build Coastguard Worker `DefaultControlDispatcher`. Deprecate `PlaybackPreparer` and 1236*30877f79SAndroid Build Coastguard Worker `setPlaybackPreparer` in `StyledPlayerView`, `StyledPlayerControlView`, 1237*30877f79SAndroid Build Coastguard Worker `PlayerView`, `PlayerControlView`, `PlayerNotificationManager` and 1238*30877f79SAndroid Build Coastguard Worker `LeanbackPlayerAdapter` and use `ControlDispatcher` for dispatching 1239*30877f79SAndroid Build Coastguard Worker prepare instead 1240*30877f79SAndroid Build Coastguard Worker ([#7882](https://github.com/google/ExoPlayer/issues/7882)). 1241*30877f79SAndroid Build Coastguard Worker * Increase seekbar's touch target height in `StyledPlayerControlView`. 1242*30877f79SAndroid Build Coastguard Worker * Update `StyledPlayerControlView` menu items to behave correctly for 1243*30877f79SAndroid Build Coastguard Worker right-to-left languages. 1244*30877f79SAndroid Build Coastguard Worker * Support enabling the previous and next actions individually in 1245*30877f79SAndroid Build Coastguard Worker `PlayerNotificationManager`. 1246*30877f79SAndroid Build Coastguard Worker* Audio: 1247*30877f79SAndroid Build Coastguard Worker * Work around `AudioManager` crashes when calling `getStreamVolume` 1248*30877f79SAndroid Build Coastguard Worker ([#8191](https://github.com/google/ExoPlayer/issues/8191)). 1249*30877f79SAndroid Build Coastguard Worker* Extractors: 1250*30877f79SAndroid Build Coastguard Worker * Matroska: Add support for 32-bit floating point PCM, and 8-bit and 1251*30877f79SAndroid Build Coastguard Worker 16-bit big endian integer PCM 1252*30877f79SAndroid Build Coastguard Worker ([#8142](https://github.com/google/ExoPlayer/issues/8142)). 1253*30877f79SAndroid Build Coastguard Worker * MP4: Add support for mpeg1 video box 1254*30877f79SAndroid Build Coastguard Worker ([#8257](https://github.com/google/ExoPlayer/issues/8257)). 1255*30877f79SAndroid Build Coastguard Worker* IMA extension: 1256*30877f79SAndroid Build Coastguard Worker * Upgrade IMA SDK dependency to 3.21.0, and release the `AdsLoader` 1257*30877f79SAndroid Build Coastguard Worker ([#7344](https://github.com/google/ExoPlayer/issues/7344)). 1258*30877f79SAndroid Build Coastguard Worker * Improve handling of ad tags with unsupported VPAID ads 1259*30877f79SAndroid Build Coastguard Worker ([#7832](https://github.com/google/ExoPlayer/issues/7832)). 1260*30877f79SAndroid Build Coastguard Worker * Fix a bug that caused multiple ads in an ad pod to be skipped when one 1261*30877f79SAndroid Build Coastguard Worker ad in the ad pod was skipped. 1262*30877f79SAndroid Build Coastguard Worker * Fix a bug that caused ad progress not to be updated if the player 1263*30877f79SAndroid Build Coastguard Worker resumed after buffering during an ad 1264*30877f79SAndroid Build Coastguard Worker ([#8239](https://github.com/google/ExoPlayer/issues/8239)). 1265*30877f79SAndroid Build Coastguard Worker * Fix passing an ads response to the `ImaAdsLoader` builder. 1266*30877f79SAndroid Build Coastguard Worker * Set the overlay language based on the device locale by default. 1267*30877f79SAndroid Build Coastguard Worker* Cronet extension: 1268*30877f79SAndroid Build Coastguard Worker * Fix handling of HTTP status code 200 when making unbounded length range 1269*30877f79SAndroid Build Coastguard Worker requests ([#8090](https://github.com/google/ExoPlayer/issues/8090)). 1270*30877f79SAndroid Build Coastguard Worker* Text 1271*30877f79SAndroid Build Coastguard Worker * Allow tx3g subtitles with `styl` boxes with start and/or end offsets 1272*30877f79SAndroid Build Coastguard Worker that lie outside the length of the cue text. 1273*30877f79SAndroid Build Coastguard Worker* Media2 extension: 1274*30877f79SAndroid Build Coastguard Worker * Notify onBufferingEnded when the state of origin player becomes 1275*30877f79SAndroid Build Coastguard Worker `STATE_IDLE` or `STATE_ENDED`. 1276*30877f79SAndroid Build Coastguard Worker * Allow to remove all playlist items that makes the player reset 1277*30877f79SAndroid Build Coastguard Worker ([#8047](https://github.com/google/ExoPlayer/issues/8047)). 1278*30877f79SAndroid Build Coastguard Worker 1279*30877f79SAndroid Build Coastguard Worker### 2.12.1 (2020-10-23) 1280*30877f79SAndroid Build Coastguard Worker 1281*30877f79SAndroid Build Coastguard Worker* Core library: 1282*30877f79SAndroid Build Coastguard Worker * Fix issue where `Player.setMediaItems` would ignore its `resetPosition` 1283*30877f79SAndroid Build Coastguard Worker argument ([#8024](https://github.com/google/ExoPlayer/issues/8024)). 1284*30877f79SAndroid Build Coastguard Worker * Fix bug where streams with highly uneven track durations may get stuck 1285*30877f79SAndroid Build Coastguard Worker in a buffering state 1286*30877f79SAndroid Build Coastguard Worker ([#7943](https://github.com/google/ExoPlayer/issues/7943)). 1287*30877f79SAndroid Build Coastguard Worker * Switch Guava dependency from `implementation` to `api` 1288*30877f79SAndroid Build Coastguard Worker ([#7905](https://github.com/google/ExoPlayer/issues/7905), 1289*30877f79SAndroid Build Coastguard Worker [#7993](https://github.com/google/ExoPlayer/issues/7993)). 1290*30877f79SAndroid Build Coastguard Worker * Add 403, 500 and 503 to the list of HTTP status codes that can trigger 1291*30877f79SAndroid Build Coastguard Worker failover to another quality variant during adaptive playbacks. 1292*30877f79SAndroid Build Coastguard Worker* Data sources: 1293*30877f79SAndroid Build Coastguard Worker * Add support for `android.resource` URI scheme in `RawResourceDataSource` 1294*30877f79SAndroid Build Coastguard Worker ([#7866](https://github.com/google/ExoPlayer/issues/7866)). 1295*30877f79SAndroid Build Coastguard Worker* Text: 1296*30877f79SAndroid Build Coastguard Worker * Add support for `\h` SSA/ASS style override code (non-breaking space). 1297*30877f79SAndroid Build Coastguard Worker * Fix playback of WebVTT subtitles in MP4 containers in DASH streams 1298*30877f79SAndroid Build Coastguard Worker ([#7985](https://github.com/google/ExoPlayer/issues/7985)). 1299*30877f79SAndroid Build Coastguard Worker * Fix `NullPointerException` in `TextRenderer` when playing content with a 1300*30877f79SAndroid Build Coastguard Worker single subtitle buffer 1301*30877f79SAndroid Build Coastguard Worker ([#8017](https://github.com/google/ExoPlayer/issues/8017)). 1302*30877f79SAndroid Build Coastguard Worker* UI: 1303*30877f79SAndroid Build Coastguard Worker * Fix animation when `StyledPlayerView` first shows its playback controls. 1304*30877f79SAndroid Build Coastguard Worker * Improve touch targets in `StyledPlayerView` to make tapping easier. 1305*30877f79SAndroid Build Coastguard Worker * Allow `subtitleButton` to be omitted in custom `StyledPlayerView` 1306*30877f79SAndroid Build Coastguard Worker layouts ([#7962](https://github.com/google/ExoPlayer/issues/7962)). 1307*30877f79SAndroid Build Coastguard Worker * Add an option to sort tracks by `Format` in `TrackSelectionView` and 1308*30877f79SAndroid Build Coastguard Worker `TrackSelectionDialogBuilder` 1309*30877f79SAndroid Build Coastguard Worker ([#7709](https://github.com/google/ExoPlayer/issues/7709)). 1310*30877f79SAndroid Build Coastguard Worker* Audio: 1311*30877f79SAndroid Build Coastguard Worker * Fix the default audio sink position not advancing correctly when using 1312*30877f79SAndroid Build Coastguard Worker `AudioTrack` based speed adjustment 1313*30877f79SAndroid Build Coastguard Worker ([#7982](https://github.com/google/ExoPlayer/issues/7982)). 1314*30877f79SAndroid Build Coastguard Worker * Fix `NoClassDefFoundError` warning for `AudioTrack$StreamEventCallback` 1315*30877f79SAndroid Build Coastguard Worker ([#8058](https://github.com/google/ExoPlayer/issues/8058)). 1316*30877f79SAndroid Build Coastguard Worker* Extractors: 1317*30877f79SAndroid Build Coastguard Worker * MP4: 1318*30877f79SAndroid Build Coastguard Worker * Add support for `_mp2` boxes 1319*30877f79SAndroid Build Coastguard Worker ([#7967](https://github.com/google/ExoPlayer/issues/7967)). 1320*30877f79SAndroid Build Coastguard Worker * Fix playback of files containing `pcm_alaw` or `pcm_mulaw` audio 1321*30877f79SAndroid Build Coastguard Worker tracks, by enabling sample rechunking for such tracks. 1322*30877f79SAndroid Build Coastguard Worker * MPEG-TS: 1323*30877f79SAndroid Build Coastguard Worker * Add `TsExtractor` parameter to configure the number of bytes in 1324*30877f79SAndroid Build Coastguard Worker which to search for timestamps when seeking and determining stream 1325*30877f79SAndroid Build Coastguard Worker duration ([#7988](https://github.com/google/ExoPlayer/issues/7988)). 1326*30877f79SAndroid Build Coastguard Worker * Ignore negative payload size in PES packets 1327*30877f79SAndroid Build Coastguard Worker ([#8005](https://github.com/google/ExoPlayer/issues/8005)). 1328*30877f79SAndroid Build Coastguard Worker * MP3: Use TLEN ID3 tag to compute the stream duration 1329*30877f79SAndroid Build Coastguard Worker ([#7949](https://github.com/google/ExoPlayer/issues/7949)). 1330*30877f79SAndroid Build Coastguard Worker * Ogg: Fix regression playing files with packets that span multiple pages 1331*30877f79SAndroid Build Coastguard Worker ([#7992](https://github.com/google/ExoPlayer/issues/7992)). 1332*30877f79SAndroid Build Coastguard Worker * FLV: Make files seekable by using the key frame index 1333*30877f79SAndroid Build Coastguard Worker ([#7378](https://github.com/google/ExoPlayer/issues/7378)). 1334*30877f79SAndroid Build Coastguard Worker* Downloads: Fix issue retrying progressive downloads, which could also result 1335*30877f79SAndroid Build Coastguard Worker in a crash in `DownloadManager.InternalHandler.onContentLengthChanged` 1336*30877f79SAndroid Build Coastguard Worker ([#8078](https://github.com/google/ExoPlayer/issues/8078)). 1337*30877f79SAndroid Build Coastguard Worker* HLS: Fix crash affecting chunkful preparation of master playlists that start 1338*30877f79SAndroid Build Coastguard Worker with an I-FRAME only variant 1339*30877f79SAndroid Build Coastguard Worker ([#8025](https://github.com/google/ExoPlayer/issues/8025)). 1340*30877f79SAndroid Build Coastguard Worker* IMA extension: 1341*30877f79SAndroid Build Coastguard Worker * Fix position reporting after fetch errors 1342*30877f79SAndroid Build Coastguard Worker ([#7956](https://github.com/google/ExoPlayer/issues/7956)). 1343*30877f79SAndroid Build Coastguard Worker * Allow apps to specify a `VideoAdPlayerCallback` 1344*30877f79SAndroid Build Coastguard Worker ([#7944](https://github.com/google/ExoPlayer/issues/7944)). 1345*30877f79SAndroid Build Coastguard Worker * Accept ad tags via the `AdsMediaSource` constructor and deprecate 1346*30877f79SAndroid Build Coastguard Worker passing them via the `ImaAdsLoader` constructor/builders. Passing the ad 1347*30877f79SAndroid Build Coastguard Worker tag via media item playback properties continues to be supported. This 1348*30877f79SAndroid Build Coastguard Worker is in preparation for supporting ads in playlists 1349*30877f79SAndroid Build Coastguard Worker ([#3750](https://github.com/google/ExoPlayer/issues/3750)). 1350*30877f79SAndroid Build Coastguard Worker * Add a way to override ad media MIME types 1351*30877f79SAndroid Build Coastguard Worker ([#7961](https://github.com/google/ExoPlayer/issues/7961)). 1352*30877f79SAndroid Build Coastguard Worker * Fix incorrect truncation of large cue point positions 1353*30877f79SAndroid Build Coastguard Worker ([#8067](https://github.com/google/ExoPlayer/issues/8067)). 1354*30877f79SAndroid Build Coastguard Worker * Upgrade IMA SDK dependency to 3.20.1. This brings in a fix for companion 1355*30877f79SAndroid Build Coastguard Worker ads rendering when targeting API 29 1356*30877f79SAndroid Build Coastguard Worker ([#6432](https://github.com/google/ExoPlayer/issues/6432)). 1357*30877f79SAndroid Build Coastguard Worker 1358*30877f79SAndroid Build Coastguard Worker### 2.12.0 (2020-09-11) 1359*30877f79SAndroid Build Coastguard Worker 1360*30877f79SAndroid Build Coastguard WorkerTo learn more about what's new in 2.12, read the corresponding 1361*30877f79SAndroid Build Coastguard Worker[blog post](https://medium.com/google-exoplayer/exoplayer-2-12-whats-new-e43ef8ff72e7). 1362*30877f79SAndroid Build Coastguard Worker 1363*30877f79SAndroid Build Coastguard Worker* Core library: 1364*30877f79SAndroid Build Coastguard Worker * `Player`: 1365*30877f79SAndroid Build Coastguard Worker * Add a top level playlist API based on a new `MediaItem` class 1366*30877f79SAndroid Build Coastguard Worker ([#6161](https://github.com/google/ExoPlayer/issues/6161)). The new 1367*30877f79SAndroid Build Coastguard Worker methods for playlist manipulation are `setMediaItem(s)`, 1368*30877f79SAndroid Build Coastguard Worker `addMediaItem(s)`, `moveMediaItem(s)`, `removeMediaItem(s)` and 1369*30877f79SAndroid Build Coastguard Worker `clearMediaItems`. The playlist can be queried using 1370*30877f79SAndroid Build Coastguard Worker `getMediaItemCount` and `getMediaItemAt`. This API should be used 1371*30877f79SAndroid Build Coastguard Worker instead of `ConcatenatingMediaSource` in most cases. Learn more by 1372*30877f79SAndroid Build Coastguard Worker reading 1373*30877f79SAndroid Build Coastguard Worker [this blog post](https://medium.com/google-exoplayer/a-top-level-playlist-api-for-exoplayer-abe0a24edb55). 1374*30877f79SAndroid Build Coastguard Worker * Add `getCurrentMediaItem` for getting the currently playing item in 1375*30877f79SAndroid Build Coastguard Worker the playlist. 1376*30877f79SAndroid Build Coastguard Worker * Add `EventListener.onMediaItemTransition` to report when playback 1377*30877f79SAndroid Build Coastguard Worker transitions from one item to another in the playlist. 1378*30877f79SAndroid Build Coastguard Worker * Add `play` and `pause` convenience methods. They are equivalent to 1379*30877f79SAndroid Build Coastguard Worker `setPlayWhenReady(true)` and `setPlayWhenReady(false)` respectively. 1380*30877f79SAndroid Build Coastguard Worker * Add `getCurrentLiveOffset` for getting the offset of the current 1381*30877f79SAndroid Build Coastguard Worker playback position from the live edge of a live stream. 1382*30877f79SAndroid Build Coastguard Worker * Add `getTrackSelector` for getting the `TrackSelector` used by the 1383*30877f79SAndroid Build Coastguard Worker player. 1384*30877f79SAndroid Build Coastguard Worker * Add `AudioComponent.setAudioSessionId` to set the audio session ID. 1385*30877f79SAndroid Build Coastguard Worker This method is also available on `SimpleExoPlayer`. 1386*30877f79SAndroid Build Coastguard Worker * Remove `PlaybackParameters.skipSilence`, and replace it with 1387*30877f79SAndroid Build Coastguard Worker `AudioComponent.setSkipSilenceEnabled`. This method is also 1388*30877f79SAndroid Build Coastguard Worker available on `SimpleExoPlayer`. An 1389*30877f79SAndroid Build Coastguard Worker `AudioListener.onSkipSilenceEnabledChanged` callback is also added. 1390*30877f79SAndroid Build Coastguard Worker * Add `TextComponent.getCurrentCues` to get the current cues. This 1391*30877f79SAndroid Build Coastguard Worker method is also available on `SimpleExoPlayer`. The current cues are 1392*30877f79SAndroid Build Coastguard Worker no longer automatically forwarded to a `TextOutput` when it's added 1393*30877f79SAndroid Build Coastguard Worker to a `SimpleExoPlayer`. 1394*30877f79SAndroid Build Coastguard Worker * Add `Player.DeviceComponent` to query and control the device volume. 1395*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer` implements this interface. 1396*30877f79SAndroid Build Coastguard Worker * Deprecate and rename `getPlaybackError` to `getPlayerError` for 1397*30877f79SAndroid Build Coastguard Worker consistency. 1398*30877f79SAndroid Build Coastguard Worker * Deprecate and rename `onLoadingChanged` to `onIsLoadingChanged` for 1399*30877f79SAndroid Build Coastguard Worker consistency. 1400*30877f79SAndroid Build Coastguard Worker * Deprecate `EventListener.onPlayerStateChanged`, replacing it with 1401*30877f79SAndroid Build Coastguard Worker `EventListener.onPlayWhenReadyChanged` and 1402*30877f79SAndroid Build Coastguard Worker `EventListener.onPlaybackStateChanged`. 1403*30877f79SAndroid Build Coastguard Worker * Deprecate `EventListener.onSeekProcessed` because seek changes now 1404*30877f79SAndroid Build Coastguard Worker happen instantly and listening to `onPositionDiscontinuity` is 1405*30877f79SAndroid Build Coastguard Worker sufficient. 1406*30877f79SAndroid Build Coastguard Worker * `ExoPlayer`: 1407*30877f79SAndroid Build Coastguard Worker * Add `setMediaSource(s)` and `addMediaSource(s)` to `ExoPlayer`, for 1408*30877f79SAndroid Build Coastguard Worker adding `MediaSource` instances directly to the playlist. 1409*30877f79SAndroid Build Coastguard Worker * Add `ExoPlayer.setPauseAtEndOfMediaItems` to let the player pause at 1410*30877f79SAndroid Build Coastguard Worker the end of each media item 1411*30877f79SAndroid Build Coastguard Worker ([#5660](https://github.com/google/ExoPlayer/issues/5660)). 1412*30877f79SAndroid Build Coastguard Worker * Allow passing `C.TIME_END_OF_SOURCE` to `PlayerMessage.setPosition` 1413*30877f79SAndroid Build Coastguard Worker to send a `PlayerMessage` at the end of a stream. 1414*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer`: 1415*30877f79SAndroid Build Coastguard Worker * `SimpleExoPlayer` implements the new `MediaItem` based playlist API, 1416*30877f79SAndroid Build Coastguard Worker using a `MediaSourceFactory` to convert `MediaItem` instances to 1417*30877f79SAndroid Build Coastguard Worker playable `MediaSource` instances. A `DefaultMediaSourceFactory` is 1418*30877f79SAndroid Build Coastguard Worker used by default. `Builder.setMediaSourceFactory` allows setting a 1419*30877f79SAndroid Build Coastguard Worker custom factory. 1420*30877f79SAndroid Build Coastguard Worker * Update [APK shrinking guide](https://exoplayer.dev/shrinking.html) 1421*30877f79SAndroid Build Coastguard Worker to explain how shrinking works with the new `MediaItem` and 1422*30877f79SAndroid Build Coastguard Worker `DefaultMediaSourceFactory` implementations 1423*30877f79SAndroid Build Coastguard Worker ([#7937](https://github.com/google/ExoPlayer/issues/7937)). 1424*30877f79SAndroid Build Coastguard Worker * Add additional options to `Builder` that were previously only 1425*30877f79SAndroid Build Coastguard Worker accessible via setters. 1426*30877f79SAndroid Build Coastguard Worker * Add opt-in to verify correct thread usage with 1427*30877f79SAndroid Build Coastguard Worker `setThrowsWhenUsingWrongThread(true)` 1428*30877f79SAndroid Build Coastguard Worker ([#4463](https://github.com/google/ExoPlayer/issues/4463)). 1429*30877f79SAndroid Build Coastguard Worker * `Format`: 1430*30877f79SAndroid Build Coastguard Worker * Add a `Builder` and deprecate all `create` methods and most 1431*30877f79SAndroid Build Coastguard Worker `Format.copyWith` methods. 1432*30877f79SAndroid Build Coastguard Worker * Split `bitrate` into `averageBitrate` and `peakBitrate` 1433*30877f79SAndroid Build Coastguard Worker ([#2863](https://github.com/google/ExoPlayer/issues/2863)). 1434*30877f79SAndroid Build Coastguard Worker * `LoadControl`: 1435*30877f79SAndroid Build Coastguard Worker * Add a `playbackPositionUs` parameter to `shouldContinueLoading`. 1436*30877f79SAndroid Build Coastguard Worker * Set the default minimum buffer duration in `DefaultLoadControl` to 1437*30877f79SAndroid Build Coastguard Worker 50 seconds (equal to the default maximum buffer), and treat audio 1438*30877f79SAndroid Build Coastguard Worker and video the same. 1439*30877f79SAndroid Build Coastguard Worker * Add a `MetadataRetriever` API for retrieving track information and 1440*30877f79SAndroid Build Coastguard Worker static metadata for a media item 1441*30877f79SAndroid Build Coastguard Worker ([#3609](https://github.com/google/ExoPlayer/issues/3609)). 1442*30877f79SAndroid Build Coastguard Worker * Attach an identifier and extra information to load error events passed 1443*30877f79SAndroid Build Coastguard Worker to `LoadErrorHandlingPolicy` 1444*30877f79SAndroid Build Coastguard Worker ([#7309](https://github.com/google/ExoPlayer/issues/7309)). 1445*30877f79SAndroid Build Coastguard Worker `LoadErrorHandlingPolicy` implementations should migrate to implementing 1446*30877f79SAndroid Build Coastguard Worker the non-deprecated methods of the interface. 1447*30877f79SAndroid Build Coastguard Worker * Add an option to `MergingMediaSource` to adjust the time offsets between 1448*30877f79SAndroid Build Coastguard Worker the merged sources 1449*30877f79SAndroid Build Coastguard Worker ([#6103](https://github.com/google/ExoPlayer/issues/6103)). 1450*30877f79SAndroid Build Coastguard Worker * Move `MediaSourceEventListener.LoadEventInfo` and 1451*30877f79SAndroid Build Coastguard Worker `MediaSourceEventListener.MediaLoadData` to be top-level classes in 1452*30877f79SAndroid Build Coastguard Worker `com.google.android.exoplayer2.source`. 1453*30877f79SAndroid Build Coastguard Worker * Move `SimpleDecoderVideoRenderer` and `SimpleDecoderAudioRenderer` to 1454*30877f79SAndroid Build Coastguard Worker `DecoderVideoRenderer` and `DecoderAudioRenderer` respectively, and 1455*30877f79SAndroid Build Coastguard Worker generalize them to work with `Decoder` rather than `SimpleDecoder`. 1456*30877f79SAndroid Build Coastguard Worker * Deprecate `C.MSG_*` constants, replacing them with constants in 1457*30877f79SAndroid Build Coastguard Worker `Renderer`. 1458*30877f79SAndroid Build Coastguard Worker * Split the `library-core` module into `library-core`, `library-common` 1459*30877f79SAndroid Build Coastguard Worker and `library-extractor`. The `library-core` module has an API dependency 1460*30877f79SAndroid Build Coastguard Worker on both of the new modules, so this change should be transparent to 1461*30877f79SAndroid Build Coastguard Worker developers including ExoPlayer using Gradle dependencies. 1462*30877f79SAndroid Build Coastguard Worker * Add a dependency on Guava. 1463*30877f79SAndroid Build Coastguard Worker* Video: 1464*30877f79SAndroid Build Coastguard Worker * Pass frame rate hint to `Surface.setFrameRate` on Android 11. 1465*30877f79SAndroid Build Coastguard Worker * Fix incorrect aspect ratio when transitioning from one video to another 1466*30877f79SAndroid Build Coastguard Worker with the same resolution, but a different pixel aspect ratio 1467*30877f79SAndroid Build Coastguard Worker ([#6646](https://github.com/google/ExoPlayer/issues/6646)). 1468*30877f79SAndroid Build Coastguard Worker* Audio: 1469*30877f79SAndroid Build Coastguard Worker * Add experimental support for power efficient playback using audio 1470*30877f79SAndroid Build Coastguard Worker offload. 1471*30877f79SAndroid Build Coastguard Worker * Add support for using framework audio speed adjustment instead of 1472*30877f79SAndroid Build Coastguard Worker ExoPlayer's implementation 1473*30877f79SAndroid Build Coastguard Worker ([#7502](https://github.com/google/ExoPlayer/issues/7502)). This option 1474*30877f79SAndroid Build Coastguard Worker can be set using 1475*30877f79SAndroid Build Coastguard Worker `DefaultRenderersFactory.setEnableAudioTrackPlaybackParams`. 1476*30877f79SAndroid Build Coastguard Worker * Add an event for the audio position starting to advance, to make it 1477*30877f79SAndroid Build Coastguard Worker easier for apps to determine when audio playout started 1478*30877f79SAndroid Build Coastguard Worker ([#7577](https://github.com/google/ExoPlayer/issues/7577)). 1479*30877f79SAndroid Build Coastguard Worker * Generalize support for floating point audio. 1480*30877f79SAndroid Build Coastguard Worker * Add an option to `DefaultAudioSink` for enabling floating point 1481*30877f79SAndroid Build Coastguard Worker output. This option can also be set using 1482*30877f79SAndroid Build Coastguard Worker `DefaultRenderersFactory.setEnableAudioFloatOutput`. 1483*30877f79SAndroid Build Coastguard Worker * Add floating point output capability to `MediaCodecAudioRenderer` 1484*30877f79SAndroid Build Coastguard Worker and `LibopusAudioRenderer`, which is enabled automatically if the 1485*30877f79SAndroid Build Coastguard Worker audio sink supports floating point output and if it makes sense for 1486*30877f79SAndroid Build Coastguard Worker the content being played. 1487*30877f79SAndroid Build Coastguard Worker * Enable the floating point output capability of `FfmpegAudioRenderer` 1488*30877f79SAndroid Build Coastguard Worker automatically if the audio sink supports floating point output and 1489*30877f79SAndroid Build Coastguard Worker if it makes sense for the content being played. The option to 1490*30877f79SAndroid Build Coastguard Worker manually enable floating point output has been removed, since this 1491*30877f79SAndroid Build Coastguard Worker now done with the generalized option on `DefaultAudioSink`. 1492*30877f79SAndroid Build Coastguard Worker * In `MediaCodecAudioRenderer`, stop passing audio samples through 1493*30877f79SAndroid Build Coastguard Worker `MediaCodec` when playing PCM audio or encoded audio using passthrough 1494*30877f79SAndroid Build Coastguard Worker mode. 1495*30877f79SAndroid Build Coastguard Worker * Reuse audio decoders when transitioning through playlists of gapless 1496*30877f79SAndroid Build Coastguard Worker audio, rather than reinstantiating them. 1497*30877f79SAndroid Build Coastguard Worker * Check `DefaultAudioSink` supports passthrough, in addition to checking 1498*30877f79SAndroid Build Coastguard Worker the `AudioCapabilities` 1499*30877f79SAndroid Build Coastguard Worker ([#7404](https://github.com/google/ExoPlayer/issues/7404)). 1500*30877f79SAndroid Build Coastguard Worker* Text: 1501*30877f79SAndroid Build Coastguard Worker * Many of the changes described below improve support for Japanese 1502*30877f79SAndroid Build Coastguard Worker subtitles. Read 1503*30877f79SAndroid Build Coastguard Worker [this blog post](https://medium.com/google-exoplayer/improved-japanese-subtitle-support-7598fee12cf4) 1504*30877f79SAndroid Build Coastguard Worker to learn more. 1505*30877f79SAndroid Build Coastguard Worker * Add a WebView-based output option to `SubtitleView`. This can display 1506*30877f79SAndroid Build Coastguard Worker some features not supported by the existing Canvas-based output such as 1507*30877f79SAndroid Build Coastguard Worker vertical text and rubies. It can be enabled by calling 1508*30877f79SAndroid Build Coastguard Worker `SubtitleView#setViewType(VIEW_TYPE_WEB)`. 1509*30877f79SAndroid Build Coastguard Worker * Recreate the decoder when handling and swallowing decode errors in 1510*30877f79SAndroid Build Coastguard Worker `TextRenderer`. This fixes a case where playback would never end when 1511*30877f79SAndroid Build Coastguard Worker playing content with malformed subtitles 1512*30877f79SAndroid Build Coastguard Worker ([#7590](https://github.com/google/ExoPlayer/issues/7590)). 1513*30877f79SAndroid Build Coastguard Worker * Only apply `CaptionManager` font scaling in 1514*30877f79SAndroid Build Coastguard Worker `SubtitleView.setUserDefaultTextSize` if the `CaptionManager` is 1515*30877f79SAndroid Build Coastguard Worker enabled. 1516*30877f79SAndroid Build Coastguard Worker * Improve positioning of vertical cues when rendered horizontally. 1517*30877f79SAndroid Build Coastguard Worker * Redefine `Cue.lineType=LINE_TYPE_NUMBER` in terms of aligning the cue 1518*30877f79SAndroid Build Coastguard Worker text lines to grid of viewport lines. Only consider `Cue.lineAnchor` 1519*30877f79SAndroid Build Coastguard Worker when `Cue.lineType=LINE_TYPE_FRACTION`. 1520*30877f79SAndroid Build Coastguard Worker * WebVTT: 1521*30877f79SAndroid Build Coastguard Worker * Add support for default 1522*30877f79SAndroid Build Coastguard Worker [text](https://www.w3.org/TR/webvtt1/#default-text-color) and 1523*30877f79SAndroid Build Coastguard Worker [background](https://www.w3.org/TR/webvtt1/#default-text-background) 1524*30877f79SAndroid Build Coastguard Worker colors ([#6581](https://github.com/google/ExoPlayer/issues/6581)). 1525*30877f79SAndroid Build Coastguard Worker * Update position alignment parsing to recognise `line-left`, `center` 1526*30877f79SAndroid Build Coastguard Worker and `line-right`. 1527*30877f79SAndroid Build Coastguard Worker * Implement steps 4-10 of the 1528*30877f79SAndroid Build Coastguard Worker [WebVTT line computation algorithm](https://www.w3.org/TR/webvtt1/#cue-computed-line). 1529*30877f79SAndroid Build Coastguard Worker * Stop parsing unsupported CSS properties. The spec provides an 1530*30877f79SAndroid Build Coastguard Worker [exhaustive list](https://www.w3.org/TR/webvtt1/#the-cue-pseudo-element) 1531*30877f79SAndroid Build Coastguard Worker of which properties are supported. 1532*30877f79SAndroid Build Coastguard Worker * Parse the `ruby-position` CSS property. 1533*30877f79SAndroid Build Coastguard Worker * Parse the `text-combine-upright` CSS property (i.e., tate-chu-yoko). 1534*30877f79SAndroid Build Coastguard Worker * Parse the `<ruby>` and `<rt>` tags. 1535*30877f79SAndroid Build Coastguard Worker * TTML: 1536*30877f79SAndroid Build Coastguard Worker * Parse the `tts:combineText` property (i.e., tate-chu-yoko). 1537*30877f79SAndroid Build Coastguard Worker * Parse t`tts:ruby` and `tts:rubyPosition` properties. 1538*30877f79SAndroid Build Coastguard Worker * CEA-608: 1539*30877f79SAndroid Build Coastguard Worker * Implement timing-out of stuck captions, as permitted by 1540*30877f79SAndroid Build Coastguard Worker ANSI/CTA-608-E R-2014 Annex C.9. The default timeout is set to 16 1541*30877f79SAndroid Build Coastguard Worker seconds ([#7181](https://github.com/google/ExoPlayer/issues/7181)). 1542*30877f79SAndroid Build Coastguard Worker * Trim lines that exceed the maximum length of 32 characters 1543*30877f79SAndroid Build Coastguard Worker ([#7341](https://github.com/google/ExoPlayer/issues/7341)). 1544*30877f79SAndroid Build Coastguard Worker * Fix positioning of roll-up captions in the top half of the screen 1545*30877f79SAndroid Build Coastguard Worker ([#7475](https://github.com/google/ExoPlayer/issues/7475)). 1546*30877f79SAndroid Build Coastguard Worker * Stop automatically generating a CEA-608 track when playing 1547*30877f79SAndroid Build Coastguard Worker standalone MPEG-TS files. The previous behavior can still be 1548*30877f79SAndroid Build Coastguard Worker obtained by manually injecting a customized 1549*30877f79SAndroid Build Coastguard Worker `DefaultTsPayloadReaderFactory` into `TsExtractor`. 1550*30877f79SAndroid Build Coastguard Worker* Metadata: Add minimal DVB Application Information Table (AIT) support. 1551*30877f79SAndroid Build Coastguard Worker* DASH: 1552*30877f79SAndroid Build Coastguard Worker * Add support for canceling in-progress segment fetches 1553*30877f79SAndroid Build Coastguard Worker ([#2848](https://github.com/google/ExoPlayer/issues/2848)). 1554*30877f79SAndroid Build Coastguard Worker * Add support for CEA-708 embedded in FMP4. 1555*30877f79SAndroid Build Coastguard Worker* SmoothStreaming: 1556*30877f79SAndroid Build Coastguard Worker * Add support for canceling in-progress segment fetches 1557*30877f79SAndroid Build Coastguard Worker ([#2848](https://github.com/google/ExoPlayer/issues/2848)). 1558*30877f79SAndroid Build Coastguard Worker* HLS: 1559*30877f79SAndroid Build Coastguard Worker * Add support for discarding buffered media (e.g., to allow faster 1560*30877f79SAndroid Build Coastguard Worker adaptation to a higher quality variant) 1561*30877f79SAndroid Build Coastguard Worker ([#6322](https://github.com/google/ExoPlayer/issues/6322)). 1562*30877f79SAndroid Build Coastguard Worker * Add support for canceling in-progress segment fetches 1563*30877f79SAndroid Build Coastguard Worker ([#2848](https://github.com/google/ExoPlayer/issues/2848)). 1564*30877f79SAndroid Build Coastguard Worker * Respect 33-bit PTS wrapping when applying `X-TIMESTAMP-MAP` to WebVTT 1565*30877f79SAndroid Build Coastguard Worker timestamps ([#7464](https://github.com/google/ExoPlayer/issues/7464)). 1566*30877f79SAndroid Build Coastguard Worker* Extractors: 1567*30877f79SAndroid Build Coastguard Worker * Optimize the `Extractor` sniffing order to reduce start-up latency in 1568*30877f79SAndroid Build Coastguard Worker `DefaultExtractorsFactory` and `DefaultHlsExtractorsFactory` 1569*30877f79SAndroid Build Coastguard Worker ([#6410](https://github.com/google/ExoPlayer/issues/6410)). 1570*30877f79SAndroid Build Coastguard Worker * Use filename extensions and response header MIME types to further 1571*30877f79SAndroid Build Coastguard Worker optimize `Extractor` sniffing order on a per-media basis. 1572*30877f79SAndroid Build Coastguard Worker * MP3: Add `IndexSeeker` for accurate seeks in VBR MP3 streams 1573*30877f79SAndroid Build Coastguard Worker ([#6787](https://github.com/google/ExoPlayer/issues/6787)). This seeker 1574*30877f79SAndroid Build Coastguard Worker can be enabled by passing `FLAG_ENABLE_INDEX_SEEKING` to the 1575*30877f79SAndroid Build Coastguard Worker `Mp3Extractor`. A significant portion of the file may need to be scanned 1576*30877f79SAndroid Build Coastguard Worker when a seek is performed, which may be costly for large files. 1577*30877f79SAndroid Build Coastguard Worker * MP4: Fix playback of MP4 streams that contain Opus audio. 1578*30877f79SAndroid Build Coastguard Worker * FMP4: Add support for partially fragmented MP4s 1579*30877f79SAndroid Build Coastguard Worker ([#7308](https://github.com/google/ExoPlayer/issues/7308)). 1580*30877f79SAndroid Build Coastguard Worker * Matroska: 1581*30877f79SAndroid Build Coastguard Worker * Support Dolby Vision 1582*30877f79SAndroid Build Coastguard Worker ([#7267](https://github.com/google/ExoPlayer/issues/7267)). 1583*30877f79SAndroid Build Coastguard Worker * Populate `Format.label` with track titles. 1584*30877f79SAndroid Build Coastguard Worker * Remove support for the `Invisible` block header flag. 1585*30877f79SAndroid Build Coastguard Worker * MPEG-TS: Add support for MPEG-4 Part 2 and H.263 1586*30877f79SAndroid Build Coastguard Worker ([#1603](https://github.com/google/ExoPlayer/issues/1603), 1587*30877f79SAndroid Build Coastguard Worker [#5107](https://github.com/google/ExoPlayer/issues/5107)). 1588*30877f79SAndroid Build Coastguard Worker * Ogg: Fix handling of non-contiguous pages 1589*30877f79SAndroid Build Coastguard Worker ([#7230](https://github.com/google/ExoPlayer/issues/7230)). 1590*30877f79SAndroid Build Coastguard Worker* UI: 1591*30877f79SAndroid Build Coastguard Worker * Add `StyledPlayerView` and `StyledPlayerControlView`, which provide a 1592*30877f79SAndroid Build Coastguard Worker more polished user experience than `PlayerView` and `PlayerControlView` 1593*30877f79SAndroid Build Coastguard Worker at the cost of decreased customizability. 1594*30877f79SAndroid Build Coastguard Worker * Remove the previously deprecated `SimpleExoPlayerView` and 1595*30877f79SAndroid Build Coastguard Worker `PlaybackControlView` classes, along with the corresponding 1596*30877f79SAndroid Build Coastguard Worker `exo_simple_player_view.xml` and `exo_playback_control_view.xml` layout 1597*30877f79SAndroid Build Coastguard Worker resources. Use the equivalent `PlayerView`, `PlayerControlView`, 1598*30877f79SAndroid Build Coastguard Worker `exo_player_view.xml` and `exo_player_control_view.xml` instead. 1599*30877f79SAndroid Build Coastguard Worker * Add setter methods to `PlayerView` and `PlayerControlView` to set 1600*30877f79SAndroid Build Coastguard Worker whether the rewind, fast forward, previous and next buttons are shown 1601*30877f79SAndroid Build Coastguard Worker ([#7410](https://github.com/google/ExoPlayer/issues/7410)). 1602*30877f79SAndroid Build Coastguard Worker * Update `TrackSelectionDialogBuilder` to use the AndroidX app compat 1603*30877f79SAndroid Build Coastguard Worker `AlertDialog` rather than the platform version, if available 1604*30877f79SAndroid Build Coastguard Worker ([#7357](https://github.com/google/ExoPlayer/issues/7357)). 1605*30877f79SAndroid Build Coastguard Worker * Make UI components dispatch previous, next, fast forward and rewind 1606*30877f79SAndroid Build Coastguard Worker actions via their `ControlDispatcher` 1607*30877f79SAndroid Build Coastguard Worker ([#6926](https://github.com/google/ExoPlayer/issues/6926)). 1608*30877f79SAndroid Build Coastguard Worker* Downloads and caching: 1609*30877f79SAndroid Build Coastguard Worker * Add `DownloadRequest.Builder`. 1610*30877f79SAndroid Build Coastguard Worker * Add `DownloadRequest.keySetId` to make it easier to store an offline 1611*30877f79SAndroid Build Coastguard Worker license keyset identifier alongside the other information that's 1612*30877f79SAndroid Build Coastguard Worker persisted in `DownloadIndex`. 1613*30877f79SAndroid Build Coastguard Worker * Support passing an `Executor` to `DefaultDownloaderFactory` on which 1614*30877f79SAndroid Build Coastguard Worker data downloads are performed. 1615*30877f79SAndroid Build Coastguard Worker * Parallelize and merge downloads in `SegmentDownloader` to improve 1616*30877f79SAndroid Build Coastguard Worker download speeds 1617*30877f79SAndroid Build Coastguard Worker ([#5978](https://github.com/google/ExoPlayer/issues/5978)). 1618*30877f79SAndroid Build Coastguard Worker * Replace `CacheDataSinkFactory` and `CacheDataSourceFactory` with 1619*30877f79SAndroid Build Coastguard Worker `CacheDataSink.Factory` and `CacheDataSource.Factory` respectively. 1620*30877f79SAndroid Build Coastguard Worker * Remove `DownloadConstructorHelper` and instead use 1621*30877f79SAndroid Build Coastguard Worker `CacheDataSource.Factory` directly. 1622*30877f79SAndroid Build Coastguard Worker * Add `Requirements.DEVICE_STORAGE_NOT_LOW`, which can be specified as a 1623*30877f79SAndroid Build Coastguard Worker requirement to a `DownloadManager` for it to proceed with downloading. 1624*30877f79SAndroid Build Coastguard Worker * For failed downloads, propagate the `Exception` that caused the failure 1625*30877f79SAndroid Build Coastguard Worker to `DownloadManager.Listener.onDownloadChanged`. 1626*30877f79SAndroid Build Coastguard Worker * Support multiple non-overlapping write locks for the same key in 1627*30877f79SAndroid Build Coastguard Worker `SimpleCache`. 1628*30877f79SAndroid Build Coastguard Worker * Remove `CacheUtil`. Equivalent functionality is provided by a new 1629*30877f79SAndroid Build Coastguard Worker `CacheWriter` class, `Cache.getCachedBytes`, `Cache.removeResource` and 1630*30877f79SAndroid Build Coastguard Worker `CacheKeyFactory.DEFAULT`. 1631*30877f79SAndroid Build Coastguard Worker* DRM: 1632*30877f79SAndroid Build Coastguard Worker * Remove previously deprecated APIs to inject `DrmSessionManager` into 1633*30877f79SAndroid Build Coastguard Worker `Renderer` instances. `DrmSessionManager` must now be injected into 1634*30877f79SAndroid Build Coastguard Worker `MediaSource` instances via the `MediaSource` factories. 1635*30877f79SAndroid Build Coastguard Worker * Add the ability to inject a custom `DefaultDrmSessionManager` into 1636*30877f79SAndroid Build Coastguard Worker `OfflineLicenseHelper` 1637*30877f79SAndroid Build Coastguard Worker ([#7078](https://github.com/google/ExoPlayer/issues/7078)). 1638*30877f79SAndroid Build Coastguard Worker * Keep DRM sessions alive for a short time before fully releasing them 1639*30877f79SAndroid Build Coastguard Worker ([#7011](https://github.com/google/ExoPlayer/issues/7011), 1640*30877f79SAndroid Build Coastguard Worker [#6725](https://github.com/google/ExoPlayer/issues/6725), 1641*30877f79SAndroid Build Coastguard Worker [#7066](https://github.com/google/ExoPlayer/issues/7066)). 1642*30877f79SAndroid Build Coastguard Worker * Remove support for `cbc1` and `cens` encrytion schemes. Support for 1643*30877f79SAndroid Build Coastguard Worker these schemes was removed from the Android platform from API level 30, 1644*30877f79SAndroid Build Coastguard Worker and the range of API levels for which they are supported is too small to 1645*30877f79SAndroid Build Coastguard Worker be useful. 1646*30877f79SAndroid Build Coastguard Worker * Remove generic types from DRM components. 1647*30877f79SAndroid Build Coastguard Worker * Rename `DefaultDrmSessionEventListener` to `DrmSessionEventListener`. 1648*30877f79SAndroid Build Coastguard Worker* Track selection: 1649*30877f79SAndroid Build Coastguard Worker * Add `TrackSelection.shouldCancelMediaChunkLoad` to check whether an 1650*30877f79SAndroid Build Coastguard Worker ongoing load should be canceled 1651*30877f79SAndroid Build Coastguard Worker ([#2848](https://github.com/google/ExoPlayer/issues/2848)). 1652*30877f79SAndroid Build Coastguard Worker * Add `DefaultTrackSelector` constraints for minimum video resolution, 1653*30877f79SAndroid Build Coastguard Worker bitrate and frame rate 1654*30877f79SAndroid Build Coastguard Worker ([#4511](https://github.com/google/ExoPlayer/issues/4511)). 1655*30877f79SAndroid Build Coastguard Worker * Remove previously deprecated `DefaultTrackSelector` members. 1656*30877f79SAndroid Build Coastguard Worker* Data sources: 1657*30877f79SAndroid Build Coastguard Worker * Add `HttpDataSource.InvalidResponseCodeException#responseBody` field 1658*30877f79SAndroid Build Coastguard Worker ([#6853](https://github.com/google/ExoPlayer/issues/6853)). 1659*30877f79SAndroid Build Coastguard Worker * Add `DataSpec.Builder` and deprecate most `DataSpec` constructors. 1660*30877f79SAndroid Build Coastguard Worker * Add `DataSpec.customData` to allow applications to pass custom data 1661*30877f79SAndroid Build Coastguard Worker through `DataSource` chains. 1662*30877f79SAndroid Build Coastguard Worker * Deprecate `CacheDataSinkFactory` and `CacheDataSourceFactory`, which are 1663*30877f79SAndroid Build Coastguard Worker replaced by `CacheDataSink.Factory` and `CacheDataSource.Factory` 1664*30877f79SAndroid Build Coastguard Worker respectively. 1665*30877f79SAndroid Build Coastguard Worker* Analytics: 1666*30877f79SAndroid Build Coastguard Worker * Extend `EventTime` with more details about the current player state 1667*30877f79SAndroid Build Coastguard Worker ([#7332](https://github.com/google/ExoPlayer/issues/7332)). 1668*30877f79SAndroid Build Coastguard Worker * Add `AnalyticsListener.onVideoFrameProcessingOffset` to report how early 1669*30877f79SAndroid Build Coastguard Worker or late video frames are processed relative to them needing to be 1670*30877f79SAndroid Build Coastguard Worker presented. Video frame processing offset fields are also added to 1671*30877f79SAndroid Build Coastguard Worker `DecoderCounters`. 1672*30877f79SAndroid Build Coastguard Worker * Fix incorrect `MediaPeriodId` for some renderer errors reported by 1673*30877f79SAndroid Build Coastguard Worker `AnalyticsListener.onPlayerError`. 1674*30877f79SAndroid Build Coastguard Worker * Remove `onMediaPeriodCreated`, `onMediaPeriodReleased` and 1675*30877f79SAndroid Build Coastguard Worker `onReadingStarted` from `AnalyticsListener`. 1676*30877f79SAndroid Build Coastguard Worker* Test utils: Add `TestExoPlayer`, a utility class with APIs to create 1677*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer` instances with fake components for testing. 1678*30877f79SAndroid Build Coastguard Worker* Media2 extension: This is a new extension that makes it easy to use 1679*30877f79SAndroid Build Coastguard Worker ExoPlayer together with AndroidX Media2. Read 1680*30877f79SAndroid Build Coastguard Worker [this blog post](https://medium.com/google-exoplayer/the-media2-extension-for-exoplayer-d6b7d89b9063) 1681*30877f79SAndroid Build Coastguard Worker to learn more. 1682*30877f79SAndroid Build Coastguard Worker* Cast extension: Implement playlist API and deprecate the old queue 1683*30877f79SAndroid Build Coastguard Worker manipulation API. 1684*30877f79SAndroid Build Coastguard Worker* IMA extension: 1685*30877f79SAndroid Build Coastguard Worker * Migrate to new 'friendly obstruction' IMA SDK APIs, and allow apps to 1686*30877f79SAndroid Build Coastguard Worker register a purpose and detail reason for overlay views via 1687*30877f79SAndroid Build Coastguard Worker `AdsLoader.AdViewProvider`. 1688*30877f79SAndroid Build Coastguard Worker * Add support for audio-only ads display containers by returning `null` 1689*30877f79SAndroid Build Coastguard Worker from `AdsLoader.AdViewProvider.getAdViewGroup`, and allow skipping 1690*30877f79SAndroid Build Coastguard Worker audio-only ads via `ImaAdsLoader.skipAd` 1691*30877f79SAndroid Build Coastguard Worker ([#7689](https://github.com/google/ExoPlayer/issues/7689)). 1692*30877f79SAndroid Build Coastguard Worker * Add `ImaAdsLoader.Builder.setCompanionAdSlots` so it's possible to set 1693*30877f79SAndroid Build Coastguard Worker companion ad slots without accessing the `AdDisplayContainer`. 1694*30877f79SAndroid Build Coastguard Worker * Add missing notification of `VideoAdPlayerCallback.onLoaded`. 1695*30877f79SAndroid Build Coastguard Worker * Fix handling of incompatible VPAID ads 1696*30877f79SAndroid Build Coastguard Worker ([#7832](https://github.com/google/ExoPlayer/issues/7832)). 1697*30877f79SAndroid Build Coastguard Worker * Fix handling of empty ads at non-integer cue points 1698*30877f79SAndroid Build Coastguard Worker ([#7889](https://github.com/google/ExoPlayer/issues/7889)). 1699*30877f79SAndroid Build Coastguard Worker* Demo app: 1700*30877f79SAndroid Build Coastguard Worker * Replace the `extensions` variant with `decoderExtensions` and update the 1701*30877f79SAndroid Build Coastguard Worker demo app use the Cronet and IMA extensions by default. 1702*30877f79SAndroid Build Coastguard Worker * Expand the `exolist.json` schema, as well the structure of intents that 1703*30877f79SAndroid Build Coastguard Worker can be used to launch `PlayerActivity`. See the 1704*30877f79SAndroid Build Coastguard Worker [Demo application page](https://exoplayer.dev/demo-application.html#playing-your-own-content) 1705*30877f79SAndroid Build Coastguard Worker for the latest versions. Changes include: 1706*30877f79SAndroid Build Coastguard Worker * Add `drm_session_for_clear_content` to allow attaching DRM sessions 1707*30877f79SAndroid Build Coastguard Worker to clear audio and video tracks. 1708*30877f79SAndroid Build Coastguard Worker * Add `clip_start_position_ms` and `clip_end_position_ms` to allow 1709*30877f79SAndroid Build Coastguard Worker clipped samples. 1710*30877f79SAndroid Build Coastguard Worker * Use `StyledPlayerControlView` rather than `PlayerView`. 1711*30877f79SAndroid Build Coastguard Worker * Remove support for media tunneling, random ABR and playback of spherical 1712*30877f79SAndroid Build Coastguard Worker video. Developers wishing to experiment with these features can enable 1713*30877f79SAndroid Build Coastguard Worker them by modifying the demo app source code. 1714*30877f79SAndroid Build Coastguard Worker * Add support for downloading DRM-protected content using offline Widevine 1715*30877f79SAndroid Build Coastguard Worker licenses. 1716*30877f79SAndroid Build Coastguard Worker 1717*30877f79SAndroid Build Coastguard Worker### 2.11.8 (2020-08-25) 1718*30877f79SAndroid Build Coastguard Worker 1719*30877f79SAndroid Build Coastguard Worker* Fix distorted playback of floating point audio when samples exceed the `[-1, 1720*30877f79SAndroid Build Coastguard Worker 1]` nominal range. 1721*30877f79SAndroid Build Coastguard Worker* MP4: 1722*30877f79SAndroid Build Coastguard Worker * Add support for `piff` and `isml` brands 1723*30877f79SAndroid Build Coastguard Worker ([#7584](https://github.com/google/ExoPlayer/issues/7584)). 1724*30877f79SAndroid Build Coastguard Worker * Fix playback of very short MP4 files. 1725*30877f79SAndroid Build Coastguard Worker* FMP4: 1726*30877f79SAndroid Build Coastguard Worker * Fix `saiz` and `senc` sample count checks, resolving a "length mismatch" 1727*30877f79SAndroid Build Coastguard Worker `ParserException` when playing certain protected FMP4 streams 1728*30877f79SAndroid Build Coastguard Worker ([#7592](https://github.com/google/ExoPlayer/issues/7592)). 1729*30877f79SAndroid Build Coastguard Worker * Fix handling of `traf` boxes containing multiple `sbgp` or `sgpd` boxes. 1730*30877f79SAndroid Build Coastguard Worker* FLV: Ignore `SCRIPTDATA` segments with invalid name types, rather than 1731*30877f79SAndroid Build Coastguard Worker failing playback ([#7675](https://github.com/google/ExoPlayer/issues/7675)). 1732*30877f79SAndroid Build Coastguard Worker* Better infer the content type of `.ism` and `.isml` streaming URLs. 1733*30877f79SAndroid Build Coastguard Worker* Workaround an issue on Broadcom based devices where playbacks would not 1734*30877f79SAndroid Build Coastguard Worker transition to `STATE_ENDED` when using video tunneling mode 1735*30877f79SAndroid Build Coastguard Worker ([#7647](https://github.com/google/ExoPlayer/issues/7647)). 1736*30877f79SAndroid Build Coastguard Worker* IMA extension: Upgrade to IMA SDK 3.19.4, bringing in a fix for setting the 1737*30877f79SAndroid Build Coastguard Worker media load timeout 1738*30877f79SAndroid Build Coastguard Worker ([#7170](https://github.com/google/ExoPlayer/issues/7170)). 1739*30877f79SAndroid Build Coastguard Worker* Demo app: Fix playback of ClearKey protected content on API level 26 and 1740*30877f79SAndroid Build Coastguard Worker earlier ([#7735](https://github.com/google/ExoPlayer/issues/7735)). 1741*30877f79SAndroid Build Coastguard Worker 1742*30877f79SAndroid Build Coastguard Worker### 2.11.7 (2020-06-29) 1743*30877f79SAndroid Build Coastguard Worker 1744*30877f79SAndroid Build Coastguard Worker* IMA extension: Fix the way postroll "content complete" notifications are 1745*30877f79SAndroid Build Coastguard Worker handled to avoid repeatedly refreshing the timeline after playback ends. 1746*30877f79SAndroid Build Coastguard Worker 1747*30877f79SAndroid Build Coastguard Worker### 2.11.6 (2020-06-19) 1748*30877f79SAndroid Build Coastguard Worker 1749*30877f79SAndroid Build Coastguard Worker* UI: Prevent `PlayerView` from temporarily hiding the video surface when 1750*30877f79SAndroid Build Coastguard Worker seeking to an unprepared period within the current window. For example when 1751*30877f79SAndroid Build Coastguard Worker seeking over an ad group, or to the next period in a multi-period DASH 1752*30877f79SAndroid Build Coastguard Worker stream ([#5507](https://github.com/google/ExoPlayer/issues/5507)). 1753*30877f79SAndroid Build Coastguard Worker* IMA extension: 1754*30877f79SAndroid Build Coastguard Worker * Add option to skip ads before the start position. 1755*30877f79SAndroid Build Coastguard Worker * Catch unexpected errors in `stopAd` to avoid a crash 1756*30877f79SAndroid Build Coastguard Worker ([#7492](https://github.com/google/ExoPlayer/issues/7492)). 1757*30877f79SAndroid Build Coastguard Worker * Fix a bug that caused playback to be stuck buffering on resuming from 1758*30877f79SAndroid Build Coastguard Worker the background after all ads had played to the end 1759*30877f79SAndroid Build Coastguard Worker ([#7508](https://github.com/google/ExoPlayer/issues/7508)). 1760*30877f79SAndroid Build Coastguard Worker * Fix a bug where the number of ads in an ad group couldn't change 1761*30877f79SAndroid Build Coastguard Worker ([#7477](https://github.com/google/ExoPlayer/issues/7477)). 1762*30877f79SAndroid Build Coastguard Worker * Work around unexpected `pauseAd`/`stopAd` for ads that have preloaded on 1763*30877f79SAndroid Build Coastguard Worker seeking to another position 1764*30877f79SAndroid Build Coastguard Worker ([#7492](https://github.com/google/ExoPlayer/issues/7492)). 1765*30877f79SAndroid Build Coastguard Worker * Fix incorrect rounding of ad cue points. 1766*30877f79SAndroid Build Coastguard Worker * Fix handling of postrolls preloading 1767*30877f79SAndroid Build Coastguard Worker ([#7518](https://github.com/google/ExoPlayer/issues/7518)). 1768*30877f79SAndroid Build Coastguard Worker 1769*30877f79SAndroid Build Coastguard Worker### 2.11.5 (2020-06-05) 1770*30877f79SAndroid Build Coastguard Worker 1771*30877f79SAndroid Build Coastguard Worker* Improve the smoothness of video playback immediately after starting, seeking 1772*30877f79SAndroid Build Coastguard Worker or resuming a playback 1773*30877f79SAndroid Build Coastguard Worker ([#6901](https://github.com/google/ExoPlayer/issues/6901)). 1774*30877f79SAndroid Build Coastguard Worker* Add `SilenceMediaSource.Factory` to support tags. 1775*30877f79SAndroid Build Coastguard Worker* Enable the configuration of `SilenceSkippingAudioProcessor` 1776*30877f79SAndroid Build Coastguard Worker ([#6705](https://github.com/google/ExoPlayer/issues/6705)). 1777*30877f79SAndroid Build Coastguard Worker* Fix bug where `PlayerMessages` throw an exception after `MediaSources` are 1778*30877f79SAndroid Build Coastguard Worker removed from the playlist 1779*30877f79SAndroid Build Coastguard Worker ([#7278](https://github.com/google/ExoPlayer/issues/7278)). 1780*30877f79SAndroid Build Coastguard Worker* Fix "Not allowed to start service" `IllegalStateException` in 1781*30877f79SAndroid Build Coastguard Worker `DownloadService` 1782*30877f79SAndroid Build Coastguard Worker ([#7306](https://github.com/google/ExoPlayer/issues/7306)). 1783*30877f79SAndroid Build Coastguard Worker* Fix issue in `AudioTrackPositionTracker` that could cause negative positions 1784*30877f79SAndroid Build Coastguard Worker to be reported at the start of playback and immediately after seeking 1785*30877f79SAndroid Build Coastguard Worker ([#7456](https://github.com/google/ExoPlayer/issues/7456)). 1786*30877f79SAndroid Build Coastguard Worker* Fix further cases where downloads would sometimes not resume after their 1787*30877f79SAndroid Build Coastguard Worker network requirements are met 1788*30877f79SAndroid Build Coastguard Worker ([#7453](https://github.com/google/ExoPlayer/issues/7453)). 1789*30877f79SAndroid Build Coastguard Worker* DASH: 1790*30877f79SAndroid Build Coastguard Worker * Merge trick play adaptation sets (i.e., adaptation sets marked with 1791*30877f79SAndroid Build Coastguard Worker `http://dashif.org/guidelines/trickmode`) into the same `TrackGroup` as 1792*30877f79SAndroid Build Coastguard Worker the main adaptation sets to which they refer. Trick play tracks are 1793*30877f79SAndroid Build Coastguard Worker marked with the `C.ROLE_FLAG_TRICK_PLAY` flag. 1794*30877f79SAndroid Build Coastguard Worker * Fix assertion failure in `SampleQueue` when playing DASH streams with 1795*30877f79SAndroid Build Coastguard Worker EMSG tracks ([#7273](https://github.com/google/ExoPlayer/issues/7273)). 1796*30877f79SAndroid Build Coastguard Worker* MP4: Store the Android capture frame rate only in `Format.metadata`. 1797*30877f79SAndroid Build Coastguard Worker `Format.frameRate` now stores the calculated frame rate. 1798*30877f79SAndroid Build Coastguard Worker* FMP4: Avoid throwing an exception while parsing default sample values whose 1799*30877f79SAndroid Build Coastguard Worker most significant bits are set 1800*30877f79SAndroid Build Coastguard Worker ([#7207](https://github.com/google/ExoPlayer/issues/7207)). 1801*30877f79SAndroid Build Coastguard Worker* MP3: Fix issue parsing the XING headers belonging to files larger than 2GB 1802*30877f79SAndroid Build Coastguard Worker ([#7337](https://github.com/google/ExoPlayer/issues/7337)). 1803*30877f79SAndroid Build Coastguard Worker* MPEG-TS: Fix issue where SEI NAL units were incorrectly dropped from H.265 1804*30877f79SAndroid Build Coastguard Worker samples ([#7113](https://github.com/google/ExoPlayer/issues/7113)). 1805*30877f79SAndroid Build Coastguard Worker* UI: 1806*30877f79SAndroid Build Coastguard Worker * Fix `DefaultTimeBar` to respect touch transformations 1807*30877f79SAndroid Build Coastguard Worker ([#7303](https://github.com/google/ExoPlayer/issues/7303)). 1808*30877f79SAndroid Build Coastguard Worker * Add `showScrubber` and `hideScrubber` methods to `DefaultTimeBar`. 1809*30877f79SAndroid Build Coastguard Worker* Text: 1810*30877f79SAndroid Build Coastguard Worker * Use anti-aliasing and bitmap filtering when displaying bitmap subtitles. 1811*30877f79SAndroid Build Coastguard Worker * Fix `SubtitlePainter` to render `EDGE_TYPE_OUTLINE` using the correct 1812*30877f79SAndroid Build Coastguard Worker color. 1813*30877f79SAndroid Build Coastguard Worker* IMA extension: 1814*30877f79SAndroid Build Coastguard Worker * Upgrade to IMA SDK version 3.19.0, and migrate to new preloading APIs 1815*30877f79SAndroid Build Coastguard Worker ([#6429](https://github.com/google/ExoPlayer/issues/6429)). This fixes 1816*30877f79SAndroid Build Coastguard Worker several issues involving preloading and handling of ad loading error 1817*30877f79SAndroid Build Coastguard Worker cases: ([#4140](https://github.com/google/ExoPlayer/issues/4140), 1818*30877f79SAndroid Build Coastguard Worker [#5006](https://github.com/google/ExoPlayer/issues/5006), 1819*30877f79SAndroid Build Coastguard Worker [#6030](https://github.com/google/ExoPlayer/issues/6030), 1820*30877f79SAndroid Build Coastguard Worker [#6097](https://github.com/google/ExoPlayer/issues/6097), 1821*30877f79SAndroid Build Coastguard Worker [#6425](https://github.com/google/ExoPlayer/issues/6425), 1822*30877f79SAndroid Build Coastguard Worker [#6967](https://github.com/google/ExoPlayer/issues/6967), 1823*30877f79SAndroid Build Coastguard Worker [#7041](https://github.com/google/ExoPlayer/issues/7041), 1824*30877f79SAndroid Build Coastguard Worker [#7161](https://github.com/google/ExoPlayer/issues/7161), 1825*30877f79SAndroid Build Coastguard Worker [#7212](https://github.com/google/ExoPlayer/issues/7212), 1826*30877f79SAndroid Build Coastguard Worker [#7340](https://github.com/google/ExoPlayer/issues/7340)). 1827*30877f79SAndroid Build Coastguard Worker * Add support for timing out ad preloading, to avoid playback getting 1828*30877f79SAndroid Build Coastguard Worker stuck if an ad group unexpectedly fails to load 1829*30877f79SAndroid Build Coastguard Worker ([#5444](https://github.com/google/ExoPlayer/issues/5444), 1830*30877f79SAndroid Build Coastguard Worker [#5966](https://github.com/google/ExoPlayer/issues/5966), 1831*30877f79SAndroid Build Coastguard Worker [#7002](https://github.com/google/ExoPlayer/issues/7002)). 1832*30877f79SAndroid Build Coastguard Worker * Fix `AdsMediaSource` child `MediaSource`s not being released. 1833*30877f79SAndroid Build Coastguard Worker* Cronet extension: Default to using the Cronet implementation in Google Play 1834*30877f79SAndroid Build Coastguard Worker Services rather than Cronet Embedded. This allows Cronet to be used with a 1835*30877f79SAndroid Build Coastguard Worker negligible increase in application size, compared to approximately 8MB when 1836*30877f79SAndroid Build Coastguard Worker embedding the library. 1837*30877f79SAndroid Build Coastguard Worker* OkHttp extension: Upgrade OkHttp dependency to 3.12.11. 1838*30877f79SAndroid Build Coastguard Worker* MediaSession extension: 1839*30877f79SAndroid Build Coastguard Worker * Only set the playback state to `BUFFERING` if `playWhenReady` is true 1840*30877f79SAndroid Build Coastguard Worker ([#7206](https://github.com/google/ExoPlayer/issues/7206)). 1841*30877f79SAndroid Build Coastguard Worker * Add missing `@Nullable` annotations to `MediaSessionConnector` 1842*30877f79SAndroid Build Coastguard Worker ([#7234](https://github.com/google/ExoPlayer/issues/7234)). 1843*30877f79SAndroid Build Coastguard Worker* AV1 extension: Add a heuristic to determine the default number of threads 1844*30877f79SAndroid Build Coastguard Worker used for AV1 playback using the extension. 1845*30877f79SAndroid Build Coastguard Worker 1846*30877f79SAndroid Build Coastguard Worker### 2.11.4 (2020-04-08) 1847*30877f79SAndroid Build Coastguard Worker 1848*30877f79SAndroid Build Coastguard Worker* Add `SimpleExoPlayer.setWakeMode` to allow automatic `WifiLock` and 1849*30877f79SAndroid Build Coastguard Worker `WakeLock` handling 1850*30877f79SAndroid Build Coastguard Worker ([#6914](https://github.com/google/ExoPlayer/issues/6914)). To use this 1851*30877f79SAndroid Build Coastguard Worker feature, you must add the 1852*30877f79SAndroid Build Coastguard Worker [WAKE_LOCK](https://developer.android.com/reference/android/Manifest.permission.html#WAKE_LOCK) 1853*30877f79SAndroid Build Coastguard Worker permission to your application's manifest file. 1854*30877f79SAndroid Build Coastguard Worker* Text: 1855*30877f79SAndroid Build Coastguard Worker * Catch and log exceptions in `TextRenderer` rather than re-throwing. This 1856*30877f79SAndroid Build Coastguard Worker allows playback to continue even if subtitle decoding fails 1857*30877f79SAndroid Build Coastguard Worker ([#6885](https://github.com/google/ExoPlayer/issues/6885)). 1858*30877f79SAndroid Build Coastguard Worker * Allow missing hours and milliseconds in SubRip (.srt) timecodes 1859*30877f79SAndroid Build Coastguard Worker ([#7122](https://github.com/google/ExoPlayer/issues/7122)). 1860*30877f79SAndroid Build Coastguard Worker* Audio: 1861*30877f79SAndroid Build Coastguard Worker * Enable playback speed adjustment and silence skipping for floating point 1862*30877f79SAndroid Build Coastguard Worker PCM audio, via resampling to 16-bit integer PCM. To output the original 1863*30877f79SAndroid Build Coastguard Worker floating point audio without adjustment, pass `enableFloatOutput=true` 1864*30877f79SAndroid Build Coastguard Worker to the `DefaultAudioSink` constructor 1865*30877f79SAndroid Build Coastguard Worker ([#7134](https://github.com/google/ExoPlayer/issues/7134)). 1866*30877f79SAndroid Build Coastguard Worker * Workaround issue that could cause slower than realtime playback of AAC 1867*30877f79SAndroid Build Coastguard Worker on Android 10 1868*30877f79SAndroid Build Coastguard Worker ([#6671](https://github.com/google/ExoPlayer/issues/6671)). 1869*30877f79SAndroid Build Coastguard Worker * Fix case where another app spuriously holding transient audio focus 1870*30877f79SAndroid Build Coastguard Worker could prevent ExoPlayer from acquiring audio focus for an indefinite 1871*30877f79SAndroid Build Coastguard Worker period of time 1872*30877f79SAndroid Build Coastguard Worker ([#7182](https://github.com/google/ExoPlayer/issues/7182)). 1873*30877f79SAndroid Build Coastguard Worker * Fix case where the player volume could be permanently ducked if audio 1874*30877f79SAndroid Build Coastguard Worker focus was released whilst ducking. 1875*30877f79SAndroid Build Coastguard Worker * Fix playback of WAV files with trailing non-media bytes 1876*30877f79SAndroid Build Coastguard Worker ([#7129](https://github.com/google/ExoPlayer/issues/7129)). 1877*30877f79SAndroid Build Coastguard Worker * Fix playback of ADTS files with mid-stream ID3 metadata. 1878*30877f79SAndroid Build Coastguard Worker* DRM: 1879*30877f79SAndroid Build Coastguard Worker * Fix stuck ad playbacks with DRM protected content 1880*30877f79SAndroid Build Coastguard Worker ([#7188](https://github.com/google/ExoPlayer/issues/7188)). 1881*30877f79SAndroid Build Coastguard Worker * Fix playback of Widevine protected content that only provides V1 PSSH 1882*30877f79SAndroid Build Coastguard Worker atoms on API levels 21 and 22. 1883*30877f79SAndroid Build Coastguard Worker * Fix playback of PlayReady content on Fire TV Stick (Gen 2). 1884*30877f79SAndroid Build Coastguard Worker* DASH: 1885*30877f79SAndroid Build Coastguard Worker * Update the manifest URI to avoid repeated HTTP redirects 1886*30877f79SAndroid Build Coastguard Worker ([#6907](https://github.com/google/ExoPlayer/issues/6907)). 1887*30877f79SAndroid Build Coastguard Worker * Parse period `AssetIdentifier` elements. 1888*30877f79SAndroid Build Coastguard Worker* HLS: Recognize IMSC subtitles 1889*30877f79SAndroid Build Coastguard Worker ([#7185](https://github.com/google/ExoPlayer/issues/7185)). 1890*30877f79SAndroid Build Coastguard Worker* UI: Add an option to set whether to use the orientation sensor for rotation 1891*30877f79SAndroid Build Coastguard Worker in spherical playbacks 1892*30877f79SAndroid Build Coastguard Worker ([#6761](https://github.com/google/ExoPlayer/issues/6761)). 1893*30877f79SAndroid Build Coastguard Worker* Analytics: Fix `PlaybackStatsListener` behavior when not keeping history 1894*30877f79SAndroid Build Coastguard Worker ([#7160](https://github.com/google/ExoPlayer/issues/7160)). 1895*30877f79SAndroid Build Coastguard Worker* FFmpeg extension: Add support for `x86_64` architecture. 1896*30877f79SAndroid Build Coastguard Worker* Opus extension: Fix parsing of negative gain values 1897*30877f79SAndroid Build Coastguard Worker ([#7046](https://github.com/google/ExoPlayer/issues/7046)). 1898*30877f79SAndroid Build Coastguard Worker* Cast extension: Upgrade `play-services-cast-framework` dependency to 18.1.0. 1899*30877f79SAndroid Build Coastguard Worker This fixes an issue where `RemoteServiceException` was thrown due to 1900*30877f79SAndroid Build Coastguard Worker `Context.startForegroundService()` not calling `Service.startForeground()` 1901*30877f79SAndroid Build Coastguard Worker ([#7191](https://github.com/google/ExoPlayer/issues/7191)). 1902*30877f79SAndroid Build Coastguard Worker 1903*30877f79SAndroid Build Coastguard Worker### 2.11.3 (2020-02-19) 1904*30877f79SAndroid Build Coastguard Worker 1905*30877f79SAndroid Build Coastguard Worker* SmoothStreaming: Fix regression that broke playback in 2.11.2 1906*30877f79SAndroid Build Coastguard Worker ([#6981](https://github.com/google/ExoPlayer/issues/6981)). 1907*30877f79SAndroid Build Coastguard Worker* DRM: Fix issue switching from protected content that uses a 16-byte 1908*30877f79SAndroid Build Coastguard Worker initialization vector to one that uses an 8-byte initialization vector 1909*30877f79SAndroid Build Coastguard Worker ([#6982](https://github.com/google/ExoPlayer/issues/6982)). 1910*30877f79SAndroid Build Coastguard Worker 1911*30877f79SAndroid Build Coastguard Worker### 2.11.2 (2020-02-13) 1912*30877f79SAndroid Build Coastguard Worker 1913*30877f79SAndroid Build Coastguard Worker* Add Java FLAC extractor 1914*30877f79SAndroid Build Coastguard Worker ([#6406](https://github.com/google/ExoPlayer/issues/6406)). 1915*30877f79SAndroid Build Coastguard Worker* Startup latency optimization: 1916*30877f79SAndroid Build Coastguard Worker * Reduce startup latency for DASH and SmoothStreaming playbacks by 1917*30877f79SAndroid Build Coastguard Worker allowing codec initialization to occur before the network connection for 1918*30877f79SAndroid Build Coastguard Worker the first media segment has been established. 1919*30877f79SAndroid Build Coastguard Worker * Reduce startup latency for on-demand DASH playbacks by allowing codec 1920*30877f79SAndroid Build Coastguard Worker initialization to occur before the sidx box has been loaded. 1921*30877f79SAndroid Build Coastguard Worker* Downloads: 1922*30877f79SAndroid Build Coastguard Worker * Fix download resumption when the requirements for them to continue are 1923*30877f79SAndroid Build Coastguard Worker met ([#6733](https://github.com/google/ExoPlayer/issues/6733), 1924*30877f79SAndroid Build Coastguard Worker [#6798](https://github.com/google/ExoPlayer/issues/6798)). 1925*30877f79SAndroid Build Coastguard Worker * Fix `DownloadHelper.createMediaSource` to use `customCacheKey` when 1926*30877f79SAndroid Build Coastguard Worker creating `ProgressiveMediaSource` instances. 1927*30877f79SAndroid Build Coastguard Worker* DRM: Fix `NullPointerException` when playing DRM protected content 1928*30877f79SAndroid Build Coastguard Worker ([#6951](https://github.com/google/ExoPlayer/issues/6951)). 1929*30877f79SAndroid Build Coastguard Worker* Metadata: 1930*30877f79SAndroid Build Coastguard Worker * Update `IcyDecoder` to try ISO-8859-1 decoding if UTF-8 decoding fails. 1931*30877f79SAndroid Build Coastguard Worker Also change `IcyInfo.rawMetadata` from `String` to `byte[]` to allow 1932*30877f79SAndroid Build Coastguard Worker developers to handle data that's neither UTF-8 nor ISO-8859-1 1933*30877f79SAndroid Build Coastguard Worker ([#6753](https://github.com/google/ExoPlayer/issues/6753)). 1934*30877f79SAndroid Build Coastguard Worker * Select multiple metadata tracks if multiple metadata renderers are 1935*30877f79SAndroid Build Coastguard Worker available ([#6676](https://github.com/google/ExoPlayer/issues/6676)). 1936*30877f79SAndroid Build Coastguard Worker * Add support for ID3 genres added in Wimamp 5.6 (2010). 1937*30877f79SAndroid Build Coastguard Worker* UI: 1938*30877f79SAndroid Build Coastguard Worker * Show ad group markers in `DefaultTimeBar` even if they are after the end 1939*30877f79SAndroid Build Coastguard Worker of the current window 1940*30877f79SAndroid Build Coastguard Worker ([#6552](https://github.com/google/ExoPlayer/issues/6552)). 1941*30877f79SAndroid Build Coastguard Worker * Don't use notification chronometer if playback speed is != 1.0 1942*30877f79SAndroid Build Coastguard Worker ([#6816](https://github.com/google/ExoPlayer/issues/6816)). 1943*30877f79SAndroid Build Coastguard Worker* HLS: Fix playback of DRM protected content that uses key rotation 1944*30877f79SAndroid Build Coastguard Worker ([#6903](https://github.com/google/ExoPlayer/issues/6903)). 1945*30877f79SAndroid Build Coastguard Worker* WAV: 1946*30877f79SAndroid Build Coastguard Worker * Support IMA ADPCM encoded data. 1947*30877f79SAndroid Build Coastguard Worker * Improve support for G.711 A-law and mu-law encoded data. 1948*30877f79SAndroid Build Coastguard Worker* MP4: Support "twos" codec (big endian PCM) 1949*30877f79SAndroid Build Coastguard Worker ([#5789](https://github.com/google/ExoPlayer/issues/5789)). 1950*30877f79SAndroid Build Coastguard Worker* FMP4: Add support for encrypted AC-4 tracks. 1951*30877f79SAndroid Build Coastguard Worker* HLS: Fix slow seeking into long MP3 segments 1952*30877f79SAndroid Build Coastguard Worker ([#6155](https://github.com/google/ExoPlayer/issues/6155)). 1953*30877f79SAndroid Build Coastguard Worker* Fix handling of E-AC-3 streams that contain AC-3 syncframes 1954*30877f79SAndroid Build Coastguard Worker ([#6602](https://github.com/google/ExoPlayer/issues/6602)). 1955*30877f79SAndroid Build Coastguard Worker* Fix playback of TrueHD streams in Matroska 1956*30877f79SAndroid Build Coastguard Worker ([#6845](https://github.com/google/ExoPlayer/issues/6845)). 1957*30877f79SAndroid Build Coastguard Worker* Fix MKV subtitles to disappear when intended instead of lasting until the 1958*30877f79SAndroid Build Coastguard Worker next cue ([#6833](https://github.com/google/ExoPlayer/issues/6833)). 1959*30877f79SAndroid Build Coastguard Worker* OkHttp extension: Upgrade OkHttp dependency to 3.12.8, which fixes a class 1960*30877f79SAndroid Build Coastguard Worker of `SocketTimeoutException` issues when using HTTP/2 1961*30877f79SAndroid Build Coastguard Worker ([#4078](https://github.com/google/ExoPlayer/issues/4078)). 1962*30877f79SAndroid Build Coastguard Worker* FLAC extension: Fix handling of bit depths other than 16 in `FLACDecoder`. 1963*30877f79SAndroid Build Coastguard Worker This issue caused FLAC streams with other bit depths to sound like white 1964*30877f79SAndroid Build Coastguard Worker noise on earlier releases, but only when embedded in a non-FLAC container 1965*30877f79SAndroid Build Coastguard Worker such as Matroska or MP4. 1966*30877f79SAndroid Build Coastguard Worker* Demo apps: Add 1967*30877f79SAndroid Build Coastguard Worker [GL demo app](https://github.com/google/ExoPlayer/tree/dev-v2/demos/gl) to 1968*30877f79SAndroid Build Coastguard Worker show how to render video to a `GLSurfaceView` while applying a GL shader. 1969*30877f79SAndroid Build Coastguard Worker ([#6920](https://github.com/google/ExoPlayer/issues/6920)). 1970*30877f79SAndroid Build Coastguard Worker 1971*30877f79SAndroid Build Coastguard Worker### 2.11.1 (2019-12-20) 1972*30877f79SAndroid Build Coastguard Worker 1973*30877f79SAndroid Build Coastguard Worker* UI: Exclude `DefaultTimeBar` region from system gesture detection 1974*30877f79SAndroid Build Coastguard Worker ([#6685](https://github.com/google/ExoPlayer/issues/6685)). 1975*30877f79SAndroid Build Coastguard Worker* ProGuard fixes: 1976*30877f79SAndroid Build Coastguard Worker * Ensure `Libgav1VideoRenderer` constructor is kept for use by 1977*30877f79SAndroid Build Coastguard Worker `DefaultRenderersFactory` 1978*30877f79SAndroid Build Coastguard Worker ([#6773](https://github.com/google/ExoPlayer/issues/6773)). 1979*30877f79SAndroid Build Coastguard Worker * Ensure `VideoDecoderOutputBuffer` and its members are kept for use by 1980*30877f79SAndroid Build Coastguard Worker video decoder extensions. 1981*30877f79SAndroid Build Coastguard Worker * Ensure raw resources used with `RawResourceDataSource` are kept. 1982*30877f79SAndroid Build Coastguard Worker * Suppress spurious warnings about the `javax.annotation` package, and 1983*30877f79SAndroid Build Coastguard Worker restructure use of `IntDef` annotations to remove spurious warnings 1984*30877f79SAndroid Build Coastguard Worker about `SsaStyle$SsaAlignment` 1985*30877f79SAndroid Build Coastguard Worker ([#6771](https://github.com/google/ExoPlayer/issues/6771)). 1986*30877f79SAndroid Build Coastguard Worker* Fix `CacheDataSource` to correctly propagate `DataSpec.httpRequestHeaders`. 1987*30877f79SAndroid Build Coastguard Worker* Fix issue with `DefaultDownloadIndex` that could result in an 1988*30877f79SAndroid Build Coastguard Worker `IllegalStateException` being thrown from 1989*30877f79SAndroid Build Coastguard Worker `DefaultDownloadIndex.getDownloadForCurrentRow` 1990*30877f79SAndroid Build Coastguard Worker ([#6785](https://github.com/google/ExoPlayer/issues/6785)). 1991*30877f79SAndroid Build Coastguard Worker* Fix `IndexOutOfBoundsException` in `SinglePeriodTimeline.getWindow` 1992*30877f79SAndroid Build Coastguard Worker ([#6776](https://github.com/google/ExoPlayer/issues/6776)). 1993*30877f79SAndroid Build Coastguard Worker* Add missing `@Nullable` to `MediaCodecAudioRenderer.getMediaClock` and 1994*30877f79SAndroid Build Coastguard Worker `SimpleDecoderAudioRenderer.getMediaClock` 1995*30877f79SAndroid Build Coastguard Worker ([#6792](https://github.com/google/ExoPlayer/issues/6792)). 1996*30877f79SAndroid Build Coastguard Worker 1997*30877f79SAndroid Build Coastguard Worker### 2.11.0 (2019-12-11) 1998*30877f79SAndroid Build Coastguard Worker 1999*30877f79SAndroid Build Coastguard Worker* Core library: 2000*30877f79SAndroid Build Coastguard Worker * Replace `ExoPlayerFactory` by `SimpleExoPlayer.Builder` and 2001*30877f79SAndroid Build Coastguard Worker `ExoPlayer.Builder`. 2002*30877f79SAndroid Build Coastguard Worker * Add automatic `WakeLock` handling to `SimpleExoPlayer`, which can be 2003*30877f79SAndroid Build Coastguard Worker enabled by calling `SimpleExoPlayer.setHandleWakeLock` 2004*30877f79SAndroid Build Coastguard Worker ([#5846](https://github.com/google/ExoPlayer/issues/5846)). To use this 2005*30877f79SAndroid Build Coastguard Worker feature, you must add the 2006*30877f79SAndroid Build Coastguard Worker [WAKE_LOCK](https://developer.android.com/reference/android/Manifest.permission.html#WAKE_LOCK) 2007*30877f79SAndroid Build Coastguard Worker permission to your application's manifest file. 2008*30877f79SAndroid Build Coastguard Worker * Add automatic "audio becoming noisy" handling to `SimpleExoPlayer`, 2009*30877f79SAndroid Build Coastguard Worker which can be enabled by calling 2010*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.setHandleAudioBecomingNoisy`. 2011*30877f79SAndroid Build Coastguard Worker * Wrap decoder exceptions in a new `DecoderException` class and report 2012*30877f79SAndroid Build Coastguard Worker them as renderer errors. 2013*30877f79SAndroid Build Coastguard Worker * Add `Timeline.Window.isLive` to indicate that a window is a live stream 2014*30877f79SAndroid Build Coastguard Worker ([#2668](https://github.com/google/ExoPlayer/issues/2668) and 2015*30877f79SAndroid Build Coastguard Worker [#5973](https://github.com/google/ExoPlayer/issues/5973)). 2016*30877f79SAndroid Build Coastguard Worker * Add `Timeline.Window.uid` to uniquely identify window instances. 2017*30877f79SAndroid Build Coastguard Worker * Deprecate `setTag` parameter of `Timeline.getWindow`. Tags will always 2018*30877f79SAndroid Build Coastguard Worker be set. 2019*30877f79SAndroid Build Coastguard Worker * Deprecate passing the manifest directly to 2020*30877f79SAndroid Build Coastguard Worker `Player.EventListener.onTimelineChanged`. It can be accessed through 2021*30877f79SAndroid Build Coastguard Worker `Timeline.Window.manifest` or `Player.getCurrentManifest()` 2022*30877f79SAndroid Build Coastguard Worker * Add `MediaSource.enable` and `MediaSource.disable` to improve resource 2023*30877f79SAndroid Build Coastguard Worker management in playlists. 2024*30877f79SAndroid Build Coastguard Worker * Add `MediaPeriod.isLoading` to improve `Player.isLoading` state. 2025*30877f79SAndroid Build Coastguard Worker * Fix issue where player errors are thrown too early at playlist 2026*30877f79SAndroid Build Coastguard Worker transitions ([#5407](https://github.com/google/ExoPlayer/issues/5407)). 2027*30877f79SAndroid Build Coastguard Worker * Add `Format` and renderer support flags to renderer 2028*30877f79SAndroid Build Coastguard Worker `ExoPlaybackException`s. 2029*30877f79SAndroid Build Coastguard Worker * Where there are multiple platform decoders for a given MIME type, prefer 2030*30877f79SAndroid Build Coastguard Worker to use one that advertises support for the profile and level of the 2031*30877f79SAndroid Build Coastguard Worker media being played over one that does not, even if it does not come 2032*30877f79SAndroid Build Coastguard Worker first in the `MediaCodecList`. 2033*30877f79SAndroid Build Coastguard Worker* DRM: 2034*30877f79SAndroid Build Coastguard Worker * Inject `DrmSessionManager` into the `MediaSources` instead of 2035*30877f79SAndroid Build Coastguard Worker `Renderers`. This allows each `MediaSource` in a 2036*30877f79SAndroid Build Coastguard Worker `ConcatenatingMediaSource` to use a different `DrmSessionManager` 2037*30877f79SAndroid Build Coastguard Worker ([#5619](https://github.com/google/ExoPlayer/issues/5619)). 2038*30877f79SAndroid Build Coastguard Worker * Add `DefaultDrmSessionManager.Builder`, and remove 2039*30877f79SAndroid Build Coastguard Worker `DefaultDrmSessionManager` static factory methods that leaked 2040*30877f79SAndroid Build Coastguard Worker `ExoMediaDrm` instances 2041*30877f79SAndroid Build Coastguard Worker ([#4721](https://github.com/google/ExoPlayer/issues/4721)). 2042*30877f79SAndroid Build Coastguard Worker * Add support for the use of secure decoders when playing clear content 2043*30877f79SAndroid Build Coastguard Worker ([#4867](https://github.com/google/ExoPlayer/issues/4867)). This can be 2044*30877f79SAndroid Build Coastguard Worker enabled using `DefaultDrmSessionManager.Builder`'s 2045*30877f79SAndroid Build Coastguard Worker `setUseDrmSessionsForClearContent` method. 2046*30877f79SAndroid Build Coastguard Worker * Add support for custom `LoadErrorHandlingPolicies` in key and 2047*30877f79SAndroid Build Coastguard Worker provisioning requests 2048*30877f79SAndroid Build Coastguard Worker ([#6334](https://github.com/google/ExoPlayer/issues/6334)). Custom 2049*30877f79SAndroid Build Coastguard Worker policies can be passed via `DefaultDrmSessionManager.Builder`'s 2050*30877f79SAndroid Build Coastguard Worker `setLoadErrorHandlingPolicy` method. 2051*30877f79SAndroid Build Coastguard Worker * Use `ExoMediaDrm.Provider` in `OfflineLicenseHelper` to avoid leaking 2052*30877f79SAndroid Build Coastguard Worker `ExoMediaDrm` instances 2053*30877f79SAndroid Build Coastguard Worker ([#4721](https://github.com/google/ExoPlayer/issues/4721)). 2054*30877f79SAndroid Build Coastguard Worker* Track selection: 2055*30877f79SAndroid Build Coastguard Worker * Update `DefaultTrackSelector` to set a viewport constraint for the 2056*30877f79SAndroid Build Coastguard Worker default display by default. 2057*30877f79SAndroid Build Coastguard Worker * Update `DefaultTrackSelector` to set text language and role flag 2058*30877f79SAndroid Build Coastguard Worker constraints for the device's accessibility settings by default 2059*30877f79SAndroid Build Coastguard Worker ([#5749](https://github.com/google/ExoPlayer/issues/5749)). 2060*30877f79SAndroid Build Coastguard Worker * Add option to set preferred text role flags using 2061*30877f79SAndroid Build Coastguard Worker `DefaultTrackSelector.ParametersBuilder.setPreferredTextRoleFlags`. 2062*30877f79SAndroid Build Coastguard Worker* LoadControl: 2063*30877f79SAndroid Build Coastguard Worker * Default `prioritizeTimeOverSizeThresholds` to false to prevent OOM 2064*30877f79SAndroid Build Coastguard Worker errors ([#6647](https://github.com/google/ExoPlayer/issues/6647)). 2065*30877f79SAndroid Build Coastguard Worker* Android 10: 2066*30877f79SAndroid Build Coastguard Worker * Set `compileSdkVersion` to 29 to enable use of Android 10 APIs. 2067*30877f79SAndroid Build Coastguard Worker * Expose new `isHardwareAccelerated`, `isSoftwareOnly` and `isVendor` 2068*30877f79SAndroid Build Coastguard Worker flags in `MediaCodecInfo` 2069*30877f79SAndroid Build Coastguard Worker ([#5839](https://github.com/google/ExoPlayer/issues/5839)). 2070*30877f79SAndroid Build Coastguard Worker * Add `allowedCapturePolicy` field to `AudioAttributes` to allow to 2071*30877f79SAndroid Build Coastguard Worker configuration of the audio capture policy. 2072*30877f79SAndroid Build Coastguard Worker* Video: 2073*30877f79SAndroid Build Coastguard Worker * Pass the codec output `MediaFormat` to `VideoFrameMetadataListener`. 2074*30877f79SAndroid Build Coastguard Worker * Fix byte order of HDR10+ static metadata to match CTA-861.3. 2075*30877f79SAndroid Build Coastguard Worker * Support out-of-band HDR10+ dynamic metadata for VP9 in WebM/Matroska. 2076*30877f79SAndroid Build Coastguard Worker * Assume that protected content requires a secure decoder when evaluating 2077*30877f79SAndroid Build Coastguard Worker whether `MediaCodecVideoRenderer` supports a given video format 2078*30877f79SAndroid Build Coastguard Worker ([#5568](https://github.com/google/ExoPlayer/issues/5568)). 2079*30877f79SAndroid Build Coastguard Worker * Fix Dolby Vision fallback to AVC and HEVC. 2080*30877f79SAndroid Build Coastguard Worker * Fix early end-of-stream detection when using video tunneling, on API 2081*30877f79SAndroid Build Coastguard Worker level 23 and above. 2082*30877f79SAndroid Build Coastguard Worker * Fix an issue where a keyframe was rendered rather than skipped when 2083*30877f79SAndroid Build Coastguard Worker performing an exact seek to a non-zero position close to the start of 2084*30877f79SAndroid Build Coastguard Worker the stream. 2085*30877f79SAndroid Build Coastguard Worker* Audio: 2086*30877f79SAndroid Build Coastguard Worker * Fix the start of audio getting truncated when transitioning to a new 2087*30877f79SAndroid Build Coastguard Worker item in a playlist of Opus streams. 2088*30877f79SAndroid Build Coastguard Worker * Workaround broken raw audio decoding on Oppo R9 2089*30877f79SAndroid Build Coastguard Worker ([#5782](https://github.com/google/ExoPlayer/issues/5782)). 2090*30877f79SAndroid Build Coastguard Worker * Reconfigure audio sink when PCM encoding changes 2091*30877f79SAndroid Build Coastguard Worker ([#6601](https://github.com/google/ExoPlayer/issues/6601)). 2092*30877f79SAndroid Build Coastguard Worker * Allow `AdtsExtractor` to encounter EOF when calculating average frame 2093*30877f79SAndroid Build Coastguard Worker size ([#6700](https://github.com/google/ExoPlayer/issues/6700)). 2094*30877f79SAndroid Build Coastguard Worker* Text: 2095*30877f79SAndroid Build Coastguard Worker * Add support for position and overlapping start/end times in SSA/ASS 2096*30877f79SAndroid Build Coastguard Worker subtitles ([#6320](https://github.com/google/ExoPlayer/issues/6320)). 2097*30877f79SAndroid Build Coastguard Worker * Require an end time or duration for SubRip (SRT) and SubStation Alpha 2098*30877f79SAndroid Build Coastguard Worker (SSA/ASS) subtitles. This applies to both sidecar files & subtitles 2099*30877f79SAndroid Build Coastguard Worker [embedded in Matroska streams](https://matroska.org/technical/specs/subtitles/index.html). 2100*30877f79SAndroid Build Coastguard Worker* UI: 2101*30877f79SAndroid Build Coastguard Worker * Make showing and hiding player controls accessible to TalkBack in 2102*30877f79SAndroid Build Coastguard Worker `PlayerView`. 2103*30877f79SAndroid Build Coastguard Worker * Rename `spherical_view` surface type to `spherical_gl_surface_view`. 2104*30877f79SAndroid Build Coastguard Worker * Make it easier to override the shuffle, repeat, fullscreen, VR and small 2105*30877f79SAndroid Build Coastguard Worker notification icon assets 2106*30877f79SAndroid Build Coastguard Worker ([#6709](https://github.com/google/ExoPlayer/issues/6709)). 2107*30877f79SAndroid Build Coastguard Worker* Analytics: 2108*30877f79SAndroid Build Coastguard Worker * Remove `AnalyticsCollector.Factory`. Instances should be created 2109*30877f79SAndroid Build Coastguard Worker directly, and the `Player` should be set by calling 2110*30877f79SAndroid Build Coastguard Worker `AnalyticsCollector.setPlayer`. 2111*30877f79SAndroid Build Coastguard Worker * Add `PlaybackStatsListener` to collect `PlaybackStats` for analysis and 2112*30877f79SAndroid Build Coastguard Worker analytics reporting. 2113*30877f79SAndroid Build Coastguard Worker* DataSource 2114*30877f79SAndroid Build Coastguard Worker * Add `DataSpec.httpRequestHeaders` to support setting per-request headers 2115*30877f79SAndroid Build Coastguard Worker for HTTP and HTTPS. 2116*30877f79SAndroid Build Coastguard Worker * Remove the `DataSpec.FLAG_ALLOW_ICY_METADATA` flag. Use is replaced by 2117*30877f79SAndroid Build Coastguard Worker setting the `IcyHeaders.REQUEST_HEADER_ENABLE_METADATA_NAME` header in 2118*30877f79SAndroid Build Coastguard Worker `DataSpec.httpRequestHeaders`. 2119*30877f79SAndroid Build Coastguard Worker * Fail more explicitly when local file URIs contain invalid parts (e.g. a 2120*30877f79SAndroid Build Coastguard Worker fragment) ([#6470](https://github.com/google/ExoPlayer/issues/6470)). 2121*30877f79SAndroid Build Coastguard Worker* DASH: Support negative @r values in segment timelines 2122*30877f79SAndroid Build Coastguard Worker ([#1787](https://github.com/google/ExoPlayer/issues/1787)). 2123*30877f79SAndroid Build Coastguard Worker* HLS: 2124*30877f79SAndroid Build Coastguard Worker * Use peak bitrate rather than average bitrate for adaptive track 2125*30877f79SAndroid Build Coastguard Worker selection. 2126*30877f79SAndroid Build Coastguard Worker * Fix issue where streams could get stuck in an infinite buffering state 2127*30877f79SAndroid Build Coastguard Worker after a postroll ad 2128*30877f79SAndroid Build Coastguard Worker ([#6314](https://github.com/google/ExoPlayer/issues/6314)). 2129*30877f79SAndroid Build Coastguard Worker* Matroska: Support lacing in Blocks 2130*30877f79SAndroid Build Coastguard Worker ([#3026](https://github.com/google/ExoPlayer/issues/3026)). 2131*30877f79SAndroid Build Coastguard Worker* AV1 extension: 2132*30877f79SAndroid Build Coastguard Worker * New in this release. The AV1 extension allows use of the 2133*30877f79SAndroid Build Coastguard Worker [libgav1 software decoder](https://chromium.googlesource.com/codecs/libgav1/) 2134*30877f79SAndroid Build Coastguard Worker in ExoPlayer. You can read more about playing AV1 videos with ExoPlayer 2135*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/playing-av1-videos-with-exoplayer-a7cb19bedef9). 2136*30877f79SAndroid Build Coastguard Worker* VP9 extension: 2137*30877f79SAndroid Build Coastguard Worker * Update to use NDK r20. 2138*30877f79SAndroid Build Coastguard Worker * Rename `VpxVideoSurfaceView` to `VideoDecoderSurfaceView` and move it to 2139*30877f79SAndroid Build Coastguard Worker the core library. 2140*30877f79SAndroid Build Coastguard Worker * Move `LibvpxVideoRenderer.MSG_SET_OUTPUT_BUFFER_RENDERER` to 2141*30877f79SAndroid Build Coastguard Worker `C.MSG_SET_OUTPUT_BUFFER_RENDERER`. 2142*30877f79SAndroid Build Coastguard Worker * Use `VideoDecoderRenderer` as an implementation of 2143*30877f79SAndroid Build Coastguard Worker `VideoDecoderOutputBufferRenderer`, instead of 2144*30877f79SAndroid Build Coastguard Worker `VideoDecoderSurfaceView`. 2145*30877f79SAndroid Build Coastguard Worker* FLAC extension: Update to use NDK r20. 2146*30877f79SAndroid Build Coastguard Worker* Opus extension: Update to use NDK r20. 2147*30877f79SAndroid Build Coastguard Worker* FFmpeg extension: 2148*30877f79SAndroid Build Coastguard Worker * Update to use NDK r20. 2149*30877f79SAndroid Build Coastguard Worker * Update to use FFmpeg version 4.2. It is necessary to rebuild the native 2150*30877f79SAndroid Build Coastguard Worker part of the extension after this change, following the instructions in 2151*30877f79SAndroid Build Coastguard Worker the extension's readme. 2152*30877f79SAndroid Build Coastguard Worker* MediaSession extension: Add `MediaSessionConnector.setCaptionCallback` to 2153*30877f79SAndroid Build Coastguard Worker support `ACTION_SET_CAPTIONING_ENABLED` events. 2154*30877f79SAndroid Build Coastguard Worker* GVR extension: This extension is now deprecated. 2155*30877f79SAndroid Build Coastguard Worker* Demo apps: 2156*30877f79SAndroid Build Coastguard Worker * Add 2157*30877f79SAndroid Build Coastguard Worker [SurfaceControl demo app](https://github.com/google/ExoPlayer/tree/r2.11.0/demos/surface) 2158*30877f79SAndroid Build Coastguard Worker to show how to use the Android 10 `SurfaceControl` API with ExoPlayer 2159*30877f79SAndroid Build Coastguard Worker ([#677](https://github.com/google/ExoPlayer/issues/677)). 2160*30877f79SAndroid Build Coastguard Worker * Add support for subtitle files to the 2161*30877f79SAndroid Build Coastguard Worker [Main demo app](https://github.com/google/ExoPlayer/tree/r2.11.0/demos/main) 2162*30877f79SAndroid Build Coastguard Worker ([#5523](https://github.com/google/ExoPlayer/issues/5523)). 2163*30877f79SAndroid Build Coastguard Worker * Remove the IMA demo app. IMA functionality is demonstrated by the 2164*30877f79SAndroid Build Coastguard Worker [main demo app](https://github.com/google/ExoPlayer/tree/r2.11.0/demos/main). 2165*30877f79SAndroid Build Coastguard Worker * Add basic DRM support to the 2166*30877f79SAndroid Build Coastguard Worker [Cast demo app](https://github.com/google/ExoPlayer/tree/r2.11.0/demos/cast). 2167*30877f79SAndroid Build Coastguard Worker* TestUtils: Publish the `testutils` module to simplify unit testing with 2168*30877f79SAndroid Build Coastguard Worker ExoPlayer ([#6267](https://github.com/google/ExoPlayer/issues/6267)). 2169*30877f79SAndroid Build Coastguard Worker* IMA extension: Remove `AdsManager` listeners on release to avoid leaking an 2170*30877f79SAndroid Build Coastguard Worker `AdEventListener` provided by the app 2171*30877f79SAndroid Build Coastguard Worker ([#6687](https://github.com/google/ExoPlayer/issues/6687)). 2172*30877f79SAndroid Build Coastguard Worker 2173*30877f79SAndroid Build Coastguard Worker### 2.10.8 (2019-11-19) 2174*30877f79SAndroid Build Coastguard Worker 2175*30877f79SAndroid Build Coastguard Worker* E-AC3 JOC 2176*30877f79SAndroid Build Coastguard Worker * Handle new signaling in DASH manifests 2177*30877f79SAndroid Build Coastguard Worker ([#6636](https://github.com/google/ExoPlayer/issues/6636)). 2178*30877f79SAndroid Build Coastguard Worker * Fix E-AC3 JOC passthrough playback failing to initialize due to 2179*30877f79SAndroid Build Coastguard Worker incorrect channel count check. 2180*30877f79SAndroid Build Coastguard Worker* FLAC 2181*30877f79SAndroid Build Coastguard Worker * Fix sniffing for some FLAC streams. 2182*30877f79SAndroid Build Coastguard Worker * Fix FLAC `Format.bitrate` values. 2183*30877f79SAndroid Build Coastguard Worker* Parse ALAC channel count and sample rate information from a more robust 2184*30877f79SAndroid Build Coastguard Worker source when contained in MP4 2185*30877f79SAndroid Build Coastguard Worker ([#6648](https://github.com/google/ExoPlayer/issues/6648)). 2186*30877f79SAndroid Build Coastguard Worker* Fix seeking into multi-period content in the edge case that the period 2187*30877f79SAndroid Build Coastguard Worker containing the seek position has just been removed 2188*30877f79SAndroid Build Coastguard Worker ([#6641](https://github.com/google/ExoPlayer/issues/6641)). 2189*30877f79SAndroid Build Coastguard Worker 2190*30877f79SAndroid Build Coastguard Worker### 2.10.7 (2019-11-06) 2191*30877f79SAndroid Build Coastguard Worker 2192*30877f79SAndroid Build Coastguard Worker* HLS: Fix detection of Dolby Atmos to match the HLS authoring specification. 2193*30877f79SAndroid Build Coastguard Worker* MediaSession extension: Update shuffle and repeat modes when playback state 2194*30877f79SAndroid Build Coastguard Worker is invalidated ([#6582](https://github.com/google/ExoPlayer/issues/6582)). 2195*30877f79SAndroid Build Coastguard Worker* Fix the start of audio getting truncated when transitioning to a new item in 2196*30877f79SAndroid Build Coastguard Worker a playlist of Opus streams. 2197*30877f79SAndroid Build Coastguard Worker 2198*30877f79SAndroid Build Coastguard Worker### 2.10.6 (2019-10-17) 2199*30877f79SAndroid Build Coastguard Worker 2200*30877f79SAndroid Build Coastguard Worker* Add `Player.onPlaybackSuppressionReasonChanged` to allow listeners to detect 2201*30877f79SAndroid Build Coastguard Worker playbacks suppressions (e.g. transient audio focus loss) directly 2202*30877f79SAndroid Build Coastguard Worker ([#6203](https://github.com/google/ExoPlayer/issues/6203)). 2203*30877f79SAndroid Build Coastguard Worker* DASH: 2204*30877f79SAndroid Build Coastguard Worker * Support `Label` elements 2205*30877f79SAndroid Build Coastguard Worker ([#6297](https://github.com/google/ExoPlayer/issues/6297)). 2206*30877f79SAndroid Build Coastguard Worker * Support legacy audio channel configuration 2207*30877f79SAndroid Build Coastguard Worker ([#6523](https://github.com/google/ExoPlayer/issues/6523)). 2208*30877f79SAndroid Build Coastguard Worker* HLS: Add support for ID3 in EMSG when using FMP4 streams 2209*30877f79SAndroid Build Coastguard Worker ([spec](https://aomediacodec.github.io/av1-id3/)). 2210*30877f79SAndroid Build Coastguard Worker* MP3: Add workaround to avoid prematurely ending playback of some SHOUTcast 2211*30877f79SAndroid Build Coastguard Worker live streams ([#6537](https://github.com/google/ExoPlayer/issues/6537), 2212*30877f79SAndroid Build Coastguard Worker [#6315](https://github.com/google/ExoPlayer/issues/6315) and 2213*30877f79SAndroid Build Coastguard Worker [#5658](https://github.com/google/ExoPlayer/issues/5658)). 2214*30877f79SAndroid Build Coastguard Worker* Metadata: Expose the raw ICY metadata through `IcyInfo` 2215*30877f79SAndroid Build Coastguard Worker ([#6476](https://github.com/google/ExoPlayer/issues/6476)). 2216*30877f79SAndroid Build Coastguard Worker* UI: 2217*30877f79SAndroid Build Coastguard Worker * Setting `app:played_color` on `PlayerView` and `PlayerControlView` no 2218*30877f79SAndroid Build Coastguard Worker longer adjusts the colors of the scrubber handle , buffered and unplayed 2219*30877f79SAndroid Build Coastguard Worker parts of the time bar. These can be set separately using 2220*30877f79SAndroid Build Coastguard Worker `app:scrubber_color`, `app:buffered_color` and `app_unplayed_color` 2221*30877f79SAndroid Build Coastguard Worker respectively. 2222*30877f79SAndroid Build Coastguard Worker * Setting `app:ad_marker_color` on `PlayerView` and `PlayerControlView` no 2223*30877f79SAndroid Build Coastguard Worker longer adjusts the color of played ad markers. The color of played ad 2224*30877f79SAndroid Build Coastguard Worker markers can be set separately using `app:played_ad_marker_color`. 2225*30877f79SAndroid Build Coastguard Worker 2226*30877f79SAndroid Build Coastguard Worker### 2.10.5 (2019-09-20) 2227*30877f79SAndroid Build Coastguard Worker 2228*30877f79SAndroid Build Coastguard Worker* Add `Player.isPlaying` and `EventListener.onIsPlayingChanged` to check 2229*30877f79SAndroid Build Coastguard Worker whether the playback position is advancing. This helps to determine if 2230*30877f79SAndroid Build Coastguard Worker playback is suppressed due to audio focus loss. Also add 2231*30877f79SAndroid Build Coastguard Worker `Player.getPlaybackSuppressedReason` to determine the reason of the 2232*30877f79SAndroid Build Coastguard Worker suppression ([#6203](https://github.com/google/ExoPlayer/issues/6203)). 2233*30877f79SAndroid Build Coastguard Worker* Track selection 2234*30877f79SAndroid Build Coastguard Worker * Add `allowAudioMixedChannelCountAdaptiveness` parameter to 2235*30877f79SAndroid Build Coastguard Worker `DefaultTrackSelector` to allow adaptive selections of audio tracks with 2236*30877f79SAndroid Build Coastguard Worker different channel counts. 2237*30877f79SAndroid Build Coastguard Worker * Improve text selection logic to always prefer the better language 2238*30877f79SAndroid Build Coastguard Worker matches over other selection parameters. 2239*30877f79SAndroid Build Coastguard Worker * Fix audio selection issue where languages are compared by bitrate 2240*30877f79SAndroid Build Coastguard Worker ([#6335](https://github.com/google/ExoPlayer/issues/6335)). 2241*30877f79SAndroid Build Coastguard Worker* Performance 2242*30877f79SAndroid Build Coastguard Worker * Increase maximum video buffer size from 13MB to 32MB. The previous 2243*30877f79SAndroid Build Coastguard Worker default was too small for high quality streams. 2244*30877f79SAndroid Build Coastguard Worker * Reset `DefaultBandwidthMeter` to initial values on network change. 2245*30877f79SAndroid Build Coastguard Worker * Bypass sniffing in `ProgressiveMediaPeriod` in case a single extractor 2246*30877f79SAndroid Build Coastguard Worker is provided ([#6325](https://github.com/google/ExoPlayer/issues/6325)). 2247*30877f79SAndroid Build Coastguard Worker* Metadata 2248*30877f79SAndroid Build Coastguard Worker * Support EMSG V1 boxes in FMP4. 2249*30877f79SAndroid Build Coastguard Worker * Support unwrapping of nested metadata (e.g. ID3 and SCTE-35 in EMSG). 2250*30877f79SAndroid Build Coastguard Worker* Add `HttpDataSource.getResponseCode` to provide the status code associated 2251*30877f79SAndroid Build Coastguard Worker with the most recent HTTP response. 2252*30877f79SAndroid Build Coastguard Worker* Fix transitions between packed audio and non-packed audio segments in HLS 2253*30877f79SAndroid Build Coastguard Worker ([#6444](https://github.com/google/ExoPlayer/issues/6444)). 2254*30877f79SAndroid Build Coastguard Worker* Fix issue where a request would be retried after encountering an error, even 2255*30877f79SAndroid Build Coastguard Worker though the `LoadErrorHandlingPolicy` classified the error as fatal. 2256*30877f79SAndroid Build Coastguard Worker* Fix initialization data handling for FLAC in MP4 2257*30877f79SAndroid Build Coastguard Worker ([#6396](https://github.com/google/ExoPlayer/issues/6396), 2258*30877f79SAndroid Build Coastguard Worker [#6397](https://github.com/google/ExoPlayer/issues/6397)). 2259*30877f79SAndroid Build Coastguard Worker* Fix decoder selection for E-AC3 JOC streams 2260*30877f79SAndroid Build Coastguard Worker ([#6398](https://github.com/google/ExoPlayer/issues/6398)). 2261*30877f79SAndroid Build Coastguard Worker* Fix `PlayerNotificationManager` to show play icon rather than pause icon 2262*30877f79SAndroid Build Coastguard Worker when playback is ended 2263*30877f79SAndroid Build Coastguard Worker ([#6324](https://github.com/google/ExoPlayer/issues/6324)). 2264*30877f79SAndroid Build Coastguard Worker* RTMP extension: Upgrade LibRtmp-Client-for-Android to fix RTMP playback 2265*30877f79SAndroid Build Coastguard Worker issues ([#4200](https://github.com/google/ExoPlayer/issues/4200), 2266*30877f79SAndroid Build Coastguard Worker [#4249](https://github.com/google/ExoPlayer/issues/4249), 2267*30877f79SAndroid Build Coastguard Worker [#4319](https://github.com/google/ExoPlayer/issues/4319), 2268*30877f79SAndroid Build Coastguard Worker [#4337](https://github.com/google/ExoPlayer/issues/4337)). 2269*30877f79SAndroid Build Coastguard Worker* IMA extension: Fix crash in `ImaAdsLoader.onTimelineChanged` 2270*30877f79SAndroid Build Coastguard Worker ([#5831](https://github.com/google/ExoPlayer/issues/5831)). 2271*30877f79SAndroid Build Coastguard Worker 2272*30877f79SAndroid Build Coastguard Worker### 2.10.4 (2019-07-26) 2273*30877f79SAndroid Build Coastguard Worker 2274*30877f79SAndroid Build Coastguard Worker* Offline: Add `Scheduler` implementation that uses `WorkManager`. 2275*30877f79SAndroid Build Coastguard Worker* Add ability to specify a description when creating notification channels via 2276*30877f79SAndroid Build Coastguard Worker ExoPlayer library classes. 2277*30877f79SAndroid Build Coastguard Worker* Switch normalized BCP-47 language codes to use 2-letter ISO 639-1 language 2278*30877f79SAndroid Build Coastguard Worker tags instead of 3-letter ISO 639-2 language tags. 2279*30877f79SAndroid Build Coastguard Worker* Ensure the `SilenceMediaSource` position is in range 2280*30877f79SAndroid Build Coastguard Worker ([#6229](https://github.com/google/ExoPlayer/issues/6229)). 2281*30877f79SAndroid Build Coastguard Worker* WAV: Calculate correct duration for clipped streams 2282*30877f79SAndroid Build Coastguard Worker ([#6241](https://github.com/google/ExoPlayer/issues/6241)). 2283*30877f79SAndroid Build Coastguard Worker* MP3: Use CBR header bitrate, not calculated bitrate. This reverts a change 2284*30877f79SAndroid Build Coastguard Worker from 2.9.3 ([#6238](https://github.com/google/ExoPlayer/issues/6238)). 2285*30877f79SAndroid Build Coastguard Worker* FLAC extension: Parse `VORBIS_COMMENT` and `PICTURE` metadata 2286*30877f79SAndroid Build Coastguard Worker ([#5527](https://github.com/google/ExoPlayer/issues/5527)). 2287*30877f79SAndroid Build Coastguard Worker* Fix issue where initial seek positions get ignored when playing a preroll ad 2288*30877f79SAndroid Build Coastguard Worker ([#6201](https://github.com/google/ExoPlayer/issues/6201)). 2289*30877f79SAndroid Build Coastguard Worker* Fix issue where invalid language tags were normalized to "und" instead of 2290*30877f79SAndroid Build Coastguard Worker keeping the original 2291*30877f79SAndroid Build Coastguard Worker ([#6153](https://github.com/google/ExoPlayer/issues/6153)). 2292*30877f79SAndroid Build Coastguard Worker* Fix `DataSchemeDataSource` re-opening and range requests 2293*30877f79SAndroid Build Coastguard Worker ([#6192](https://github.com/google/ExoPlayer/issues/6192)). 2294*30877f79SAndroid Build Coastguard Worker* Fix FLAC and ALAC playback on some LG devices 2295*30877f79SAndroid Build Coastguard Worker ([#5938](https://github.com/google/ExoPlayer/issues/5938)). 2296*30877f79SAndroid Build Coastguard Worker* Fix issue when calling `performClick` on `PlayerView` without 2297*30877f79SAndroid Build Coastguard Worker `PlayerControlView` 2298*30877f79SAndroid Build Coastguard Worker ([#6260](https://github.com/google/ExoPlayer/issues/6260)). 2299*30877f79SAndroid Build Coastguard Worker* Fix issue where playback speeds are not used in adaptive track selections 2300*30877f79SAndroid Build Coastguard Worker after manual selection changes for other renderers 2301*30877f79SAndroid Build Coastguard Worker ([#6256](https://github.com/google/ExoPlayer/issues/6256)). 2302*30877f79SAndroid Build Coastguard Worker 2303*30877f79SAndroid Build Coastguard Worker### 2.10.3 (2019-07-09) 2304*30877f79SAndroid Build Coastguard Worker 2305*30877f79SAndroid Build Coastguard Worker* Display last frame when seeking to end of stream 2306*30877f79SAndroid Build Coastguard Worker ([#2568](https://github.com/google/ExoPlayer/issues/2568)). 2307*30877f79SAndroid Build Coastguard Worker* Audio: 2308*30877f79SAndroid Build Coastguard Worker * Fix an issue where not all audio was played out when the configuration 2309*30877f79SAndroid Build Coastguard Worker for the underlying track was changing (e.g., at some period 2310*30877f79SAndroid Build Coastguard Worker transitions). 2311*30877f79SAndroid Build Coastguard Worker * Fix an issue where playback speed was applied inaccurately in playlists 2312*30877f79SAndroid Build Coastguard Worker ([#6117](https://github.com/google/ExoPlayer/issues/6117)). 2313*30877f79SAndroid Build Coastguard Worker* UI: Fix `PlayerView` incorrectly consuming touch events if no controller is 2314*30877f79SAndroid Build Coastguard Worker attached ([#6109](https://github.com/google/ExoPlayer/issues/6109)). 2315*30877f79SAndroid Build Coastguard Worker* CEA608: Fix repetition of special North American characters 2316*30877f79SAndroid Build Coastguard Worker ([#6133](https://github.com/google/ExoPlayer/issues/6133)). 2317*30877f79SAndroid Build Coastguard Worker* FLV: Fix bug that caused playback of some live streams to not start 2318*30877f79SAndroid Build Coastguard Worker ([#6111](https://github.com/google/ExoPlayer/issues/6111)). 2319*30877f79SAndroid Build Coastguard Worker* SmoothStreaming: Parse text stream `Subtype` into `Format.roleFlags`. 2320*30877f79SAndroid Build Coastguard Worker* MediaSession extension: Fix `MediaSessionConnector.play()` not resuming 2321*30877f79SAndroid Build Coastguard Worker playback ([#6093](https://github.com/google/ExoPlayer/issues/6093)). 2322*30877f79SAndroid Build Coastguard Worker 2323*30877f79SAndroid Build Coastguard Worker### 2.10.2 (2019-06-03) 2324*30877f79SAndroid Build Coastguard Worker 2325*30877f79SAndroid Build Coastguard Worker* Add `ResolvingDataSource` for just-in-time resolution of `DataSpec`s 2326*30877f79SAndroid Build Coastguard Worker ([#5779](https://github.com/google/ExoPlayer/issues/5779)). 2327*30877f79SAndroid Build Coastguard Worker* Add `SilenceMediaSource` that can be used to play silence of a given 2328*30877f79SAndroid Build Coastguard Worker duration ([#5735](https://github.com/google/ExoPlayer/issues/5735)). 2329*30877f79SAndroid Build Coastguard Worker* Offline: 2330*30877f79SAndroid Build Coastguard Worker * Prevent unexpected `DownloadHelper.Callback.onPrepared` callbacks after 2331*30877f79SAndroid Build Coastguard Worker preparation of a `DownloadHelper` fails 2332*30877f79SAndroid Build Coastguard Worker ([#5915](https://github.com/google/ExoPlayer/issues/5915)). 2333*30877f79SAndroid Build Coastguard Worker * Fix `CacheUtil.cache()` downloading too much data 2334*30877f79SAndroid Build Coastguard Worker ([#5927](https://github.com/google/ExoPlayer/issues/5927)). 2335*30877f79SAndroid Build Coastguard Worker * Fix misreporting cached bytes when caching is paused 2336*30877f79SAndroid Build Coastguard Worker ([#5573](https://github.com/google/ExoPlayer/issues/5573)). 2337*30877f79SAndroid Build Coastguard Worker* UI: 2338*30877f79SAndroid Build Coastguard Worker * Allow setting `DefaultTimeBar` attributes on `PlayerView` and 2339*30877f79SAndroid Build Coastguard Worker `PlayerControlView`. 2340*30877f79SAndroid Build Coastguard Worker * Change playback controls toggle from touch down to touch up events 2341*30877f79SAndroid Build Coastguard Worker ([#5784](https://github.com/google/ExoPlayer/issues/5784)). 2342*30877f79SAndroid Build Coastguard Worker * Fix issue where playback controls were not kept visible on key presses 2343*30877f79SAndroid Build Coastguard Worker ([#5963](https://github.com/google/ExoPlayer/issues/5963)). 2344*30877f79SAndroid Build Coastguard Worker* Subtitles: 2345*30877f79SAndroid Build Coastguard Worker * CEA-608: Handle XDS and TEXT modes 2346*30877f79SAndroid Build Coastguard Worker ([#5807](https://github.com/google/ExoPlayer/pull/5807)). 2347*30877f79SAndroid Build Coastguard Worker * TTML: Fix bitmap rendering 2348*30877f79SAndroid Build Coastguard Worker ([#5633](https://github.com/google/ExoPlayer/pull/5633)). 2349*30877f79SAndroid Build Coastguard Worker* IMA: Fix ad pod index offset calculation without preroll 2350*30877f79SAndroid Build Coastguard Worker ([#5928](https://github.com/google/ExoPlayer/issues/5928)). 2351*30877f79SAndroid Build Coastguard Worker* Add a `playWhenReady` flag to MediaSessionConnector.PlaybackPreparer methods 2352*30877f79SAndroid Build Coastguard Worker to indicate whether a controller sent a play or only a prepare command. This 2353*30877f79SAndroid Build Coastguard Worker allows to take advantage of decoder reuse with the MediaSessionConnector 2354*30877f79SAndroid Build Coastguard Worker ([#5891](https://github.com/google/ExoPlayer/issues/5891)). 2355*30877f79SAndroid Build Coastguard Worker* Add `ProgressUpdateListener` to `PlayerControlView` 2356*30877f79SAndroid Build Coastguard Worker ([#5834](https://github.com/google/ExoPlayer/issues/5834)). 2357*30877f79SAndroid Build Coastguard Worker* Add support for auto-detecting UDP streams in `DefaultDataSource` 2358*30877f79SAndroid Build Coastguard Worker ([#6036](https://github.com/google/ExoPlayer/pull/6036)). 2359*30877f79SAndroid Build Coastguard Worker* Allow enabling decoder fallback with `DefaultRenderersFactory` 2360*30877f79SAndroid Build Coastguard Worker ([#5942](https://github.com/google/ExoPlayer/issues/5942)). 2361*30877f79SAndroid Build Coastguard Worker* Gracefully handle revoked `ACCESS_NETWORK_STATE` permission 2362*30877f79SAndroid Build Coastguard Worker ([#6019](https://github.com/google/ExoPlayer/issues/6019)). 2363*30877f79SAndroid Build Coastguard Worker* Fix decoding problems when seeking back after seeking beyond a mid-roll ad 2364*30877f79SAndroid Build Coastguard Worker ([#6009](https://github.com/google/ExoPlayer/issues/6009)). 2365*30877f79SAndroid Build Coastguard Worker* Fix application of `maxAudioBitrate` for adaptive audio track groups 2366*30877f79SAndroid Build Coastguard Worker ([#6006](https://github.com/google/ExoPlayer/issues/6006)). 2367*30877f79SAndroid Build Coastguard Worker* Fix bug caused by parallel adaptive track selection using `Format`s without 2368*30877f79SAndroid Build Coastguard Worker bitrate information 2369*30877f79SAndroid Build Coastguard Worker ([#5971](https://github.com/google/ExoPlayer/issues/5971)). 2370*30877f79SAndroid Build Coastguard Worker* Fix bug in `CastPlayer.getCurrentWindowIndex()` 2371*30877f79SAndroid Build Coastguard Worker ([#5955](https://github.com/google/ExoPlayer/issues/5955)). 2372*30877f79SAndroid Build Coastguard Worker 2373*30877f79SAndroid Build Coastguard Worker### 2.10.1 (2019-05-16) 2374*30877f79SAndroid Build Coastguard Worker 2375*30877f79SAndroid Build Coastguard Worker* Offline: Add option to remove all downloads. 2376*30877f79SAndroid Build Coastguard Worker* HLS: Fix `NullPointerException` when using HLS chunkless preparation 2377*30877f79SAndroid Build Coastguard Worker ([#5868](https://github.com/google/ExoPlayer/issues/5868)). 2378*30877f79SAndroid Build Coastguard Worker* Fix handling of empty values and line terminators in SHOUTcast ICY metadata 2379*30877f79SAndroid Build Coastguard Worker ([#5876](https://github.com/google/ExoPlayer/issues/5876)). 2380*30877f79SAndroid Build Coastguard Worker* Fix DVB subtitles for SDK 28 2381*30877f79SAndroid Build Coastguard Worker ([#5862](https://github.com/google/ExoPlayer/issues/5862)). 2382*30877f79SAndroid Build Coastguard Worker* Add a workaround for a decoder failure on ZTE Axon7 mini devices when 2383*30877f79SAndroid Build Coastguard Worker playing 48kHz audio 2384*30877f79SAndroid Build Coastguard Worker ([#5821](https://github.com/google/ExoPlayer/issues/5821)). 2385*30877f79SAndroid Build Coastguard Worker 2386*30877f79SAndroid Build Coastguard Worker### 2.10.0 (2019-04-15) 2387*30877f79SAndroid Build Coastguard Worker 2388*30877f79SAndroid Build Coastguard Worker* Core library: 2389*30877f79SAndroid Build Coastguard Worker * Improve decoder re-use between playbacks 2390*30877f79SAndroid Build Coastguard Worker ([#2826](https://github.com/google/ExoPlayer/issues/2826)). Read 2391*30877f79SAndroid Build Coastguard Worker [this blog post](https://medium.com/google-exoplayer/improved-decoder-reuse-in-exoplayer-ef4c6d99591d) 2392*30877f79SAndroid Build Coastguard Worker for more details. 2393*30877f79SAndroid Build Coastguard Worker * Rename `ExtractorMediaSource` to `ProgressiveMediaSource`. 2394*30877f79SAndroid Build Coastguard Worker * Fix issue where using `ProgressiveMediaSource.Factory` would mean that 2395*30877f79SAndroid Build Coastguard Worker `DefaultExtractorsFactory` would be kept by proguard. Custom 2396*30877f79SAndroid Build Coastguard Worker `ExtractorsFactory` instances must now be passed via the 2397*30877f79SAndroid Build Coastguard Worker `ProgressiveMediaSource.Factory` constructor, and `setExtractorsFactory` 2398*30877f79SAndroid Build Coastguard Worker is deprecated. 2399*30877f79SAndroid Build Coastguard Worker * Make the default minimum buffer size equal the maximum buffer size for 2400*30877f79SAndroid Build Coastguard Worker video playbacks 2401*30877f79SAndroid Build Coastguard Worker ([#2083](https://github.com/google/ExoPlayer/issues/2083)). 2402*30877f79SAndroid Build Coastguard Worker * Move `PriorityTaskManager` from `DefaultLoadControl` to 2403*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer`. 2404*30877f79SAndroid Build Coastguard Worker * Add new `ExoPlaybackException` types for remote exceptions and 2405*30877f79SAndroid Build Coastguard Worker out-of-memory errors. 2406*30877f79SAndroid Build Coastguard Worker * Use full BCP 47 language tags in `Format`. 2407*30877f79SAndroid Build Coastguard Worker * Do not retry failed loads whose error is `FileNotFoundException`. 2408*30877f79SAndroid Build Coastguard Worker * Fix issue where not resetting the position for a new `MediaSource` in 2409*30877f79SAndroid Build Coastguard Worker calls to `ExoPlayer.prepare` causes an `IndexOutOfBoundsException` 2410*30877f79SAndroid Build Coastguard Worker ([#5520](https://github.com/google/ExoPlayer/issues/5520)). 2411*30877f79SAndroid Build Coastguard Worker* Offline: 2412*30877f79SAndroid Build Coastguard Worker * Improve offline support. `DownloadManager` now tracks all offline 2413*30877f79SAndroid Build Coastguard Worker content, not just tasks in progress. Read 2414*30877f79SAndroid Build Coastguard Worker [this page](https://exoplayer.dev/downloading-media.html) for more 2415*30877f79SAndroid Build Coastguard Worker details. 2416*30877f79SAndroid Build Coastguard Worker* Caching: 2417*30877f79SAndroid Build Coastguard Worker * Improve performance of `SimpleCache` 2418*30877f79SAndroid Build Coastguard Worker ([#4253](https://github.com/google/ExoPlayer/issues/4253)). 2419*30877f79SAndroid Build Coastguard Worker * Cache data with unknown length by default. The previous flag to opt in 2420*30877f79SAndroid Build Coastguard Worker to this behavior (`DataSpec.FLAG_ALLOW_CACHING_UNKNOWN_LENGTH`) has been 2421*30877f79SAndroid Build Coastguard Worker replaced with an opt out flag 2422*30877f79SAndroid Build Coastguard Worker (`DataSpec.FLAG_DONT_CACHE_IF_LENGTH_UNKNOWN`). 2423*30877f79SAndroid Build Coastguard Worker* Extractors: 2424*30877f79SAndroid Build Coastguard Worker * MP4/FMP4: Add support for Dolby Vision. 2425*30877f79SAndroid Build Coastguard Worker * MP4: Fix issue handling meta atoms in some streams 2426*30877f79SAndroid Build Coastguard Worker ([#5698](https://github.com/google/ExoPlayer/issues/5698), 2427*30877f79SAndroid Build Coastguard Worker [#5694](https://github.com/google/ExoPlayer/issues/5694)). 2428*30877f79SAndroid Build Coastguard Worker * MP3: Add support for SHOUTcast ICY metadata 2429*30877f79SAndroid Build Coastguard Worker ([#3735](https://github.com/google/ExoPlayer/issues/3735)). 2430*30877f79SAndroid Build Coastguard Worker * MP3: Fix ID3 frame unsychronization 2431*30877f79SAndroid Build Coastguard Worker ([#5673](https://github.com/google/ExoPlayer/issues/5673)). 2432*30877f79SAndroid Build Coastguard Worker * MP3: Fix playback of badly clipped files 2433*30877f79SAndroid Build Coastguard Worker ([#5772](https://github.com/google/ExoPlayer/issues/5772)). 2434*30877f79SAndroid Build Coastguard Worker * MPEG-TS: Enable HDMV DTS stream detection only if a flag is set. By 2435*30877f79SAndroid Build Coastguard Worker default (i.e. if the flag is not set), the 0x82 elementary stream type 2436*30877f79SAndroid Build Coastguard Worker is now treated as an SCTE subtitle track 2437*30877f79SAndroid Build Coastguard Worker ([#5330](https://github.com/google/ExoPlayer/issues/5330)). 2438*30877f79SAndroid Build Coastguard Worker* Track selection: 2439*30877f79SAndroid Build Coastguard Worker * Add options for controlling audio track selections to 2440*30877f79SAndroid Build Coastguard Worker `DefaultTrackSelector` 2441*30877f79SAndroid Build Coastguard Worker ([#3314](https://github.com/google/ExoPlayer/issues/3314)). 2442*30877f79SAndroid Build Coastguard Worker * Update `TrackSelection.Factory` interface to support creating all track 2443*30877f79SAndroid Build Coastguard Worker selections together. 2444*30877f79SAndroid Build Coastguard Worker * Allow to specify a selection reason for a `SelectionOverride`. 2445*30877f79SAndroid Build Coastguard Worker * Select audio track based on system language if no preference is 2446*30877f79SAndroid Build Coastguard Worker provided. 2447*30877f79SAndroid Build Coastguard Worker * When no text language preference matches, only select forced text tracks 2448*30877f79SAndroid Build Coastguard Worker whose language matches the selected audio language. 2449*30877f79SAndroid Build Coastguard Worker* UI: 2450*30877f79SAndroid Build Coastguard Worker * Update `DefaultTimeBar` based on duration of media and add parameter to 2451*30877f79SAndroid Build Coastguard Worker set the minimum update interval to control the smoothness of the updates 2452*30877f79SAndroid Build Coastguard Worker ([#5040](https://github.com/google/ExoPlayer/issues/5040)). 2453*30877f79SAndroid Build Coastguard Worker * Move creation of dialogs for `TrackSelectionView`s to 2454*30877f79SAndroid Build Coastguard Worker `TrackSelectionDialogBuilder` and add option to select multiple 2455*30877f79SAndroid Build Coastguard Worker overrides. 2456*30877f79SAndroid Build Coastguard Worker * Change signature of `PlayerNotificationManager.NotificationListener` to 2457*30877f79SAndroid Build Coastguard Worker better fit service requirements. 2458*30877f79SAndroid Build Coastguard Worker * Add option to include navigation actions in the compact mode of 2459*30877f79SAndroid Build Coastguard Worker notifications created using `PlayerNotificationManager`. 2460*30877f79SAndroid Build Coastguard Worker * Fix issues with flickering notifications on KitKat when using 2461*30877f79SAndroid Build Coastguard Worker `PlayerNotificationManager` and `DownloadNotificationUtil`. For the 2462*30877f79SAndroid Build Coastguard Worker latter, applications should switch to using 2463*30877f79SAndroid Build Coastguard Worker `DownloadNotificationHelper`. 2464*30877f79SAndroid Build Coastguard Worker * Fix accuracy of D-pad seeking in `DefaultTimeBar` 2465*30877f79SAndroid Build Coastguard Worker ([#5767](https://github.com/google/ExoPlayer/issues/5767)). 2466*30877f79SAndroid Build Coastguard Worker* Audio: 2467*30877f79SAndroid Build Coastguard Worker * Allow `AudioProcessor`s to be drained of pending output after they are 2468*30877f79SAndroid Build Coastguard Worker reconfigured. 2469*30877f79SAndroid Build Coastguard Worker * Fix an issue that caused audio to be truncated at the end of a period 2470*30877f79SAndroid Build Coastguard Worker when switching to a new period where gapless playback information was 2471*30877f79SAndroid Build Coastguard Worker newly present or newly absent. 2472*30877f79SAndroid Build Coastguard Worker * Add support for reading AC-4 streams 2473*30877f79SAndroid Build Coastguard Worker ([#5303](https://github.com/google/ExoPlayer/pull/5303)). 2474*30877f79SAndroid Build Coastguard Worker* Video: 2475*30877f79SAndroid Build Coastguard Worker * Remove `MediaCodecSelector.DEFAULT_WITH_FALLBACK`. Apps should instead 2476*30877f79SAndroid Build Coastguard Worker signal that fallback should be used by passing `true` as the 2477*30877f79SAndroid Build Coastguard Worker `enableDecoderFallback` parameter when instantiating the video renderer. 2478*30877f79SAndroid Build Coastguard Worker * Support video tunneling when the decoder is not listed first for the 2479*30877f79SAndroid Build Coastguard Worker MIME type ([#3100](https://github.com/google/ExoPlayer/issues/3100)). 2480*30877f79SAndroid Build Coastguard Worker * Query `MediaCodecList.ALL_CODECS` when selecting a tunneling decoder 2481*30877f79SAndroid Build Coastguard Worker ([#5547](https://github.com/google/ExoPlayer/issues/5547)). 2482*30877f79SAndroid Build Coastguard Worker* DRM: 2483*30877f79SAndroid Build Coastguard Worker * Fix black flicker when keys rotate in DRM protected content 2484*30877f79SAndroid Build Coastguard Worker ([#3561](https://github.com/google/ExoPlayer/issues/3561)). 2485*30877f79SAndroid Build Coastguard Worker * Work around lack of LA_URL attribute in PlayReady key request init data. 2486*30877f79SAndroid Build Coastguard Worker* CEA-608: Improved conformance to the specification 2487*30877f79SAndroid Build Coastguard Worker ([#3860](https://github.com/google/ExoPlayer/issues/3860)). 2488*30877f79SAndroid Build Coastguard Worker* DASH: 2489*30877f79SAndroid Build Coastguard Worker * Parse role and accessibility descriptors into `Format.roleFlags`. 2490*30877f79SAndroid Build Coastguard Worker * Support multiple CEA-608 channels muxed into FMP4 representations 2491*30877f79SAndroid Build Coastguard Worker ([#5656](https://github.com/google/ExoPlayer/issues/5656)). 2492*30877f79SAndroid Build Coastguard Worker* HLS: 2493*30877f79SAndroid Build Coastguard Worker * Prevent unnecessary reloads of initialization segments. 2494*30877f79SAndroid Build Coastguard Worker * Form an adaptive track group out of audio renditions with matching name. 2495*30877f79SAndroid Build Coastguard Worker * Support encrypted initialization segments 2496*30877f79SAndroid Build Coastguard Worker ([#5441](https://github.com/google/ExoPlayer/issues/5441)). 2497*30877f79SAndroid Build Coastguard Worker * Parse `EXT-X-MEDIA` `CHARACTERISTICS` attribute into `Format.roleFlags`. 2498*30877f79SAndroid Build Coastguard Worker * Add metadata entry for HLS tracks to expose master playlist information. 2499*30877f79SAndroid Build Coastguard Worker * Prevent `IndexOutOfBoundsException` in some live HLS scenarios 2500*30877f79SAndroid Build Coastguard Worker ([#5816](https://github.com/google/ExoPlayer/issues/5816)). 2501*30877f79SAndroid Build Coastguard Worker* Support for playing spherical videos on Daydream. 2502*30877f79SAndroid Build Coastguard Worker* Cast extension: Work around Cast framework returning a limited-size queue 2503*30877f79SAndroid Build Coastguard Worker items list ([#4964](https://github.com/google/ExoPlayer/issues/4964)). 2504*30877f79SAndroid Build Coastguard Worker* VP9 extension: Remove RGB output mode and libyuv dependency, and switch to 2505*30877f79SAndroid Build Coastguard Worker surface YUV output as the default. Remove constructor parameters 2506*30877f79SAndroid Build Coastguard Worker `scaleToFit` and `useSurfaceYuvOutput`. 2507*30877f79SAndroid Build Coastguard Worker* MediaSession extension: 2508*30877f79SAndroid Build Coastguard Worker * Let apps intercept media button events 2509*30877f79SAndroid Build Coastguard Worker ([#5179](https://github.com/google/ExoPlayer/issues/5179)). 2510*30877f79SAndroid Build Coastguard Worker * Fix issue with `TimelineQueueNavigator` not publishing the queue in 2511*30877f79SAndroid Build Coastguard Worker shuffled order when in shuffle mode. 2512*30877f79SAndroid Build Coastguard Worker * Allow handling of custom commands via `registerCustomCommandReceiver`. 2513*30877f79SAndroid Build Coastguard Worker * Add ability to include an extras `Bundle` when reporting a custom error. 2514*30877f79SAndroid Build Coastguard Worker* Log warnings when extension native libraries can't be used, to help with 2515*30877f79SAndroid Build Coastguard Worker diagnosing playback failures 2516*30877f79SAndroid Build Coastguard Worker ([#5788](https://github.com/google/ExoPlayer/issues/5788)). 2517*30877f79SAndroid Build Coastguard Worker 2518*30877f79SAndroid Build Coastguard Worker### 2.9.6 (2019-02-19) 2519*30877f79SAndroid Build Coastguard Worker 2520*30877f79SAndroid Build Coastguard Worker* Remove `player` and `isTopLevelSource` parameters from 2521*30877f79SAndroid Build Coastguard Worker `MediaSource.prepare`. 2522*30877f79SAndroid Build Coastguard Worker* IMA extension: 2523*30877f79SAndroid Build Coastguard Worker * Require setting the `Player` on `AdsLoader` instances before playback. 2524*30877f79SAndroid Build Coastguard Worker * Remove deprecated `ImaAdsMediaSource`. Create `AdsMediaSource` with an 2525*30877f79SAndroid Build Coastguard Worker `ImaAdsLoader` instead. 2526*30877f79SAndroid Build Coastguard Worker * Remove deprecated `AdsMediaSource` constructors. Listen for media source 2527*30877f79SAndroid Build Coastguard Worker events using `AdsMediaSource.addEventListener`, and ad interaction 2528*30877f79SAndroid Build Coastguard Worker events by adding a listener when building `ImaAdsLoader`. 2529*30877f79SAndroid Build Coastguard Worker * Allow apps to register playback-related obstructing views that are on 2530*30877f79SAndroid Build Coastguard Worker top of their ad display containers via `AdsLoader.AdViewProvider`. 2531*30877f79SAndroid Build Coastguard Worker `PlayerView` implements this interface and will register its control 2532*30877f79SAndroid Build Coastguard Worker view. This makes it possible for ad loading SDKs to calculate ad 2533*30877f79SAndroid Build Coastguard Worker viewability accurately. 2534*30877f79SAndroid Build Coastguard Worker* DASH: Fix issue handling large `EventStream` presentation timestamps 2535*30877f79SAndroid Build Coastguard Worker ([#5490](https://github.com/google/ExoPlayer/issues/5490)). 2536*30877f79SAndroid Build Coastguard Worker* HLS: Fix transition to STATE_ENDED when playing fragmented mp4 in chunkless 2537*30877f79SAndroid Build Coastguard Worker preparation ([#5524](https://github.com/google/ExoPlayer/issues/5524)). 2538*30877f79SAndroid Build Coastguard Worker* Revert workaround for video quality problems with Amlogic decoders, as this 2539*30877f79SAndroid Build Coastguard Worker may cause problems for some devices and/or non-interlaced content 2540*30877f79SAndroid Build Coastguard Worker ([#5003](https://github.com/google/ExoPlayer/issues/5003)). 2541*30877f79SAndroid Build Coastguard Worker 2542*30877f79SAndroid Build Coastguard Worker### 2.9.5 (2019-01-31) 2543*30877f79SAndroid Build Coastguard Worker 2544*30877f79SAndroid Build Coastguard Worker* HLS: Parse `CHANNELS` attribute from `EXT-X-MEDIA` tag. 2545*30877f79SAndroid Build Coastguard Worker* ConcatenatingMediaSource: 2546*30877f79SAndroid Build Coastguard Worker * Add `Handler` parameter to methods that take a callback `Runnable`. 2547*30877f79SAndroid Build Coastguard Worker * Fix issue with dropped messages when releasing the source 2548*30877f79SAndroid Build Coastguard Worker ([#5464](https://github.com/google/ExoPlayer/issues/5464)). 2549*30877f79SAndroid Build Coastguard Worker* ExtractorMediaSource: Fix issue that could cause the player to get stuck 2550*30877f79SAndroid Build Coastguard Worker buffering at the end of the media. 2551*30877f79SAndroid Build Coastguard Worker* PlayerView: Fix issue preventing `OnClickListener` from receiving events 2552*30877f79SAndroid Build Coastguard Worker ([#5433](https://github.com/google/ExoPlayer/issues/5433)). 2553*30877f79SAndroid Build Coastguard Worker* IMA extension: Upgrade IMA dependency to 3.10.6. 2554*30877f79SAndroid Build Coastguard Worker* Cronet extension: Upgrade Cronet dependency to 71.3578.98. 2555*30877f79SAndroid Build Coastguard Worker* OkHttp extension: Upgrade OkHttp dependency to 3.12.1. 2556*30877f79SAndroid Build Coastguard Worker* MP3: Wider fix for issue where streams would play twice on some Samsung 2557*30877f79SAndroid Build Coastguard Worker devices ([#4519](https://github.com/google/ExoPlayer/issues/4519)). 2558*30877f79SAndroid Build Coastguard Worker 2559*30877f79SAndroid Build Coastguard Worker### 2.9.4 (2019-01-15) 2560*30877f79SAndroid Build Coastguard Worker 2561*30877f79SAndroid Build Coastguard Worker* IMA extension: Clear ads loader listeners on release 2562*30877f79SAndroid Build Coastguard Worker ([#4114](https://github.com/google/ExoPlayer/issues/4114)). 2563*30877f79SAndroid Build Coastguard Worker* SmoothStreaming: Fix support for subtitles in DRM protected streams 2564*30877f79SAndroid Build Coastguard Worker ([#5378](https://github.com/google/ExoPlayer/issues/5378)). 2565*30877f79SAndroid Build Coastguard Worker* FFmpeg extension: Treat invalid data errors as non-fatal to match the 2566*30877f79SAndroid Build Coastguard Worker behavior of MediaCodec 2567*30877f79SAndroid Build Coastguard Worker ([#5293](https://github.com/google/ExoPlayer/issues/5293)). 2568*30877f79SAndroid Build Coastguard Worker* GVR extension: upgrade GVR SDK dependency to 1.190.0. 2569*30877f79SAndroid Build Coastguard Worker* Associate fatal player errors of type SOURCE with the loading source in 2570*30877f79SAndroid Build Coastguard Worker `AnalyticsListener.EventTime` 2571*30877f79SAndroid Build Coastguard Worker ([#5407](https://github.com/google/ExoPlayer/issues/5407)). 2572*30877f79SAndroid Build Coastguard Worker* Add `startPositionUs` to `MediaSource.createPeriod`. This fixes an issue 2573*30877f79SAndroid Build Coastguard Worker where using lazy preparation in `ConcatenatingMediaSource` with an 2574*30877f79SAndroid Build Coastguard Worker `ExtractorMediaSource` overrides initial seek positions 2575*30877f79SAndroid Build Coastguard Worker ([#5350](https://github.com/google/ExoPlayer/issues/5350)). 2576*30877f79SAndroid Build Coastguard Worker* Add subtext to the `MediaDescriptionAdapter` of the 2577*30877f79SAndroid Build Coastguard Worker `PlayerNotificationManager`. 2578*30877f79SAndroid Build Coastguard Worker* Add workaround for video quality problems with Amlogic decoders 2579*30877f79SAndroid Build Coastguard Worker ([#5003](https://github.com/google/ExoPlayer/issues/5003)). 2580*30877f79SAndroid Build Coastguard Worker* Fix issue where sending callbacks for playlist changes may cause problems 2581*30877f79SAndroid Build Coastguard Worker because of parallel player access 2582*30877f79SAndroid Build Coastguard Worker ([#5240](https://github.com/google/ExoPlayer/issues/5240)). 2583*30877f79SAndroid Build Coastguard Worker* Fix issue with reusing a `ClippingMediaSource` with an inner 2584*30877f79SAndroid Build Coastguard Worker `ExtractorMediaSource` and a non-zero start position 2585*30877f79SAndroid Build Coastguard Worker ([#5351](https://github.com/google/ExoPlayer/issues/5351)). 2586*30877f79SAndroid Build Coastguard Worker* Fix issue where uneven track durations in MP4 streams can cause OOM problems 2587*30877f79SAndroid Build Coastguard Worker ([#3670](https://github.com/google/ExoPlayer/issues/3670)). 2588*30877f79SAndroid Build Coastguard Worker 2589*30877f79SAndroid Build Coastguard Worker### 2.9.3 (2018-12-20) 2590*30877f79SAndroid Build Coastguard Worker 2591*30877f79SAndroid Build Coastguard Worker* Captions: Support PNG subtitles in SMPTE-TT 2592*30877f79SAndroid Build Coastguard Worker ([#1583](https://github.com/google/ExoPlayer/issues/1583)). 2593*30877f79SAndroid Build Coastguard Worker* MPEG-TS: Use random access indicators to minimize the need for 2594*30877f79SAndroid Build Coastguard Worker `FLAG_ALLOW_NON_IDR_KEYFRAMES`. 2595*30877f79SAndroid Build Coastguard Worker* Downloading: Reduce time taken to remove downloads 2596*30877f79SAndroid Build Coastguard Worker ([#5136](https://github.com/google/ExoPlayer/issues/5136)). 2597*30877f79SAndroid Build Coastguard Worker* MP3: 2598*30877f79SAndroid Build Coastguard Worker * Use the true bitrate for constant-bitrate MP3 seeking. 2599*30877f79SAndroid Build Coastguard Worker * Fix issue where streams would play twice on some Samsung devices 2600*30877f79SAndroid Build Coastguard Worker ([#4519](https://github.com/google/ExoPlayer/issues/4519)). 2601*30877f79SAndroid Build Coastguard Worker* Fix regression where some audio formats were incorrectly marked as being 2602*30877f79SAndroid Build Coastguard Worker unplayable due to under-reporting of platform decoder capabilities 2603*30877f79SAndroid Build Coastguard Worker ([#5145](https://github.com/google/ExoPlayer/issues/5145)). 2604*30877f79SAndroid Build Coastguard Worker* Fix decode-only frame skipping on Nvidia Shield TV devices. 2605*30877f79SAndroid Build Coastguard Worker* Workaround for MiTV (dangal) issue when swapping output surface 2606*30877f79SAndroid Build Coastguard Worker ([#5169](https://github.com/google/ExoPlayer/issues/5169)). 2607*30877f79SAndroid Build Coastguard Worker 2608*30877f79SAndroid Build Coastguard Worker### 2.9.2 (2018-11-28) 2609*30877f79SAndroid Build Coastguard Worker 2610*30877f79SAndroid Build Coastguard Worker* HLS: 2611*30877f79SAndroid Build Coastguard Worker * Fix issue causing unnecessary media playlist requests when playing live 2612*30877f79SAndroid Build Coastguard Worker streams ([#5059](https://github.com/google/ExoPlayer/issues/5059)). 2613*30877f79SAndroid Build Coastguard Worker * Fix decoder re-instantiation issue for packed audio streams 2614*30877f79SAndroid Build Coastguard Worker ([#5063](https://github.com/google/ExoPlayer/issues/5063)). 2615*30877f79SAndroid Build Coastguard Worker* MP4: Support Opus and FLAC in the MP4 container, and in DASH 2616*30877f79SAndroid Build Coastguard Worker ([#4883](https://github.com/google/ExoPlayer/issues/4883)). 2617*30877f79SAndroid Build Coastguard Worker* DASH: Fix detecting the end of live events 2618*30877f79SAndroid Build Coastguard Worker ([#4780](https://github.com/google/ExoPlayer/issues/4780)). 2619*30877f79SAndroid Build Coastguard Worker* Spherical video: Fall back to `TYPE_ROTATION_VECTOR` if 2620*30877f79SAndroid Build Coastguard Worker `TYPE_GAME_ROTATION_VECTOR` is unavailable 2621*30877f79SAndroid Build Coastguard Worker ([#5119](https://github.com/google/ExoPlayer/issues/5119)). 2622*30877f79SAndroid Build Coastguard Worker* Support seeking for a wider range of MPEG-TS streams 2623*30877f79SAndroid Build Coastguard Worker ([#5097](https://github.com/google/ExoPlayer/issues/5097)). 2624*30877f79SAndroid Build Coastguard Worker* Include channel count in audio capabilities check 2625*30877f79SAndroid Build Coastguard Worker ([#4690](https://github.com/google/ExoPlayer/issues/4690)). 2626*30877f79SAndroid Build Coastguard Worker* Fix issue with applying the `show_buffering` attribute in `PlayerView` 2627*30877f79SAndroid Build Coastguard Worker ([#5139](https://github.com/google/ExoPlayer/issues/5139)). 2628*30877f79SAndroid Build Coastguard Worker* Fix issue where null `Metadata` was output when it failed to decode 2629*30877f79SAndroid Build Coastguard Worker ([#5149](https://github.com/google/ExoPlayer/issues/5149)). 2630*30877f79SAndroid Build Coastguard Worker* Fix playback of some invalid but playable MP4 streams by replacing 2631*30877f79SAndroid Build Coastguard Worker assertions with logged warnings in sample table parsing code 2632*30877f79SAndroid Build Coastguard Worker ([#5162](https://github.com/google/ExoPlayer/issues/5162)). 2633*30877f79SAndroid Build Coastguard Worker* Fix UUID passed to `MediaCrypto` when using `C.CLEARKEY_UUID` before API 27. 2634*30877f79SAndroid Build Coastguard Worker 2635*30877f79SAndroid Build Coastguard Worker### 2.9.1 (2018-11-01) 2636*30877f79SAndroid Build Coastguard Worker 2637*30877f79SAndroid Build Coastguard Worker* Add convenience methods `Player.next`, `Player.previous`, `Player.hasNext` 2638*30877f79SAndroid Build Coastguard Worker and `Player.hasPrevious` 2639*30877f79SAndroid Build Coastguard Worker ([#4863](https://github.com/google/ExoPlayer/issues/4863)). 2640*30877f79SAndroid Build Coastguard Worker* Improve initial bandwidth meter estimates using the current country and 2641*30877f79SAndroid Build Coastguard Worker network type. 2642*30877f79SAndroid Build Coastguard Worker* IMA extension: 2643*30877f79SAndroid Build Coastguard Worker * For preroll to live stream transitions, project forward the loading 2644*30877f79SAndroid Build Coastguard Worker position to avoid being behind the live window. 2645*30877f79SAndroid Build Coastguard Worker * Let apps specify whether to focus the skip button on ATV 2646*30877f79SAndroid Build Coastguard Worker ([#5019](https://github.com/google/ExoPlayer/issues/5019)). 2647*30877f79SAndroid Build Coastguard Worker* MP3: 2648*30877f79SAndroid Build Coastguard Worker * Support seeking based on MLLT metadata 2649*30877f79SAndroid Build Coastguard Worker ([#3241](https://github.com/google/ExoPlayer/issues/3241)). 2650*30877f79SAndroid Build Coastguard Worker * Fix handling of streams with appended data 2651*30877f79SAndroid Build Coastguard Worker ([#4954](https://github.com/google/ExoPlayer/issues/4954)). 2652*30877f79SAndroid Build Coastguard Worker* DASH: Parse ProgramInformation element if present in the manifest. 2653*30877f79SAndroid Build Coastguard Worker* HLS: 2654*30877f79SAndroid Build Coastguard Worker * Add constructor to `DefaultHlsExtractorFactory` for adding TS payload 2655*30877f79SAndroid Build Coastguard Worker reader factory flags 2656*30877f79SAndroid Build Coastguard Worker ([#4861](https://github.com/google/ExoPlayer/issues/4861)). 2657*30877f79SAndroid Build Coastguard Worker * Fix bug in segment sniffing 2658*30877f79SAndroid Build Coastguard Worker ([#5039](https://github.com/google/ExoPlayer/issues/5039)). 2659*30877f79SAndroid Build Coastguard Worker* SubRip: Add support for alignment tags, and remove tags from the displayed 2660*30877f79SAndroid Build Coastguard Worker captions ([#4306](https://github.com/google/ExoPlayer/issues/4306)). 2661*30877f79SAndroid Build Coastguard Worker* Fix issue with blind seeking to windows with non-zero offset in a 2662*30877f79SAndroid Build Coastguard Worker `ConcatenatingMediaSource` 2663*30877f79SAndroid Build Coastguard Worker ([#4873](https://github.com/google/ExoPlayer/issues/4873)). 2664*30877f79SAndroid Build Coastguard Worker* Fix logic for enabling next and previous actions in `TimelineQueueNavigator` 2665*30877f79SAndroid Build Coastguard Worker ([#5065](https://github.com/google/ExoPlayer/issues/5065)). 2666*30877f79SAndroid Build Coastguard Worker* Fix issue where audio focus handling could not be disabled after enabling it 2667*30877f79SAndroid Build Coastguard Worker ([#5055](https://github.com/google/ExoPlayer/issues/5055)). 2668*30877f79SAndroid Build Coastguard Worker* Fix issue where subtitles were positioned incorrectly if `SubtitleView` had 2669*30877f79SAndroid Build Coastguard Worker a non-zero position offset to its parent 2670*30877f79SAndroid Build Coastguard Worker ([#4788](https://github.com/google/ExoPlayer/issues/4788)). 2671*30877f79SAndroid Build Coastguard Worker* Fix issue where the buffered position was not updated correctly when 2672*30877f79SAndroid Build Coastguard Worker transitioning between periods 2673*30877f79SAndroid Build Coastguard Worker ([#4899](https://github.com/google/ExoPlayer/issues/4899)). 2674*30877f79SAndroid Build Coastguard Worker* Fix issue where a `NullPointerException` is thrown when removing an 2675*30877f79SAndroid Build Coastguard Worker unprepared media source from a `ConcatenatingMediaSource` with the 2676*30877f79SAndroid Build Coastguard Worker `useLazyPreparation` option enabled 2677*30877f79SAndroid Build Coastguard Worker ([#4986](https://github.com/google/ExoPlayer/issues/4986)). 2678*30877f79SAndroid Build Coastguard Worker* Work around an issue where a non-empty end-of-stream audio buffer would be 2679*30877f79SAndroid Build Coastguard Worker output with timestamp zero, causing the player position to jump backwards 2680*30877f79SAndroid Build Coastguard Worker ([#5045](https://github.com/google/ExoPlayer/issues/5045)). 2681*30877f79SAndroid Build Coastguard Worker* Suppress a spurious assertion failure on some Samsung devices 2682*30877f79SAndroid Build Coastguard Worker ([#4532](https://github.com/google/ExoPlayer/issues/4532)). 2683*30877f79SAndroid Build Coastguard Worker* Suppress spurious "references unknown class member" shrinking warning 2684*30877f79SAndroid Build Coastguard Worker ([#4890](https://github.com/google/ExoPlayer/issues/4890)). 2685*30877f79SAndroid Build Coastguard Worker* Swap recommended order for google() and jcenter() in gradle config 2686*30877f79SAndroid Build Coastguard Worker ([#4997](https://github.com/google/ExoPlayer/issues/4997)). 2687*30877f79SAndroid Build Coastguard Worker 2688*30877f79SAndroid Build Coastguard Worker### 2.9.0 (2018-09-06) 2689*30877f79SAndroid Build Coastguard Worker 2690*30877f79SAndroid Build Coastguard Worker* Turn on Java 8 compiler support for the ExoPlayer library. Apps may need to 2691*30877f79SAndroid Build Coastguard Worker add `compileOptions { targetCompatibility JavaVersion.VERSION_1_8 }` to 2692*30877f79SAndroid Build Coastguard Worker their gradle settings to ensure bytecode compatibility. 2693*30877f79SAndroid Build Coastguard Worker* Set `compileSdkVersion` and `targetSdkVersion` to 28. 2694*30877f79SAndroid Build Coastguard Worker* Support for automatic audio focus handling via 2695*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer.setAudioAttributes`. 2696*30877f79SAndroid Build Coastguard Worker* Add `ExoPlayer.retry` convenience method. 2697*30877f79SAndroid Build Coastguard Worker* Add `AudioListener` for listening to changes in audio configuration during 2698*30877f79SAndroid Build Coastguard Worker playback ([#3994](https://github.com/google/ExoPlayer/issues/3994)). 2699*30877f79SAndroid Build Coastguard Worker* Add `LoadErrorHandlingPolicy` to allow configuration of load error handling 2700*30877f79SAndroid Build Coastguard Worker across `MediaSource` implementations 2701*30877f79SAndroid Build Coastguard Worker ([#3370](https://github.com/google/ExoPlayer/issues/3370)). 2702*30877f79SAndroid Build Coastguard Worker* Allow passing a `Looper`, which specifies the thread that must be used to 2703*30877f79SAndroid Build Coastguard Worker access the player, when instantiating player instances using 2704*30877f79SAndroid Build Coastguard Worker `ExoPlayerFactory` 2705*30877f79SAndroid Build Coastguard Worker ([#4278](https://github.com/google/ExoPlayer/issues/4278)). 2706*30877f79SAndroid Build Coastguard Worker* Allow setting log level for ExoPlayer logcat output 2707*30877f79SAndroid Build Coastguard Worker ([#4665](https://github.com/google/ExoPlayer/issues/4665)). 2708*30877f79SAndroid Build Coastguard Worker* Simplify `BandwidthMeter` injection: The `BandwidthMeter` should now be 2709*30877f79SAndroid Build Coastguard Worker passed directly to `ExoPlayerFactory`, instead of to 2710*30877f79SAndroid Build Coastguard Worker `TrackSelection.Factory` and `DataSource.Factory`. The `BandwidthMeter` is 2711*30877f79SAndroid Build Coastguard Worker passed to the components that need it internally. The `BandwidthMeter` may 2712*30877f79SAndroid Build Coastguard Worker also be omitted, in which case a default instance will be used. 2713*30877f79SAndroid Build Coastguard Worker* Spherical video: 2714*30877f79SAndroid Build Coastguard Worker * Support for spherical video by setting `surface_type="spherical_view"` 2715*30877f79SAndroid Build Coastguard Worker on `PlayerView`. 2716*30877f79SAndroid Build Coastguard Worker * Support for 2717*30877f79SAndroid Build Coastguard Worker [VR180](https://github.com/google/spatial-media/blob/master/docs/vr180.md). 2718*30877f79SAndroid Build Coastguard Worker* HLS: 2719*30877f79SAndroid Build Coastguard Worker * Support PlayReady. 2720*30877f79SAndroid Build Coastguard Worker * Add container format sniffing 2721*30877f79SAndroid Build Coastguard Worker ([#2025](https://github.com/google/ExoPlayer/issues/2025)). 2722*30877f79SAndroid Build Coastguard Worker * Support alternative `EXT-X-KEY` tags. 2723*30877f79SAndroid Build Coastguard Worker * Support `EXT-X-INDEPENDENT-SEGMENTS` in the master playlist. 2724*30877f79SAndroid Build Coastguard Worker * Support variable substitution 2725*30877f79SAndroid Build Coastguard Worker ([#4422](https://github.com/google/ExoPlayer/issues/4422)). 2726*30877f79SAndroid Build Coastguard Worker * Fix the bitrate being unset on primary track sample formats 2727*30877f79SAndroid Build Coastguard Worker ([#3297](https://github.com/google/ExoPlayer/issues/3297)). 2728*30877f79SAndroid Build Coastguard Worker * Make `HlsMediaSource.Factory` take a factory of trackers instead of a 2729*30877f79SAndroid Build Coastguard Worker tracker instance 2730*30877f79SAndroid Build Coastguard Worker ([#4814](https://github.com/google/ExoPlayer/issues/4814)). 2731*30877f79SAndroid Build Coastguard Worker* DASH: 2732*30877f79SAndroid Build Coastguard Worker * Support `messageData` attribute for in-manifest event streams. 2733*30877f79SAndroid Build Coastguard Worker * Clip periods to their specified durations 2734*30877f79SAndroid Build Coastguard Worker ([#4185](https://github.com/google/ExoPlayer/issues/4185)). 2735*30877f79SAndroid Build Coastguard Worker* Improve seeking support for progressive streams: 2736*30877f79SAndroid Build Coastguard Worker * Support seeking in MPEG-TS 2737*30877f79SAndroid Build Coastguard Worker ([#966](https://github.com/google/ExoPlayer/issues/966)). 2738*30877f79SAndroid Build Coastguard Worker * Support seeking in MPEG-PS 2739*30877f79SAndroid Build Coastguard Worker ([#4476](https://github.com/google/ExoPlayer/issues/4476)). 2740*30877f79SAndroid Build Coastguard Worker * Support approximate seeking in ADTS using a constant bitrate assumption 2741*30877f79SAndroid Build Coastguard Worker ([#4548](https://github.com/google/ExoPlayer/issues/4548)). The 2742*30877f79SAndroid Build Coastguard Worker `FLAG_ENABLE_CONSTANT_BITRATE_SEEKING` flag must be set on the extractor 2743*30877f79SAndroid Build Coastguard Worker to enable this functionality. 2744*30877f79SAndroid Build Coastguard Worker * Support approximate seeking in AMR using a constant bitrate assumption. 2745*30877f79SAndroid Build Coastguard Worker The `FLAG_ENABLE_CONSTANT_BITRATE_SEEKING` flag must be set on the 2746*30877f79SAndroid Build Coastguard Worker extractor to enable this functionality. 2747*30877f79SAndroid Build Coastguard Worker * Add `DefaultExtractorsFactory.setConstantBitrateSeekingEnabled` to 2748*30877f79SAndroid Build Coastguard Worker enable approximate seeking using a constant bitrate assumption on all 2749*30877f79SAndroid Build Coastguard Worker extractors that support it. 2750*30877f79SAndroid Build Coastguard Worker* Video: 2751*30877f79SAndroid Build Coastguard Worker * Add callback to `VideoListener` to notify of surface size changes. 2752*30877f79SAndroid Build Coastguard Worker * Improve performance when playing high frame-rate content, and when 2753*30877f79SAndroid Build Coastguard Worker playing at greater than 1x speed 2754*30877f79SAndroid Build Coastguard Worker ([#2777](https://github.com/google/ExoPlayer/issues/2777)). 2755*30877f79SAndroid Build Coastguard Worker * Scale up the initial video decoder maximum input size so playlist 2756*30877f79SAndroid Build Coastguard Worker transitions with small increases in maximum sample size do not require 2757*30877f79SAndroid Build Coastguard Worker reinitialization 2758*30877f79SAndroid Build Coastguard Worker ([#4510](https://github.com/google/ExoPlayer/issues/4510)). 2759*30877f79SAndroid Build Coastguard Worker * Fix a bug where the player would not transition to the ended state when 2760*30877f79SAndroid Build Coastguard Worker playing video in tunneled mode. 2761*30877f79SAndroid Build Coastguard Worker* Audio: 2762*30877f79SAndroid Build Coastguard Worker * Support attaching auxiliary audio effects to the `AudioTrack` via 2763*30877f79SAndroid Build Coastguard Worker `Player.setAuxEffectInfo` and `Player.clearAuxEffectInfo`. 2764*30877f79SAndroid Build Coastguard Worker * Support seamless adaptation while playing xHE-AAC streams. 2765*30877f79SAndroid Build Coastguard Worker ([#4360](https://github.com/google/ExoPlayer/issues/4360)). 2766*30877f79SAndroid Build Coastguard Worker * Increase `AudioTrack` buffer sizes to the theoretical maximum required 2767*30877f79SAndroid Build Coastguard Worker for each encoding for passthrough playbacks 2768*30877f79SAndroid Build Coastguard Worker ([#3803](https://github.com/google/ExoPlayer/issues/3803)). 2769*30877f79SAndroid Build Coastguard Worker * WAV: Fix issue where white noise would be output at the end of playback 2770*30877f79SAndroid Build Coastguard Worker ([#4724](https://github.com/google/ExoPlayer/issues/4724)). 2771*30877f79SAndroid Build Coastguard Worker * MP3: Fix issue where streams would play twice on the SM-T530 2772*30877f79SAndroid Build Coastguard Worker ([#4519](https://github.com/google/ExoPlayer/issues/4519)). 2773*30877f79SAndroid Build Coastguard Worker* Analytics: 2774*30877f79SAndroid Build Coastguard Worker * Add callbacks to `DefaultDrmSessionEventListener` and 2775*30877f79SAndroid Build Coastguard Worker `AnalyticsListener` to be notified of acquired and released DRM 2776*30877f79SAndroid Build Coastguard Worker sessions. 2777*30877f79SAndroid Build Coastguard Worker * Add uri field to `LoadEventInfo` in `MediaSourceEventListener` and 2778*30877f79SAndroid Build Coastguard Worker `AnalyticsListener` callbacks. This uri is the redirected uri if 2779*30877f79SAndroid Build Coastguard Worker redirection occurred 2780*30877f79SAndroid Build Coastguard Worker ([#2054](https://github.com/google/ExoPlayer/issues/2054)). 2781*30877f79SAndroid Build Coastguard Worker * Add response headers field to `LoadEventInfo` in 2782*30877f79SAndroid Build Coastguard Worker `MediaSourceEventListener` and `AnalyticsListener` callbacks 2783*30877f79SAndroid Build Coastguard Worker ([#4361](https://github.com/google/ExoPlayer/issues/4361) and 2784*30877f79SAndroid Build Coastguard Worker [#4615](https://github.com/google/ExoPlayer/issues/4615)). 2785*30877f79SAndroid Build Coastguard Worker* UI: 2786*30877f79SAndroid Build Coastguard Worker * Add option to `PlayerView` to show buffering view when playWhenReady is 2787*30877f79SAndroid Build Coastguard Worker false ([#4304](https://github.com/google/ExoPlayer/issues/4304)). 2788*30877f79SAndroid Build Coastguard Worker * Allow any `Drawable` to be used as `PlayerView` default artwork. 2789*30877f79SAndroid Build Coastguard Worker* ConcatenatingMediaSource: 2790*30877f79SAndroid Build Coastguard Worker * Support lazy preparation of playlist media sources 2791*30877f79SAndroid Build Coastguard Worker ([#3972](https://github.com/google/ExoPlayer/issues/3972)). 2792*30877f79SAndroid Build Coastguard Worker * Support range removal with `removeMediaSourceRange` methods 2793*30877f79SAndroid Build Coastguard Worker ([#4542](https://github.com/google/ExoPlayer/issues/4542)). 2794*30877f79SAndroid Build Coastguard Worker * Support setting a new shuffle order with `setShuffleOrder` 2795*30877f79SAndroid Build Coastguard Worker ([#4791](https://github.com/google/ExoPlayer/issues/4791)). 2796*30877f79SAndroid Build Coastguard Worker* MPEG-TS: Support CEA-608/708 in H262 2797*30877f79SAndroid Build Coastguard Worker ([#2565](https://github.com/google/ExoPlayer/issues/2565)). 2798*30877f79SAndroid Build Coastguard Worker* Allow configuration of the back buffer in `DefaultLoadControl.Builder` 2799*30877f79SAndroid Build Coastguard Worker ([#4857](https://github.com/google/ExoPlayer/issues/4857)). 2800*30877f79SAndroid Build Coastguard Worker* Allow apps to pass a `CacheKeyFactory` for setting custom cache keys when 2801*30877f79SAndroid Build Coastguard Worker creating a `CacheDataSource`. 2802*30877f79SAndroid Build Coastguard Worker* Provide additional information for adaptive track selection. 2803*30877f79SAndroid Build Coastguard Worker `TrackSelection.updateSelectedTrack` has two new parameters for the current 2804*30877f79SAndroid Build Coastguard Worker queue of media chunks and iterators for information about upcoming chunks. 2805*30877f79SAndroid Build Coastguard Worker* Allow `MediaCodecSelector`s to return multiple compatible decoders for 2806*30877f79SAndroid Build Coastguard Worker `MediaCodecRenderer`, and provide an (optional) `MediaCodecSelector` that 2807*30877f79SAndroid Build Coastguard Worker falls back to less preferred decoders like `MediaCodec.createDecoderByType` 2808*30877f79SAndroid Build Coastguard Worker ([#273](https://github.com/google/ExoPlayer/issues/273)). 2809*30877f79SAndroid Build Coastguard Worker* Enable gzip for requests made by `SingleSampleMediaSource` 2810*30877f79SAndroid Build Coastguard Worker ([#4771](https://github.com/google/ExoPlayer/issues/4771)). 2811*30877f79SAndroid Build Coastguard Worker* Fix bug reporting buffered position for multi-period windows, and add 2812*30877f79SAndroid Build Coastguard Worker convenience methods `Player.getTotalBufferedDuration` and 2813*30877f79SAndroid Build Coastguard Worker `Player.getContentBufferedDuration` 2814*30877f79SAndroid Build Coastguard Worker ([#4023](https://github.com/google/ExoPlayer/issues/4023)). 2815*30877f79SAndroid Build Coastguard Worker* Fix bug where transitions to clipped media sources would happen too early 2816*30877f79SAndroid Build Coastguard Worker ([#4583](https://github.com/google/ExoPlayer/issues/4583)). 2817*30877f79SAndroid Build Coastguard Worker* Fix bugs reporting events for multi-period media sources 2818*30877f79SAndroid Build Coastguard Worker ([#4492](https://github.com/google/ExoPlayer/issues/4492) and 2819*30877f79SAndroid Build Coastguard Worker [#4634](https://github.com/google/ExoPlayer/issues/4634)). 2820*30877f79SAndroid Build Coastguard Worker* Fix issue where removing looping media from a playlist throws an exception 2821*30877f79SAndroid Build Coastguard Worker ([#4871](https://github.com/google/ExoPlayer/issues/4871)). 2822*30877f79SAndroid Build Coastguard Worker* Fix issue where the preferred audio or text track would not be selected if 2823*30877f79SAndroid Build Coastguard Worker mapped onto a secondary renderer of the corresponding type 2824*30877f79SAndroid Build Coastguard Worker ([#4711](http://github.com/google/ExoPlayer/issues/4711)). 2825*30877f79SAndroid Build Coastguard Worker* Fix issue where errors of upcoming playlist items are thrown too early 2826*30877f79SAndroid Build Coastguard Worker ([#4661](https://github.com/google/ExoPlayer/issues/4661)). 2827*30877f79SAndroid Build Coastguard Worker* Allow edit lists which do not start with a sync sample. 2828*30877f79SAndroid Build Coastguard Worker ([#4774](https://github.com/google/ExoPlayer/issues/4774)). 2829*30877f79SAndroid Build Coastguard Worker* Fix issue with audio discontinuities at period transitions, e.g. when 2830*30877f79SAndroid Build Coastguard Worker looping ([#3829](https://github.com/google/ExoPlayer/issues/3829)). 2831*30877f79SAndroid Build Coastguard Worker* Fix issue where `player.getCurrentTag()` throws an 2832*30877f79SAndroid Build Coastguard Worker `IndexOutOfBoundsException` 2833*30877f79SAndroid Build Coastguard Worker ([#4822](https://github.com/google/ExoPlayer/issues/4822)). 2834*30877f79SAndroid Build Coastguard Worker* Fix bug preventing use of multiple key session support (`multiSession=true`) 2835*30877f79SAndroid Build Coastguard Worker for non-Widevine `DefaultDrmSessionManager` instances 2836*30877f79SAndroid Build Coastguard Worker ([#4834](https://github.com/google/ExoPlayer/issues/4834)). 2837*30877f79SAndroid Build Coastguard Worker* Fix issue where audio and video would desynchronize when playing 2838*30877f79SAndroid Build Coastguard Worker concatenations of gapless content 2839*30877f79SAndroid Build Coastguard Worker ([#4559](https://github.com/google/ExoPlayer/issues/4559)). 2840*30877f79SAndroid Build Coastguard Worker* IMA extension: 2841*30877f79SAndroid Build Coastguard Worker * Refine the previous fix for empty ad groups to avoid discarding ad 2842*30877f79SAndroid Build Coastguard Worker breaks unnecessarily 2843*30877f79SAndroid Build Coastguard Worker ([#4030](https://github.com/google/ExoPlayer/issues/4030) and 2844*30877f79SAndroid Build Coastguard Worker [#4280](https://github.com/google/ExoPlayer/issues/4280)). 2845*30877f79SAndroid Build Coastguard Worker * Fix handling of empty postrolls 2846*30877f79SAndroid Build Coastguard Worker ([#4681](https://github.com/google/ExoPlayer/issues/4681)). 2847*30877f79SAndroid Build Coastguard Worker * Fix handling of postrolls with multiple ads 2848*30877f79SAndroid Build Coastguard Worker ([#4710](https://github.com/google/ExoPlayer/issues/4710)). 2849*30877f79SAndroid Build Coastguard Worker* MediaSession extension: 2850*30877f79SAndroid Build Coastguard Worker * Add `MediaSessionConnector.setCustomErrorMessage` to support setting 2851*30877f79SAndroid Build Coastguard Worker custom error messages. 2852*30877f79SAndroid Build Coastguard Worker * Add `MediaMetadataProvider` to support setting custom metadata 2853*30877f79SAndroid Build Coastguard Worker ([#3497](https://github.com/google/ExoPlayer/issues/3497)). 2854*30877f79SAndroid Build Coastguard Worker* Cronet extension: Now distributed via jCenter. 2855*30877f79SAndroid Build Coastguard Worker* FFmpeg extension: Support mu-law and A-law PCM. 2856*30877f79SAndroid Build Coastguard Worker 2857*30877f79SAndroid Build Coastguard Worker### 2.8.4 (2018-08-17) 2858*30877f79SAndroid Build Coastguard Worker 2859*30877f79SAndroid Build Coastguard Worker* IMA extension: Improve handling of consecutive empty ad groups 2860*30877f79SAndroid Build Coastguard Worker ([#4030](https://github.com/google/ExoPlayer/issues/4030)), 2861*30877f79SAndroid Build Coastguard Worker ([#4280](https://github.com/google/ExoPlayer/issues/4280)). 2862*30877f79SAndroid Build Coastguard Worker 2863*30877f79SAndroid Build Coastguard Worker### 2.8.3 (2018-07-23) 2864*30877f79SAndroid Build Coastguard Worker 2865*30877f79SAndroid Build Coastguard Worker* IMA extension: 2866*30877f79SAndroid Build Coastguard Worker * Fix behavior when creating/releasing the player then releasing 2867*30877f79SAndroid Build Coastguard Worker `ImaAdsLoader` 2868*30877f79SAndroid Build Coastguard Worker ([#3879](https://github.com/google/ExoPlayer/issues/3879)). 2869*30877f79SAndroid Build Coastguard Worker * Add support for setting slots for companion ads. 2870*30877f79SAndroid Build Coastguard Worker* Captions: 2871*30877f79SAndroid Build Coastguard Worker * TTML: Fix an issue with TTML using font size as % of cell resolution 2872*30877f79SAndroid Build Coastguard Worker that makes `SubtitleView.setApplyEmbeddedFontSizes()` not work 2873*30877f79SAndroid Build Coastguard Worker correctly. ([#4491](https://github.com/google/ExoPlayer/issues/4491)). 2874*30877f79SAndroid Build Coastguard Worker * CEA-608: Improve handling of embedded styles 2875*30877f79SAndroid Build Coastguard Worker ([#4321](https://github.com/google/ExoPlayer/issues/4321)). 2876*30877f79SAndroid Build Coastguard Worker* DASH: 2877*30877f79SAndroid Build Coastguard Worker * Exclude text streams from duration calculations 2878*30877f79SAndroid Build Coastguard Worker ([#4029](https://github.com/google/ExoPlayer/issues/4029)). 2879*30877f79SAndroid Build Coastguard Worker * Fix freezing when playing multi-period manifests with `EventStream`s 2880*30877f79SAndroid Build Coastguard Worker ([#4492](https://github.com/google/ExoPlayer/issues/4492)). 2881*30877f79SAndroid Build Coastguard Worker* DRM: Allow DrmInitData to carry a license server URL 2882*30877f79SAndroid Build Coastguard Worker ([#3393](https://github.com/google/ExoPlayer/issues/3393)). 2883*30877f79SAndroid Build Coastguard Worker* MPEG-TS: Fix bug preventing SCTE-35 cues from being output 2884*30877f79SAndroid Build Coastguard Worker ([#4573](https://github.com/google/ExoPlayer/issues/4573)). 2885*30877f79SAndroid Build Coastguard Worker* Expose all internal ID3 data stored in MP4 udta boxes, and switch from using 2886*30877f79SAndroid Build Coastguard Worker CommentFrame to InternalFrame for frames with gapless metadata in MP4. 2887*30877f79SAndroid Build Coastguard Worker* Add `PlayerView.isControllerVisible` 2888*30877f79SAndroid Build Coastguard Worker ([#4385](https://github.com/google/ExoPlayer/issues/4385)). 2889*30877f79SAndroid Build Coastguard Worker* Fix issue playing DRM protected streams on Asus Zenfone 2 2890*30877f79SAndroid Build Coastguard Worker ([#4403](https://github.com/google/ExoPlayer/issues/4413)). 2891*30877f79SAndroid Build Coastguard Worker* Add support for multiple audio and video tracks in MPEG-PS streams 2892*30877f79SAndroid Build Coastguard Worker ([#4406](https://github.com/google/ExoPlayer/issues/4406)). 2893*30877f79SAndroid Build Coastguard Worker* Add workaround for track index mismatches between trex and tkhd boxes in 2894*30877f79SAndroid Build Coastguard Worker fragmented MP4 files 2895*30877f79SAndroid Build Coastguard Worker ([#4477](https://github.com/google/ExoPlayer/issues/4477)). 2896*30877f79SAndroid Build Coastguard Worker* Add workaround for track index mismatches between tfhd and tkhd boxes in 2897*30877f79SAndroid Build Coastguard Worker fragmented MP4 files 2898*30877f79SAndroid Build Coastguard Worker ([#4083](https://github.com/google/ExoPlayer/issues/4083)). 2899*30877f79SAndroid Build Coastguard Worker* Ignore all MP4 edit lists if one edit list couldn't be handled 2900*30877f79SAndroid Build Coastguard Worker ([#4348](https://github.com/google/ExoPlayer/issues/4348)). 2901*30877f79SAndroid Build Coastguard Worker* Fix issue when switching track selection from an embedded track to a primary 2902*30877f79SAndroid Build Coastguard Worker track in DASH ([#4477](https://github.com/google/ExoPlayer/issues/4477)). 2903*30877f79SAndroid Build Coastguard Worker* Fix accessibility class name for `DefaultTimeBar` 2904*30877f79SAndroid Build Coastguard Worker ([#4611](https://github.com/google/ExoPlayer/issues/4611)). 2905*30877f79SAndroid Build Coastguard Worker* Improved compatibility with FireOS devices. 2906*30877f79SAndroid Build Coastguard Worker 2907*30877f79SAndroid Build Coastguard Worker### 2.8.2 (2018-06-06) 2908*30877f79SAndroid Build Coastguard Worker 2909*30877f79SAndroid Build Coastguard Worker* IMA extension: Don't advertise support for video/mpeg ad media, as we don't 2910*30877f79SAndroid Build Coastguard Worker have an extractor for this 2911*30877f79SAndroid Build Coastguard Worker ([#4297](https://github.com/google/ExoPlayer/issues/4297)). 2912*30877f79SAndroid Build Coastguard Worker* DASH: Fix playback getting stuck when playing representations that have both 2913*30877f79SAndroid Build Coastguard Worker sidx atoms and non-zero presentationTimeOffset values. 2914*30877f79SAndroid Build Coastguard Worker* HLS: 2915*30877f79SAndroid Build Coastguard Worker * Allow injection of custom playlist trackers. 2916*30877f79SAndroid Build Coastguard Worker * Fix adaptation in live playlists with EXT-X-PROGRAM-DATE-TIME tags. 2917*30877f79SAndroid Build Coastguard Worker* Mitigate memory leaks when `MediaSource` loads are slow to cancel 2918*30877f79SAndroid Build Coastguard Worker ([#4249](https://github.com/google/ExoPlayer/issues/4249)). 2919*30877f79SAndroid Build Coastguard Worker* Fix inconsistent `Player.EventListener` invocations for recursive player 2920*30877f79SAndroid Build Coastguard Worker state changes ([#4276](https://github.com/google/ExoPlayer/issues/4276)). 2921*30877f79SAndroid Build Coastguard Worker* Fix `MediaCodec.native_setSurface` crash on Moto C 2922*30877f79SAndroid Build Coastguard Worker ([#4315](https://github.com/google/ExoPlayer/issues/4315)). 2923*30877f79SAndroid Build Coastguard Worker* Fix missing whitespace in CEA-608 2924*30877f79SAndroid Build Coastguard Worker ([#3906](https://github.com/google/ExoPlayer/issues/3906)). 2925*30877f79SAndroid Build Coastguard Worker* Fix crash downloading HLS media playlists 2926*30877f79SAndroid Build Coastguard Worker ([#4396](https://github.com/google/ExoPlayer/issues/4396)). 2927*30877f79SAndroid Build Coastguard Worker* Fix a bug where download cancellation was ignored 2928*30877f79SAndroid Build Coastguard Worker ([#4403](https://github.com/google/ExoPlayer/issues/4403)). 2929*30877f79SAndroid Build Coastguard Worker* Set `METADATA_KEY_TITLE` on media descriptions 2930*30877f79SAndroid Build Coastguard Worker ([#4292](https://github.com/google/ExoPlayer/issues/4292)). 2931*30877f79SAndroid Build Coastguard Worker* Allow apps to register custom MIME types 2932*30877f79SAndroid Build Coastguard Worker ([#4264](https://github.com/google/ExoPlayer/issues/4264)). 2933*30877f79SAndroid Build Coastguard Worker 2934*30877f79SAndroid Build Coastguard Worker### 2.8.1 (2018-05-22) 2935*30877f79SAndroid Build Coastguard Worker 2936*30877f79SAndroid Build Coastguard Worker* HLS: 2937*30877f79SAndroid Build Coastguard Worker * Fix playback of livestreams with EXT-X-PROGRAM-DATE-TIME tags 2938*30877f79SAndroid Build Coastguard Worker ([#4239](https://github.com/google/ExoPlayer/issues/4239)). 2939*30877f79SAndroid Build Coastguard Worker * Fix playback of clipped streams starting from non-keyframe positions 2940*30877f79SAndroid Build Coastguard Worker ([#4241](https://github.com/google/ExoPlayer/issues/4241)). 2941*30877f79SAndroid Build Coastguard Worker* OkHttp extension: Fix to correctly include response headers in thrown 2942*30877f79SAndroid Build Coastguard Worker `InvalidResponseCodeException`s. 2943*30877f79SAndroid Build Coastguard Worker* Add possibility to cancel `PlayerMessage`s. 2944*30877f79SAndroid Build Coastguard Worker* UI: 2945*30877f79SAndroid Build Coastguard Worker * Add `PlayerView.setKeepContentOnPlayerReset` to keep the currently 2946*30877f79SAndroid Build Coastguard Worker displayed video frame or media artwork visible when the player is reset 2947*30877f79SAndroid Build Coastguard Worker ([#2843](https://github.com/google/ExoPlayer/issues/2843)). 2948*30877f79SAndroid Build Coastguard Worker* Fix crash when switching surface on Moto E(4) 2949*30877f79SAndroid Build Coastguard Worker ([#4134](https://github.com/google/ExoPlayer/issues/4134)). 2950*30877f79SAndroid Build Coastguard Worker* Fix a bug that could cause event listeners to be called with inconsistent 2951*30877f79SAndroid Build Coastguard Worker information if an event listener interacted with the player 2952*30877f79SAndroid Build Coastguard Worker ([#4262](https://github.com/google/ExoPlayer/issues/4262)). 2953*30877f79SAndroid Build Coastguard Worker* Audio: 2954*30877f79SAndroid Build Coastguard Worker * Fix extraction of PCM in MP4/MOV 2955*30877f79SAndroid Build Coastguard Worker ([#4228](https://github.com/google/ExoPlayer/issues/4228)). 2956*30877f79SAndroid Build Coastguard Worker * FLAC: Supports seeking for FLAC files without SEEKTABLE 2957*30877f79SAndroid Build Coastguard Worker ([#1808](https://github.com/google/ExoPlayer/issues/1808)). 2958*30877f79SAndroid Build Coastguard Worker* Captions: 2959*30877f79SAndroid Build Coastguard Worker * TTML: 2960*30877f79SAndroid Build Coastguard Worker * Fix a styling issue when there are multiple regions displayed at the 2961*30877f79SAndroid Build Coastguard Worker same time that can make text size of each region much smaller than 2962*30877f79SAndroid Build Coastguard Worker defined. 2963*30877f79SAndroid Build Coastguard Worker * Fix an issue when the caption line has no text (empty line or only line 2964*30877f79SAndroid Build Coastguard Worker break), and the line's background is still displayed. 2965*30877f79SAndroid Build Coastguard Worker * Support TTML font size using % correctly (as percentage of document cell 2966*30877f79SAndroid Build Coastguard Worker resolution). 2967*30877f79SAndroid Build Coastguard Worker 2968*30877f79SAndroid Build Coastguard Worker### 2.8.0 (2018-05-03) 2969*30877f79SAndroid Build Coastguard Worker 2970*30877f79SAndroid Build Coastguard Worker* Downloading: 2971*30877f79SAndroid Build Coastguard Worker * Add `DownloadService`, `DownloadManager` and related classes 2972*30877f79SAndroid Build Coastguard Worker ([#2643](https://github.com/google/ExoPlayer/issues/2643)). Information 2973*30877f79SAndroid Build Coastguard Worker on using these components to download progressive formats can be found 2974*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/downloading-streams-6d259eec7f95). 2975*30877f79SAndroid Build Coastguard Worker To see how to download DASH, HLS and SmoothStreaming media, take a look 2976*30877f79SAndroid Build Coastguard Worker at the app. 2977*30877f79SAndroid Build Coastguard Worker * Updated main demo app to support downloading DASH, HLS, SmoothStreaming 2978*30877f79SAndroid Build Coastguard Worker and progressive media. 2979*30877f79SAndroid Build Coastguard Worker* MediaSources: 2980*30877f79SAndroid Build Coastguard Worker * Allow reusing media sources after they have been released and also in 2981*30877f79SAndroid Build Coastguard Worker parallel to allow adding them multiple times to a concatenation. 2982*30877f79SAndroid Build Coastguard Worker ([#3498](https://github.com/google/ExoPlayer/issues/3498)). 2983*30877f79SAndroid Build Coastguard Worker * Merged `DynamicConcatenatingMediaSource` into `ConcatenatingMediaSource` 2984*30877f79SAndroid Build Coastguard Worker and deprecated `DynamicConcatenatingMediaSource`. 2985*30877f79SAndroid Build Coastguard Worker * Allow clipping of child media sources where the period and window have a 2986*30877f79SAndroid Build Coastguard Worker non-zero offset with `ClippingMediaSource`. 2987*30877f79SAndroid Build Coastguard Worker * Allow adding and removing `MediaSourceEventListener`s to MediaSources 2988*30877f79SAndroid Build Coastguard Worker after they have been created. Listening to events is now supported for 2989*30877f79SAndroid Build Coastguard Worker all media sources including composite sources. 2990*30877f79SAndroid Build Coastguard Worker * Added callbacks to `MediaSourceEventListener` to get notified when media 2991*30877f79SAndroid Build Coastguard Worker periods are created, released and being read from. 2992*30877f79SAndroid Build Coastguard Worker * Support live stream clipping with `ClippingMediaSource`. 2993*30877f79SAndroid Build Coastguard Worker * Allow setting tags for all media sources in their factories. The tag of 2994*30877f79SAndroid Build Coastguard Worker the current window can be retrieved with `Player.getCurrentTag`. 2995*30877f79SAndroid Build Coastguard Worker* UI: 2996*30877f79SAndroid Build Coastguard Worker * Add support for displaying error messages and a buffering spinner in 2997*30877f79SAndroid Build Coastguard Worker `PlayerView`. 2998*30877f79SAndroid Build Coastguard Worker * Add support for listening to `AspectRatioFrameLayout`'s aspect ratio 2999*30877f79SAndroid Build Coastguard Worker update ([#3736](https://github.com/google/ExoPlayer/issues/3736)). 3000*30877f79SAndroid Build Coastguard Worker * Add `PlayerNotificationManager` for displaying notifications reflecting 3001*30877f79SAndroid Build Coastguard Worker the player state. 3002*30877f79SAndroid Build Coastguard Worker * Add `TrackSelectionView` for selecting tracks with 3003*30877f79SAndroid Build Coastguard Worker `DefaultTrackSelector`. 3004*30877f79SAndroid Build Coastguard Worker * Add `TrackNameProvider` for converting track `Format`s to textual 3005*30877f79SAndroid Build Coastguard Worker descriptions, and `DefaultTrackNameProvider` as a default 3006*30877f79SAndroid Build Coastguard Worker implementation. 3007*30877f79SAndroid Build Coastguard Worker* Track selection: 3008*30877f79SAndroid Build Coastguard Worker * Reworked `MappingTrackSelector` and `DefaultTrackSelector`. 3009*30877f79SAndroid Build Coastguard Worker * `DefaultTrackSelector.Parameters` now implements `Parcelable`. 3010*30877f79SAndroid Build Coastguard Worker * Added UI components for track selection (see above). 3011*30877f79SAndroid Build Coastguard Worker* Audio: 3012*30877f79SAndroid Build Coastguard Worker * Support extracting data from AMR container formats, including both 3013*30877f79SAndroid Build Coastguard Worker narrow and wide band 3014*30877f79SAndroid Build Coastguard Worker ([#2527](https://github.com/google/ExoPlayer/issues/2527)). 3015*30877f79SAndroid Build Coastguard Worker * FLAC: 3016*30877f79SAndroid Build Coastguard Worker * Sniff FLAC files correctly if they have ID3 headers 3017*30877f79SAndroid Build Coastguard Worker ([#4055](https://github.com/google/ExoPlayer/issues/4055)). 3018*30877f79SAndroid Build Coastguard Worker * Supports FLAC files with high sample rate (176400 and 192000) 3019*30877f79SAndroid Build Coastguard Worker ([#3769](https://github.com/google/ExoPlayer/issues/3769)). 3020*30877f79SAndroid Build Coastguard Worker * Factor out `AudioTrack` position tracking from `DefaultAudioSink`. 3021*30877f79SAndroid Build Coastguard Worker * Fix an issue where the playback position would pause just after playback 3022*30877f79SAndroid Build Coastguard Worker begins, and poll the audio timestamp less frequently once it starts 3023*30877f79SAndroid Build Coastguard Worker advancing ([#3841](https://github.com/google/ExoPlayer/issues/3841)). 3024*30877f79SAndroid Build Coastguard Worker * Add an option to skip silent audio in `PlaybackParameters` 3025*30877f79SAndroid Build Coastguard Worker ([#2635](https://github.com/google/ExoPlayer/issues/2635)). 3026*30877f79SAndroid Build Coastguard Worker * Fix an issue where playback of TrueHD streams would get stuck after 3027*30877f79SAndroid Build Coastguard Worker seeking due to not finding a syncframe 3028*30877f79SAndroid Build Coastguard Worker ([#3845](https://github.com/google/ExoPlayer/issues/3845)). 3029*30877f79SAndroid Build Coastguard Worker * Fix an issue with eac3-joc playback where a codec would fail to 3030*30877f79SAndroid Build Coastguard Worker configure ([#4165](https://github.com/google/ExoPlayer/issues/4165)). 3031*30877f79SAndroid Build Coastguard Worker * Handle non-empty end-of-stream buffers, to fix gapless playback of 3032*30877f79SAndroid Build Coastguard Worker streams with encoder padding when the decoder returns a non-empty final 3033*30877f79SAndroid Build Coastguard Worker buffer. 3034*30877f79SAndroid Build Coastguard Worker * Allow trimming more than one sample when applying an elst audio edit via 3035*30877f79SAndroid Build Coastguard Worker gapless playback info. 3036*30877f79SAndroid Build Coastguard Worker * Allow overriding skipping/scaling with custom `AudioProcessor`s 3037*30877f79SAndroid Build Coastguard Worker ([#3142](https://github.com/google/ExoPlayer/issues/3142)). 3038*30877f79SAndroid Build Coastguard Worker* Caching: 3039*30877f79SAndroid Build Coastguard Worker * Add release method to the `Cache` interface, and prevent multiple 3040*30877f79SAndroid Build Coastguard Worker instances of `SimpleCache` using the same folder at the same time. 3041*30877f79SAndroid Build Coastguard Worker * Cache redirect URLs 3042*30877f79SAndroid Build Coastguard Worker ([#2360](https://github.com/google/ExoPlayer/issues/2360)). 3043*30877f79SAndroid Build Coastguard Worker* DRM: 3044*30877f79SAndroid Build Coastguard Worker * Allow multiple listeners for `DefaultDrmSessionManager`. 3045*30877f79SAndroid Build Coastguard Worker * Pass `DrmSessionManager` to `ExoPlayerFactory` instead of 3046*30877f79SAndroid Build Coastguard Worker `RendererFactory`. 3047*30877f79SAndroid Build Coastguard Worker * Change minimum API requirement for CBC and pattern encryption from 24 to 3048*30877f79SAndroid Build Coastguard Worker 25 ([#4022](https://github.com/google/ExoPlayer/issues/4022)). 3049*30877f79SAndroid Build Coastguard Worker * Fix handling of 307/308 redirects when making license requests 3050*30877f79SAndroid Build Coastguard Worker ([#4108](https://github.com/google/ExoPlayer/issues/4108)). 3051*30877f79SAndroid Build Coastguard Worker* HLS: 3052*30877f79SAndroid Build Coastguard Worker * Fix playlist loading error propagation when the current selection does 3053*30877f79SAndroid Build Coastguard Worker not include all of the playlist's variants. 3054*30877f79SAndroid Build Coastguard Worker * Fix SAMPLE-AES-CENC and SAMPLE-AES-CTR EXT-X-KEY methods 3055*30877f79SAndroid Build Coastguard Worker ([#4145](https://github.com/google/ExoPlayer/issues/4145)). 3056*30877f79SAndroid Build Coastguard Worker * Preeptively declare an ID3 track in chunkless preparation 3057*30877f79SAndroid Build Coastguard Worker ([#4016](https://github.com/google/ExoPlayer/issues/4016)). 3058*30877f79SAndroid Build Coastguard Worker * Add support for multiple #EXT-X-MAP tags in a media playlist 3059*30877f79SAndroid Build Coastguard Worker ([#4164](https://github.com/google/ExoPlayer/issues/4182)). 3060*30877f79SAndroid Build Coastguard Worker * Fix seeking in live streams 3061*30877f79SAndroid Build Coastguard Worker ([#4187](https://github.com/google/ExoPlayer/issues/4187)). 3062*30877f79SAndroid Build Coastguard Worker* IMA extension: 3063*30877f79SAndroid Build Coastguard Worker * Allow setting the ad media load timeout 3064*30877f79SAndroid Build Coastguard Worker ([#3691](https://github.com/google/ExoPlayer/issues/3691)). 3065*30877f79SAndroid Build Coastguard Worker * Expose ad load errors via `MediaSourceEventListener` on 3066*30877f79SAndroid Build Coastguard Worker `AdsMediaSource`, and allow setting an ad event listener on 3067*30877f79SAndroid Build Coastguard Worker `ImaAdsLoader`. Deprecate the `AdsMediaSource.EventListener`. 3068*30877f79SAndroid Build Coastguard Worker* Add `AnalyticsListener` interface which can be registered in 3069*30877f79SAndroid Build Coastguard Worker `SimpleExoPlayer` to receive detailed metadata for each ExoPlayer event. 3070*30877f79SAndroid Build Coastguard Worker* Optimize seeking in FMP4 by enabling seeking to the nearest sync sample 3071*30877f79SAndroid Build Coastguard Worker within a fragment. This benefits standalone FMP4 playbacks, DASH and 3072*30877f79SAndroid Build Coastguard Worker SmoothStreaming. 3073*30877f79SAndroid Build Coastguard Worker* Updated default max buffer length in `DefaultLoadControl`. 3074*30877f79SAndroid Build Coastguard Worker* Fix ClearKey decryption error if the key contains a forward slash 3075*30877f79SAndroid Build Coastguard Worker ([#4075](https://github.com/google/ExoPlayer/issues/4075)). 3076*30877f79SAndroid Build Coastguard Worker* Fix crash when switching surface on Huawei P9 Lite 3077*30877f79SAndroid Build Coastguard Worker ([#4084](https://github.com/google/ExoPlayer/issues/4084)), and Philips 3078*30877f79SAndroid Build Coastguard Worker QM163E ([#4104](https://github.com/google/ExoPlayer/issues/4104)). 3079*30877f79SAndroid Build Coastguard Worker* Support ZLIB compressed PGS subtitles. 3080*30877f79SAndroid Build Coastguard Worker* Added `getPlaybackError` to `Player` interface. 3081*30877f79SAndroid Build Coastguard Worker* Moved initial bitrate estimate from `AdaptiveTrackSelection` to 3082*30877f79SAndroid Build Coastguard Worker `DefaultBandwidthMeter`. 3083*30877f79SAndroid Build Coastguard Worker* Removed default renderer time offset of 60000000 from internal player. The 3084*30877f79SAndroid Build Coastguard Worker actual renderer timestamp offset can be obtained by listening to 3085*30877f79SAndroid Build Coastguard Worker `BaseRenderer.onStreamChanged`. 3086*30877f79SAndroid Build Coastguard Worker* Added dependencies on checkerframework annotations for static code analysis. 3087*30877f79SAndroid Build Coastguard Worker 3088*30877f79SAndroid Build Coastguard Worker### 2.7.3 (2018-04-04) 3089*30877f79SAndroid Build Coastguard Worker 3090*30877f79SAndroid Build Coastguard Worker* Fix ProGuard configuration for Cast, IMA and OkHttp extensions. 3091*30877f79SAndroid Build Coastguard Worker* Update OkHttp extension to depend on OkHttp 3.10.0. 3092*30877f79SAndroid Build Coastguard Worker 3093*30877f79SAndroid Build Coastguard Worker### 2.7.2 (2018-03-29) 3094*30877f79SAndroid Build Coastguard Worker 3095*30877f79SAndroid Build Coastguard Worker* Gradle: Upgrade Gradle version from 4.1 to 4.4 so it can work with Android 3096*30877f79SAndroid Build Coastguard Worker Studio 3.1 ([#3708](https://github.com/google/ExoPlayer/issues/3708)). 3097*30877f79SAndroid Build Coastguard Worker* Match codecs starting with "mp4a" to different Audio MimeTypes 3098*30877f79SAndroid Build Coastguard Worker ([#3779](https://github.com/google/ExoPlayer/issues/3779)). 3099*30877f79SAndroid Build Coastguard Worker* Fix ANR issue on Redmi 4X and Redmi Note 4 3100*30877f79SAndroid Build Coastguard Worker ([#4006](https://github.com/google/ExoPlayer/issues/4006)). 3101*30877f79SAndroid Build Coastguard Worker* Fix handling of zero padded strings when parsing Matroska streams 3102*30877f79SAndroid Build Coastguard Worker ([#4010](https://github.com/google/ExoPlayer/issues/4010)). 3103*30877f79SAndroid Build Coastguard Worker* Fix "Decoder input buffer too small" error when playing some FLAC streams. 3104*30877f79SAndroid Build Coastguard Worker* MediaSession extension: Omit fast forward and rewind actions when media is 3105*30877f79SAndroid Build Coastguard Worker not seekable ([#4001](https://github.com/google/ExoPlayer/issues/4001)). 3106*30877f79SAndroid Build Coastguard Worker 3107*30877f79SAndroid Build Coastguard Worker### 2.7.1 (2018-03-09) 3108*30877f79SAndroid Build Coastguard Worker 3109*30877f79SAndroid Build Coastguard Worker* Gradle: Replaced 'compile' (deprecated) with 'implementation' and 'api'. 3110*30877f79SAndroid Build Coastguard Worker This may lead to build breakage for applications upgrading from previous 3111*30877f79SAndroid Build Coastguard Worker version that rely on indirect dependencies of certain modules. In such 3112*30877f79SAndroid Build Coastguard Worker cases, application developers need to add the missing dependency to their 3113*30877f79SAndroid Build Coastguard Worker gradle file. You can read more about the new dependency configurations 3114*30877f79SAndroid Build Coastguard Worker [here](https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations). 3115*30877f79SAndroid Build Coastguard Worker* HlsMediaSource: Make HLS periods start at zero instead of the epoch. 3116*30877f79SAndroid Build Coastguard Worker Applications that rely on HLS timelines having a period starting at the 3117*30877f79SAndroid Build Coastguard Worker epoch will need to update their handling of HLS timelines. The program date 3118*30877f79SAndroid Build Coastguard Worker time is still available via the informational 3119*30877f79SAndroid Build Coastguard Worker `Timeline.Window.windowStartTimeMs` field 3120*30877f79SAndroid Build Coastguard Worker ([#3865](https://github.com/google/ExoPlayer/issues/3865), 3121*30877f79SAndroid Build Coastguard Worker [#3888](https://github.com/google/ExoPlayer/issues/3888)). 3122*30877f79SAndroid Build Coastguard Worker* Enable seeking in MP4 streams where duration is set incorrectly in the track 3123*30877f79SAndroid Build Coastguard Worker header ([#3926](https://github.com/google/ExoPlayer/issues/3926)). 3124*30877f79SAndroid Build Coastguard Worker* Video: Force rendering a frame periodically in `MediaCodecVideoRenderer` and 3125*30877f79SAndroid Build Coastguard Worker `LibvpxVideoRenderer`, even if it is late. 3126*30877f79SAndroid Build Coastguard Worker 3127*30877f79SAndroid Build Coastguard Worker### 2.7.0 (2018-02-19) 3128*30877f79SAndroid Build Coastguard Worker 3129*30877f79SAndroid Build Coastguard Worker* Player interface: 3130*30877f79SAndroid Build Coastguard Worker * Add optional parameter to `stop` to reset the player when stopping. 3131*30877f79SAndroid Build Coastguard Worker * Add a reason to `EventListener.onTimelineChanged` to distinguish between 3132*30877f79SAndroid Build Coastguard Worker initial preparation, reset and dynamic updates. 3133*30877f79SAndroid Build Coastguard Worker * Add `Player.DISCONTINUITY_REASON_AD_INSERTION` to the possible reasons 3134*30877f79SAndroid Build Coastguard Worker reported in `Eventlistener.onPositionDiscontinuity` to distinguish 3135*30877f79SAndroid Build Coastguard Worker transitions to and from ads within one period from transitions between 3136*30877f79SAndroid Build Coastguard Worker periods. 3137*30877f79SAndroid Build Coastguard Worker * Replaced `ExoPlayer.sendMessages` with `ExoPlayer.createMessage` to 3138*30877f79SAndroid Build Coastguard Worker allow more customization of the message. Now supports setting a message 3139*30877f79SAndroid Build Coastguard Worker delivery playback position and/or a delivery handler 3140*30877f79SAndroid Build Coastguard Worker ([#2189](https://github.com/google/ExoPlayer/issues/2189)). 3141*30877f79SAndroid Build Coastguard Worker * Add `Player.VideoComponent`, `Player.TextComponent` and 3142*30877f79SAndroid Build Coastguard Worker `Player.MetadataComponent` interfaces that define optional video, text 3143*30877f79SAndroid Build Coastguard Worker and metadata output functionality. New `getVideoComponent`, 3144*30877f79SAndroid Build Coastguard Worker `getTextComponent` and `getMetadataComponent` methods provide access to 3145*30877f79SAndroid Build Coastguard Worker this functionality. 3146*30877f79SAndroid Build Coastguard Worker* Add `ExoPlayer.setSeekParameters` for controlling how seek operations are 3147*30877f79SAndroid Build Coastguard Worker performed. The `SeekParameters` class contains defaults for exact seeking 3148*30877f79SAndroid Build Coastguard Worker and seeking to the closest sync points before, either side or after 3149*30877f79SAndroid Build Coastguard Worker specified seek positions. `SeekParameters` are not currently supported when 3150*30877f79SAndroid Build Coastguard Worker playing HLS streams. 3151*30877f79SAndroid Build Coastguard Worker* DefaultTrackSelector: 3152*30877f79SAndroid Build Coastguard Worker * Replace `DefaultTrackSelector.Parameters` copy methods with a builder. 3153*30877f79SAndroid Build Coastguard Worker * Support disabling of individual text track selection flags. 3154*30877f79SAndroid Build Coastguard Worker* Buffering: 3155*30877f79SAndroid Build Coastguard Worker * Allow a back-buffer of media to be retained behind the current playback 3156*30877f79SAndroid Build Coastguard Worker position, for fast backward seeking. The back-buffer can be configured 3157*30877f79SAndroid Build Coastguard Worker by custom `LoadControl` implementations. 3158*30877f79SAndroid Build Coastguard Worker * Add ability for `SequenceableLoader` to re-evaluate its buffer and 3159*30877f79SAndroid Build Coastguard Worker discard buffered media so that it can be re-buffered in a different 3160*30877f79SAndroid Build Coastguard Worker quality. 3161*30877f79SAndroid Build Coastguard Worker * Allow more flexible loading strategy when playing media containing 3162*30877f79SAndroid Build Coastguard Worker multiple sub-streams, by allowing injection of custom 3163*30877f79SAndroid Build Coastguard Worker `CompositeSequenceableLoader` factories through 3164*30877f79SAndroid Build Coastguard Worker `DashMediaSource.Factory`, `HlsMediaSource.Factory`, 3165*30877f79SAndroid Build Coastguard Worker `SsMediaSource.Factory`, and `MergingMediaSource`. 3166*30877f79SAndroid Build Coastguard Worker * Play out existing buffer before retrying for progressive live streams 3167*30877f79SAndroid Build Coastguard Worker ([#1606](https://github.com/google/ExoPlayer/issues/1606)). 3168*30877f79SAndroid Build Coastguard Worker* UI: 3169*30877f79SAndroid Build Coastguard Worker * Generalized player and control views to allow them to bind with any 3170*30877f79SAndroid Build Coastguard Worker `Player`, and renamed them to `PlayerView` and `PlayerControlView` 3171*30877f79SAndroid Build Coastguard Worker respectively. 3172*30877f79SAndroid Build Coastguard Worker * Made `PlayerView` automatically apply video rotation when configured to 3173*30877f79SAndroid Build Coastguard Worker use `TextureView` 3174*30877f79SAndroid Build Coastguard Worker ([#91](https://github.com/google/ExoPlayer/issues/91)). 3175*30877f79SAndroid Build Coastguard Worker * Made `PlayerView` play button behave correctly when the player is ended 3176*30877f79SAndroid Build Coastguard Worker ([#3689](https://github.com/google/ExoPlayer/issues/3689)), and call a 3177*30877f79SAndroid Build Coastguard Worker `PlaybackPreparer` when the player is idle. 3178*30877f79SAndroid Build Coastguard Worker* DRM: Optimistically attempt playback of DRM protected content that does not 3179*30877f79SAndroid Build Coastguard Worker declare scheme specific init data in the manifest. If playback of clear 3180*30877f79SAndroid Build Coastguard Worker samples without keys is allowed, delay DRM session error propagation until 3181*30877f79SAndroid Build Coastguard Worker keys are actually needed 3182*30877f79SAndroid Build Coastguard Worker ([#3630](https://github.com/google/ExoPlayer/issues/3630)). 3183*30877f79SAndroid Build Coastguard Worker* DASH: 3184*30877f79SAndroid Build Coastguard Worker * Support in-band Emsg events targeting the player with scheme id 3185*30877f79SAndroid Build Coastguard Worker `urn:mpeg:dash:event:2012` and scheme values "1", "2" and "3". 3186*30877f79SAndroid Build Coastguard Worker * Support EventStream elements in DASH manifests. 3187*30877f79SAndroid Build Coastguard Worker* HLS: 3188*30877f79SAndroid Build Coastguard Worker * Add opt-in support for chunkless preparation in HLS. This allows an HLS 3189*30877f79SAndroid Build Coastguard Worker source to finish preparation without downloading any chunks, which can 3190*30877f79SAndroid Build Coastguard Worker significantly reduce initial buffering time 3191*30877f79SAndroid Build Coastguard Worker ([#3149](https://github.com/google/ExoPlayer/issues/3149)). More details 3192*30877f79SAndroid Build Coastguard Worker can be found 3193*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/faster-hls-preparation-f6611aa15ea6). 3194*30877f79SAndroid Build Coastguard Worker * Fail if unable to sync with the Transport Stream, rather than entering 3195*30877f79SAndroid Build Coastguard Worker stuck in an indefinite buffering state. 3196*30877f79SAndroid Build Coastguard Worker * Fix mime type propagation 3197*30877f79SAndroid Build Coastguard Worker ([#3653](https://github.com/google/ExoPlayer/issues/3653)). 3198*30877f79SAndroid Build Coastguard Worker * Fix ID3 context reuse across segment format changes 3199*30877f79SAndroid Build Coastguard Worker ([#3622](https://github.com/google/ExoPlayer/issues/3622)). 3200*30877f79SAndroid Build Coastguard Worker * Use long for media sequence numbers 3201*30877f79SAndroid Build Coastguard Worker ([#3747](https://github.com/google/ExoPlayer/issues/3747)) 3202*30877f79SAndroid Build Coastguard Worker * Add initial support for the EXT-X-GAP tag. 3203*30877f79SAndroid Build Coastguard Worker* Audio: 3204*30877f79SAndroid Build Coastguard Worker * Support TrueHD passthrough for rechunked samples in Matroska files 3205*30877f79SAndroid Build Coastguard Worker ([#2147](https://github.com/google/ExoPlayer/issues/2147)). 3206*30877f79SAndroid Build Coastguard Worker * Support resampling 24-bit and 32-bit integer to 32-bit float for high 3207*30877f79SAndroid Build Coastguard Worker resolution output in `DefaultAudioSink` 3208*30877f79SAndroid Build Coastguard Worker ([#3635](https://github.com/google/ExoPlayer/pull/3635)). 3209*30877f79SAndroid Build Coastguard Worker* Captions: 3210*30877f79SAndroid Build Coastguard Worker * Basic support for PGS subtitles 3211*30877f79SAndroid Build Coastguard Worker ([#3008](https://github.com/google/ExoPlayer/issues/3008)). 3212*30877f79SAndroid Build Coastguard Worker * Fix handling of CEA-608 captions where multiple buffers have the same 3213*30877f79SAndroid Build Coastguard Worker presentation timestamp 3214*30877f79SAndroid Build Coastguard Worker ([#3782](https://github.com/google/ExoPlayer/issues/3782)). 3215*30877f79SAndroid Build Coastguard Worker* Caching: 3216*30877f79SAndroid Build Coastguard Worker * Fix cache corruption issue 3217*30877f79SAndroid Build Coastguard Worker ([#3762](https://github.com/google/ExoPlayer/issues/3762)). 3218*30877f79SAndroid Build Coastguard Worker * Implement periodic check in `CacheDataSource` to see whether it's 3219*30877f79SAndroid Build Coastguard Worker possible to switch to reading/writing the cache having initially 3220*30877f79SAndroid Build Coastguard Worker bypassed it. 3221*30877f79SAndroid Build Coastguard Worker* IMA extension: 3222*30877f79SAndroid Build Coastguard Worker * Fix the player getting stuck when an ad group fails to load 3223*30877f79SAndroid Build Coastguard Worker ([#3584](https://github.com/google/ExoPlayer/issues/3584)). 3224*30877f79SAndroid Build Coastguard Worker * Work around loadAd not being called beore the LOADED AdEvent arrives 3225*30877f79SAndroid Build Coastguard Worker ([#3552](https://github.com/google/ExoPlayer/issues/3552)). 3226*30877f79SAndroid Build Coastguard Worker * Handle asset mismatch errors 3227*30877f79SAndroid Build Coastguard Worker ([#3801](https://github.com/google/ExoPlayer/issues/3801)). 3228*30877f79SAndroid Build Coastguard Worker * Add support for playing non-Extractor content MediaSources in the IMA 3229*30877f79SAndroid Build Coastguard Worker demo app ([#3676](https://github.com/google/ExoPlayer/issues/3676)). 3230*30877f79SAndroid Build Coastguard Worker * Fix handling of ad tags where ad groups are out of order 3231*30877f79SAndroid Build Coastguard Worker ([#3716](https://github.com/google/ExoPlayer/issues/3716)). 3232*30877f79SAndroid Build Coastguard Worker * Fix handling of ad tags with only preroll/postroll ad groups 3233*30877f79SAndroid Build Coastguard Worker ([#3715](https://github.com/google/ExoPlayer/issues/3715)). 3234*30877f79SAndroid Build Coastguard Worker * Propagate ad media preparation errors to IMA so that the ads can be 3235*30877f79SAndroid Build Coastguard Worker skipped. 3236*30877f79SAndroid Build Coastguard Worker * Handle exceptions in IMA callbacks so that can be logged less verbosely. 3237*30877f79SAndroid Build Coastguard Worker* New Cast extension. Simplifies toggling between local and Cast playbacks. 3238*30877f79SAndroid Build Coastguard Worker* `EventLogger` moved from the demo app into the core library. 3239*30877f79SAndroid Build Coastguard Worker* Fix ANR issue on the Huawei P8 Lite, Huawei Y6II, Moto C+, Meizu M5C, Lenovo 3240*30877f79SAndroid Build Coastguard Worker K4 Note and Sony Xperia E5. 3241*30877f79SAndroid Build Coastguard Worker ([#3724](https://github.com/google/ExoPlayer/issues/3724), 3242*30877f79SAndroid Build Coastguard Worker [#3835](https://github.com/google/ExoPlayer/issues/3835)). 3243*30877f79SAndroid Build Coastguard Worker* Fix potential NPE when removing media sources from a 3244*30877f79SAndroid Build Coastguard Worker DynamicConcatenatingMediaSource 3245*30877f79SAndroid Build Coastguard Worker ([#3796](https://github.com/google/ExoPlayer/issues/3796)). 3246*30877f79SAndroid Build Coastguard Worker* Check `sys.display-size` on Philips ATVs 3247*30877f79SAndroid Build Coastguard Worker ([#3807](https://github.com/google/ExoPlayer/issues/3807)). 3248*30877f79SAndroid Build Coastguard Worker* Release `Extractor`s on the loading thread to avoid potentially leaking 3249*30877f79SAndroid Build Coastguard Worker resources when the playback thread has quit by the time the loading task has 3250*30877f79SAndroid Build Coastguard Worker completed. 3251*30877f79SAndroid Build Coastguard Worker* ID3: Better handle malformed ID3 data 3252*30877f79SAndroid Build Coastguard Worker ([#3792](https://github.com/google/ExoPlayer/issues/3792)). 3253*30877f79SAndroid Build Coastguard Worker* Support 14-bit mode and little endianness in DTS PES packets 3254*30877f79SAndroid Build Coastguard Worker ([#3340](https://github.com/google/ExoPlayer/issues/3340)). 3255*30877f79SAndroid Build Coastguard Worker* Demo app: Add ability to download not DRM protected content. 3256*30877f79SAndroid Build Coastguard Worker 3257*30877f79SAndroid Build Coastguard Worker### 2.6.1 (2017-12-15) 3258*30877f79SAndroid Build Coastguard Worker 3259*30877f79SAndroid Build Coastguard Worker* Add factories to `ExtractorMediaSource`, `HlsMediaSource`, `SsMediaSource`, 3260*30877f79SAndroid Build Coastguard Worker `DashMediaSource` and `SingleSampleMediaSource`. 3261*30877f79SAndroid Build Coastguard Worker* Use the same listener `MediaSourceEventListener` for all MediaSource 3262*30877f79SAndroid Build Coastguard Worker implementations. 3263*30877f79SAndroid Build Coastguard Worker* IMA extension: 3264*30877f79SAndroid Build Coastguard Worker * Support non-ExtractorMediaSource ads 3265*30877f79SAndroid Build Coastguard Worker ([#3302](https://github.com/google/ExoPlayer/issues/3302)). 3266*30877f79SAndroid Build Coastguard Worker * Skip ads before the ad preceding the player's initial seek position 3267*30877f79SAndroid Build Coastguard Worker ([#3527](https://github.com/google/ExoPlayer/issues/3527)). 3268*30877f79SAndroid Build Coastguard Worker * Fix ad loading when there is no preroll. 3269*30877f79SAndroid Build Coastguard Worker * Add an option to turn off hiding controls during ad playback 3270*30877f79SAndroid Build Coastguard Worker ([#3532](https://github.com/google/ExoPlayer/issues/3532)). 3271*30877f79SAndroid Build Coastguard Worker * Support specifying an ads response instead of an ad tag 3272*30877f79SAndroid Build Coastguard Worker ([#3548](https://github.com/google/ExoPlayer/issues/3548)). 3273*30877f79SAndroid Build Coastguard Worker * Support overriding the ad load timeout 3274*30877f79SAndroid Build Coastguard Worker ([#3556](https://github.com/google/ExoPlayer/issues/3556)). 3275*30877f79SAndroid Build Coastguard Worker* DASH: Support time zone designators in ISO8601 UTCTiming elements 3276*30877f79SAndroid Build Coastguard Worker ([#3524](https://github.com/google/ExoPlayer/issues/3524)). 3277*30877f79SAndroid Build Coastguard Worker* Audio: 3278*30877f79SAndroid Build Coastguard Worker * Support 32-bit PCM float output from `DefaultAudioSink`, and add an 3279*30877f79SAndroid Build Coastguard Worker option to use this with `FfmpegAudioRenderer`. 3280*30877f79SAndroid Build Coastguard Worker * Add support for extracting 32-bit WAVE files 3281*30877f79SAndroid Build Coastguard Worker ([#3379](https://github.com/google/ExoPlayer/issues/3379)). 3282*30877f79SAndroid Build Coastguard Worker * Support extraction and decoding of Dolby Atmos 3283*30877f79SAndroid Build Coastguard Worker ([#2465](https://github.com/google/ExoPlayer/issues/2465)). 3284*30877f79SAndroid Build Coastguard Worker * Fix handling of playback parameter changes while paused when followed by 3285*30877f79SAndroid Build Coastguard Worker a seek. 3286*30877f79SAndroid Build Coastguard Worker* SimpleExoPlayer: Allow multiple audio and video debug listeners. 3287*30877f79SAndroid Build Coastguard Worker* DefaultTrackSelector: Support undefined language text track selection when 3288*30877f79SAndroid Build Coastguard Worker the preferred language is not available 3289*30877f79SAndroid Build Coastguard Worker ([#2980](https://github.com/google/ExoPlayer/issues/2980)). 3290*30877f79SAndroid Build Coastguard Worker* Add options to `DefaultLoadControl` to set maximum buffer size in bytes and 3291*30877f79SAndroid Build Coastguard Worker to choose whether size or time constraints are prioritized. 3292*30877f79SAndroid Build Coastguard Worker* Use surfaceless context for secure `DummySurface`, if available 3293*30877f79SAndroid Build Coastguard Worker ([#3558](https://github.com/google/ExoPlayer/issues/3558)). 3294*30877f79SAndroid Build Coastguard Worker* FLV: Fix playback of live streams that do not contain an audio track 3295*30877f79SAndroid Build Coastguard Worker ([#3188](https://github.com/google/ExoPlayer/issues/3188)). 3296*30877f79SAndroid Build Coastguard Worker* CEA-608: Fix handling of row count changes in roll-up mode 3297*30877f79SAndroid Build Coastguard Worker ([#3513](https://github.com/google/ExoPlayer/issues/3513)). 3298*30877f79SAndroid Build Coastguard Worker* Prevent period transitions when seeking to the end of a period when paused 3299*30877f79SAndroid Build Coastguard Worker ([#2439](https://github.com/google/ExoPlayer/issues/2439)). 3300*30877f79SAndroid Build Coastguard Worker 3301*30877f79SAndroid Build Coastguard Worker### 2.6.0 (2017-11-03) 3302*30877f79SAndroid Build Coastguard Worker 3303*30877f79SAndroid Build Coastguard Worker* Removed "r" prefix from versions. This release is "2.6.0", not "r2.6.0". 3304*30877f79SAndroid Build Coastguard Worker* New `Player.DefaultEventListener` abstract class can be extended to avoid 3305*30877f79SAndroid Build Coastguard Worker having to implement all methods defined by `Player.EventListener`. 3306*30877f79SAndroid Build Coastguard Worker* Added a reason to `EventListener.onPositionDiscontinuity` 3307*30877f79SAndroid Build Coastguard Worker ([#3252](https://github.com/google/ExoPlayer/issues/3252)). 3308*30877f79SAndroid Build Coastguard Worker* New `setShuffleModeEnabled` method for enabling shuffled playback. 3309*30877f79SAndroid Build Coastguard Worker* SimpleExoPlayer: Support for multiple video, text and metadata outputs. 3310*30877f79SAndroid Build Coastguard Worker* Support for `Renderer`s that don't consume any media 3311*30877f79SAndroid Build Coastguard Worker ([#3212](https://github.com/google/ExoPlayer/issues/3212)). 3312*30877f79SAndroid Build Coastguard Worker* Fix reporting of internal position discontinuities via 3313*30877f79SAndroid Build Coastguard Worker `Player.onPositionDiscontinuity`. `DISCONTINUITY_REASON_SEEK_ADJUSTMENT` is 3314*30877f79SAndroid Build Coastguard Worker added to disambiguate position adjustments during seeks from other types of 3315*30877f79SAndroid Build Coastguard Worker internal position discontinuity. 3316*30877f79SAndroid Build Coastguard Worker* Fix potential `IndexOutOfBoundsException` when calling 3317*30877f79SAndroid Build Coastguard Worker `ExoPlayer.getDuration` 3318*30877f79SAndroid Build Coastguard Worker ([#3362](https://github.com/google/ExoPlayer/issues/3362)). 3319*30877f79SAndroid Build Coastguard Worker* Fix playbacks involving looping, concatenation and ads getting stuck when 3320*30877f79SAndroid Build Coastguard Worker media contains tracks with uneven durations 3321*30877f79SAndroid Build Coastguard Worker ([#1874](https://github.com/google/ExoPlayer/issues/1874)). 3322*30877f79SAndroid Build Coastguard Worker* Fix issue with `ContentDataSource` when reading from certain 3323*30877f79SAndroid Build Coastguard Worker `ContentProvider` implementations 3324*30877f79SAndroid Build Coastguard Worker ([#3426](https://github.com/google/ExoPlayer/issues/3426)). 3325*30877f79SAndroid Build Coastguard Worker* Better playback experience when the video decoder cannot keep up, by 3326*30877f79SAndroid Build Coastguard Worker skipping to key-frames. This is particularly relevant for variable speed 3327*30877f79SAndroid Build Coastguard Worker playbacks. 3328*30877f79SAndroid Build Coastguard Worker* Allow `SingleSampleMediaSource` to suppress load errors 3329*30877f79SAndroid Build Coastguard Worker ([#3140](https://github.com/google/ExoPlayer/issues/3140)). 3330*30877f79SAndroid Build Coastguard Worker* `DynamicConcatenatingMediaSource`: Allow specifying a callback to be invoked 3331*30877f79SAndroid Build Coastguard Worker after a dynamic playlist modification has been applied 3332*30877f79SAndroid Build Coastguard Worker ([#3407](https://github.com/google/ExoPlayer/issues/3407)). 3333*30877f79SAndroid Build Coastguard Worker* Audio: New `AudioSink` interface allows customization of audio output path. 3334*30877f79SAndroid Build Coastguard Worker* Offline: Added `Downloader` implementations for DASH, HLS, SmoothStreaming 3335*30877f79SAndroid Build Coastguard Worker and progressive streams. 3336*30877f79SAndroid Build Coastguard Worker* Track selection: 3337*30877f79SAndroid Build Coastguard Worker * Fixed adaptive track selection logic for live playbacks 3338*30877f79SAndroid Build Coastguard Worker ([#3017](https://github.com/google/ExoPlayer/issues/3017)). 3339*30877f79SAndroid Build Coastguard Worker * Added ability to select the lowest bitrate tracks. 3340*30877f79SAndroid Build Coastguard Worker* DASH: 3341*30877f79SAndroid Build Coastguard Worker * Don't crash when a malformed or unexpected manifest update occurs 3342*30877f79SAndroid Build Coastguard Worker ([#2795](https://github.com/google/ExoPlayer/issues/2795)). 3343*30877f79SAndroid Build Coastguard Worker* HLS: 3344*30877f79SAndroid Build Coastguard Worker * Support for Widevine protected FMP4 variants. 3345*30877f79SAndroid Build Coastguard Worker * Support CEA-608 in FMP4 variants. 3346*30877f79SAndroid Build Coastguard Worker * Support extractor injection 3347*30877f79SAndroid Build Coastguard Worker ([#2748](https://github.com/google/ExoPlayer/issues/2748)). 3348*30877f79SAndroid Build Coastguard Worker* DRM: 3349*30877f79SAndroid Build Coastguard Worker * Improved compatibility with ClearKey content 3350*30877f79SAndroid Build Coastguard Worker ([#3138](https://github.com/google/ExoPlayer/issues/3138)). 3351*30877f79SAndroid Build Coastguard Worker * Support multiple PSSH boxes of the same type. 3352*30877f79SAndroid Build Coastguard Worker * Retry initial provisioning and key requests if they fail 3353*30877f79SAndroid Build Coastguard Worker * Fix incorrect parsing of non-CENC sinf boxes. 3354*30877f79SAndroid Build Coastguard Worker* IMA extension: 3355*30877f79SAndroid Build Coastguard Worker * Expose `AdsLoader` via getter 3356*30877f79SAndroid Build Coastguard Worker ([#3322](https://github.com/google/ExoPlayer/issues/3322)). 3357*30877f79SAndroid Build Coastguard Worker * Handle `setPlayWhenReady` calls during ad playbacks 3358*30877f79SAndroid Build Coastguard Worker ([#3303](https://github.com/google/ExoPlayer/issues/3303)). 3359*30877f79SAndroid Build Coastguard Worker * Ignore seeks if an ad is playing 3360*30877f79SAndroid Build Coastguard Worker ([#3309](https://github.com/google/ExoPlayer/issues/3309)). 3361*30877f79SAndroid Build Coastguard Worker * Improve robustness of `ImaAdsLoader` in case content is not paused 3362*30877f79SAndroid Build Coastguard Worker between content to ad transitions 3363*30877f79SAndroid Build Coastguard Worker ([#3430](https://github.com/google/ExoPlayer/issues/3430)). 3364*30877f79SAndroid Build Coastguard Worker* UI: 3365*30877f79SAndroid Build Coastguard Worker * Allow specifying a `Drawable` for the `TimeBar` scrubber 3366*30877f79SAndroid Build Coastguard Worker ([#3337](https://github.com/google/ExoPlayer/issues/3337)). 3367*30877f79SAndroid Build Coastguard Worker * Allow multiple listeners on `TimeBar` 3368*30877f79SAndroid Build Coastguard Worker ([#3406](https://github.com/google/ExoPlayer/issues/3406)). 3369*30877f79SAndroid Build Coastguard Worker* New Leanback extension: Simplifies binding Exoplayer to Leanback UI 3370*30877f79SAndroid Build Coastguard Worker components. 3371*30877f79SAndroid Build Coastguard Worker* Unit tests moved to Robolectric. 3372*30877f79SAndroid Build Coastguard Worker* Misc bugfixes. 3373*30877f79SAndroid Build Coastguard Worker 3374*30877f79SAndroid Build Coastguard Worker### r2.5.4 (2017-10-19) 3375*30877f79SAndroid Build Coastguard Worker 3376*30877f79SAndroid Build Coastguard Worker* Remove unnecessary media playlist fetches during playback of live HLS 3377*30877f79SAndroid Build Coastguard Worker streams. 3378*30877f79SAndroid Build Coastguard Worker* Add the ability to inject a HLS playlist parser through `HlsMediaSource`. 3379*30877f79SAndroid Build Coastguard Worker* Fix potential `IndexOutOfBoundsException` when using `ImaMediaSource` 3380*30877f79SAndroid Build Coastguard Worker ([#3334](https://github.com/google/ExoPlayer/issues/3334)). 3381*30877f79SAndroid Build Coastguard Worker* Fix an issue parsing MP4 content containing non-CENC sinf boxes. 3382*30877f79SAndroid Build Coastguard Worker* Fix memory leak when seeking with repeated periods. 3383*30877f79SAndroid Build Coastguard Worker* Fix playback position when `ExoPlayer.prepare` is called with 3384*30877f79SAndroid Build Coastguard Worker `resetPosition` set to false. 3385*30877f79SAndroid Build Coastguard Worker* Ignore MP4 edit lists that seem invalid 3386*30877f79SAndroid Build Coastguard Worker ([#3351](https://github.com/google/ExoPlayer/issues/3351)). 3387*30877f79SAndroid Build Coastguard Worker* Add extractor flag for ignoring all MP4 edit lists 3388*30877f79SAndroid Build Coastguard Worker ([#3358](https://github.com/google/ExoPlayer/issues/3358)). 3389*30877f79SAndroid Build Coastguard Worker* Improve extensibility by exposing public constructors for 3390*30877f79SAndroid Build Coastguard Worker `FrameworkMediaCrypto` and by making `DefaultDashChunkSource.getNextChunk` 3391*30877f79SAndroid Build Coastguard Worker non-final. 3392*30877f79SAndroid Build Coastguard Worker 3393*30877f79SAndroid Build Coastguard Worker### r2.5.3 (2017-09-20) 3394*30877f79SAndroid Build Coastguard Worker 3395*30877f79SAndroid Build Coastguard Worker* IMA extension: Support skipping of skippable ads on AndroidTV and other 3396*30877f79SAndroid Build Coastguard Worker non-touch devices 3397*30877f79SAndroid Build Coastguard Worker ([#3258](https://github.com/google/ExoPlayer/issues/3258)). 3398*30877f79SAndroid Build Coastguard Worker* HLS: Fix broken WebVTT captions when PTS wraps around 3399*30877f79SAndroid Build Coastguard Worker ([#2928](https://github.com/google/ExoPlayer/issues/2928)). 3400*30877f79SAndroid Build Coastguard Worker* Captions: Fix issues rendering CEA-608 captions 3401*30877f79SAndroid Build Coastguard Worker ([#3250](https://github.com/google/ExoPlayer/issues/3250)). 3402*30877f79SAndroid Build Coastguard Worker* Workaround broken AAC decoders on Galaxy S6 3403*30877f79SAndroid Build Coastguard Worker ([#3249](https://github.com/google/ExoPlayer/issues/3249)). 3404*30877f79SAndroid Build Coastguard Worker* Caching: Fix infinite loop when cache eviction fails 3405*30877f79SAndroid Build Coastguard Worker ([#3260](https://github.com/google/ExoPlayer/issues/3260)). 3406*30877f79SAndroid Build Coastguard Worker* Caching: Force use of BouncyCastle on JellyBean to fix decryption issue 3407*30877f79SAndroid Build Coastguard Worker ([#2755](https://github.com/google/ExoPlayer/issues/2755)). 3408*30877f79SAndroid Build Coastguard Worker 3409*30877f79SAndroid Build Coastguard Worker### r2.5.2 (2017-09-11) 3410*30877f79SAndroid Build Coastguard Worker 3411*30877f79SAndroid Build Coastguard Worker* IMA extension: Fix issue where ad playback could end prematurely for some 3412*30877f79SAndroid Build Coastguard Worker content types ([#3180](https://github.com/google/ExoPlayer/issues/3180)). 3413*30877f79SAndroid Build Coastguard Worker* RTMP extension: Fix SIGABRT on fast RTMP stream restart 3414*30877f79SAndroid Build Coastguard Worker ([#3156](https://github.com/google/ExoPlayer/issues/3156)). 3415*30877f79SAndroid Build Coastguard Worker* UI: Allow app to manually specify ad markers 3416*30877f79SAndroid Build Coastguard Worker ([#3184](https://github.com/google/ExoPlayer/issues/3184)). 3417*30877f79SAndroid Build Coastguard Worker* DASH: Expose segment indices to subclasses of DefaultDashChunkSource 3418*30877f79SAndroid Build Coastguard Worker ([#3037](https://github.com/google/ExoPlayer/issues/3037)). 3419*30877f79SAndroid Build Coastguard Worker* Captions: Added robustness against malformed WebVTT captions 3420*30877f79SAndroid Build Coastguard Worker ([#3228](https://github.com/google/ExoPlayer/issues/3228)). 3421*30877f79SAndroid Build Coastguard Worker* DRM: Support forcing a specific license URL. 3422*30877f79SAndroid Build Coastguard Worker* Fix playback error when seeking in media loaded through content:// URIs 3423*30877f79SAndroid Build Coastguard Worker ([#3216](https://github.com/google/ExoPlayer/issues/3216)). 3424*30877f79SAndroid Build Coastguard Worker* Fix issue playing MP4s in which the last atom specifies a size of zero 3425*30877f79SAndroid Build Coastguard Worker ([#3191](https://github.com/google/ExoPlayer/issues/3191)). 3426*30877f79SAndroid Build Coastguard Worker* Workaround playback failures on some Xiaomi devices 3427*30877f79SAndroid Build Coastguard Worker ([#3171](https://github.com/google/ExoPlayer/issues/3171)). 3428*30877f79SAndroid Build Coastguard Worker* Workaround SIGSEGV issue on some devices when setting and swapping surface 3429*30877f79SAndroid Build Coastguard Worker for secure playbacks 3430*30877f79SAndroid Build Coastguard Worker ([#3215](https://github.com/google/ExoPlayer/issues/3215)). 3431*30877f79SAndroid Build Coastguard Worker* Workaround for Nexus 7 issue when swapping output surface 3432*30877f79SAndroid Build Coastguard Worker ([#3236](https://github.com/google/ExoPlayer/issues/3236)). 3433*30877f79SAndroid Build Coastguard Worker* Workaround for SimpleExoPlayerView's surface not being hidden properly 3434*30877f79SAndroid Build Coastguard Worker ([#3160](https://github.com/google/ExoPlayer/issues/3160)). 3435*30877f79SAndroid Build Coastguard Worker 3436*30877f79SAndroid Build Coastguard Worker### r2.5.1 (2017-08-08) 3437*30877f79SAndroid Build Coastguard Worker 3438*30877f79SAndroid Build Coastguard Worker* Fix an issue that could cause the reported playback position to stop 3439*30877f79SAndroid Build Coastguard Worker advancing in some cases. 3440*30877f79SAndroid Build Coastguard Worker* Fix an issue where a Surface could be released whilst still in use by the 3441*30877f79SAndroid Build Coastguard Worker player. 3442*30877f79SAndroid Build Coastguard Worker 3443*30877f79SAndroid Build Coastguard Worker### r2.5.0 (2017-08-07) 3444*30877f79SAndroid Build Coastguard Worker 3445*30877f79SAndroid Build Coastguard Worker* IMA extension: Wraps the Google Interactive Media Ads (IMA) SDK to provide 3446*30877f79SAndroid Build Coastguard Worker an easy and seamless way of incorporating display ads into ExoPlayer 3447*30877f79SAndroid Build Coastguard Worker playbacks. You can read more about the IMA extension 3448*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/playing-ads-with-exoplayer-and-ima-868dfd767ea). 3449*30877f79SAndroid Build Coastguard Worker* MediaSession extension: Provides an easy way to connect ExoPlayer with 3450*30877f79SAndroid Build Coastguard Worker MediaSessionCompat in the Android Support Library. 3451*30877f79SAndroid Build Coastguard Worker* RTMP extension: An extension for playing streams over RTMP. 3452*30877f79SAndroid Build Coastguard Worker* Build: Made it easier for application developers to depend on a local 3453*30877f79SAndroid Build Coastguard Worker checkout of ExoPlayer. You can learn how to do this 3454*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/howto-2-depend-on-a-local-checkout-of-exoplayer-bcd7f8531720). 3455*30877f79SAndroid Build Coastguard Worker* Core playback improvements: 3456*30877f79SAndroid Build Coastguard Worker * Eliminated re-buffering when changing audio and text track selections 3457*30877f79SAndroid Build Coastguard Worker during playback of progressive streams 3458*30877f79SAndroid Build Coastguard Worker ([#2926](https://github.com/google/ExoPlayer/issues/2926)). 3459*30877f79SAndroid Build Coastguard Worker * New DynamicConcatenatingMediaSource class to support playback of dynamic 3460*30877f79SAndroid Build Coastguard Worker playlists. 3461*30877f79SAndroid Build Coastguard Worker * New ExoPlayer.setRepeatMode method for dynamic toggling of repeat mode 3462*30877f79SAndroid Build Coastguard Worker during playback. Use of setRepeatMode should be preferred to 3463*30877f79SAndroid Build Coastguard Worker LoopingMediaSource for most looping use cases. You can read more about 3464*30877f79SAndroid Build Coastguard Worker setRepeatMode 3465*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/repeat-modes-in-exoplayer-19dd85f036d3). 3466*30877f79SAndroid Build Coastguard Worker * Eliminated jank when switching video playback from one Surface to 3467*30877f79SAndroid Build Coastguard Worker another on API level 23+ for unencrypted content, and on devices that 3468*30877f79SAndroid Build Coastguard Worker support the EGL_EXT_protected_content OpenGL extension for protected 3469*30877f79SAndroid Build Coastguard Worker content ([#677](https://github.com/google/ExoPlayer/issues/677)). 3470*30877f79SAndroid Build Coastguard Worker * Enabled ExoPlayer instantiation on background threads without Loopers. 3471*30877f79SAndroid Build Coastguard Worker Events from such players are delivered on the application's main thread. 3472*30877f79SAndroid Build Coastguard Worker* HLS improvements: 3473*30877f79SAndroid Build Coastguard Worker * Optimized adaptive switches for playlists that specify the 3474*30877f79SAndroid Build Coastguard Worker EXT-X-INDEPENDENT-SEGMENTS tag. 3475*30877f79SAndroid Build Coastguard Worker * Optimized in-buffer seeking 3476*30877f79SAndroid Build Coastguard Worker ([#551](https://github.com/google/ExoPlayer/issues/551)). 3477*30877f79SAndroid Build Coastguard Worker * Eliminated re-buffering when changing audio and text track selections 3478*30877f79SAndroid Build Coastguard Worker during playback, provided the new selection does not require switching 3479*30877f79SAndroid Build Coastguard Worker to different renditions 3480*30877f79SAndroid Build Coastguard Worker ([#2718](https://github.com/google/ExoPlayer/issues/2718)). 3481*30877f79SAndroid Build Coastguard Worker * Exposed all media playlist tags in ExoPlayer's MediaPlaylist object. 3482*30877f79SAndroid Build Coastguard Worker* DASH: Support for seamless switching across streams in different 3483*30877f79SAndroid Build Coastguard Worker AdaptationSet elements 3484*30877f79SAndroid Build Coastguard Worker ([#2431](https://github.com/google/ExoPlayer/issues/2431)). 3485*30877f79SAndroid Build Coastguard Worker* DRM: Support for additional crypto schemes (cbc1, cbcs and cens) on API 3486*30877f79SAndroid Build Coastguard Worker level 24+ ([#1989](https://github.com/google/ExoPlayer/issues/1989)). 3487*30877f79SAndroid Build Coastguard Worker* Captions: Initial support for SSA/ASS subtitles 3488*30877f79SAndroid Build Coastguard Worker ([#889](https://github.com/google/ExoPlayer/issues/889)). 3489*30877f79SAndroid Build Coastguard Worker* AndroidTV: Fixed issue where tunneled video playback would not start on some 3490*30877f79SAndroid Build Coastguard Worker devices ([#2985](https://github.com/google/ExoPlayer/issues/2985)). 3491*30877f79SAndroid Build Coastguard Worker* MPEG-TS: Fixed segmentation issue when parsing H262 3492*30877f79SAndroid Build Coastguard Worker ([#2891](https://github.com/google/ExoPlayer/issues/2891)). 3493*30877f79SAndroid Build Coastguard Worker* Cronet extension: Support for a user-defined fallback if Cronet library is 3494*30877f79SAndroid Build Coastguard Worker not present. 3495*30877f79SAndroid Build Coastguard Worker* Fix buffer too small IllegalStateException issue affecting some composite 3496*30877f79SAndroid Build Coastguard Worker media playbacks ([#2900](https://github.com/google/ExoPlayer/issues/2900)). 3497*30877f79SAndroid Build Coastguard Worker* Misc bugfixes. 3498*30877f79SAndroid Build Coastguard Worker 3499*30877f79SAndroid Build Coastguard Worker### r2.4.4 (2017-07-19) 3500*30877f79SAndroid Build Coastguard Worker 3501*30877f79SAndroid Build Coastguard Worker* HLS/MPEG-TS: Some initial optimizations of MPEG-TS extractor performance 3502*30877f79SAndroid Build Coastguard Worker ([#3040](https://github.com/google/ExoPlayer/issues/3040)). 3503*30877f79SAndroid Build Coastguard Worker* HLS: Fix propagation of format identifier for CEA-608 3504*30877f79SAndroid Build Coastguard Worker ([#3033](https://github.com/google/ExoPlayer/issues/3033)). 3505*30877f79SAndroid Build Coastguard Worker* HLS: Detect playlist stuck and reset conditions 3506*30877f79SAndroid Build Coastguard Worker ([#2872](https://github.com/google/ExoPlayer/issues/2872)). 3507*30877f79SAndroid Build Coastguard Worker* Video: Fix video dimension reporting on some devices 3508*30877f79SAndroid Build Coastguard Worker ([#3007](https://github.com/google/ExoPlayer/issues/3007)). 3509*30877f79SAndroid Build Coastguard Worker 3510*30877f79SAndroid Build Coastguard Worker### r2.4.3 (2017-06-30) 3511*30877f79SAndroid Build Coastguard Worker 3512*30877f79SAndroid Build Coastguard Worker* Audio: Workaround custom audio decoders misreporting their maximum supported 3513*30877f79SAndroid Build Coastguard Worker channel counts ([#2940](https://github.com/google/ExoPlayer/issues/2940)). 3514*30877f79SAndroid Build Coastguard Worker* Audio: Workaround for broken MediaTek raw decoder on some devices 3515*30877f79SAndroid Build Coastguard Worker ([#2873](https://github.com/google/ExoPlayer/issues/2873)). 3516*30877f79SAndroid Build Coastguard Worker* Captions: Fix TTML captions appearing at the top of the screen 3517*30877f79SAndroid Build Coastguard Worker ([#2953](https://github.com/google/ExoPlayer/issues/2953)). 3518*30877f79SAndroid Build Coastguard Worker* Captions: Fix handling of some DVB subtitles 3519*30877f79SAndroid Build Coastguard Worker ([#2957](https://github.com/google/ExoPlayer/issues/2957)). 3520*30877f79SAndroid Build Coastguard Worker* Track selection: Fix setSelectionOverride(index, tracks, null) 3521*30877f79SAndroid Build Coastguard Worker ([#2988](https://github.com/google/ExoPlayer/issues/2988)). 3522*30877f79SAndroid Build Coastguard Worker* GVR extension: Add support for mono input 3523*30877f79SAndroid Build Coastguard Worker ([#2710](https://github.com/google/ExoPlayer/issues/2710)). 3524*30877f79SAndroid Build Coastguard Worker* FLAC extension: Fix failing build 3525*30877f79SAndroid Build Coastguard Worker ([#2977](https://github.com/google/ExoPlayer/pull/2977)). 3526*30877f79SAndroid Build Coastguard Worker* Misc bugfixes. 3527*30877f79SAndroid Build Coastguard Worker 3528*30877f79SAndroid Build Coastguard Worker### r2.4.2 (2017-06-06) 3529*30877f79SAndroid Build Coastguard Worker 3530*30877f79SAndroid Build Coastguard Worker* Stability: Work around Nexus 10 reboot when playing certain content 3531*30877f79SAndroid Build Coastguard Worker ([#2806](https://github.com/google/ExoPlayer/issues/2806)). 3532*30877f79SAndroid Build Coastguard Worker* MP3: Correctly treat MP3s with INFO headers as constant bitrate 3533*30877f79SAndroid Build Coastguard Worker ([#2895](https://github.com/google/ExoPlayer/issues/2895)). 3534*30877f79SAndroid Build Coastguard Worker* HLS: Use average rather than peak bandwidth when available 3535*30877f79SAndroid Build Coastguard Worker ([#2863](https://github.com/google/ExoPlayer/issues/2863)). 3536*30877f79SAndroid Build Coastguard Worker* SmoothStreaming: Fix timeline for live streams 3537*30877f79SAndroid Build Coastguard Worker ([#2760](https://github.com/google/ExoPlayer/issues/2760)). 3538*30877f79SAndroid Build Coastguard Worker* UI: Fix DefaultTimeBar invalidation 3539*30877f79SAndroid Build Coastguard Worker ([#2871](https://github.com/google/ExoPlayer/issues/2871)). 3540*30877f79SAndroid Build Coastguard Worker* Misc bugfixes. 3541*30877f79SAndroid Build Coastguard Worker 3542*30877f79SAndroid Build Coastguard Worker### r2.4.1 (2017-05-23) 3543*30877f79SAndroid Build Coastguard Worker 3544*30877f79SAndroid Build Coastguard Worker* Stability: Avoid OutOfMemoryError in extractors when parsing malformed media 3545*30877f79SAndroid Build Coastguard Worker ([#2780](https://github.com/google/ExoPlayer/issues/2780)). 3546*30877f79SAndroid Build Coastguard Worker* Stability: Avoid native crash on Galaxy Nexus. Avoid unnecessarily large 3547*30877f79SAndroid Build Coastguard Worker codec input buffer allocations on all devices 3548*30877f79SAndroid Build Coastguard Worker ([#2607](https://github.com/google/ExoPlayer/issues/2607)). 3549*30877f79SAndroid Build Coastguard Worker* Variable speed playback: Fix interpolation for rate/pitch adjustment 3550*30877f79SAndroid Build Coastguard Worker ([#2774](https://github.com/google/ExoPlayer/issues/2774)). 3551*30877f79SAndroid Build Coastguard Worker* HLS: Include EXT-X-DATERANGE tags in HlsMediaPlaylist. 3552*30877f79SAndroid Build Coastguard Worker* HLS: Don't expose CEA-608 track if CLOSED-CAPTIONS=NONE 3553*30877f79SAndroid Build Coastguard Worker ([#2743](https://github.com/google/ExoPlayer/issues/2743)). 3554*30877f79SAndroid Build Coastguard Worker* HLS: Correctly propagate errors loading the media playlist 3555*30877f79SAndroid Build Coastguard Worker ([#2623](https://github.com/google/ExoPlayer/issues/2623)). 3556*30877f79SAndroid Build Coastguard Worker* UI: DefaultTimeBar enhancements and bug fixes 3557*30877f79SAndroid Build Coastguard Worker ([#2740](https://github.com/google/ExoPlayer/issues/2740)). 3558*30877f79SAndroid Build Coastguard Worker* Ogg: Fix failure to play some Ogg files 3559*30877f79SAndroid Build Coastguard Worker ([#2782](https://github.com/google/ExoPlayer/issues/2782)). 3560*30877f79SAndroid Build Coastguard Worker* Captions: Don't select text tack with no language by default. 3561*30877f79SAndroid Build Coastguard Worker* Captions: TTML positioning fixes 3562*30877f79SAndroid Build Coastguard Worker ([#2824](https://github.com/google/ExoPlayer/issues/2824)). 3563*30877f79SAndroid Build Coastguard Worker* Misc bugfixes. 3564*30877f79SAndroid Build Coastguard Worker 3565*30877f79SAndroid Build Coastguard Worker### r2.4.0 (2017-04-25) 3566*30877f79SAndroid Build Coastguard Worker 3567*30877f79SAndroid Build Coastguard Worker* New modular library structure. You can read more about depending on 3568*30877f79SAndroid Build Coastguard Worker individual library modules 3569*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/exoplayers-new-modular-structure-a916c0874907). 3570*30877f79SAndroid Build Coastguard Worker* Variable speed playback support on API level 16+. You can read more about 3571*30877f79SAndroid Build Coastguard Worker changing the playback speed 3572*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/variable-speed-playback-with-exoplayer-e6e6a71e0343) 3573*30877f79SAndroid Build Coastguard Worker ([#26](https://github.com/google/ExoPlayer/issues/26)). 3574*30877f79SAndroid Build Coastguard Worker* New time bar view, including support for displaying ad break markers. 3575*30877f79SAndroid Build Coastguard Worker* Support DVB subtitles in MPEG-TS and MKV. 3576*30877f79SAndroid Build Coastguard Worker* Support adaptive playback for audio only DASH, HLS and SmoothStreaming 3577*30877f79SAndroid Build Coastguard Worker ([#1975](https://github.com/google/ExoPlayer/issues/1975)). 3578*30877f79SAndroid Build Coastguard Worker* Support for setting extractor flags on DefaultExtractorsFactory 3579*30877f79SAndroid Build Coastguard Worker ([#2657](https://github.com/google/ExoPlayer/issues/2657)). 3580*30877f79SAndroid Build Coastguard Worker* Support injecting custom renderers into SimpleExoPlayer using a new 3581*30877f79SAndroid Build Coastguard Worker RenderersFactory interface. 3582*30877f79SAndroid Build Coastguard Worker* Correctly set ExoPlayer's internal thread priority to 3583*30877f79SAndroid Build Coastguard Worker `THREAD_PRIORITY_AUDIO`. 3584*30877f79SAndroid Build Coastguard Worker* TX3G: Support styling and positioning. 3585*30877f79SAndroid Build Coastguard Worker* FLV: 3586*30877f79SAndroid Build Coastguard Worker * Support MP3 in FLV. 3587*30877f79SAndroid Build Coastguard Worker * Skip unhandled metadata rather than failing 3588*30877f79SAndroid Build Coastguard Worker ([#2634](https://github.com/google/ExoPlayer/issues/2634)). 3589*30877f79SAndroid Build Coastguard Worker * Fix potential OutOfMemory errors. 3590*30877f79SAndroid Build Coastguard Worker* ID3: Better handle malformed ID3 data 3591*30877f79SAndroid Build Coastguard Worker ([#2604](https://github.com/google/ExoPlayer/issues/2604), 3592*30877f79SAndroid Build Coastguard Worker [#2663](https://github.com/google/ExoPlayer/issues/2663)). 3593*30877f79SAndroid Build Coastguard Worker* FFmpeg extension: Fixed build instructions 3594*30877f79SAndroid Build Coastguard Worker ([#2561](https://github.com/google/ExoPlayer/issues/2561)). 3595*30877f79SAndroid Build Coastguard Worker* VP9 extension: Reduced binary size. 3596*30877f79SAndroid Build Coastguard Worker* FLAC extension: Enabled 64 bit targets. 3597*30877f79SAndroid Build Coastguard Worker* Misc bugfixes. 3598*30877f79SAndroid Build Coastguard Worker 3599*30877f79SAndroid Build Coastguard Worker### r2.3.1 (2017-03-23) 3600*30877f79SAndroid Build Coastguard Worker 3601*30877f79SAndroid Build Coastguard Worker* Fix NPE enabling WebVTT subtitles in DASH streams 3602*30877f79SAndroid Build Coastguard Worker ([#2596](https://github.com/google/ExoPlayer/issues/2596)). 3603*30877f79SAndroid Build Coastguard Worker* Fix skipping to keyframes when MediaCodecVideoRenderer is enabled but 3604*30877f79SAndroid Build Coastguard Worker without a Surface 3605*30877f79SAndroid Build Coastguard Worker ([#2575](https://github.com/google/ExoPlayer/issues/2575)). 3606*30877f79SAndroid Build Coastguard Worker* Minor fix for CEA-708 decoder 3607*30877f79SAndroid Build Coastguard Worker ([#2595](https://github.com/google/ExoPlayer/issues/2595)). 3608*30877f79SAndroid Build Coastguard Worker 3609*30877f79SAndroid Build Coastguard Worker### r2.3.0 (2017-03-16) 3610*30877f79SAndroid Build Coastguard Worker 3611*30877f79SAndroid Build Coastguard Worker* GVR extension: Wraps the Google VR Audio SDK to provide spatial audio 3612*30877f79SAndroid Build Coastguard Worker rendering. You can read more about the GVR extension 3613*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/spatial-audio-with-exoplayer-and-gvr-cecb00e9da5f#.xdjebjd7g). 3614*30877f79SAndroid Build Coastguard Worker* DASH improvements: 3615*30877f79SAndroid Build Coastguard Worker * Support embedded CEA-608 closed captions 3616*30877f79SAndroid Build Coastguard Worker ([#2362](https://github.com/google/ExoPlayer/issues/2362)). 3617*30877f79SAndroid Build Coastguard Worker * Support embedded EMSG events 3618*30877f79SAndroid Build Coastguard Worker ([#2176](https://github.com/google/ExoPlayer/issues/2176)). 3619*30877f79SAndroid Build Coastguard Worker * Support mspr:pro manifest element 3620*30877f79SAndroid Build Coastguard Worker ([#2386](https://github.com/google/ExoPlayer/issues/2386)). 3621*30877f79SAndroid Build Coastguard Worker * Correct handling of empty segment indices at the start of live events 3622*30877f79SAndroid Build Coastguard Worker ([#1865](https://github.com/google/ExoPlayer/issues/1865)). 3623*30877f79SAndroid Build Coastguard Worker* HLS improvements: 3624*30877f79SAndroid Build Coastguard Worker * Respect initial track selection 3625*30877f79SAndroid Build Coastguard Worker ([#2353](https://github.com/google/ExoPlayer/issues/2353)). 3626*30877f79SAndroid Build Coastguard Worker * Reduced frequency of media playlist requests when playback position is 3627*30877f79SAndroid Build Coastguard Worker close to the live edge 3628*30877f79SAndroid Build Coastguard Worker ([#2548](https://github.com/google/ExoPlayer/issues/2548)). 3629*30877f79SAndroid Build Coastguard Worker * Exposed the master playlist through ExoPlayer.getCurrentManifest() 3630*30877f79SAndroid Build Coastguard Worker ([#2537](https://github.com/google/ExoPlayer/issues/2537)). 3631*30877f79SAndroid Build Coastguard Worker * Support CLOSED-CAPTIONS #EXT-X-MEDIA type 3632*30877f79SAndroid Build Coastguard Worker ([#341](https://github.com/google/ExoPlayer/issues/341)). 3633*30877f79SAndroid Build Coastguard Worker * Fixed handling of negative values in #EXT-X-SUPPORT 3634*30877f79SAndroid Build Coastguard Worker ([#2495](https://github.com/google/ExoPlayer/issues/2495)). 3635*30877f79SAndroid Build Coastguard Worker * Fixed potential endless buffering state for streams with WebVTT 3636*30877f79SAndroid Build Coastguard Worker subtitles ([#2424](https://github.com/google/ExoPlayer/issues/2424)). 3637*30877f79SAndroid Build Coastguard Worker* MPEG-TS improvements: 3638*30877f79SAndroid Build Coastguard Worker * Support for multiple programs. 3639*30877f79SAndroid Build Coastguard Worker * Support for multiple closed captions and caption service descriptors 3640*30877f79SAndroid Build Coastguard Worker ([#2161](https://github.com/google/ExoPlayer/issues/2161)). 3641*30877f79SAndroid Build Coastguard Worker* MP3: Add `FLAG_ENABLE_CONSTANT_BITRATE_SEEKING` extractor option to enable 3642*30877f79SAndroid Build Coastguard Worker constant bitrate seeking in MP3 files that would otherwise be unseekable 3643*30877f79SAndroid Build Coastguard Worker ([#2445](https://github.com/google/ExoPlayer/issues/2445)). 3644*30877f79SAndroid Build Coastguard Worker* ID3: Better handle malformed ID3 data 3645*30877f79SAndroid Build Coastguard Worker ([#2486](https://github.com/google/ExoPlayer/issues/2486)). 3646*30877f79SAndroid Build Coastguard Worker* Track selection: Added maxVideoBitrate parameter to DefaultTrackSelector. 3647*30877f79SAndroid Build Coastguard Worker* DRM: Add support for CENC ClearKey on API level 21+ 3648*30877f79SAndroid Build Coastguard Worker ([#2361](https://github.com/google/ExoPlayer/issues/2361)). 3649*30877f79SAndroid Build Coastguard Worker* DRM: Support dynamic setting of key request headers 3650*30877f79SAndroid Build Coastguard Worker ([#1924](https://github.com/google/ExoPlayer/issues/1924)). 3651*30877f79SAndroid Build Coastguard Worker* SmoothStreaming: Fixed handling of start_time placeholder 3652*30877f79SAndroid Build Coastguard Worker ([#2447](https://github.com/google/ExoPlayer/issues/2447)). 3653*30877f79SAndroid Build Coastguard Worker* FLAC extension: Fix proguard configuration 3654*30877f79SAndroid Build Coastguard Worker ([#2427](https://github.com/google/ExoPlayer/issues/2427)). 3655*30877f79SAndroid Build Coastguard Worker* Misc bugfixes. 3656*30877f79SAndroid Build Coastguard Worker 3657*30877f79SAndroid Build Coastguard Worker### r2.2.0 (2017-01-30) 3658*30877f79SAndroid Build Coastguard Worker 3659*30877f79SAndroid Build Coastguard Worker* Demo app: Automatic recovery from BehindLiveWindowException, plus improved 3660*30877f79SAndroid Build Coastguard Worker handling of pausing and resuming live streams 3661*30877f79SAndroid Build Coastguard Worker ([#2344](https://github.com/google/ExoPlayer/issues/2344)). 3662*30877f79SAndroid Build Coastguard Worker* AndroidTV: Added Support for tunneled video playback 3663*30877f79SAndroid Build Coastguard Worker ([#1688](https://github.com/google/ExoPlayer/issues/1688)). 3664*30877f79SAndroid Build Coastguard Worker* DRM: Renamed StreamingDrmSessionManager to DefaultDrmSessionManager and 3665*30877f79SAndroid Build Coastguard Worker added support for using offline licenses 3666*30877f79SAndroid Build Coastguard Worker ([#876](https://github.com/google/ExoPlayer/issues/876)). 3667*30877f79SAndroid Build Coastguard Worker* DRM: Introduce OfflineLicenseHelper to help with offline license 3668*30877f79SAndroid Build Coastguard Worker acquisition, renewal and release. 3669*30877f79SAndroid Build Coastguard Worker* UI: Updated player control assets. Added vector drawables for use on API 3670*30877f79SAndroid Build Coastguard Worker level 21 and above. 3671*30877f79SAndroid Build Coastguard Worker* UI: Made player control seek bar work correctly with key events if focusable 3672*30877f79SAndroid Build Coastguard Worker ([#2278](https://github.com/google/ExoPlayer/issues/2278)). 3673*30877f79SAndroid Build Coastguard Worker* HLS: Improved support for streams that use EXT-X-DISCONTINUITY without 3674*30877f79SAndroid Build Coastguard Worker EXT-X-DISCONTINUITY-SEQUENCE 3675*30877f79SAndroid Build Coastguard Worker ([#1789](https://github.com/google/ExoPlayer/issues/1789)). 3676*30877f79SAndroid Build Coastguard Worker* HLS: Support for EXT-X-START tag 3677*30877f79SAndroid Build Coastguard Worker ([#1544](https://github.com/google/ExoPlayer/issues/1544)). 3678*30877f79SAndroid Build Coastguard Worker* HLS: Check #EXTM3U header is present when parsing the playlist. Fail 3679*30877f79SAndroid Build Coastguard Worker gracefully if not 3680*30877f79SAndroid Build Coastguard Worker ([#2301](https://github.com/google/ExoPlayer/issues/2301)). 3681*30877f79SAndroid Build Coastguard Worker* HLS: Fix memory leak 3682*30877f79SAndroid Build Coastguard Worker ([#2319](https://github.com/google/ExoPlayer/issues/2319)). 3683*30877f79SAndroid Build Coastguard Worker* HLS: Fix non-seamless first adaptation where master playlist omits 3684*30877f79SAndroid Build Coastguard Worker resolution tags ([#2096](https://github.com/google/ExoPlayer/issues/2096)). 3685*30877f79SAndroid Build Coastguard Worker* HLS: Fix handling of WebVTT subtitle renditions with non-standard segment 3686*30877f79SAndroid Build Coastguard Worker file extensions ([#2025](https://github.com/google/ExoPlayer/issues/2025) 3687*30877f79SAndroid Build Coastguard Worker and [#2355](https://github.com/google/ExoPlayer/issues/2355)). 3688*30877f79SAndroid Build Coastguard Worker* HLS: Better handle inconsistent HLS playlist update 3689*30877f79SAndroid Build Coastguard Worker ([#2249](https://github.com/google/ExoPlayer/issues/2249)). 3690*30877f79SAndroid Build Coastguard Worker* DASH: Don't overflow when dealing with large segment numbers 3691*30877f79SAndroid Build Coastguard Worker ([#2311](https://github.com/google/ExoPlayer/issues/2311)). 3692*30877f79SAndroid Build Coastguard Worker* DASH: Fix propagation of language from the manifest 3693*30877f79SAndroid Build Coastguard Worker ([#2335](https://github.com/google/ExoPlayer/issues/2335)). 3694*30877f79SAndroid Build Coastguard Worker* SmoothStreaming: Work around "Offset to sample data was negative" failures 3695*30877f79SAndroid Build Coastguard Worker ([#2292](https://github.com/google/ExoPlayer/issues/2292), 3696*30877f79SAndroid Build Coastguard Worker [#2101](https://github.com/google/ExoPlayer/issues/2101) and 3697*30877f79SAndroid Build Coastguard Worker [#1152](https://github.com/google/ExoPlayer/issues/1152)). 3698*30877f79SAndroid Build Coastguard Worker* MP3/ID3: Added support for parsing Chapter and URL link frames 3699*30877f79SAndroid Build Coastguard Worker ([#2316](https://github.com/google/ExoPlayer/issues/2316)). 3700*30877f79SAndroid Build Coastguard Worker* MP3/ID3: Handle ID3 frames that end with empty text field 3701*30877f79SAndroid Build Coastguard Worker ([#2309](https://github.com/google/ExoPlayer/issues/2309)). 3702*30877f79SAndroid Build Coastguard Worker* Added ClippingMediaSource for playing clipped portions of media 3703*30877f79SAndroid Build Coastguard Worker ([#1988](https://github.com/google/ExoPlayer/issues/1988)). 3704*30877f79SAndroid Build Coastguard Worker* Added convenience methods to query whether the current window is dynamic and 3705*30877f79SAndroid Build Coastguard Worker seekable ([#2320](https://github.com/google/ExoPlayer/issues/2320)). 3706*30877f79SAndroid Build Coastguard Worker* Support setting of default headers on HttpDataSource.Factory implementations 3707*30877f79SAndroid Build Coastguard Worker ([#2166](https://github.com/google/ExoPlayer/issues/2166)). 3708*30877f79SAndroid Build Coastguard Worker* Fixed cache failures when using an encrypted cache content index. 3709*30877f79SAndroid Build Coastguard Worker* Fix visual artifacts when switching output surface 3710*30877f79SAndroid Build Coastguard Worker ([#2093](https://github.com/google/ExoPlayer/issues/2093)). 3711*30877f79SAndroid Build Coastguard Worker* Fix gradle + proguard configurations. 3712*30877f79SAndroid Build Coastguard Worker* Fix player position when replacing the MediaSource 3713*30877f79SAndroid Build Coastguard Worker ([#2369](https://github.com/google/ExoPlayer/issues/2369)). 3714*30877f79SAndroid Build Coastguard Worker* Misc bug fixes, including 3715*30877f79SAndroid Build Coastguard Worker [#2330](https://github.com/google/ExoPlayer/issues/2330), 3716*30877f79SAndroid Build Coastguard Worker [#2269](https://github.com/google/ExoPlayer/issues/2269), 3717*30877f79SAndroid Build Coastguard Worker [#2252](https://github.com/google/ExoPlayer/issues/2252), 3718*30877f79SAndroid Build Coastguard Worker [#2264](https://github.com/google/ExoPlayer/issues/2264) and 3719*30877f79SAndroid Build Coastguard Worker [#2290](https://github.com/google/ExoPlayer/issues/2290). 3720*30877f79SAndroid Build Coastguard Worker 3721*30877f79SAndroid Build Coastguard Worker### r2.1.1 (2016-12-20) 3722*30877f79SAndroid Build Coastguard Worker 3723*30877f79SAndroid Build Coastguard Worker* Fix some subtitle types (e.g. WebVTT) being displayed out of sync 3724*30877f79SAndroid Build Coastguard Worker ([#2208](https://github.com/google/ExoPlayer/issues/2208)). 3725*30877f79SAndroid Build Coastguard Worker* Fix incorrect position reporting for on-demand HLS media that includes 3726*30877f79SAndroid Build Coastguard Worker EXT-X-PROGRAM-DATE-TIME tags 3727*30877f79SAndroid Build Coastguard Worker ([#2224](https://github.com/google/ExoPlayer/issues/2224)). 3728*30877f79SAndroid Build Coastguard Worker* Fix issue where playbacks could get stuck in the initial buffering state if 3729*30877f79SAndroid Build Coastguard Worker over 1MB of data needs to be read to initialize the playback. 3730*30877f79SAndroid Build Coastguard Worker 3731*30877f79SAndroid Build Coastguard Worker### r2.1.0 (2016-12-14) 3732*30877f79SAndroid Build Coastguard Worker 3733*30877f79SAndroid Build Coastguard Worker* HLS: Support for seeking in live streams 3734*30877f79SAndroid Build Coastguard Worker ([#87](https://github.com/google/ExoPlayer/issues/87)). 3735*30877f79SAndroid Build Coastguard Worker* HLS: Improved support: 3736*30877f79SAndroid Build Coastguard Worker * Support for EXT-X-PROGRAM-DATE-TIME 3737*30877f79SAndroid Build Coastguard Worker ([#747](https://github.com/google/ExoPlayer/issues/747)). 3738*30877f79SAndroid Build Coastguard Worker * Improved handling of sample timestamps and their alignment across 3739*30877f79SAndroid Build Coastguard Worker variants and renditions. 3740*30877f79SAndroid Build Coastguard Worker * Fix issue that could cause playbacks to get stuck in an endless initial 3741*30877f79SAndroid Build Coastguard Worker buffering state. 3742*30877f79SAndroid Build Coastguard Worker * Correctly propagate BehindLiveWindowException instead of 3743*30877f79SAndroid Build Coastguard Worker IndexOutOfBoundsException exception 3744*30877f79SAndroid Build Coastguard Worker ([#1695](https://github.com/google/ExoPlayer/issues/1695)). 3745*30877f79SAndroid Build Coastguard Worker* MP3/MP4: Support for ID3 metadata, including embedded album art 3746*30877f79SAndroid Build Coastguard Worker ([#979](https://github.com/google/ExoPlayer/issues/979)). 3747*30877f79SAndroid Build Coastguard Worker* Improved customization of UI components. You can read about customization of 3748*30877f79SAndroid Build Coastguard Worker ExoPlayer's UI components 3749*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/customizing-exoplayers-ui-components-728cf55ee07a#.9ewjg7avi). 3750*30877f79SAndroid Build Coastguard Worker* Robustness improvements when handling MediaSource timeline changes and 3751*30877f79SAndroid Build Coastguard Worker MediaPeriod transitions. 3752*30877f79SAndroid Build Coastguard Worker* CEA-608: Support for caption styling and positioning. 3753*30877f79SAndroid Build Coastguard Worker* MPEG-TS: Improved support: 3754*30877f79SAndroid Build Coastguard Worker * Support injection of custom TS payload readers. 3755*30877f79SAndroid Build Coastguard Worker * Support injection of custom section payload readers. 3756*30877f79SAndroid Build Coastguard Worker * Support SCTE-35 splice information messages. 3757*30877f79SAndroid Build Coastguard Worker * Support multiple table sections in a single PSI section. 3758*30877f79SAndroid Build Coastguard Worker * Fix NullPointerException when an unsupported stream type is encountered 3759*30877f79SAndroid Build Coastguard Worker ([#2149](https://github.com/google/ExoPlayer/issues/2149)). 3760*30877f79SAndroid Build Coastguard Worker * Avoid failure when expected ID3 header not found 3761*30877f79SAndroid Build Coastguard Worker ([#1966](https://github.com/google/ExoPlayer/issues/1966)). 3762*30877f79SAndroid Build Coastguard Worker* Improvements to the upstream cache package. 3763*30877f79SAndroid Build Coastguard Worker * Support caching of media segments for DASH, HLS and SmoothStreaming. 3764*30877f79SAndroid Build Coastguard Worker Note that caching of manifest and playlist files is still not supported 3765*30877f79SAndroid Build Coastguard Worker in the (normal) case where the corresponding responses are compressed. 3766*30877f79SAndroid Build Coastguard Worker * Support caching for ExtractorMediaSource based playbacks. 3767*30877f79SAndroid Build Coastguard Worker* Improved flexibility of SimpleExoPlayer 3768*30877f79SAndroid Build Coastguard Worker ([#2102](https://github.com/google/ExoPlayer/issues/2102)). 3769*30877f79SAndroid Build Coastguard Worker* Fix issue where only the audio of a video would play due to capability 3770*30877f79SAndroid Build Coastguard Worker detection issues ([#2007](https://github.com/google/ExoPlayer/issues/2007), 3771*30877f79SAndroid Build Coastguard Worker [#2034](https://github.com/google/ExoPlayer/issues/2034) and 3772*30877f79SAndroid Build Coastguard Worker [#2157](https://github.com/google/ExoPlayer/issues/2157)). 3773*30877f79SAndroid Build Coastguard Worker* Fix issues that could cause ExtractorMediaSource based playbacks to get 3774*30877f79SAndroid Build Coastguard Worker stuck buffering ([#1962](https://github.com/google/ExoPlayer/issues/1962)). 3775*30877f79SAndroid Build Coastguard Worker* Correctly set SimpleExoPlayerView surface aspect ratio when an active player 3776*30877f79SAndroid Build Coastguard Worker is attached ([#2077](https://github.com/google/ExoPlayer/issues/2077)). 3777*30877f79SAndroid Build Coastguard Worker* OGG: Fix playback of short OGG files 3778*30877f79SAndroid Build Coastguard Worker ([#1976](https://github.com/google/ExoPlayer/issues/1976)). 3779*30877f79SAndroid Build Coastguard Worker* MP4: Support `.mp3` tracks 3780*30877f79SAndroid Build Coastguard Worker ([#2066](https://github.com/google/ExoPlayer/issues/2066)). 3781*30877f79SAndroid Build Coastguard Worker* SubRip: Don't fail playbacks if SubRip file contains negative timestamps 3782*30877f79SAndroid Build Coastguard Worker ([#2145](https://github.com/google/ExoPlayer/issues/2145)). 3783*30877f79SAndroid Build Coastguard Worker* Misc bugfixes. 3784*30877f79SAndroid Build Coastguard Worker 3785*30877f79SAndroid Build Coastguard Worker### r2.0.4 (2016-10-20) 3786*30877f79SAndroid Build Coastguard Worker 3787*30877f79SAndroid Build Coastguard Worker* Fix crash on Jellybean devices when using playback controls 3788*30877f79SAndroid Build Coastguard Worker ([#1965](https://github.com/google/ExoPlayer/issues/1965)). 3789*30877f79SAndroid Build Coastguard Worker 3790*30877f79SAndroid Build Coastguard Worker### r2.0.3 (2016-10-17) 3791*30877f79SAndroid Build Coastguard Worker 3792*30877f79SAndroid Build Coastguard Worker* Fixed NullPointerException in ExtractorMediaSource 3793*30877f79SAndroid Build Coastguard Worker ([#1914](https://github.com/google/ExoPlayer/issues/1914)). 3794*30877f79SAndroid Build Coastguard Worker* Fixed NullPointerException in HlsMediaPeriod 3795*30877f79SAndroid Build Coastguard Worker ([#1907](https://github.com/google/ExoPlayer/issues/1907)). 3796*30877f79SAndroid Build Coastguard Worker* Fixed memory leak in PlaybackControlView 3797*30877f79SAndroid Build Coastguard Worker ([#1908](https://github.com/google/ExoPlayer/issues/1908)). 3798*30877f79SAndroid Build Coastguard Worker* Fixed strict mode violation when using 3799*30877f79SAndroid Build Coastguard Worker SimpleExoPlayer.setVideoPlayerTextureView(). 3800*30877f79SAndroid Build Coastguard Worker* Fixed L3 Widevine provisioning 3801*30877f79SAndroid Build Coastguard Worker ([#1925](https://github.com/google/ExoPlayer/issues/1925)). 3802*30877f79SAndroid Build Coastguard Worker* Fixed hiding of controls with use_controller="false" 3803*30877f79SAndroid Build Coastguard Worker ([#1919](https://github.com/google/ExoPlayer/issues/1919)). 3804*30877f79SAndroid Build Coastguard Worker* Improvements to Cronet network stack extension. 3805*30877f79SAndroid Build Coastguard Worker* Misc bug fixes. 3806*30877f79SAndroid Build Coastguard Worker 3807*30877f79SAndroid Build Coastguard Worker### r2.0.2 (2016-10-06) 3808*30877f79SAndroid Build Coastguard Worker 3809*30877f79SAndroid Build Coastguard Worker* Fixes for MergingMediaSource and sideloaded subtitles. 3810*30877f79SAndroid Build Coastguard Worker ([#1882](https://github.com/google/ExoPlayer/issues/1882), 3811*30877f79SAndroid Build Coastguard Worker [#1854](https://github.com/google/ExoPlayer/issues/1854), 3812*30877f79SAndroid Build Coastguard Worker [#1900](https://github.com/google/ExoPlayer/issues/1900)). 3813*30877f79SAndroid Build Coastguard Worker* Reduced effect of application code leaking player references 3814*30877f79SAndroid Build Coastguard Worker ([#1855](https://github.com/google/ExoPlayer/issues/1855)). 3815*30877f79SAndroid Build Coastguard Worker* Initial support for fragmented MP4 in HLS. 3816*30877f79SAndroid Build Coastguard Worker* Misc bug fixes and minor features. 3817*30877f79SAndroid Build Coastguard Worker 3818*30877f79SAndroid Build Coastguard Worker### r2.0.1 (2016-09-30) 3819*30877f79SAndroid Build Coastguard Worker 3820*30877f79SAndroid Build Coastguard Worker* Fix playback of short duration content 3821*30877f79SAndroid Build Coastguard Worker ([#1837](https://github.com/google/ExoPlayer/issues/1837)). 3822*30877f79SAndroid Build Coastguard Worker* Fix MergingMediaSource preparation issue 3823*30877f79SAndroid Build Coastguard Worker ([#1853](https://github.com/google/ExoPlayer/issues/1853)). 3824*30877f79SAndroid Build Coastguard Worker* Fix live stream buffering (out of memory) issue 3825*30877f79SAndroid Build Coastguard Worker ([#1825](https://github.com/google/ExoPlayer/issues/1825)). 3826*30877f79SAndroid Build Coastguard Worker 3827*30877f79SAndroid Build Coastguard Worker### r2.0.0 (2016-09-14) 3828*30877f79SAndroid Build Coastguard Worker 3829*30877f79SAndroid Build Coastguard WorkerExoPlayer 2.x is a major iteration of the library. It includes significant API 3830*30877f79SAndroid Build Coastguard Workerand architectural changes, new features and many bug fixes. You can read about 3831*30877f79SAndroid Build Coastguard Workersome of the motivations behind ExoPlayer 2.x 3832*30877f79SAndroid Build Coastguard Worker[here](https://medium.com/google-exoplayer/exoplayer-2-x-why-what-and-when-74fd9cb139#.am7h8nytm). 3833*30877f79SAndroid Build Coastguard Worker 3834*30877f79SAndroid Build Coastguard Worker* Root package name changed to `com.google.android.exoplayer2`. The library 3835*30877f79SAndroid Build Coastguard Worker structure and class names have also been sanitized. Read more 3836*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/exoplayer-2-x-new-package-and-class-names-ef8e1d9ba96f#.lv8sd4nez). 3837*30877f79SAndroid Build Coastguard Worker* Key architectural changes: 3838*30877f79SAndroid Build Coastguard Worker * Late binding between rendering and media source components. Allows the 3839*30877f79SAndroid Build Coastguard Worker same rendering components to be re-used from one playback to another. 3840*30877f79SAndroid Build Coastguard Worker Enables features such as gapless playback through playlists and DASH 3841*30877f79SAndroid Build Coastguard Worker multi-period support. 3842*30877f79SAndroid Build Coastguard Worker * Improved track selection design. More details can be found 3843*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/exoplayer-2-x-track-selection-2b62ff712cc9#.n00zo76b6). 3844*30877f79SAndroid Build Coastguard Worker * LoadControl now used to control buffering and loading across all 3845*30877f79SAndroid Build Coastguard Worker playback types. 3846*30877f79SAndroid Build Coastguard Worker * Media source components given additional structure. A new MediaSource 3847*30877f79SAndroid Build Coastguard Worker class has been introduced. MediaSources expose Timelines that describe 3848*30877f79SAndroid Build Coastguard Worker the media they expose, and can consist of multiple MediaPeriods. This 3849*30877f79SAndroid Build Coastguard Worker enables features such as seeking in live playbacks and DASH multi-period 3850*30877f79SAndroid Build Coastguard Worker support. 3851*30877f79SAndroid Build Coastguard Worker * Responsibility for loading the initial DASH/SmoothStreaming/HLS manifest 3852*30877f79SAndroid Build Coastguard Worker is promoted to the corresponding MediaSource components and is no longer 3853*30877f79SAndroid Build Coastguard Worker the application's responsibility. 3854*30877f79SAndroid Build Coastguard Worker * Higher level abstractions such as SimpleExoPlayer have been added to the 3855*30877f79SAndroid Build Coastguard Worker library. These make the library easier to use for common use cases. The 3856*30877f79SAndroid Build Coastguard Worker demo app is halved in size as a result, whilst at the same time gaining 3857*30877f79SAndroid Build Coastguard Worker more functionality. Read more 3858*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/exoplayer-2-x-improved-demo-app-d97171aaaaa1). 3859*30877f79SAndroid Build Coastguard Worker * Enhanced library support for implementing audio extensions. Read more 3860*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/exoplayer-2-x-new-audio-features-cfb26c2883a#.ua75vu4s3). 3861*30877f79SAndroid Build Coastguard Worker * Format and MediaFormat are replaced by a single Format class. 3862*30877f79SAndroid Build Coastguard Worker* Key new features: 3863*30877f79SAndroid Build Coastguard Worker * Playlist support. Includes support for gapless playback between playlist 3864*30877f79SAndroid Build Coastguard Worker items and consistent application of LoadControl and TrackSelector 3865*30877f79SAndroid Build Coastguard Worker policies when transitioning between items 3866*30877f79SAndroid Build Coastguard Worker ([#1270](https://github.com/google/ExoPlayer/issues/1270)). 3867*30877f79SAndroid Build Coastguard Worker * Seeking in live playbacks for DASH and SmoothStreaming 3868*30877f79SAndroid Build Coastguard Worker ([#291](https://github.com/google/ExoPlayer/issues/291)). 3869*30877f79SAndroid Build Coastguard Worker * DASH multi-period support 3870*30877f79SAndroid Build Coastguard Worker ([#557](https://github.com/google/ExoPlayer/issues/557)). 3871*30877f79SAndroid Build Coastguard Worker * MediaSource composition allows MediaSources to be concatenated into a 3872*30877f79SAndroid Build Coastguard Worker playlist, merged and looped. Read more 3873*30877f79SAndroid Build Coastguard Worker [here](https://medium.com/google-exoplayer/exoplayer-2-x-mediasource-composition-6c285fcbca1f#.zfha8qupz). 3874*30877f79SAndroid Build Coastguard Worker * Looping support (see above) 3875*30877f79SAndroid Build Coastguard Worker ([#490](https://github.com/google/ExoPlayer/issues/490)). 3876*30877f79SAndroid Build Coastguard Worker * Ability to query information about all tracks in a piece of media 3877*30877f79SAndroid Build Coastguard Worker (including those not supported by the device) 3878*30877f79SAndroid Build Coastguard Worker ([#1121](https://github.com/google/ExoPlayer/issues/1121)). 3879*30877f79SAndroid Build Coastguard Worker * Improved player controls. 3880*30877f79SAndroid Build Coastguard Worker * Support for PSSH in fMP4 moof atoms 3881*30877f79SAndroid Build Coastguard Worker ([#1143](https://github.com/google/ExoPlayer/issues/1143)). 3882*30877f79SAndroid Build Coastguard Worker * Support for Opus in Ogg 3883*30877f79SAndroid Build Coastguard Worker ([#1447](https://github.com/google/ExoPlayer/issues/1447)). 3884*30877f79SAndroid Build Coastguard Worker * CacheDataSource support for standalone media file playbacks (mp3, mp4 3885*30877f79SAndroid Build Coastguard Worker etc). 3886*30877f79SAndroid Build Coastguard Worker * FFMPEG extension (for audio only). 3887*30877f79SAndroid Build Coastguard Worker* Key bug fixes: 3888*30877f79SAndroid Build Coastguard Worker * Removed unnecessary secondary requests when playing standalone media 3889*30877f79SAndroid Build Coastguard Worker files ([#1041](https://github.com/google/ExoPlayer/issues/1041)). 3890*30877f79SAndroid Build Coastguard Worker * Fixed playback of video only (i.e. no audio) live streams 3891*30877f79SAndroid Build Coastguard Worker ([#758](https://github.com/google/ExoPlayer/issues/758)). 3892*30877f79SAndroid Build Coastguard Worker * Fixed silent failure when media buffer is too small 3893*30877f79SAndroid Build Coastguard Worker ([#583](https://github.com/google/ExoPlayer/issues/583)). 3894*30877f79SAndroid Build Coastguard Worker * Suppressed "Sending message to a Handler on a dead thread" warnings 3895*30877f79SAndroid Build Coastguard Worker ([#426](https://github.com/google/ExoPlayer/issues/426)). 3896*30877f79SAndroid Build Coastguard Worker 3897*30877f79SAndroid Build Coastguard Worker# Legacy release notes 3898*30877f79SAndroid Build Coastguard Worker 3899*30877f79SAndroid Build Coastguard WorkerNote: Since ExoPlayer V1 is still being maintained alongside V2, there is some 3900*30877f79SAndroid Build Coastguard Workeroverlap between these notes and the notes above. r2.0.0 followed from r1.5.11, 3901*30877f79SAndroid Build Coastguard Workerand hence it can be assumed that all changes in r1.5.11 and earlier are included 3902*30877f79SAndroid Build Coastguard Workerin all V2 releases. This cannot be assumed for changes in r1.5.12 and later, 3903*30877f79SAndroid Build Coastguard Workerhowever it can be assumed that all such changes are included in the most recent 3904*30877f79SAndroid Build Coastguard WorkerV2 release. 3905*30877f79SAndroid Build Coastguard Worker 3906*30877f79SAndroid Build Coastguard Worker### r1.5.16 3907*30877f79SAndroid Build Coastguard Worker 3908*30877f79SAndroid Build Coastguard Worker* VP9 extension: Reduced binary size. 3909*30877f79SAndroid Build Coastguard Worker* FLAC extension: Enabled 64 bit targets and fixed proguard config. 3910*30877f79SAndroid Build Coastguard Worker* Misc bugfixes. 3911*30877f79SAndroid Build Coastguard Worker 3912*30877f79SAndroid Build Coastguard Worker### r1.5.15 3913*30877f79SAndroid Build Coastguard Worker 3914*30877f79SAndroid Build Coastguard Worker* SmoothStreaming: Fixed handling of start_time placeholder 3915*30877f79SAndroid Build Coastguard Worker ([#2447](https://github.com/google/ExoPlayer/issues/2447)). 3916*30877f79SAndroid Build Coastguard Worker* Misc bugfixes. 3917*30877f79SAndroid Build Coastguard Worker 3918*30877f79SAndroid Build Coastguard Worker### r1.5.14 3919*30877f79SAndroid Build Coastguard Worker 3920*30877f79SAndroid Build Coastguard Worker* Fixed cache failures when using an encrypted cache content index. 3921*30877f79SAndroid Build Coastguard Worker* SmoothStreaming: Work around "Offset to sample data was negative" failures 3922*30877f79SAndroid Build Coastguard Worker ([#2292](https://github.com/google/ExoPlayer/issues/2292), 3923*30877f79SAndroid Build Coastguard Worker [#2101](https://github.com/google/ExoPlayer/issues/2101) and 3924*30877f79SAndroid Build Coastguard Worker [#1152](https://github.com/google/ExoPlayer/issues/1152)). 3925*30877f79SAndroid Build Coastguard Worker 3926*30877f79SAndroid Build Coastguard Worker### r1.5.13 3927*30877f79SAndroid Build Coastguard Worker 3928*30877f79SAndroid Build Coastguard Worker* Improvements to the upstream cache package. 3929*30877f79SAndroid Build Coastguard Worker* MP4: Support `.mp3` tracks 3930*30877f79SAndroid Build Coastguard Worker ([#2066](https://github.com/google/ExoPlayer/issues/2066)). 3931*30877f79SAndroid Build Coastguard Worker* SubRip: Don't fail playbacks if SubRip file contains negative timestamps 3932*30877f79SAndroid Build Coastguard Worker ([#2145](https://github.com/google/ExoPlayer/issues/2145)). 3933*30877f79SAndroid Build Coastguard Worker* MPEG-TS: Avoid failure when expected ID3 header not found 3934*30877f79SAndroid Build Coastguard Worker ([#1966](https://github.com/google/ExoPlayer/issues/1966)). 3935*30877f79SAndroid Build Coastguard Worker* Misc bugfixes. 3936*30877f79SAndroid Build Coastguard Worker 3937*30877f79SAndroid Build Coastguard Worker### r1.5.12 3938*30877f79SAndroid Build Coastguard Worker 3939*30877f79SAndroid Build Coastguard Worker* Improvements to Cronet network stack extension. 3940*30877f79SAndroid Build Coastguard Worker* Fix bug in demo app introduced in r1.5.11 that caused L3 Widevine 3941*30877f79SAndroid Build Coastguard Worker provisioning requests to fail. 3942*30877f79SAndroid Build Coastguard Worker* Misc bugfixes. 3943*30877f79SAndroid Build Coastguard Worker 3944*30877f79SAndroid Build Coastguard Worker### r1.5.11 3945*30877f79SAndroid Build Coastguard Worker 3946*30877f79SAndroid Build Coastguard Worker* Cronet network stack extension. 3947*30877f79SAndroid Build Coastguard Worker* HLS: Fix propagation of language for alternative audio renditions 3948*30877f79SAndroid Build Coastguard Worker ([#1784](https://github.com/google/ExoPlayer/issues/1784)). 3949*30877f79SAndroid Build Coastguard Worker* WebM: Support for subsample encryption. 3950*30877f79SAndroid Build Coastguard Worker* ID3: Fix EOS detection for 2-byte encodings 3951*30877f79SAndroid Build Coastguard Worker ([#1774](https://github.com/google/ExoPlayer/issues/1774)). 3952*30877f79SAndroid Build Coastguard Worker* MPEG-TS: Support multiple tracks of the same type. 3953*30877f79SAndroid Build Coastguard Worker* MPEG-TS: Work toward robust handling of stream corruption. 3954*30877f79SAndroid Build Coastguard Worker* Fix ContentDataSource failures triggered by garbage collector 3955*30877f79SAndroid Build Coastguard Worker ([#1759](https://github.com/google/ExoPlayer/issues/1759)). 3956*30877f79SAndroid Build Coastguard Worker 3957*30877f79SAndroid Build Coastguard Worker### r1.5.10 3958*30877f79SAndroid Build Coastguard Worker 3959*30877f79SAndroid Build Coastguard Worker* HLS: Stability fixes. 3960*30877f79SAndroid Build Coastguard Worker* MP4: Support for stz2 Atoms. 3961*30877f79SAndroid Build Coastguard Worker* Enable 4K format selection on Sony AndroidTV + nVidia SHIELD. 3962*30877f79SAndroid Build Coastguard Worker* TX3G caption fixes. 3963*30877f79SAndroid Build Coastguard Worker 3964*30877f79SAndroid Build Coastguard Worker### r1.5.9 3965*30877f79SAndroid Build Coastguard Worker 3966*30877f79SAndroid Build Coastguard Worker* MP4: Fixed incorrect sniffing in some cases (#1523). 3967*30877f79SAndroid Build Coastguard Worker* MP4: Improved file compatibility (#1567). 3968*30877f79SAndroid Build Coastguard Worker* ID3: Support for TIT2 and APIC frames. 3969*30877f79SAndroid Build Coastguard Worker* Fixed querying of platform decoders on some devices. 3970*30877f79SAndroid Build Coastguard Worker* Misc bug fixes. 3971*30877f79SAndroid Build Coastguard Worker 3972*30877f79SAndroid Build Coastguard Worker### r1.5.8 3973*30877f79SAndroid Build Coastguard Worker 3974*30877f79SAndroid Build Coastguard Worker* HLS: Fix handling of HTTP redirects. 3975*30877f79SAndroid Build Coastguard Worker* Audio: Minor adjustment to improve A/V sync. 3976*30877f79SAndroid Build Coastguard Worker* OGG: Support FLAC in OGG. 3977*30877f79SAndroid Build Coastguard Worker* TTML: Support regions. 3978*30877f79SAndroid Build Coastguard Worker* WAV/PCM: Support 8, 24 and 32-bit WAV and PCM audio. 3979*30877f79SAndroid Build Coastguard Worker* Misc bug fixes and performance optimizations. 3980*30877f79SAndroid Build Coastguard Worker 3981*30877f79SAndroid Build Coastguard Worker### r1.5.7 3982*30877f79SAndroid Build Coastguard Worker 3983*30877f79SAndroid Build Coastguard Worker* OGG: Support added for OGG. 3984*30877f79SAndroid Build Coastguard Worker* FLAC: Support for FLAC extraction and playback (via an extension). 3985*30877f79SAndroid Build Coastguard Worker* HLS: Multiple audio track support (via Renditions). 3986*30877f79SAndroid Build Coastguard Worker* FMP4: Support multiple tracks in fragmented MP4 (not applicable to 3987*30877f79SAndroid Build Coastguard Worker DASH/SmoothStreaming). 3988*30877f79SAndroid Build Coastguard Worker* WAV: Support for 16-bit WAV files. 3989*30877f79SAndroid Build Coastguard Worker* MKV: Support non-square pixel formats. 3990*30877f79SAndroid Build Coastguard Worker* Misc bug fixes. 3991*30877f79SAndroid Build Coastguard Worker 3992*30877f79SAndroid Build Coastguard Worker### r1.5.6 3993*30877f79SAndroid Build Coastguard Worker 3994*30877f79SAndroid Build Coastguard Worker* MP3: Fix mono streams playing at 2x speed on some MediaTek based devices 3995*30877f79SAndroid Build Coastguard Worker (#801). 3996*30877f79SAndroid Build Coastguard Worker* MP3: Fix playback of some streams when stream length is unknown. 3997*30877f79SAndroid Build Coastguard Worker* ID3: Support multiple frames of the same type in a single tag. 3998*30877f79SAndroid Build Coastguard Worker* CEA-608: Correctly handle repeated control characters, fixing an issue in 3999*30877f79SAndroid Build Coastguard Worker which captions would immediately disappear. 4000*30877f79SAndroid Build Coastguard Worker* AVC3: Fix decoder failures on some MediaTek devices in the case where the 4001*30877f79SAndroid Build Coastguard Worker first buffer fed to the decoder does not start with SPS/PPS NAL units. 4002*30877f79SAndroid Build Coastguard Worker* Misc bug fixes. 4003*30877f79SAndroid Build Coastguard Worker 4004*30877f79SAndroid Build Coastguard Worker### r1.5.5 4005*30877f79SAndroid Build Coastguard Worker 4006*30877f79SAndroid Build Coastguard Worker* DASH: Enable MP4 embedded WebVTT playback (#1185) 4007*30877f79SAndroid Build Coastguard Worker* HLS: Fix handling of extended ID3 tags in MPEG-TS (#1181) 4008*30877f79SAndroid Build Coastguard Worker* MP3: Fix incorrect position calculation in VBRI header (#1197) 4009*30877f79SAndroid Build Coastguard Worker* Fix issue seeking backward using SingleSampleSource (#1193) 4010*30877f79SAndroid Build Coastguard Worker 4011*30877f79SAndroid Build Coastguard Worker### r1.5.4 4012*30877f79SAndroid Build Coastguard Worker 4013*30877f79SAndroid Build Coastguard Worker* HLS: Support for variant selection and WebVtt subtitles. 4014*30877f79SAndroid Build Coastguard Worker* MP4: Support for embedded WebVtt. 4015*30877f79SAndroid Build Coastguard Worker* Improved device compatibility. 4016*30877f79SAndroid Build Coastguard Worker* Fix for resource leak (Issue #1066). 4017*30877f79SAndroid Build Coastguard Worker* Misc bug fixes + minor features. 4018*30877f79SAndroid Build Coastguard Worker 4019*30877f79SAndroid Build Coastguard Worker### r1.5.3 4020*30877f79SAndroid Build Coastguard Worker 4021*30877f79SAndroid Build Coastguard Worker* Support for FLV (without seeking). 4022*30877f79SAndroid Build Coastguard Worker* MP4: Fix for playback of media containing basic edit lists. 4023*30877f79SAndroid Build Coastguard Worker* QuickTime: Fix parsing of QuickTime style audio sample entry. 4024*30877f79SAndroid Build Coastguard Worker* HLS: Add H262 support for devices that have an H262 decoder. 4025*30877f79SAndroid Build Coastguard Worker* Allow AudioTrack PlaybackParams (e.g. speed/pitch) on API level 23+. 4026*30877f79SAndroid Build Coastguard Worker* Correctly detect 4K displays on API level 23+. 4027*30877f79SAndroid Build Coastguard Worker* Misc bug fixes. 4028*30877f79SAndroid Build Coastguard Worker 4029*30877f79SAndroid Build Coastguard Worker### r1.5.2 4030*30877f79SAndroid Build Coastguard Worker 4031*30877f79SAndroid Build Coastguard Worker* MPEG-TS/HLS: Fix frame drops playing H265 video. 4032*30877f79SAndroid Build Coastguard Worker* SmoothStreaming: Fix parsing of ProtectionHeader. 4033*30877f79SAndroid Build Coastguard Worker 4034*30877f79SAndroid Build Coastguard Worker### r1.5.1 4035*30877f79SAndroid Build Coastguard Worker 4036*30877f79SAndroid Build Coastguard Worker* Enable smooth frame release by default. 4037*30877f79SAndroid Build Coastguard Worker* Added OkHttpDataSource extension. 4038*30877f79SAndroid Build Coastguard Worker* AndroidTV: Correctly detect 4K display size on Bravia devices. 4039*30877f79SAndroid Build Coastguard Worker* FMP4: Handle non-sample data in mdat boxes. 4040*30877f79SAndroid Build Coastguard Worker* TTML: Fix parsing of some colors on Jellybean. 4041*30877f79SAndroid Build Coastguard Worker* SmoothStreaming: Ignore tfdt boxes. 4042*30877f79SAndroid Build Coastguard Worker* Misc bug fixes. 4043*30877f79SAndroid Build Coastguard Worker 4044*30877f79SAndroid Build Coastguard Worker### r1.5.0 4045*30877f79SAndroid Build Coastguard Worker 4046*30877f79SAndroid Build Coastguard Worker* Multi-track support. 4047*30877f79SAndroid Build Coastguard Worker* DASH: Limited support for multi-period manifests. 4048*30877f79SAndroid Build Coastguard Worker* HLS: Smoother format adaptation. 4049*30877f79SAndroid Build Coastguard Worker* HLS: Support for MP3 media segments. 4050*30877f79SAndroid Build Coastguard Worker* TTML: Support for most embedded TTML styling. 4051*30877f79SAndroid Build Coastguard Worker* WebVTT: Enhanced positioning support. 4052*30877f79SAndroid Build Coastguard Worker* Initial playback tests. 4053*30877f79SAndroid Build Coastguard Worker* Misc bug fixes. 4054*30877f79SAndroid Build Coastguard Worker 4055*30877f79SAndroid Build Coastguard Worker### r1.4.2 4056*30877f79SAndroid Build Coastguard Worker 4057*30877f79SAndroid Build Coastguard Worker* Implemented automatic format detection for regular container formats. 4058*30877f79SAndroid Build Coastguard Worker* Added UdpDataSource for connecting to multicast streams. 4059*30877f79SAndroid Build Coastguard Worker* Improved robustness for MP4 playbacks. 4060*30877f79SAndroid Build Coastguard Worker* Misc bug fixes. 4061*30877f79SAndroid Build Coastguard Worker 4062*30877f79SAndroid Build Coastguard Worker### r1.4.1 4063*30877f79SAndroid Build Coastguard Worker 4064*30877f79SAndroid Build Coastguard Worker* HLS: Fix premature playback failures that could occur in some cases. 4065*30877f79SAndroid Build Coastguard Worker 4066*30877f79SAndroid Build Coastguard Worker### r1.4.0 4067*30877f79SAndroid Build Coastguard Worker 4068*30877f79SAndroid Build Coastguard Worker* Support for extracting Matroska streams (implemented by WebmExtractor). 4069*30877f79SAndroid Build Coastguard Worker* Support for tx3g captions in MP4 streams. 4070*30877f79SAndroid Build Coastguard Worker* Support for H.265 in MPEG-TS streams on supported devices. 4071*30877f79SAndroid Build Coastguard Worker* HLS: Added support for MPEG audio (e.g. MP3) in TS media segments. 4072*30877f79SAndroid Build Coastguard Worker* HLS: Improved robustness against missing chunks and variants. 4073*30877f79SAndroid Build Coastguard Worker* MP4: Added support for embedded MPEG audio (e.g. MP3). 4074*30877f79SAndroid Build Coastguard Worker* TTML: Improved handling of whitespace. 4075*30877f79SAndroid Build Coastguard Worker* DASH: Support Mpd.Location element. 4076*30877f79SAndroid Build Coastguard Worker* Add option to TsExtractor to allow non-IDR keyframes. 4077*30877f79SAndroid Build Coastguard Worker* Added MulticastDataSource for connecting to multicast streams. 4078*30877f79SAndroid Build Coastguard Worker* (WorkInProgress) - First steps to supporting seeking in DASH DVR window. 4079*30877f79SAndroid Build Coastguard Worker* (WorkInProgress) - First steps to supporting styled + positioned subtitles. 4080*30877f79SAndroid Build Coastguard Worker* Misc bug fixes. 4081*30877f79SAndroid Build Coastguard Worker 4082*30877f79SAndroid Build Coastguard Worker### r1.3.3 4083*30877f79SAndroid Build Coastguard Worker 4084*30877f79SAndroid Build Coastguard Worker* HLS: Fix failure when playing HLS AAC streams. 4085*30877f79SAndroid Build Coastguard Worker* Misc bug fixes. 4086*30877f79SAndroid Build Coastguard Worker 4087*30877f79SAndroid Build Coastguard Worker### r1.3.2 4088*30877f79SAndroid Build Coastguard Worker 4089*30877f79SAndroid Build Coastguard Worker* DataSource improvements: `DefaultUriDataSource` now handles http://, 4090*30877f79SAndroid Build Coastguard Worker https://, file://, asset:// and content:// URIs automatically. It also 4091*30877f79SAndroid Build Coastguard Worker handles file:///android_asset/* URIs, and file paths like /path/to/media.mp4 4092*30877f79SAndroid Build Coastguard Worker where the scheme is omitted. 4093*30877f79SAndroid Build Coastguard Worker* HLS: Fix for some ID3 events being dropped. 4094*30877f79SAndroid Build Coastguard Worker* HLS: Correctly handle 0x0 and floating point RESOLUTION tags. 4095*30877f79SAndroid Build Coastguard Worker* Mp3Extractor: robustness improvements. 4096*30877f79SAndroid Build Coastguard Worker 4097*30877f79SAndroid Build Coastguard Worker### r1.3.1 4098*30877f79SAndroid Build Coastguard Worker 4099*30877f79SAndroid Build Coastguard Worker* No notes provided. 4100