diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 04cbbef5cf..5040faefcb 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,5 +1,131 @@ # Release notes +### Unreleased changes + +* Common Library: +* ExoPlayer: + * Consider language when selecting a video track. By default select a + 'main' video track that matches the language of the selected audio + track, if available. Explicit video language preferences can be + expressed with + `TrackSelectionParameters.Builder.setPreferredVideoLanguage(s)`. + * Add `selectedAudioLanguage` parameter to + `DefaultTrackSelector.selectVideoTrack()` method. + * Add `retryCount` parameter to `MediaSourceEventListener.onLoadStarted` + and corresponding `MediaSourceEventListener.EventDispatcher` methods. + * Fix bug where playlist items or periods in multi-period DASH streams + with durations that don't match the actual content could cause frame + freezes at the end of the item + ([#1698](https://github.com/androidx/media/issues/1698)). + * Reduce default values for `bufferForPlaybackMs` and + `bufferForPlaybackAfterRebufferMs` in `DefaultLoadControl` to 1000 and + 2000 ms respectively. +* Transformer: + * Update parameters of `VideoFrameProcessor.registerInputStream` and + `VideoFrameProcessor.Listener.onInputStreamRegistered` to use `Format`. + * Add support for transmuxing into alternative backwards compatible + formats. +* Extractors: +* DataSource: +* Audio: + * Do not bypass `SonicAudioProcessor` when `SpeedChangingAudioProcessor` + is configured with default parameters. +* Video: +* Text: +* Metadata: +* Image: +* DRM: +* Effect: + * Moved the functionality of `OverlaySettings` into + `StaticOverlaySettings`. `OverlaySettings` can be subclassed to allow + dynamic overlay settings. +* Muxers: +* IMA extension: +* Session: + * Add 'Context' as a parameter to + 'MediaButtonReceiver.shouldStartForegroundService` + ([#1887](https://github.com/androidx/media/issues/1887)). +* UI: + * Add `PlayerSurface` Composable to `media3-ui-compose` module. + * Add `PlayPauseButtonState`, `NextButtonState`, `PreviousButtonState`, + `RepeatButtonState`, `ShuffleButtonState` classes and the corresponding + `rememberPlayPauseButtonState`, `rememberNextButtonState`, + `rememberPreviousButtonState`, `rememberRepeatButtonState`, + `rememberShuffleButtonState` Composables to `media3-ui-compose` module. +* Downloads: +* OkHttp Extension: +* Cronet Extension: +* RTMP Extension: +* HLS Extension: +* DASH Extension: +* Smooth Streaming Extension: +* RTSP Extension: +* Decoder Extensions (FFmpeg, VP9, AV1, etc.): + * Add the MPEG-H decoder module which uses the native MPEG-H decoder + module to decode MPEG-H audio + ([#1826](https://github.com/androidx/media/pull/1826)). +* MIDI extension: +* Leanback extension: +* Cast Extension: +* Test Utilities: +* Demo app: + * Add `MinimalControls` (`PlayPauseButton`, `NextButton`, + `PreviousButton`) and `ExtraControls` (`RepeatButton`, `ShuffleButton`) + Composable UI elements to `demo-compose` utilizing + `PlayPauseButtonState`, `NextButtonState`, `PreviousButtonState`, + `RepeatButtonState`, `ShuffleButtonState`. +* Remove deprecated symbols: + * Remove deprecated `AudioMixer.create()` method. Use + `DefaultAudioMixer.Factory().create()` instead. + * Remove the following deprecated `Transformer.Builder` methods: + * `setTransformationRequest()`, use `setAudioMimeType()`, + `setVideoMimeType()`, and `setHdrMode()` instead. + * `setAudioProcessors()`, set the audio processor in an + `EditedMediaItem.Builder.setEffects()`, and pass it to + `Transformer.start()` instead. + * `setVideoEffects()`, set video effect in an + `EditedMediaItem.Builder.setEffects()`, and pass it to + `Transformer.start()` instead. + * `setRemoveAudio()`, use `EditedMediaItem.Builder.setRemoveAudio()` + to remove the audio from the `EditedMediaItem` passed to + `Transformer.start()` instead. + * `setRemoveVideo()`, use `EditedMediaItem.Builder.setRemoveVideo()` + to remove the video from the `EditedMediaItem` passed to + `Transformer.start()` instead. + * `setFlattenForSlowMotion()`, use + `EditedMediaItem.Builder.setFlattenForSlowMotion()` to flatten the + `EditedMediaItem` passed to `Transformer.start()` instead. + * `setListener()`, use `addListener()`, `removeListener()` or + `removeAllListeners()` instead. + * Remove the following deprecated `Tansformer.Listener` methods: + * `onTransformationCompleted(MediaItem)`, use + `onCompleted(Composition, ExportResult)` instead. + * `onTransformationCompleted(MediaItem, TransformationResult)`, use + `onCompleted(Composition, ExportResult)` instead. + * `onTransformationError(MediaItem, Exception)`, use + `onError(Composition, ExportResult, ExportException)` instead. + * `onTransformationError(MediaItem, TransformationException)`, use + `onError(Composition, ExportResult, ExportException)` instead. + * `onTransformationError(MediaItem, TransformationResult, + TransformationException)`, use `onError(Composition, ExportResult, + ExportException)` instead. + * `onFallbackApplied(MediaItem, TransformationRequest, + TransformationRequest)`, use `onFallbackApplied(Composition, + TransformationRequest, TransformationRequest)` instead. + * Remove deprecated `TransformationResult` class. Use `ExportResult` + instead. + * Remove deprecated `TransformationException` class. Use `ExportException` + instead. + * Remove deprecated `Transformer.PROGRESS_STATE_NO_TRANSFORMATION`. Use + `Transformer.PROGRESS_STATE_NOT_STARTED` instead. + * Remove deprecated `Transformer.setListener()`. Use + `Transformer.addListener()`, `Transformer.removeListener()` or + `Transformer.removeAllListeners()` instead. + * Remove deprecated `Transformer.startTransformation()`. Use + `Transformer.start(MediaItem, String)` instead. + * Remove deprecated `SingleFrameGlShaderProgram`. Use + `BaseGlShaderProgram` instead. + ## 1.5 ### 1.5.0-rc02 (2024-11-19)