|
3 | 3 | ### Unreleased changes
|
4 | 4 |
|
5 | 5 | * Common Library:
|
| 6 | + * Fix bug in `SimpleBasePlayer` where setting a new |
| 7 | + `currentMediaItemIndex` in `State` after `setPlaylist` with `null` |
| 8 | + `MediaMetadata` does not reevaluate the metadata |
| 9 | + ([#1940](https://github.com/androidx/media/issues/1940)). |
6 | 10 | * ExoPlayer:
|
7 |
| - * Consider language when selecting a video track. By default select a |
| 11 | + * Add experimental 'ExoPlayer' pre-warming support for playback using |
| 12 | + `MediaCodecVideoRenderer`. `DefaultRenderersFactory` can be configured |
| 13 | + through `experimentalSetEnableMediaCodecVideoRendererPrewarming` to |
| 14 | + provide a secondary `MediaCodecVideoRenderer` to `ExoPlayer`. If |
| 15 | + enabled, `ExoPlayer` will pre-process the video of consecutive media |
| 16 | + items during playback to reduce media item transition latency. |
| 17 | + * Fix issue where additional decode-only frames may be displayed in quick |
| 18 | + succession when transitioning to content media after a mid-roll ad. |
| 19 | + * Make `DefaultRenderersFactory` add two `MetadataRenderer` instances by |
| 20 | + default to enable apps to receive two different schemes of metadata by |
| 21 | + default. |
| 22 | + * Initialize `DeviceInfo` and device volume asynchronously (if enabled via |
| 23 | + `setDeviceVolumeControlEnabled`). These values won't be available |
| 24 | + instantly after the `ExoPlayer.Builder.build()` and are notified via |
| 25 | + `Player.Listener.onDeviceInfoChanged` and `onDeviceVolumeChanged`. |
| 26 | +* Transformer: |
| 27 | + * Enable support for Android platform diagnostics via |
| 28 | + `MediaMetricsManager`. Transformer will forward editing events and |
| 29 | + performance data to the platform, which helps to provide system |
| 30 | + performance and debugging information on the device. This data may also |
| 31 | + be collected by Google |
| 32 | + [if sharing usage and diagnostics data is enabled](https://support.google.com/accounts/answer/6078260) |
| 33 | + by the user of the device. Apps can opt-out of contributing to platform |
| 34 | + diagnostics for Transformer with |
| 35 | + `Transformer.Builder.setUsePlatformDiagnostics(false)`. |
| 36 | + * Split `InAppMuxer` into `InAppMp4Muxer` and `InAppFragmentedMp4Muxer`. |
| 37 | + `InAppMp4Muxer` is to be used for producing a non-fragmented MP4 file, |
| 38 | + while `InAppFragmentedMp4Muxer` is to be used for producing a fragmented |
| 39 | + MP4 file. |
| 40 | + * Move `Muxer` interface from `media3-muxer` to `media3-transformer`. |
| 41 | +* Track Selection: |
| 42 | +* Extractors: |
| 43 | + * Fix handling of NAL units with lengths expressed in 1 or 2 bytes (rather |
| 44 | + than 4). |
| 45 | +* DataSource: |
| 46 | +* Audio: |
| 47 | + * Do not bypass `SonicAudioProcessor` when `SpeedChangingAudioProcessor` |
| 48 | + is configured with default parameters. |
| 49 | + * Fix underflow in `Sonic#getOutputSize()` that could cause |
| 50 | + `DefaultAudioSink` to stall. |
| 51 | + * Fix `MediaCodecAudioRenderer.getDurationToProgressUs()` and |
| 52 | + `DecoderAudioRenderer.getDurationToProgressUs()` so that seeks will |
| 53 | + correctly reset the provided durations. |
| 54 | +* Video: |
| 55 | +* Text: |
| 56 | + * TTML: Add support for referencing `tts:origin` and `tts:extent` via |
| 57 | + `style` ([#2953](https://github.com/google/ExoPlayer/issues/2953)). |
| 58 | + * Restrict WebVTT and SubRip timestamps to exactly 3 decimal places. |
| 59 | + Previously we incorrectly parsed any number of decimal places but always |
| 60 | + assumed the value was in milliseconds, leading to incorrect timestamps |
| 61 | + ([#1997](https://github.com/androidx/media/issues/1997)). |
| 62 | + * Add support for VobSub subtitles |
| 63 | + ([#8260](https://github.com/google/ExoPlayer/issues/8260)). |
| 64 | + * Fix playback hanging when a playlist contains clipped items with CEA-608 |
| 65 | + or CEA-708 captions. |
| 66 | + * Fix `IllegalStateException` when an SSA file contains a cue with zero |
| 67 | + duration (start and end time equal) |
| 68 | + ([#2052](https://github.com/androidx/media/issues/2052)). |
| 69 | +* Metadata: |
| 70 | +* Image: |
| 71 | +* DataSource: |
| 72 | +* DRM: |
| 73 | +* Effect: |
| 74 | +* Muxers: |
| 75 | + * Renamed `setSampleCopyEnabled()` method to `setSampleCopyingEnabled()` |
| 76 | + in both `Mp4Muxer.Builder` and `FragmentedMp4Muxer.Builder`. |
| 77 | + * `Mp4Muxer.addTrack()` and `FragmentedMp4Muxer.addTrack()` now return an |
| 78 | + `int` track id instead of a `TrackToken`. |
| 79 | + * `Mp4Muxer` and `FragmentedMp4Muxer` no longer implement `Muxer` |
| 80 | + interface. |
| 81 | +* IMA extension: |
| 82 | +* Session: |
| 83 | + * Fix bug where calling a `Player` method on a `MediaController` connected |
| 84 | + to a legacy session dropped changes of a pending update coming from the |
| 85 | + legacy session. |
| 86 | +* UI: |
| 87 | + * Add `PresentationState` state holder class and the corresponding |
| 88 | + `rememberPresentationState` Composable to `media3-ui-compose`. |
| 89 | +* Downloads: |
| 90 | +* OkHttp Extension: |
| 91 | +* Cronet Extension: |
| 92 | +* RTMP Extension: |
| 93 | +* HLS Extension: |
| 94 | + * Parse `SUPPLEMENTAL-CODECS` tag from HLS playlist to detect Dolby Vision |
| 95 | + formats ([#1785](https://github.com/androidx/media/pull/1785)). |
| 96 | +* DASH Extension: |
| 97 | + * Fix issue when calculating the update interval for ad insertion in |
| 98 | + multi-period live streams |
| 99 | + ([#1698](https://github.com/androidx/media/issues/1698)). |
| 100 | + * Parse `scte214:supplementalCodecs` attribute from DASH manifest to |
| 101 | + detect Dolby Vision formats |
| 102 | + ([#1785](https://github.com/androidx/media/pull/1785)). |
| 103 | + * Improve handling of period transitions in live streams where the period |
| 104 | + contains media samples beyond the declared period duration |
| 105 | + ([#1698](https://github.com/androidx/media/issues/1698)). |
| 106 | +* Smooth Streaming Extension: |
| 107 | +* RTSP Extension: |
| 108 | +* Decoder Extensions (FFmpeg, VP9, AV1, etc.): |
| 109 | +* MIDI extension: |
| 110 | +* Leanback extension: |
| 111 | +* Cast Extension: |
| 112 | +* Test Utilities: |
| 113 | +* Demo app: |
| 114 | + * Use `PresentationState` to control the aspect ratio of `PlayerSurface` |
| 115 | + Composable depending on the ContentScale type and cover it with a |
| 116 | + shutter-overlay before the first frame is rendered. |
| 117 | +* Remove deprecated symbols: |
| 118 | + * Removed `ExoPlayer.VideoComponent`, `ExoPlayer.AudioComponent`, |
| 119 | + `ExoPlayer.TextComponent` and `ExoPlayer.DeviceComponent`. |
| 120 | + |
| 121 | +## 1.6 |
| 122 | + |
| 123 | +### 1.6.0-alpha01 (2024-12-20) |
| 124 | + |
| 125 | +This release includes the following changes since the |
| 126 | +[1.5.1 release](#151-2024-12-19): |
| 127 | + |
| 128 | +* Common Library: |
| 129 | + * Remove `Format.toBundle(boolean excludeMetadata)` method, use |
| 130 | + `Format.toBundle()` instead. |
| 131 | + * Add `AudioManagerCompat` and `AudioFocusRequestCompat` to replace the |
| 132 | + equivalent classes in `androidx.media`. |
| 133 | +* ExoPlayer: |
| 134 | + * Consider language when selecting a video track. By default, select a |
8 | 135 | 'main' video track that matches the language of the selected audio
|
9 | 136 | track, if available. Explicit video language preferences can be
|
10 | 137 | expressed with
|
|
21 | 148 | `bufferForPlaybackAfterRebufferMs` in `DefaultLoadControl` to 1000 and
|
22 | 149 | 2000 ms respectively.
|
23 | 150 | * Add `MediaExtractorCompat`, a new class that provides equivalent
|
24 |
| - functionality to platform `MediaExtractor`. |
25 |
| - * Move `BasePreloadManager.Listener` to a top level |
| 151 | + features to platform `MediaExtractor`. |
| 152 | + * Move `BasePreloadManager.Listener` to a top-level |
26 | 153 | `PreloadManagerListener`.
|
| 154 | + * `RenderersFactory.createSecondaryRenderer` can be implemented to provide |
| 155 | + secondary renderers for pre-warming. Pre-warming enables quicker media |
| 156 | + item transitions during playback. |
| 157 | + * Enable sending `CmcdData` for manifest requests in adaptive streaming |
| 158 | + formats DASH, HLS, and SmoothStreaming |
| 159 | + ([#1951](https://github.com/androidx/media/issues/1951)). |
| 160 | + * Provide `MediaCodecInfo` of the codec that will be initialized in |
| 161 | + `MediaCodecRenderer.onReadyToInitializeCodec` |
| 162 | + ([#1963](https://github.com/androidx/media/pull/1963)). |
| 163 | + * Change `AdsMediaSource` to allow the `AdPlaybackStates` to grow by |
| 164 | + appending ad groups. Invalid modifications are detected and throw an |
| 165 | + exception. |
27 | 166 | * Transformer:
|
28 | 167 | * Update parameters of `VideoFrameProcessor.registerInputStream` and
|
29 | 168 | `VideoFrameProcessor.Listener.onInputStreamRegistered` to use `Format`.
|
30 |
| - * Add support for transmuxing into alternative backwards compatible |
| 169 | + * Add support for transmuxing into alternative backward compatible |
31 | 170 | formats.
|
32 | 171 | * Generate HDR static metadata when using `DefaultEncoderFactory`.
|
33 | 172 | * Extractors:
|
34 |
| - * MP3: Don't stop playback early when a `VBRI` frame's table of contents |
35 |
| - doesn't cover all the MP3 data in a file |
36 |
| - ([#1904](https://github.com/androidx/media/issues/1904)). |
37 |
| -* DataSource: |
| 173 | + * AVI: Fix handling of files with constant bitrate compressed audio where |
| 174 | + the stream header stores the number of bytes instead of the number of |
| 175 | + chunks. |
38 | 176 | * Audio:
|
| 177 | + * Fix `onAudioPositionAdvancing` to be called when playback resumes |
| 178 | + (previously it was called when playback was paused). |
39 | 179 | * Video:
|
40 |
| - * Rollback of using `MediaCodecAdapter` supplied pixel aspect ratio values |
41 |
| - when provided while processing `onOutputFormatChanged` |
42 |
| - ([#1371](https://github.com/androidx/media/pull/1371)). |
| 180 | + * Fix `MediaCodecVideoRenderer` such that when without a `Surface`, the |
| 181 | + renderer skips just-early frames only if the |
| 182 | + `VideoFrameReleaseControl.getFrameReleaseAction` is not |
| 183 | + `FRAME_RELEASE_TRY_AGAIN_LATER`. |
43 | 184 | * Text:
|
44 | 185 | * Stop eagerly loading all subtitle files configured with
|
45 | 186 | `MediaItem.Builder.setSubtitleConfigurations`, and instead only load one
|
46 | 187 | if it is selected by track selection
|
47 | 188 | ([#1721](https://github.com/androidx/media/issues/1721)).
|
48 |
| - * Fix bug in `ReplacingCuesResolver.discardCuesBeforeTimeUs` where the cue |
49 |
| - active at `timeUs` (started before but not yet ended) was incorrectly |
50 |
| - discarded ([#1939](https://github.com/androidx/media/issues/1939)). |
51 |
| -* Metadata: |
52 |
| -* Image: |
53 |
| -* DRM: |
54 | 189 | * Effect:
|
55 | 190 | * Moved the functionality of `OverlaySettings` into
|
56 | 191 | `StaticOverlaySettings`. `OverlaySettings` can be subclassed to allow
|
57 | 192 | dynamic overlay settings.
|
58 | 193 | * Muxers:
|
59 |
| -* IMA extension: |
| 194 | + * Moved `MuxerException` out of `Muxer` interface to avoid a very long |
| 195 | + fully qualified name. |
60 | 196 | * Session:
|
61 |
| - * Add 'Context' as a parameter to |
62 |
| - 'MediaButtonReceiver.shouldStartForegroundService` |
| 197 | + * Add `Context` as a parameter to |
| 198 | + `MediaButtonReceiver.shouldStartForegroundService` |
63 | 199 | ([#1887](https://github.com/androidx/media/issues/1887)).
|
64 | 200 | * UI:
|
65 | 201 | * Add `PlayerSurface` Composable to `media3-ui-compose` module.
|
|
68 | 204 | `rememberPlayPauseButtonState`, `rememberNextButtonState`,
|
69 | 205 | `rememberPreviousButtonState`, `rememberRepeatButtonState`,
|
70 | 206 | `rememberShuffleButtonState` Composables to `media3-ui-compose` module.
|
71 |
| -* Downloads: |
72 |
| -* OkHttp Extension: |
73 |
| -* Cronet Extension: |
74 |
| -* RTMP Extension: |
75 | 207 | * HLS Extension:
|
| 208 | + * Add a first version of `HlsInterstitialsAdsLoader`. The ads loader reads |
| 209 | + the HLS interstitials of an HLS media playlist and maps them to the |
| 210 | + `AdPlaybackState` that is passed to the `AdsMediaSource`. This initial |
| 211 | + version only supports HLS VOD streams with `X-ASSET-URI` attributes. |
| 212 | + * Add `HlsInterstitialsAdsLoader.AdsMediaSourceFactory`. Apps can use it |
| 213 | + to create `AdsMediaSource` instances that use an |
| 214 | + `HlsInterstitialsAdsLoader` in a convenient and safe way. |
76 | 215 | * DASH Extension:
|
77 | 216 | * Add AC-4 Level-4 format support for DASH
|
78 | 217 | ([#1898](https://github.com/androidx/media/pull/1898)).
|
79 |
| -* Smooth Streaming Extension: |
80 |
| -* RTSP Extension: |
81 | 218 | * Decoder Extensions (FFmpeg, VP9, AV1, etc.):
|
82 | 219 | * Add the MPEG-H decoder module which uses the native MPEG-H decoder
|
83 | 220 | module to decode MPEG-H audio
|
84 | 221 | ([#1826](https://github.com/androidx/media/pull/1826)).
|
85 |
| -* MIDI extension: |
86 |
| -* Leanback extension: |
87 |
| -* Cast Extension: |
88 |
| -* Test Utilities: |
89 | 222 | * Demo app:
|
90 | 223 | * Add `MinimalControls` (`PlayPauseButton`, `NextButton`,
|
91 | 224 | `PreviousButton`) and `ExtraControls` (`RepeatButton`, `ShuffleButton`)
|
|
115 | 248 | `EditedMediaItem` passed to `Transformer.start()` instead.
|
116 | 249 | * `setListener()`, use `addListener()`, `removeListener()` or
|
117 | 250 | `removeAllListeners()` instead.
|
118 |
| - * Remove the following deprecated `Tansformer.Listener` methods: |
| 251 | + * Remove the following deprecated `Transformer.Listener` methods: |
119 | 252 | * `onTransformationCompleted(MediaItem)`, use
|
120 | 253 | `onCompleted(Composition, ExportResult)` instead.
|
121 | 254 | * `onTransformationCompleted(MediaItem, TransformationResult)`, use
|
|
148 | 281 |
|
149 | 282 | ## 1.5
|
150 | 283 |
|
| 284 | +### 1.5.1 (2024-12-19) |
| 285 | + |
| 286 | +This release includes the following changes since the |
| 287 | +[1.5.0 release](#150-2024-11-27): |
| 288 | + |
| 289 | +* ExoPlayer: |
| 290 | + * Disable use of asynchronous decryption in MediaCodec to avoid reported |
| 291 | + codec timeout issues with this platform API |
| 292 | + ([#1641](https://github.com/androidx/media/issues/1641)). |
| 293 | +* Extractors: |
| 294 | + * MP3: Don't stop playback early when a `VBRI` frame's table of contents |
| 295 | + doesn't cover all the MP3 data in a file |
| 296 | + ([#1904](https://github.com/androidx/media/issues/1904)). |
| 297 | +* Video: |
| 298 | + * Rollback of using `MediaCodecAdapter` supplied pixel aspect ratio values |
| 299 | + when provided while processing `onOutputFormatChanged` |
| 300 | + ([#1371](https://github.com/androidx/media/pull/1371)). |
| 301 | +* Text: |
| 302 | + * Fix bug in `ReplacingCuesResolver.discardCuesBeforeTimeUs` where the cue |
| 303 | + active at `timeUs` (started before but not yet ended) was incorrectly |
| 304 | + discarded ([#1939](https://github.com/androidx/media/issues/1939)). |
| 305 | +* Metadata: |
| 306 | + * Extract disc/track numbering and genre from Vorbis comments into |
| 307 | + `MediaMetadata` |
| 308 | + ([#1958](https://github.com/androidx/media/issues/1958)). |
| 309 | + |
151 | 310 | ### 1.5.0 (2024-11-27)
|
152 | 311 |
|
153 | 312 | This release includes the following changes since the
|
|
0 commit comments