[dependabot]: Bump exoplayer_version from 1.4.1 to 1.5.1 in /packages/video_player/video_player_android/android
Bumps exoplayer_version from 1.4.1 to 1.5.1.
Updates androidx.media3:media3-exoplayer from 1.4.1 to 1.5.1
Release notes
Sourced from androidx.media3:media3-exoplayer's releases.
1.5.1
This release includes the following changes since the 1.5.0 release:
- ExoPlayer:
- Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (#1641).
- Extractors:
- MP3: Don't stop playback early when a
VBRIframe's table of contents doesn't cover all the MP3 data in a file (#1904).- Video:
- Rollback of using
MediaCodecAdaptersupplied pixel aspect ratio values when provided while processingonOutputFormatChanged(#1371).- Text:
- Fix bug in
ReplacingCuesResolver.discardCuesBeforeTimeUswhere the cue active attimeUs(started before but not yet ended) was incorrectly discarded (#1939).- Metadata:
- Extract disc/track numbering and genre from Vorbis comments into
MediaMetadata(#1958).1.5.0
This release includes the following changes since the 1.4.1 release:
- Common Library:
- Add
ForwardingSimpleBasePlayerthat allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).- Replace
SimpleBasePlayer.State.playlistbygetPlaylist()method.- Add override for
SimpleBasePlayer.State.Builder.setPlaylist()to directly specify aTimelineand currentTracksandMetadatainstead of building a playlist structure.- Increase
minSdkto 21 (Android Lollipop). This is aligned with all other AndroidX libraries.- Add
androidx.media3:media3-common-ktxartifact which provides Kotlin-specific functionality built on top of the Common library- Add
Player.listensuspending extension function to spin a coroutine to listen toPlayer.Eventsto themedia3-common-ktxlibrary.- Remove
@DoNotInlineannotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8 now automatically out-of-line calls like these to avoid the runtime failures (so the manual out-of-lining is no longer required). All Gradle users of the library must already be a using a version of the Android Gradle Plugin that uses a version of R8 which does this, due tocompileSdk = 35. Users of the library with non-Gradle build systems will need to ensure their R8-equivalent shrinking/obfuscating step does a similar automatic out-of-lining process in order to avoid runtime class verification failures. This change has already been done in other AndroidX libraries.- ExoPlayer:
MediaCodecRenderer.onProcessedStreamChange()can now be called for every media item. Previously it was not called for the first one. UseMediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()to enable this.- Add
PreloadMediaSource.PreloadControl.onPreloadErrorto allowPreloadMediaSource.PreloadControlimplementations to take actions when error occurs.- Add
BasePreloadManager.Listenerto propagate preload events to apps.- Allow changing SNTP client timeout and retry alternative addresses on timeout (#1540).
- Remove
MediaCodecAdapter.Configuration.flagsas the field was always zero.- Allow the user to select the built-in speaker for playback on Wear OS API 35+ (where the device advertises support for this).
- Defer the blocking call to
Context.getSystemService(Context.AUDIO_SERVICE)until audio focus handling is enabled. This ensures the blocking call isn't done if audio focus handling is not enabled (#1616).- Allow playback regardless of buffered duration when loading fails (#1571).
- Add
AnalyticsListener.onRendererReadyChanged()to signal when individual renderers allow playback to be ready.- Fix
MediaCodec.CryptoExceptionsometimes being reported as an "unexpected runtime error" whenMediaCodecis operated in asynchronous mode (default behaviour on API 31+).- Pass
bufferedDurationUsinstead ofbufferedPositionUswithPreloadMediaSource.PreloadControl.onContinueLoadingRequested(). Also changesDefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MStoDefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS, apps then need to pass a value representing a specific duration from the default start position for which the corresponding media source has to be preloaded with this IntDef, instead of a position.- Add
ForwardingRendererimplementation that forwards all method calls to another renderer (1703).- Add playlist preloading for the next item in the playlist. Apps can enable preloading by calling
ExoPlayer.setPreloadConfiguration(PreloadConfiguration)accordingly. By default preloading is disabled. When opted-in and to not interfere with playback,DefaultLoadControlrestricts preloading to start and continue only when the player is not loading for playback. Apps can change this behaviour by implementingLoadControl.shouldContinuePreloading()accordingly (like when overriding this method inDefaultLoadControl). The default implementation ofLoadControldisables preloading in case an app is using a custom implementation ofLoadControl.- Add method
MediaSourceEventListener.EventDispatcher.dispatchEvent()to allow invoking events of subclass listeners (1736).- Add
DefaultPreloadManager.Builderthat builds theDefaultPreloadManagerandExoPlayerinstances with consistently shared configurations.- Remove
Renderer[]parameter fromLoadControl.onTracksSelected()asDefaultLoadControlimplementation can retrieve the stream types fromExoTrackSelection[].- Deprecated
DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])and marked method as final to prevent overrides. The newDefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])should be used instead.- Report
MediaSourceEventListenerevents from secondary sources inMergingMediaSource. This will result in load start/error/cancelled/completed events being reported for sideloaded subtitles (those added withMediaItem.LocalConfiguration.subtitleConfigurations), which may appear as duplicate load events emitted fromAnalyticsListener.- Prevent subtitle & metadata errors from completely stopping playback. Instead the problematic track is disabled and playback of the remaining tracks continues (#1722).
- In new subtitle handling (during extraction), associated parse (e.g. invalid subtitle data) and load errors (e.g. HTTP 404) are emitted via
onLoadErrorcallbacks.- In legacy subtitle handling (during rendering), only associated load errors are emitted via
onLoadErrorcallbacks while parse errors are silently ignored (this is pre-existing behaviour).- 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).
- Add a setter to
SntpClientto set the max elapsed time since the last update after which the client is re-initialized (#1794).- Transformer:
... (truncated)
Changelog
Sourced from androidx.media3:media3-exoplayer's changelog.
1.5.1 (2024-12-19)
This release includes the following changes since the 1.5.0 release:
- ExoPlayer:
- Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (#1641).
- Extractors:
- MP3: Don't stop playback early when a
VBRIframe's table of contents doesn't cover all the MP3 data in a file (#1904).- Video:
- Rollback of using
MediaCodecAdaptersupplied pixel aspect ratio values when provided while processingonOutputFormatChanged(#1371).- Text:
- Fix bug in
ReplacingCuesResolver.discardCuesBeforeTimeUswhere the cue active attimeUs(started before but not yet ended) was incorrectly discarded (#1939).- Metadata:
- Extract disc/track numbering and genre from Vorbis comments into
MediaMetadata(#1958).1.5.0 (2024-11-27)
This release includes the following changes since the 1.4.1 release:
- Common Library:
- Add
ForwardingSimpleBasePlayerthat allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).- Replace
SimpleBasePlayer.State.playlistbygetPlaylist()method.- Add override for
SimpleBasePlayer.State.Builder.setPlaylist()to directly specify aTimelineand currentTracksandMetadatainstead of building a playlist structure.- Increase
minSdkto 21 (Android Lollipop). This is aligned with all other AndroidX libraries.- Add
androidx.media3:media3-common-ktxartifact which provides Kotlin-specific functionality built on top of the Common library- Add
Player.listensuspending extension function to spin a coroutine to listen toPlayer.Eventsto themedia3-common-ktxlibrary.- Remove
@DoNotInlineannotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8
... (truncated)
Commits
76088cdBump Media3 version to 1.5.17ae9ddfUpdate release notes for Media3 1.5.1 releasee4e59cdSwitch default of async crypto mode to disabled508a425Switch play FGS exemption to use custom action instead of commands52f9761Don't check codec's profile for MV-HEVC video.de91ebcAdd vorbis comment support for track/disc numbering fields, and genre5d9badcFix ReplacingCuesResolver.discardCuesBeforeTimeUs to retain active cue121b79aMerge pull request #1943 from DolbyLaboratories:dlb/ac4-ajoc/devfa9689eClarifyCommandButtonjavadoc aroundiconResIdandICON_UNDEFINEDf5bbb39Merge pull request #1823 from MGaetan89:remove_outdated_sdk_check- Additional commits viewable in compare view
Updates androidx.media3:media3-exoplayer-hls from 1.4.1 to 1.5.1
Release notes
Sourced from androidx.media3:media3-exoplayer-hls's releases.
1.5.1
This release includes the following changes since the 1.5.0 release:
- ExoPlayer:
- Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (#1641).
- Extractors:
- MP3: Don't stop playback early when a
VBRIframe's table of contents doesn't cover all the MP3 data in a file (#1904).- Video:
- Rollback of using
MediaCodecAdaptersupplied pixel aspect ratio values when provided while processingonOutputFormatChanged(#1371).- Text:
- Fix bug in
ReplacingCuesResolver.discardCuesBeforeTimeUswhere the cue active attimeUs(started before but not yet ended) was incorrectly discarded (#1939).- Metadata:
- Extract disc/track numbering and genre from Vorbis comments into
MediaMetadata(#1958).1.5.0
This release includes the following changes since the 1.4.1 release:
- Common Library:
- Add
ForwardingSimpleBasePlayerthat allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).- Replace
SimpleBasePlayer.State.playlistbygetPlaylist()method.- Add override for
SimpleBasePlayer.State.Builder.setPlaylist()to directly specify aTimelineand currentTracksandMetadatainstead of building a playlist structure.- Increase
minSdkto 21 (Android Lollipop). This is aligned with all other AndroidX libraries.- Add
androidx.media3:media3-common-ktxartifact which provides Kotlin-specific functionality built on top of the Common library- Add
Player.listensuspending extension function to spin a coroutine to listen toPlayer.Eventsto themedia3-common-ktxlibrary.- Remove
@DoNotInlineannotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8 now automatically out-of-line calls like these to avoid the runtime failures (so the manual out-of-lining is no longer required). All Gradle users of the library must already be a using a version of the Android Gradle Plugin that uses a version of R8 which does this, due tocompileSdk = 35. Users of the library with non-Gradle build systems will need to ensure their R8-equivalent shrinking/obfuscating step does a similar automatic out-of-lining process in order to avoid runtime class verification failures. This change has already been done in other AndroidX libraries.- ExoPlayer:
MediaCodecRenderer.onProcessedStreamChange()can now be called for every media item. Previously it was not called for the first one. UseMediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()to enable this.- Add
PreloadMediaSource.PreloadControl.onPreloadErrorto allowPreloadMediaSource.PreloadControlimplementations to take actions when error occurs.- Add
BasePreloadManager.Listenerto propagate preload events to apps.- Allow changing SNTP client timeout and retry alternative addresses on timeout (#1540).
- Remove
MediaCodecAdapter.Configuration.flagsas the field was always zero.- Allow the user to select the built-in speaker for playback on Wear OS API 35+ (where the device advertises support for this).
- Defer the blocking call to
Context.getSystemService(Context.AUDIO_SERVICE)until audio focus handling is enabled. This ensures the blocking call isn't done if audio focus handling is not enabled (#1616).- Allow playback regardless of buffered duration when loading fails (#1571).
- Add
AnalyticsListener.onRendererReadyChanged()to signal when individual renderers allow playback to be ready.- Fix
MediaCodec.CryptoExceptionsometimes being reported as an "unexpected runtime error" whenMediaCodecis operated in asynchronous mode (default behaviour on API 31+).- Pass
bufferedDurationUsinstead ofbufferedPositionUswithPreloadMediaSource.PreloadControl.onContinueLoadingRequested(). Also changesDefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MStoDefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS, apps then need to pass a value representing a specific duration from the default start position for which the corresponding media source has to be preloaded with this IntDef, instead of a position.- Add
ForwardingRendererimplementation that forwards all method calls to another renderer (1703).- Add playlist preloading for the next item in the playlist. Apps can enable preloading by calling
ExoPlayer.setPreloadConfiguration(PreloadConfiguration)accordingly. By default preloading is disabled. When opted-in and to not interfere with playback,DefaultLoadControlrestricts preloading to start and continue only when the player is not loading for playback. Apps can change this behaviour by implementingLoadControl.shouldContinuePreloading()accordingly (like when overriding this method inDefaultLoadControl). The default implementation ofLoadControldisables preloading in case an app is using a custom implementation ofLoadControl.- Add method
MediaSourceEventListener.EventDispatcher.dispatchEvent()to allow invoking events of subclass listeners (1736).- Add
DefaultPreloadManager.Builderthat builds theDefaultPreloadManagerandExoPlayerinstances with consistently shared configurations.- Remove
Renderer[]parameter fromLoadControl.onTracksSelected()asDefaultLoadControlimplementation can retrieve the stream types fromExoTrackSelection[].- Deprecated
DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])and marked method as final to prevent overrides. The newDefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])should be used instead.- Report
MediaSourceEventListenerevents from secondary sources inMergingMediaSource. This will result in load start/error/cancelled/completed events being reported for sideloaded subtitles (those added withMediaItem.LocalConfiguration.subtitleConfigurations), which may appear as duplicate load events emitted fromAnalyticsListener.- Prevent subtitle & metadata errors from completely stopping playback. Instead the problematic track is disabled and playback of the remaining tracks continues (#1722).
- In new subtitle handling (during extraction), associated parse (e.g. invalid subtitle data) and load errors (e.g. HTTP 404) are emitted via
onLoadErrorcallbacks.- In legacy subtitle handling (during rendering), only associated load errors are emitted via
onLoadErrorcallbacks while parse errors are silently ignored (this is pre-existing behaviour).- 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).
- Add a setter to
SntpClientto set the max elapsed time since the last update after which the client is re-initialized (#1794).- Transformer:
... (truncated)
Changelog
Sourced from androidx.media3:media3-exoplayer-hls's changelog.
1.5.1 (2024-12-19)
This release includes the following changes since the 1.5.0 release:
- ExoPlayer:
- Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (#1641).
- Extractors:
- MP3: Don't stop playback early when a
VBRIframe's table of contents doesn't cover all the MP3 data in a file (#1904).- Video:
- Rollback of using
MediaCodecAdaptersupplied pixel aspect ratio values when provided while processingonOutputFormatChanged(#1371).- Text:
- Fix bug in
ReplacingCuesResolver.discardCuesBeforeTimeUswhere the cue active attimeUs(started before but not yet ended) was incorrectly discarded (#1939).- Metadata:
- Extract disc/track numbering and genre from Vorbis comments into
MediaMetadata(#1958).1.5.0 (2024-11-27)
This release includes the following changes since the 1.4.1 release:
- Common Library:
- Add
ForwardingSimpleBasePlayerthat allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).- Replace
SimpleBasePlayer.State.playlistbygetPlaylist()method.- Add override for
SimpleBasePlayer.State.Builder.setPlaylist()to directly specify aTimelineand currentTracksandMetadatainstead of building a playlist structure.- Increase
minSdkto 21 (Android Lollipop). This is aligned with all other AndroidX libraries.- Add
androidx.media3:media3-common-ktxartifact which provides Kotlin-specific functionality built on top of the Common library- Add
Player.listensuspending extension function to spin a coroutine to listen toPlayer.Eventsto themedia3-common-ktxlibrary.- Remove
@DoNotInlineannotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8
... (truncated)
Commits
76088cdBump Media3 version to 1.5.17ae9ddfUpdate release notes for Media3 1.5.1 releasee4e59cdSwitch default of async crypto mode to disabled508a425Switch play FGS exemption to use custom action instead of commands52f9761Don't check codec's profile for MV-HEVC video.de91ebcAdd vorbis comment support for track/disc numbering fields, and genre5d9badcFix ReplacingCuesResolver.discardCuesBeforeTimeUs to retain active cue121b79aMerge pull request #1943 from DolbyLaboratories:dlb/ac4-ajoc/devfa9689eClarifyCommandButtonjavadoc aroundiconResIdandICON_UNDEFINEDf5bbb39Merge pull request #1823 from MGaetan89:remove_outdated_sdk_check- Additional commits viewable in compare view
Updates androidx.media3:media3-exoplayer-dash from 1.4.1 to 1.5.1
Release notes
Sourced from androidx.media3:media3-exoplayer-dash's releases.
1.5.1
This release includes the following changes since the 1.5.0 release:
- ExoPlayer:
- Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (#1641).
- Extractors:
- MP3: Don't stop playback early when a
VBRIframe's table of contents doesn't cover all the MP3 data in a file (#1904).- Video:
- Rollback of using
MediaCodecAdaptersupplied pixel aspect ratio values when provided while processingonOutputFormatChanged(#1371).- Text:
- Fix bug in
ReplacingCuesResolver.discardCuesBeforeTimeUswhere the cue active attimeUs(started before but not yet ended) was incorrectly discarded (#1939).- Metadata:
- Extract disc/track numbering and genre from Vorbis comments into
MediaMetadata(#1958).1.5.0
This release includes the following changes since the 1.4.1 release:
- Common Library:
- Add
ForwardingSimpleBasePlayerthat allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).- Replace
SimpleBasePlayer.State.playlistbygetPlaylist()method.- Add override for
SimpleBasePlayer.State.Builder.setPlaylist()to directly specify aTimelineand currentTracksandMetadatainstead of building a playlist structure.- Increase
minSdkto 21 (Android Lollipop). This is aligned with all other AndroidX libraries.- Add
androidx.media3:media3-common-ktxartifact which provides Kotlin-specific functionality built on top of the Common library- Add
Player.listensuspending extension function to spin a coroutine to listen toPlayer.Eventsto themedia3-common-ktxlibrary.- Remove
@DoNotInlineannotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8 now automatically out-of-line calls like these to avoid the runtime failures (so the manual out-of-lining is no longer required). All Gradle users of the library must already be a using a version of the Android Gradle Plugin that uses a version of R8 which does this, due tocompileSdk = 35. Users of the library with non-Gradle build systems will need to ensure their R8-equivalent shrinking/obfuscating step does a similar automatic out-of-lining process in order to avoid runtime class verification failures. This change has already been done in other AndroidX libraries.- ExoPlayer:
MediaCodecRenderer.onProcessedStreamChange()can now be called for every media item. Previously it was not called for the first one. UseMediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()to enable this.- Add
PreloadMediaSource.PreloadControl.onPreloadErrorto allowPreloadMediaSource.PreloadControlimplementations to take actions when error occurs.- Add
BasePreloadManager.Listenerto propagate preload events to apps.- Allow changing SNTP client timeout and retry alternative addresses on timeout (#1540).
- Remove
MediaCodecAdapter.Configuration.flagsas the field was always zero.- Allow the user to select the built-in speaker for playback on Wear OS API 35+ (where the device advertises support for this).
- Defer the blocking call to
Context.getSystemService(Context.AUDIO_SERVICE)until audio focus handling is enabled. This ensures the blocking call isn't done if audio focus handling is not enabled (#1616).- Allow playback regardless of buffered duration when loading fails (#1571).
- Add
AnalyticsListener.onRendererReadyChanged()to signal when individual renderers allow playback to be ready.- Fix
MediaCodec.CryptoExceptionsometimes being reported as an "unexpected runtime error" whenMediaCodecis operated in asynchronous mode (default behaviour on API 31+).- Pass
bufferedDurationUsinstead ofbufferedPositionUswithPreloadMediaSource.PreloadControl.onContinueLoadingRequested(). Also changesDefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MStoDefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS, apps then need to pass a value representing a specific duration from the default start position for which the corresponding media source has to be preloaded with this IntDef, instead of a position.- Add
ForwardingRendererimplementation that forwards all method calls to another renderer (1703).- Add playlist preloading for the next item in the playlist. Apps can enable preloading by calling
ExoPlayer.setPreloadConfiguration(PreloadConfiguration)accordingly. By default preloading is disabled. When opted-in and to not interfere with playback,DefaultLoadControlrestricts preloading to start and continue only when the player is not loading for playback. Apps can change this behaviour by implementingLoadControl.shouldContinuePreloading()accordingly (like when overriding this method inDefaultLoadControl). The default implementation ofLoadControldisables preloading in case an app is using a custom implementation ofLoadControl.- Add method
MediaSourceEventListener.EventDispatcher.dispatchEvent()to allow invoking events of subclass listeners (1736).- Add
DefaultPreloadManager.Builderthat builds theDefaultPreloadManagerandExoPlayerinstances with consistently shared configurations.- Remove
Renderer[]parameter fromLoadControl.onTracksSelected()asDefaultLoadControlimplementation can retrieve the stream types fromExoTrackSelection[].- Deprecated
DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])and marked method as final to prevent overrides. The newDefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])should be used instead.- Report
MediaSourceEventListenerevents from secondary sources inMergingMediaSource. This will result in load start/error/cancelled/completed events being reported for sideloaded subtitles (those added withMediaItem.LocalConfiguration.subtitleConfigurations), which may appear as duplicate load events emitted fromAnalyticsListener.- Prevent subtitle & metadata errors from completely stopping playback. Instead the problematic track is disabled and playback of the remaining tracks continues (#1722).
- In new subtitle handling (during extraction), associated parse (e.g. invalid subtitle data) and load errors (e.g. HTTP 404) are emitted via
onLoadErrorcallbacks.- In legacy subtitle handling (during rendering), only associated load errors are emitted via
onLoadErrorcallbacks while parse errors are silently ignored (this is pre-existing behaviour).- 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).
- Add a setter to
SntpClientto set the max elapsed time since the last update after which the client is re-initialized (#1794).- Transformer:
... (truncated)
Changelog
Sourced from androidx.media3:media3-exoplayer-dash's changelog.
1.5.1 (2024-12-19)
This release includes the following changes since the 1.5.0 release:
- ExoPlayer:
- Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (#1641).
- Extractors:
- MP3: Don't stop playback early when a
VBRIframe's table of contents doesn't cover all the MP3 data in a file (#1904).- Video:
- Rollback of using
MediaCodecAdaptersupplied pixel aspect ratio values when provided while processingonOutputFormatChanged(#1371).- Text:
- Fix bug in
ReplacingCuesResolver.discardCuesBeforeTimeUswhere the cue active attimeUs(started before but not yet ended) was incorrectly discarded (#1939).- Metadata:
- Extract disc/track numbering and genre from Vorbis comments into
MediaMetadata(#1958).1.5.0 (2024-11-27)
This release includes the following changes since the 1.4.1 release:
- Common Library:
- Add
ForwardingSimpleBasePlayerthat allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).- Replace
SimpleBasePlayer.State.playlistbygetPlaylist()method.- Add override for
SimpleBasePlayer.State.Builder.setPlaylist()to directly specify aTimelineand currentTracksandMetadatainstead of building a playlist structure.- Increase
minSdkto 21 (Android Lollipop). This is aligned with all other AndroidX libraries.- Add
androidx.media3:media3-common-ktxartifact which provides Kotlin-specific functionality built on top of the Common library- Add
Player.listensuspending extension function to spin a coroutine to listen toPlayer.Eventsto themedia3-common-ktxlibrary.- Remove
@DoNotInlineannotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8
... (truncated)
Commits
76088cdBump Media3 version to 1.5.17ae9ddfUpdate release notes for Media3 1.5.1 releasee4e59cdSwitch default of async crypto mode to disabled508a425Switch play FGS exemption to use custom action instead of commands52f9761Don't check codec's profile for MV-HEVC video.de91ebcAdd vorbis comment support for track/disc numbering fields, and genre5d9badcFix ReplacingCuesResolver.discardCuesBeforeTimeUs to retain active cue121b79aMerge pull request #1943 from DolbyLaboratories:dlb/ac4-ajoc/devfa9689eClarifyCommandButtonjavadoc aroundiconResIdandICON_UNDEFINEDf5bbb39Merge pull request #1823 from MGaetan89:remove_outdated_sdk_check- Additional commits viewable in compare view
Updates androidx.media3:media3-exoplayer-rtsp from 1.4.1 to 1.5.1
Release notes
Sourced from androidx.media3:media3-exoplayer-rtsp's releases.
1.5.1
This release includes the following changes since the 1.5.0 release:
- ExoPlayer:
- Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (#1641).
- Extractors:
- MP3: Don't stop playback early when a
VBRIframe's table of contents doesn't cover all the MP3 data in a file (#1904).- Video:
- Rollback of using
MediaCodecAdaptersupplied pixel aspect ratio values when provided while processingonOutputFormatChanged(#1371).- Text:
- Fix bug in
ReplacingCuesResolver.discardCuesBeforeTimeUswhere the cue active attimeUs(started before but not yet ended) was incorrectly discarded (#1939).- Metadata:
- Extract disc/track numbering and genre from Vorbis comments into
MediaMetadata(#1958).1.5.0
This release includes the following changes since the 1.4.1 release:
- Common Library:
- Add
ForwardingSimpleBasePlayerthat allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).- Replace
SimpleBasePlayer.State.playlistbygetPlaylist()method.- Add override for
SimpleBasePlayer.State.Builder.setPlaylist()to directly specify aTimelineand currentTracksandMetadatainstead of building a playlist structure.- Increase
minSdkto 21 (Android Lollipop). This is aligned with all other AndroidX libraries.- Add
androidx.media3:media3-common-ktxartifact which provides Kotlin-specific functionality built on top of the Common library- Add
Player.listensuspending extension function to spin a coroutine to listen toPlayer.Eventsto themedia3-common-ktxlibrary.- Remove
@DoNotInlineannotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8 now automatically out-of-line calls like these to avoid the runtime failures (so the manual out-of-lining is no longer required). All Gradle users of the library must already be a using a version of the Android Gradle Plugin that uses a version of R8 which does this, due tocompileSdk = 35. Users of the library with non-Gradle build systems will need to ensure their R8-equivalent shrinking/obfuscating step does a similar automatic out-of-lining process in order to avoid runtime class verification failures. This change has already been done in other AndroidX libraries.- ExoPlayer:
MediaCodecRenderer.onProcessedStreamChange()can now be called for every media item. Previously it was not called for the first one. UseMediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()to enable this.- Add
PreloadMediaSource.PreloadControl.onPreloadErrorto allowPreloadMediaSource.PreloadControlimplementations to take actions when error occurs.- Add
BasePreloadManager.Listenerto propagate preload events to apps.- Allow changing SNTP client timeout and retry alternative addresses on timeout (#1540).
- Remove
MediaCodecAdapter.Configuration.flagsas the field was always zero.- Allow the user to select the built-in speaker for playback on Wear OS API 35+ (where the device advertises support for this).
- Defer the blocking call to
Context.getSystemService(Context.AUDIO_SERVICE)until audio focus handling is enabled. This ensures the blocking call isn't done if audio focus handling is not enabled (#1616).- Allow playback regardless of buffered duration when loading fails (#1571).
- Add
AnalyticsListener.onRendererReadyChanged()to signal when individual renderers allow playback to be ready.- Fix
MediaCodec.CryptoExceptionsometimes being reported as an "unexpected runtime error" whenMediaCodecis operated in asynchronous mode (default behaviour on API 31+).- Pass
bufferedDurationUsinstead ofbufferedPositionUswithPreloadMediaSource.PreloadControl.onContinueLoadingRequested(). Also changesDefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MStoDefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS, apps then need to pass a value representing a specific duration from the default start position for which the corresponding media source has to be preloaded with this IntDef, instead of a position.- Add
ForwardingRendererimplementation that forwards all method calls to another renderer (1703).- Add playlist preloading for the next item in the playlist. Apps can enable preloading by calling
ExoPlayer.setPreloadConfiguration(PreloadConfiguration)accordingly. By default preloading is disabled. When opted-in and to not interfere with playback,DefaultLoadControlrestricts preloading to start and continue only when the player is not loading for playback. Apps can change this behaviour by implementingLoadControl.shouldContinuePreloading()accordingly (like when overriding this method inDefaultLoadControl). The default implementation ofLoadControldisables preloading in case an app is using a custom implementation ofLoadControl.- Add method
MediaSourceEventListener.EventDispatcher.dispatchEvent()to allow invoking events of subclass listeners (1736).- Add
DefaultPreloadManager.Builderthat builds theDefaultPreloadManagerandExoPlayerinstances with consistently shared configurations.- Remove
Renderer[]parameter fromLoadControl.onTracksSelected()asDefaultLoadControlimplementation can retrieve the stream types fromExoTrackSelection[].- Deprecated
DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])and marked method as final to prevent overrides. The newDefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])should be used instead.- Report
MediaSourceEventListenerevents from secondary sources inMergingMediaSource. This will result in load start/error/cancelled/completed events being reported for sideloaded subtitles (those added withMediaItem.LocalConfiguration.subtitleConfigurations), which may appear as duplicate load events emitted fromAnalyticsListener.- Prevent subtitle & metadata errors from completely stopping playback. Instead the problematic track is disabled and playback of the remaining tracks continues (#1722).
- In new subtitle handling (during extraction), associated parse (e.g. invalid subtitle data) and load errors (e.g. HTTP 404) are emitted via
onLoadErrorcallbacks.- In legacy subtitle handling (during rendering), only associated load errors are emitted via
onLoadErrorcallbacks while parse errors are silently ignored (this is pre-existing behaviour).- 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).
- Add a setter to
SntpClientto set the max elapsed time since the last update after which the client is re-initialized (#1794).- Transformer:
... (truncated)
Changelog
Sourced from androidx.media3:media3-exoplayer-rtsp's changelog.
1.5.1 (2024-12-19)
This release includes the following changes since the 1.5.0 release:
- ExoPlayer:
- Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (#1641).
- Extractors:
- MP3: Don't stop playback early when a
VBRIframe's table of contents doesn't cover all the MP3 data in a file (#1904).- Video:
- Rollback of using
MediaCodecAdaptersupplied pixel aspect ratio values when provided while processingonOutputFormatChanged(#1371).- Text:
- Fix bug in
ReplacingCuesResolver.discardCuesBeforeTimeUswhere the cue active attimeUs(started before but not yet ended) was incorrectly discarded (#1939).- Metadata:
- Extract disc/track numbering and genre from Vorbis comments into
MediaMetadata(#1958).1.5.0 (2024-11-27)
This release includes the following changes since the 1.4.1 release:
- Common Library:
- Add
ForwardingSimpleBasePlayerthat allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).- Replace
SimpleBasePlayer.State.playlistbygetPlaylist()method.- Add override for
SimpleBasePlayer.State.Builder.setPlaylist()to directly specify aTimelineand currentTracksandMetadatainstead of building a playlist structure.- Increase
minSdkto 21 (Android Lollipop). This is aligned with all other AndroidX libraries.- Add
androidx.media3:media3-common-ktxartifact which provides Kotlin-specific functionality built on top of the Common library- Add
Player.listensuspending extension function to spin a coroutine to listen toPlayer.Eventsto themedia3-common-ktxlibrary.- Remove
@DoNotInlineannotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8
... (truncated)
Commits
76088cdBump Media3 version to 1.5.17ae9ddfUpdate release notes for Media3 1.5.1 releasee4e59cdSwitch default of async crypto mode to disabled508a425Switch play FGS exemption to use custom action instead of commands52f9761Don't check codec's profile for MV-HEVC video.de91ebcAdd vorbis comment support for track/disc numbering fields, and genre5d9badcFix ReplacingCuesResolver.discardCuesBeforeTimeUs to retain active cue121b79aMerge pull request #1943 from DolbyLaboratories:dlb/ac4-ajoc/devfa9689eClarifyCommandButtonjavadoc aroundiconResIdandICON_UNDEFINEDf5bbb39Merge pull request #1823 from MGaetan89:remove_outdated_sdk_check- Additional commits viewable in compare view
Updates androidx.media3:media3-exoplayer-smoothstreaming from 1.4.1 to 1.5.1
Release notes
Sourced from androidx.media3:media3-exoplayer-smoothstreaming's releases.
1.5.1
This release includes the following changes since the 1.5.0 release:
- ExoPlayer:
- Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (#1641).
- Extractors:
- MP3: Don't stop playback early when a
VBRIframe's table of contents doesn't cover all the MP3 data in a file (#1904).- Video:
- Rollback of using
MediaCodecAdaptersupplied pixel aspect ratio values when provided while processingonOutputFormatChanged(#1371).- Text:
- Fix bug in
ReplacingCuesResolver.discardCuesBeforeTimeUswhere the cue active attimeUs(started before but not yet ended) was incorrectly discarded (#1939).- Metadata:
- Extract disc/track numbering and genre from Vorbis comments into
MediaMetadata(#1958).1.5.0
This release includes the following changes since the 1.4.1 release:
- Common Library:
- Add
ForwardingSimpleBasePlayerthat allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).- Replace
SimpleBasePlayer.State.playlistbygetPlaylist()method.- Add override for
SimpleBasePlayer.State.Builder.setPlaylist()to directly specify aTimelineand currentTracksandMetadatainstead of building a playlist structure.- Increase
minSdkto 21 (Android Lollipop). This is aligned with all other AndroidX libraries.- Add
androidx.media3:media3-common-ktxartifact which provides Kotlin-specific functionality built on top of the Common library- Add
Player.listensuspending extension function to spin a coroutine to listen toPlayer.Eventsto themedia3-common-ktxlibrary.- Remove
@DoNotInlineannotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8 now automatically out-of-line calls like these to avoid the runtime failures (so the manual out-of-lining is no longer required). All Gradle users of the library must already be a using a version of the Android Gradle Plugin that uses a version of R8 which does this, due tocompileSdk = 35. Users of the library with non-Gradle build systems will need to ensure their R8-equivalent shrinking/obfuscating step does a similar automatic out-of-lining process in order to avoid runtime class verification failures. This change has already been done in other AndroidX libraries.- ExoPlayer:
MediaCodecRenderer.onProcessedStreamChange()can now be called for every media item. Previously it was not called for the first one. UseMediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()to enable this.- Add
PreloadMediaSource.PreloadControl.onPreloadErrorto allowPreloadMediaSource.PreloadControlimplementations to take actions when error occurs.- Add
BasePreloadManager.Listenerto propagate preload events to apps.- Allow changing SNTP client timeout and retry alternative addresses on timeout (#1540).
- Remove
MediaCodecAdapter.Configuration.flagsas the fie...Description has been truncated
Note Automatic rebases have been disabled on this pull request as it has been open for over 30 days.
auto label is removed for flutter/packages/8414, due to - The status or check suite Linux_android android_build_all_packages master has failed. Please fix the issues identified (or deflake) before re-applying this label.
- The status or check suite Linux repo_checks has failed. Please fix the issues identified (or deflake) before re-applying this label.
Based on the failures, this requires updating everything to build against API 35.
@stuartmorgan does this mean that the current version of video_player can't be built against Android API 35?
This would become a serious problem for our production app.
does this mean that the current version of
video_playercan't be built against Android API 35?
No, it does not.
@camsim99 Is the Android team planning on updating this PR to work, or should we close it for now?
Based on the failures, this requires updating everything to build against API 35.
This comment predates the switch to flutter.compileSdkVersion, so it hopefully doesn't apply any more; rebasing to see if things work now.
Looks like the all-packages build will need to update to 35, which should be fine since the error message is extremely clear about what to do.
Once we do that, there's a package-specific issue to resolve:
Task :video_player_android:compileDebugJavaWithJavac FAILED /b/s/w/ir/x/w/packages/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/texture/TextureExoPlayerEventListener.java:45: warning: [deprecation] unappliedRotationDegrees in VideoSize has been deprecated RotationDegrees.fromDegrees(videoSize.unappliedRotationDegrees);
Ah sorry yeah I was under the impression that we weren't ready to bump the all packages app yet, but if we can now that sounds good! I can get to that within the next week, then try landing this PR unless you beat me to it.
Ah sorry yeah I was under the impression that we weren't ready to bump the all packages app yet
Usually we do it based on Flutter Fix, but here the raw error message is (unusually!) so clear that I don't think we need one.
Lol unusual indeed! Sounds good.
Bump requires fix:
> Compilation failed; see the compiler output below.
/b/s/w/ir/x/w/packages/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/texture/TextureExoPlayerEventListener.java:41: warning: [deprecation] unappliedRotationDegrees in VideoSize has been deprecated
RotationDegrees.fromDegrees(videoSize.unappliedRotationDegrees);
^
error: warnings found and -Werror specified
1 error
1 warning
According to https://developer.android.com/reference/androidx/media3/common/VideoSize#unappliedRotationDegrees(), sounds like this will always return 0 now? So, I think we can remove this clause and get the rotation correction soley based on whether or not the SurfaceProducer handles crop and rotation automatically.