From 850bd69dddca45915199f221d48573fca3fc790b Mon Sep 17 00:00:00 2001 From: ibaker Date: Wed, 23 Feb 2022 16:15:36 +0000 Subject: [PATCH] Version bump to exoplayer:2.17.0 and media3:1.0.0-alpha02 #minor-release PiperOrigin-RevId: 430456963 --- RELEASENOTES.md | 291 ++++++++++++++++++ constants.gradle | 4 +- .../media3/common/MediaLibraryInfo.java | 6 +- 3 files changed, 296 insertions(+), 5 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 3fa5013eaec..8aed9050a46 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,5 +1,296 @@ # Release notes +### 1.0.0-alpha02 (2022-03-09) + +* Core Library: + * Add protected method `DefaultRenderersFactory.getCodecAdapterFactory()` + so that subclasses of `DefaultRenderersFactory` that override + `buildVideoRenderers()` or `buildAudioRenderers()` can access the codec + adapter factory and pass it to `MediaCodecRenderer` instances they + create. + * Propagate ICY header fields `name` and `genre` to + `MediaMetadata.station` and `MediaMetadata.genre` respectively so that + they reach the app via `Player.Listener.onMediaMetadataChanged()` + ([#9677](https://github.com/google/ExoPlayer/issues/9677)). + * Remove null keys from `DefaultHttpDataSource#getResponseHeaders`. + * Sleep and retry when creating a `MediaCodec` instance fails. This works + around an issue that occurs on some devices when switching a surface + from a secure codec to another codec + ([#8696](https://github.com/google/ExoPlayer/issues/8696)). + * Add `MediaCodecAdapter.getMetrics()` to allow users obtain metrics data + from `MediaCodec`. + ([#9766](https://github.com/google/ExoPlayer/issues/9766)). + * Fix Maven dependency resolution + ([#8353](https://github.com/google/ExoPlayer/issues/8353)). + * Disable automatic speed adjustment for live streams that neither have + low-latency features nor a user request setting the speed + ([#9329](https://github.com/google/ExoPlayer/issues/9329)). + * Rename `DecoderCounters#inputBufferCount` to `queuedInputBufferCount`. + * Make `SimpleExoPlayer.renderers` private. Renderers can be accessed via + `ExoPlayer.getRenderer`. + * Updated some `AnalyticsListener.EventFlags` constant values to match + values in `Player.EventFlags`. + * Split `AnalyticsCollector` into an interface and default implementation + to allow it to be stripped by R8 if an app doesn't need it. +* Track selection: + * Support preferred video role flags in track selection + ([#9402](https://github.com/google/ExoPlayer/issues/9402)). + * Update video track selection logic to take preferred MIME types and role + flags into account when selecting multiple video tracks for adaptation + ([#9519](https://github.com/google/ExoPlayer/issues/9519)). + * Update video and audio track selection logic to only choose formats for + adaptive selections that have the same level of decoder and hardware + support ([#9565](https://github.com/google/ExoPlayer/issues/9565)). + * Update video track selection logic to prefer more efficient codecs if + multiple codecs are supported by primary, hardware-accelerated decoders + ([#4835](https://github.com/google/ExoPlayer/issues/4835)). + * Prefer audio content preferences (for example, the "default" audio track + or a track matching the system locale language) over technical track + selection constraints (for example, preferred MIME type, or maximum + channel count). + * Fix track selection issue where overriding one track group did not + disable other track groups of the same type + ([#9675](https://github.com/google/ExoPlayer/issues/9675)). + * Fix track selection issue where a mixture of non-empty and empty track + overrides is not applied correctly + ([#9649](https://github.com/google/ExoPlayer/issues/9649)). + * Prohibit duplicate `TrackGroup`s in a `TrackGroupArray`. `TrackGroup`s + can always be made distinguishable by setting an `id` in the + `TrackGroup` constructor. This fixes a crash when resuming playback + after backgrounding the app with an active track override + ([#9718](https://github.com/google/ExoPlayer/issues/9718)). + * Amend logic in `AdaptiveTrackSelection` to allow a quality increase + under sufficient network bandwidth even if playback is very close to the + live edge ([#9784](https://github.com/google/ExoPlayer/issues/9784)). +* Video: + * Fix decoder fallback logic for Dolby Vision + to use a compatible H264/H265 decoder if needed. +* Audio: + * Fix decoder fallback logic for Dolby Atmos (E-AC3-JOC) + to use a compatible E-AC3 decoder if needed. + * Change `AudioCapabilities` APIs to require passing explicitly + `AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES` instead of `null`. + * Allow customization of the `AudioTrack` buffer size calculation by + injecting an `AudioTrackBufferSizeProvider` to `DefaultAudioSink`. + ([#8891](https://github.com/google/ExoPlayer/issues/8891)). + * Retry `AudioTrack` creation if the requested buffer size was > 1MB. + ([#9712](https://github.com/google/ExoPlayer/issues/9712)). +* Extractors: + * WAV: Add support for RF64 streams + ([#9543](https://github.com/google/ExoPlayer/issues/9543)). + * Fix incorrect parsing of H.265 SPS NAL units + ([#9719](https://github.com/google/ExoPlayer/issues/9719)). + * Parse Vorbis Comments (including `METADATA_BLOCK_PICTURE`) in Ogg Opus + and Ogg Vorbis files. +* Text: + * Add a `MediaItem.SubtitleConfiguration.id` field which is propagated to + the `Format.id` field of the subtitle track created from the + configuration + ([#9673](https://github.com/google/ExoPlayer/issues/9673)). + * Add basic support for WebVTT subtitles in Matroska containers + ([#9886](https://github.com/google/ExoPlayer/issues/9886)). + * Prevent `Cea708Decoder` from reading more than the declared size of a + service block. +* DRM: + * Remove `playbackLooper` from `DrmSessionManager.(pre)acquireSession`. + When a `DrmSessionManager` is used by an app in a custom `MediaSource`, + the `playbackLooper` needs to be passed to `DrmSessionManager.setPlayer` + instead. +* Ad playback / IMA: + * Add support for + [IMA Dynamic Ad Insertion (DAI)](https://support.google.com/admanager/answer/6147120) + ([#8213](https://github.com/google/ExoPlayer/issues/8213)). + * Add a method to `AdPlaybackState` to allow resetting an ad group so that + it can be played again + ([#9615](https://github.com/google/ExoPlayer/issues/9615)). + * Enforce playback speed of 1.0 during ad playback + ([#9018](https://github.com/google/ExoPlayer/issues/9018)). + * Fix issue where an ad group that failed to load caused an immediate + playback reset + ([#9929](https://github.com/google/ExoPlayer/issues/9929)). +* UI: + * Fix the color of the numbers in `StyledPlayerView` rewind and + fastforward buttons when using certain themes + ([#9765](https://github.com/google/ExoPlayer/issues/9765)). + * Correctly translate playback speed strings + ([#9811](https://github.com/google/ExoPlayer/issues/9811)). +* DASH: + * Add parsed essential and supplemental properties to the `Representation` + ([#9579](https://github.com/google/ExoPlayer/issues/9579)). + * Support the `forced-subtitle` track role + ([#9727](https://github.com/google/ExoPlayer/issues/9727)). + * Stop interpreting the `main` track role as `C.SELECTION_FLAG_DEFAULT`. + * Fix base URL exclusion logic for manifests that do not declare the DVB namespace ([#9856](https://github.com/google/ExoPlayer/issues/9856)). + * Support relative `MPD.Location` URLs + ([#9939](https://github.com/google/ExoPlayer/issues/9939)). +* HLS: + * Correctly populate `Format.label` for audio only HLS streams + ([#9608](https://github.com/google/ExoPlayer/issues/9608)). + * Use chunkless preparation by default to improve start up time. If your + renditions contain muxed closed-caption tracks that are **not** declared + in the master playlist, you should add them to the master playlist to be + available for playback, or turn off chunkless preparation with + `HlsMediaSource.Factory.setAllowChunklessPreparation(false)`. + * Support key-frame accurate seeking in HLS + ([#2882](https://github.com/google/ExoPlayer/issues/2882)). + * Correctly populate `Format.label` for audio only HLS streams + ([#9608](https://github.com/google/ExoPlayer/issues/9608)). +* RTSP: + * Provide a client API to override the `SocketFactory` used for any server + connection ([#9606](https://github.com/google/ExoPlayer/pull/9606)). + * Prefer DIGEST authentication method over BASIC if both are present + ([#9800](https://github.com/google/ExoPlayer/issues/9800)). + * Handle when RTSP track timing is not available + ([#9775](https://github.com/google/ExoPlayer/issues/9775)). + * Ignore invalid RTP-Info header values + ([#9619](https://github.com/google/ExoPlayer/issues/9619)). +* Transformer: + * Increase required min API version to 21. + * `TransformationException` is now used to describe errors that occur + during a transformation. + * Add `TransformationRequest` for specifying the transformation options. + * Allow multiple listeners to be registered. + * Fix Transformer being stuck when the codec output is partially read. + * Fix potential NPE in `Transformer.getProgress` when releasing the muxer + throws. + * Add a demo app for applying transformations. + * The transformer module is no longer included by depending on + `com.google.android.exoplayer:exoplayer`. To continue using transformer, + add an additional dependency on + `com.google.android.exoplayer:exoplayer-transformer`. +* MediaSession extension: + * By default, `MediaSessionConnector` now clears the playlist on stop. Apps that want the playlist to be retained can call `setClearMediaItemsOnStop(false)` on the connector. +* Cast extension: + * Fix bug that prevented `CastPlayer` from calling `onIsPlayingChanged` + correctly ([#9792](https://github.com/google/ExoPlayer/issues/9792)). + * Support audio metadata including artwork with + `DefaultMediaItemConverter` + ([#9663](https://github.com/google/ExoPlayer/issues/9663)). +* FFmpeg extension: + * Make `build_ffmpeg.sh` depend on LLVM's bin utils instead of GNU's + ([#9933](https://github.com/google/ExoPlayer/issues/9933)). +* Android 12 compatibility: + * Upgrade the Cast extension to depend on + `com.google.android.gms:play-services-cast-framework:20.1.0`. Earlier + versions of `play-services-cast-framework` are not compatible with apps + targeting Android 12, and will crash with an `IllegalArgumentException` + when creating `PendingIntent`s + ([#9528](https://github.com/google/ExoPlayer/issues/9528)). +* Remove deprecated symbols: + * Remove `Player.EventLister`. Use `Player.Listener` instead. + * Remove `MediaSourceFactory#setDrmSessionManager`, + `MediaSourceFactory#setDrmHttpDataSourceFactory`, and + `MediaSourceFactory#setDrmUserAgent`. Use + `MediaSourceFactory#setDrmSessionManagerProvider` instead. + * Remove `MediaSourceFactory#setStreamKeys`. Use + `MediaItem.Builder#setStreamKeys` instead. + * Remove `MediaSourceFactory#createMediaSource(Uri)`. Use + `MediaSourceFactory#createMediaSource(MediaItem)` instead. + * Remove `setTag` from `DashMediaSource`, `HlsMediaSource` and + `SsMediaSource`. Use `MediaItem.Builder#setTag` instead. + * Remove `DashMediaSource#setLivePresentationDelayMs(long, boolean)`. Use + `MediaItem.Builder#setLiveConfiguration` and + `MediaItem.LiveConfiguration.Builder#setTargetOffsetMs` to override the + manifest, or `DashMediaSource#setFallbackTargetLiveOffsetMs` to provide + a fallback value. + * Remove `(Simple)ExoPlayer.setThrowsWhenUsingWrongThread`. Opting out of + the thread enforcement is no longer possible. + * Remove `ActionFile` and `ActionFileUpgradeUtil`. Use ExoPlayer 2.16.1 or + before to use `ActionFileUpgradeUtil` to merge legacy action files into + `DefaultDownloadIndex`. + * Remove `ProgressiveMediaSource#setExtractorsFactory`. Use + `ProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory)` + constructor instead. + * Remove `ProgressiveMediaSource.Factory#setTag` and, and + `ProgressiveMediaSource.Factory#setCustomCacheKey`. Use + `MediaItem.Builder#setTag` and `MediaItem.Builder#setCustomCacheKey` + instead. + * Remove `DefaultRenderersFactory(Context, @ExtensionRendererMode int)` + and `DefaultRenderersFactory(Context, @ExtensionRendererMode int, long)` + constructors. Use the `DefaultRenderersFactory(Context)` constructor, + `DefaultRenderersFactory#setExtensionRendererMode`, and + `DefaultRenderersFactory#setAllowedVideoJoiningTimeMs` instead. + * Remove all public `CronetDataSource` constructors. Use + `CronetDataSource.Factory` instead. +* Change the following `IntDefs` to `@Target(TYPE_USE)` only. This may break + the compilation of usages in Kotlin, which can be fixed by moving the + annotation to annotate the type (`Int`). + * `@AacAudioObjectType` + * `@Ac3Util.SyncFrameInfo.StreamType` + * `@AdLoadException.Type` + * `@AdtsExtractor.Flags` + * `@AmrExtractor.Flags` + * `@AspectRatioFrameLayout.ResizeMode` + * `@AudioFocusManager.PlayerCommand` + * `@AudioSink.SinkFormatSupport` + * `@BinarySearchSeeker.TimestampSearchResult.Type` + * `@BufferReplacementMode` + * `@C.BufferFlags` + * `@C.ColorRange` + * `@C.ColorSpace` + * `@C.ColorTransfer` + * `@C.CryptoMode` + * `@C.Encoding` + * `@C.PcmEncoding` + * `@C.Projection` + * `@C.SelectionReason` + * `@C.StereoMode` + * `@C.VideoOutputMode` + * `@CacheDataSource.Flags` + * `@CaptionStyleCompat.EdgeType` + * `@DataSpec.Flags` + * `@DataSpec.HttpMethods` + * `@DecoderDiscardReasons` + * `@DecoderReuseResult` + * `@DefaultAudioSink.OutputMode` + * `@DefaultDrmSessionManager.Mode` + * `@DefaultTrackSelector.SelectionEligibility` + * `@DefaultTsPayloadReaderFactory.Flags` + * `@EGLSurfaceTexture.SecureMode` + * `@EbmlProcessor.ElementType` + * `@ExoMediaDrm.KeyRequest.RequestType` + * `@ExtensionRendererMode` + * `@Extractor.ReadResult` + * `@FileTypes.Type` + * `@FlacExtractor.Flags` (in `com.google.android.exoplayer2.ext.flac` + package) + * `@FlacExtractor.Flags` (in + `com.google.android.exoplayer2.extractor.flac` package) + * `@FragmentedMp4Extractor.Flags` + * `@HlsMediaPlaylist.PlaylistType` + * `@HttpDataSourceException.Type` + * `@IllegalClippingException.Reason` + * `@IllegalMergeException.Reason` + * `@LoadErrorHandlingPolicy.FallbackType` + * `@MatroskaExtractor.Flags` + * `@Mp3Extractor.Flags` + * `@Mp4Extractor.Flags` + * `@NotificationUtil.Importance` + * `@PlaybackException.FieldNumber` + * `@PlayerNotificationManager.Priority` + * `@PlayerNotificationManager.Visibility` + * `@PlayerView.ShowBuffering` + * `@Renderer.State` + * `@RendererCapabilities.AdaptiveSupport` + * `@RendererCapabilities.Capabilities` + * `@RendererCapabilities.DecoderSupport` + * `@RendererCapabilities.FormatSupport` + * `@RendererCapabilities.HardwareAccelerationSupport` + * `@RendererCapabilities.TunnelingSupport` + * `@SampleStream.ReadDataResult` + * `@SampleStream.ReadFlags` + * `@StyledPlayerView.ShowBuffering` + * `@SubtitleView.ViewType` + * `@TextAnnotation.Position` + * `@TextEmphasisSpan.MarkFill` + * `@TextEmphasisSpan.MarkShape` + * `@Track.Transformation` + * `@TrackOutput.SampleDataPart` + * `@Transformer.ProgressState` + * `@TsExtractor.Mode` + * `@TsPayloadReader.Flags` + * `@WebvttCssStyle.FontSizeUnit` + ### 1.0.0-alpha01 AndroidX Media is the new home for media support libraries, including ExoPlayer. diff --git a/constants.gradle b/constants.gradle index 0a31d96ccee..b73f92a9907 100644 --- a/constants.gradle +++ b/constants.gradle @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. project.ext { - releaseVersion = '1.0.0-alpha01' - releaseVersionCode = 1000000001 + releaseVersion = '1.0.0-alpha02' + releaseVersionCode = 1_000_000_0_02 minSdkVersion = 16 appTargetSdkVersion = 29 // Upgrading this requires [Internal ref: b/193254928] to be fixed, or some diff --git a/libraries/common/src/main/java/androidx/media3/common/MediaLibraryInfo.java b/libraries/common/src/main/java/androidx/media3/common/MediaLibraryInfo.java index a8170b3df7d..84060fae47a 100644 --- a/libraries/common/src/main/java/androidx/media3/common/MediaLibraryInfo.java +++ b/libraries/common/src/main/java/androidx/media3/common/MediaLibraryInfo.java @@ -29,11 +29,11 @@ public final class MediaLibraryInfo { /** The version of the library expressed as a string, for example "1.2.3" or "1.2.3-beta01". */ // Intentionally hardcoded. Do not derive from other constants (e.g. VERSION_INT) or vice versa. - public static final String VERSION = "1.0.0-alpha01"; + public static final String VERSION = "1.0.0-alpha02"; /** The version of the library expressed as {@code TAG + "/" + VERSION}. */ // Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa. - public static final String VERSION_SLASHY = "AndroidXMedia3/1.0.0-alpha01"; + public static final String VERSION_SLASHY = "AndroidXMedia3/1.0.0-alpha02"; /** * The version of the library expressed as an integer, for example 1002003300. @@ -47,7 +47,7 @@ public final class MediaLibraryInfo { * (123-045-006-3-00). */ // Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa. - public static final int VERSION_INT = 1000000001; + public static final int VERSION_INT = 1_000_000_0_02; /** Whether the library was compiled with {@link Assertions} checks enabled. */ public static final boolean ASSERTIONS_ENABLED = true;