packages icon indicating copy to clipboard operation
packages copied to clipboard

[dependabot]: Bump exoplayer_version from 1.4.1 to 1.5.1 in /packages/video_player/video_player_android/android

Open dependabot[bot] opened this issue 1 year ago • 11 comments

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 VBRI frame's table of contents doesn't cover all the MP3 data in a file (#1904).
  • Video:
    • Rollback of using MediaCodecAdapter supplied pixel aspect ratio values when provided while processing onOutputFormatChanged (#1371).
  • Text:
    • Fix bug in ReplacingCuesResolver.discardCuesBeforeTimeUs where the cue active at timeUs (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 ForwardingSimpleBasePlayer that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).
    • Replace SimpleBasePlayer.State.playlist by getPlaylist() method.
    • Add override for SimpleBasePlayer.State.Builder.setPlaylist() to directly specify a Timeline and current Tracks and Metadata instead of building a playlist structure.
    • Increase minSdk to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.
    • Add androidx.media3:media3-common-ktx artifact which provides Kotlin-specific functionality built on top of the Common library
    • Add Player.listen suspending extension function to spin a coroutine to listen to Player.Events to the media3-common-ktx library.
    • Remove @DoNotInline annotations 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 to compileSdk = 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. Use MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart() to enable this.
    • Add PreloadMediaSource.PreloadControl.onPreloadError to allow PreloadMediaSource.PreloadControl implementations to take actions when error occurs.
    • Add BasePreloadManager.Listener to propagate preload events to apps.
    • Allow changing SNTP client timeout and retry alternative addresses on timeout (#1540).
    • Remove MediaCodecAdapter.Configuration.flags as 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.CryptoException sometimes being reported as an "unexpected runtime error" when MediaCodec is operated in asynchronous mode (default behaviour on API 31+).
    • Pass bufferedDurationUs instead of bufferedPositionUs with PreloadMediaSource.PreloadControl.onContinueLoadingRequested(). Also changes DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS to DefaultPreloadManager.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 ForwardingRenderer implementation 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, DefaultLoadControl restricts preloading to start and continue only when the player is not loading for playback. Apps can change this behaviour by implementing LoadControl.shouldContinuePreloading() accordingly (like when overriding this method in DefaultLoadControl). The default implementation of LoadControl disables preloading in case an app is using a custom implementation of LoadControl.
    • Add method MediaSourceEventListener.EventDispatcher.dispatchEvent() to allow invoking events of subclass listeners (1736).
    • Add DefaultPreloadManager.Builder that builds the DefaultPreloadManager and ExoPlayer instances with consistently shared configurations.
    • Remove Renderer[] parameter from LoadControl.onTracksSelected() as DefaultLoadControl implementation can retrieve the stream types from ExoTrackSelection[].
    • Deprecated DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[]) and marked method as final to prevent overrides. The new DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[]) should be used instead.
    • Report MediaSourceEventListener events from secondary sources in MergingMediaSource. This will result in load start/error/cancelled/completed events being reported for sideloaded subtitles (those added with MediaItem.LocalConfiguration.subtitleConfigurations), which may appear as duplicate load events emitted from AnalyticsListener.
    • 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 onLoadError callbacks.
      • In legacy subtitle handling (during rendering), only associated load errors are emitted via onLoadError callbacks 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 SntpClient to 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 VBRI frame's table of contents doesn't cover all the MP3 data in a file (#1904).
  • Video:
    • Rollback of using MediaCodecAdapter supplied pixel aspect ratio values when provided while processing onOutputFormatChanged (#1371).
  • Text:
    • Fix bug in ReplacingCuesResolver.discardCuesBeforeTimeUs where the cue active at timeUs (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 ForwardingSimpleBasePlayer that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).
    • Replace SimpleBasePlayer.State.playlist by getPlaylist() method.
    • Add override for SimpleBasePlayer.State.Builder.setPlaylist() to directly specify a Timeline and current Tracks and Metadata instead of building a playlist structure.
    • Increase minSdk to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.
    • Add androidx.media3:media3-common-ktx artifact which provides Kotlin-specific functionality built on top of the Common library
    • Add Player.listen suspending extension function to spin a coroutine to listen to Player.Events to the media3-common-ktx library.
    • Remove @DoNotInline annotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8

... (truncated)

Commits
  • 76088cd Bump Media3 version to 1.5.1
  • 7ae9ddf Update release notes for Media3 1.5.1 release
  • e4e59cd Switch default of async crypto mode to disabled
  • 508a425 Switch play FGS exemption to use custom action instead of commands
  • 52f9761 Don't check codec's profile for MV-HEVC video.
  • de91ebc Add vorbis comment support for track/disc numbering fields, and genre
  • 5d9badc Fix ReplacingCuesResolver.discardCuesBeforeTimeUs to retain active cue
  • 121b79a Merge pull request #1943 from DolbyLaboratories:dlb/ac4-ajoc/dev
  • fa9689e Clarify CommandButton javadoc around iconResId and ICON_UNDEFINED
  • f5bbb39 Merge 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 VBRI frame's table of contents doesn't cover all the MP3 data in a file (#1904).
  • Video:
    • Rollback of using MediaCodecAdapter supplied pixel aspect ratio values when provided while processing onOutputFormatChanged (#1371).
  • Text:
    • Fix bug in ReplacingCuesResolver.discardCuesBeforeTimeUs where the cue active at timeUs (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 ForwardingSimpleBasePlayer that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).
    • Replace SimpleBasePlayer.State.playlist by getPlaylist() method.
    • Add override for SimpleBasePlayer.State.Builder.setPlaylist() to directly specify a Timeline and current Tracks and Metadata instead of building a playlist structure.
    • Increase minSdk to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.
    • Add androidx.media3:media3-common-ktx artifact which provides Kotlin-specific functionality built on top of the Common library
    • Add Player.listen suspending extension function to spin a coroutine to listen to Player.Events to the media3-common-ktx library.
    • Remove @DoNotInline annotations 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 to compileSdk = 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. Use MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart() to enable this.
    • Add PreloadMediaSource.PreloadControl.onPreloadError to allow PreloadMediaSource.PreloadControl implementations to take actions when error occurs.
    • Add BasePreloadManager.Listener to propagate preload events to apps.
    • Allow changing SNTP client timeout and retry alternative addresses on timeout (#1540).
    • Remove MediaCodecAdapter.Configuration.flags as 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.CryptoException sometimes being reported as an "unexpected runtime error" when MediaCodec is operated in asynchronous mode (default behaviour on API 31+).
    • Pass bufferedDurationUs instead of bufferedPositionUs with PreloadMediaSource.PreloadControl.onContinueLoadingRequested(). Also changes DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS to DefaultPreloadManager.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 ForwardingRenderer implementation 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, DefaultLoadControl restricts preloading to start and continue only when the player is not loading for playback. Apps can change this behaviour by implementing LoadControl.shouldContinuePreloading() accordingly (like when overriding this method in DefaultLoadControl). The default implementation of LoadControl disables preloading in case an app is using a custom implementation of LoadControl.
    • Add method MediaSourceEventListener.EventDispatcher.dispatchEvent() to allow invoking events of subclass listeners (1736).
    • Add DefaultPreloadManager.Builder that builds the DefaultPreloadManager and ExoPlayer instances with consistently shared configurations.
    • Remove Renderer[] parameter from LoadControl.onTracksSelected() as DefaultLoadControl implementation can retrieve the stream types from ExoTrackSelection[].
    • Deprecated DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[]) and marked method as final to prevent overrides. The new DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[]) should be used instead.
    • Report MediaSourceEventListener events from secondary sources in MergingMediaSource. This will result in load start/error/cancelled/completed events being reported for sideloaded subtitles (those added with MediaItem.LocalConfiguration.subtitleConfigurations), which may appear as duplicate load events emitted from AnalyticsListener.
    • 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 onLoadError callbacks.
      • In legacy subtitle handling (during rendering), only associated load errors are emitted via onLoadError callbacks 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 SntpClient to 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 VBRI frame's table of contents doesn't cover all the MP3 data in a file (#1904).
  • Video:
    • Rollback of using MediaCodecAdapter supplied pixel aspect ratio values when provided while processing onOutputFormatChanged (#1371).
  • Text:
    • Fix bug in ReplacingCuesResolver.discardCuesBeforeTimeUs where the cue active at timeUs (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 ForwardingSimpleBasePlayer that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).
    • Replace SimpleBasePlayer.State.playlist by getPlaylist() method.
    • Add override for SimpleBasePlayer.State.Builder.setPlaylist() to directly specify a Timeline and current Tracks and Metadata instead of building a playlist structure.
    • Increase minSdk to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.
    • Add androidx.media3:media3-common-ktx artifact which provides Kotlin-specific functionality built on top of the Common library
    • Add Player.listen suspending extension function to spin a coroutine to listen to Player.Events to the media3-common-ktx library.
    • Remove @DoNotInline annotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8

... (truncated)

Commits
  • 76088cd Bump Media3 version to 1.5.1
  • 7ae9ddf Update release notes for Media3 1.5.1 release
  • e4e59cd Switch default of async crypto mode to disabled
  • 508a425 Switch play FGS exemption to use custom action instead of commands
  • 52f9761 Don't check codec's profile for MV-HEVC video.
  • de91ebc Add vorbis comment support for track/disc numbering fields, and genre
  • 5d9badc Fix ReplacingCuesResolver.discardCuesBeforeTimeUs to retain active cue
  • 121b79a Merge pull request #1943 from DolbyLaboratories:dlb/ac4-ajoc/dev
  • fa9689e Clarify CommandButton javadoc around iconResId and ICON_UNDEFINED
  • f5bbb39 Merge 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 VBRI frame's table of contents doesn't cover all the MP3 data in a file (#1904).
  • Video:
    • Rollback of using MediaCodecAdapter supplied pixel aspect ratio values when provided while processing onOutputFormatChanged (#1371).
  • Text:
    • Fix bug in ReplacingCuesResolver.discardCuesBeforeTimeUs where the cue active at timeUs (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 ForwardingSimpleBasePlayer that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).
    • Replace SimpleBasePlayer.State.playlist by getPlaylist() method.
    • Add override for SimpleBasePlayer.State.Builder.setPlaylist() to directly specify a Timeline and current Tracks and Metadata instead of building a playlist structure.
    • Increase minSdk to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.
    • Add androidx.media3:media3-common-ktx artifact which provides Kotlin-specific functionality built on top of the Common library
    • Add Player.listen suspending extension function to spin a coroutine to listen to Player.Events to the media3-common-ktx library.
    • Remove @DoNotInline annotations 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 to compileSdk = 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. Use MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart() to enable this.
    • Add PreloadMediaSource.PreloadControl.onPreloadError to allow PreloadMediaSource.PreloadControl implementations to take actions when error occurs.
    • Add BasePreloadManager.Listener to propagate preload events to apps.
    • Allow changing SNTP client timeout and retry alternative addresses on timeout (#1540).
    • Remove MediaCodecAdapter.Configuration.flags as 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.CryptoException sometimes being reported as an "unexpected runtime error" when MediaCodec is operated in asynchronous mode (default behaviour on API 31+).
    • Pass bufferedDurationUs instead of bufferedPositionUs with PreloadMediaSource.PreloadControl.onContinueLoadingRequested(). Also changes DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS to DefaultPreloadManager.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 ForwardingRenderer implementation 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, DefaultLoadControl restricts preloading to start and continue only when the player is not loading for playback. Apps can change this behaviour by implementing LoadControl.shouldContinuePreloading() accordingly (like when overriding this method in DefaultLoadControl). The default implementation of LoadControl disables preloading in case an app is using a custom implementation of LoadControl.
    • Add method MediaSourceEventListener.EventDispatcher.dispatchEvent() to allow invoking events of subclass listeners (1736).
    • Add DefaultPreloadManager.Builder that builds the DefaultPreloadManager and ExoPlayer instances with consistently shared configurations.
    • Remove Renderer[] parameter from LoadControl.onTracksSelected() as DefaultLoadControl implementation can retrieve the stream types from ExoTrackSelection[].
    • Deprecated DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[]) and marked method as final to prevent overrides. The new DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[]) should be used instead.
    • Report MediaSourceEventListener events from secondary sources in MergingMediaSource. This will result in load start/error/cancelled/completed events being reported for sideloaded subtitles (those added with MediaItem.LocalConfiguration.subtitleConfigurations), which may appear as duplicate load events emitted from AnalyticsListener.
    • 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 onLoadError callbacks.
      • In legacy subtitle handling (during rendering), only associated load errors are emitted via onLoadError callbacks 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 SntpClient to 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 VBRI frame's table of contents doesn't cover all the MP3 data in a file (#1904).
  • Video:
    • Rollback of using MediaCodecAdapter supplied pixel aspect ratio values when provided while processing onOutputFormatChanged (#1371).
  • Text:
    • Fix bug in ReplacingCuesResolver.discardCuesBeforeTimeUs where the cue active at timeUs (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 ForwardingSimpleBasePlayer that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).
    • Replace SimpleBasePlayer.State.playlist by getPlaylist() method.
    • Add override for SimpleBasePlayer.State.Builder.setPlaylist() to directly specify a Timeline and current Tracks and Metadata instead of building a playlist structure.
    • Increase minSdk to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.
    • Add androidx.media3:media3-common-ktx artifact which provides Kotlin-specific functionality built on top of the Common library
    • Add Player.listen suspending extension function to spin a coroutine to listen to Player.Events to the media3-common-ktx library.
    • Remove @DoNotInline annotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8

... (truncated)

Commits
  • 76088cd Bump Media3 version to 1.5.1
  • 7ae9ddf Update release notes for Media3 1.5.1 release
  • e4e59cd Switch default of async crypto mode to disabled
  • 508a425 Switch play FGS exemption to use custom action instead of commands
  • 52f9761 Don't check codec's profile for MV-HEVC video.
  • de91ebc Add vorbis comment support for track/disc numbering fields, and genre
  • 5d9badc Fix ReplacingCuesResolver.discardCuesBeforeTimeUs to retain active cue
  • 121b79a Merge pull request #1943 from DolbyLaboratories:dlb/ac4-ajoc/dev
  • fa9689e Clarify CommandButton javadoc around iconResId and ICON_UNDEFINED
  • f5bbb39 Merge 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 VBRI frame's table of contents doesn't cover all the MP3 data in a file (#1904).
  • Video:
    • Rollback of using MediaCodecAdapter supplied pixel aspect ratio values when provided while processing onOutputFormatChanged (#1371).
  • Text:
    • Fix bug in ReplacingCuesResolver.discardCuesBeforeTimeUs where the cue active at timeUs (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 ForwardingSimpleBasePlayer that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).
    • Replace SimpleBasePlayer.State.playlist by getPlaylist() method.
    • Add override for SimpleBasePlayer.State.Builder.setPlaylist() to directly specify a Timeline and current Tracks and Metadata instead of building a playlist structure.
    • Increase minSdk to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.
    • Add androidx.media3:media3-common-ktx artifact which provides Kotlin-specific functionality built on top of the Common library
    • Add Player.listen suspending extension function to spin a coroutine to listen to Player.Events to the media3-common-ktx library.
    • Remove @DoNotInline annotations 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 to compileSdk = 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. Use MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart() to enable this.
    • Add PreloadMediaSource.PreloadControl.onPreloadError to allow PreloadMediaSource.PreloadControl implementations to take actions when error occurs.
    • Add BasePreloadManager.Listener to propagate preload events to apps.
    • Allow changing SNTP client timeout and retry alternative addresses on timeout (#1540).
    • Remove MediaCodecAdapter.Configuration.flags as 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.CryptoException sometimes being reported as an "unexpected runtime error" when MediaCodec is operated in asynchronous mode (default behaviour on API 31+).
    • Pass bufferedDurationUs instead of bufferedPositionUs with PreloadMediaSource.PreloadControl.onContinueLoadingRequested(). Also changes DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS to DefaultPreloadManager.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 ForwardingRenderer implementation 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, DefaultLoadControl restricts preloading to start and continue only when the player is not loading for playback. Apps can change this behaviour by implementing LoadControl.shouldContinuePreloading() accordingly (like when overriding this method in DefaultLoadControl). The default implementation of LoadControl disables preloading in case an app is using a custom implementation of LoadControl.
    • Add method MediaSourceEventListener.EventDispatcher.dispatchEvent() to allow invoking events of subclass listeners (1736).
    • Add DefaultPreloadManager.Builder that builds the DefaultPreloadManager and ExoPlayer instances with consistently shared configurations.
    • Remove Renderer[] parameter from LoadControl.onTracksSelected() as DefaultLoadControl implementation can retrieve the stream types from ExoTrackSelection[].
    • Deprecated DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[]) and marked method as final to prevent overrides. The new DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[]) should be used instead.
    • Report MediaSourceEventListener events from secondary sources in MergingMediaSource. This will result in load start/error/cancelled/completed events being reported for sideloaded subtitles (those added with MediaItem.LocalConfiguration.subtitleConfigurations), which may appear as duplicate load events emitted from AnalyticsListener.
    • 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 onLoadError callbacks.
      • In legacy subtitle handling (during rendering), only associated load errors are emitted via onLoadError callbacks 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 SntpClient to 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 VBRI frame's table of contents doesn't cover all the MP3 data in a file (#1904).
  • Video:
    • Rollback of using MediaCodecAdapter supplied pixel aspect ratio values when provided while processing onOutputFormatChanged (#1371).
  • Text:
    • Fix bug in ReplacingCuesResolver.discardCuesBeforeTimeUs where the cue active at timeUs (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 ForwardingSimpleBasePlayer that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).
    • Replace SimpleBasePlayer.State.playlist by getPlaylist() method.
    • Add override for SimpleBasePlayer.State.Builder.setPlaylist() to directly specify a Timeline and current Tracks and Metadata instead of building a playlist structure.
    • Increase minSdk to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.
    • Add androidx.media3:media3-common-ktx artifact which provides Kotlin-specific functionality built on top of the Common library
    • Add Player.listen suspending extension function to spin a coroutine to listen to Player.Events to the media3-common-ktx library.
    • Remove @DoNotInline annotations from manually out-of-lined inner classes designed to avoid runtime class verification failures. Recent versions of R8

... (truncated)

Commits
  • 76088cd Bump Media3 version to 1.5.1
  • 7ae9ddf Update release notes for Media3 1.5.1 release
  • e4e59cd Switch default of async crypto mode to disabled
  • 508a425 Switch play FGS exemption to use custom action instead of commands
  • 52f9761 Don't check codec's profile for MV-HEVC video.
  • de91ebc Add vorbis comment support for track/disc numbering fields, and genre
  • 5d9badc Fix ReplacingCuesResolver.discardCuesBeforeTimeUs to retain active cue
  • 121b79a Merge pull request #1943 from DolbyLaboratories:dlb/ac4-ajoc/dev
  • fa9689e Clarify CommandButton javadoc around iconResId and ICON_UNDEFINED
  • f5bbb39 Merge 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 VBRI frame's table of contents doesn't cover all the MP3 data in a file (#1904).
  • Video:
    • Rollback of using MediaCodecAdapter supplied pixel aspect ratio values when provided while processing onOutputFormatChanged (#1371).
  • Text:
    • Fix bug in ReplacingCuesResolver.discardCuesBeforeTimeUs where the cue active at timeUs (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 ForwardingSimpleBasePlayer that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (#1183).
    • Replace SimpleBasePlayer.State.playlist by getPlaylist() method.
    • Add override for SimpleBasePlayer.State.Builder.setPlaylist() to directly specify a Timeline and current Tracks and Metadata instead of building a playlist structure.
    • Increase minSdk to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.
    • Add androidx.media3:media3-common-ktx artifact which provides Kotlin-specific functionality built on top of the Common library
    • Add Player.listen suspending extension function to spin a coroutine to listen to Player.Events to the media3-common-ktx library.
    • Remove @DoNotInline annotations 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 to compileSdk = 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. Use MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart() to enable this.
    • Add PreloadMediaSource.PreloadControl.onPreloadError to allow PreloadMediaSource.PreloadControl implementations to take actions when error occurs.
    • Add BasePreloadManager.Listener to propagate preload events to apps.
    • Allow changing SNTP client timeout and retry alternative addresses on timeout (#1540).
    • Remove MediaCodecAdapter.Configuration.flags as 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.

dependabot[bot] avatar Jan 10 '25 23:01 dependabot[bot]

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.

auto-submit[bot] avatar Jan 10 '25 23:01 auto-submit[bot]

Based on the failures, this requires updating everything to build against API 35.

stuartmorgan-g avatar Jan 15 '25 01:01 stuartmorgan-g

@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.

ezamagni avatar Feb 11 '25 15:02 ezamagni

does this mean that the current version of video_player can't be built against Android API 35?

No, it does not.

stuartmorgan-g avatar Feb 11 '25 16:02 stuartmorgan-g

@camsim99 Is the Android team planning on updating this PR to work, or should we close it for now?

stuartmorgan-g avatar Apr 22 '25 19:04 stuartmorgan-g

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.

stuartmorgan-g avatar Apr 24 '25 14:04 stuartmorgan-g

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);

stuartmorgan-g avatar Apr 24 '25 17:04 stuartmorgan-g

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.

camsim99 avatar Apr 24 '25 17:04 camsim99

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.

stuartmorgan-g avatar Apr 24 '25 17:04 stuartmorgan-g

Lol unusual indeed! Sounds good.

camsim99 avatar Apr 24 '25 17:04 camsim99

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.

camsim99 avatar Jun 09 '25 21:06 camsim99