Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump media3_version from 1.3.1 to 1.4.0 #689

Merged
merged 1 commit into from
Jul 27, 2024

Conversation

dependabot[bot]
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Jul 27, 2024

Bumps media3_version from 1.3.1 to 1.4.0.
Updates androidx.media3:media3-common from 1.3.1 to 1.4.0

Release notes

Sourced from androidx.media3:media3-common's releases.

1.4.0

This release includes the following changes since the 1.3.1 release:

  • Common Library:
    • Forward presumed no-op seek calls to the protected BasePlayer.seekTo() and SimpleBasePlayer.handleSeek() methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with mediaItemIndex == C.INDEX_UNSET.
    • Remove compile dependency on enhanced Java 8 desugaring (#1312).
    • Ensure the duration passed to MediaItem.Builder.setImageDurationMs() is ignored for a non-image MediaItem (as documented).
    • Add Format.customData to store app-provided custom information about Format instances.
  • ExoPlayer:
    • Add BasePreloadManager which coordinates the preloading for multiple sources based on the priorities defined by their rankingData. Customization is possible by extending this class. Add DefaultPreloadManager which uses PreloadMediaSource to preload media samples of the sources into memory, and uses an integer rankingData that indicates the index of an item on the UI.
    • Add PlayerId to most methods of LoadControl to enable LoadControl implementations to support multiple players.
    • Remove Buffer.isDecodeOnly() and C.BUFFER_FLAG_DECODE_ONLY. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom Renderer implementations should check if the buffer time is at least BaseRenderer.getLastResetPositionUs() to decide whether a sample should be shown. Custom SimpleDecoder implementations can check isAtLeastOutputStartTimeUs() if needed or mark other buffers with DecoderOutputBuffer.shouldBeSkipped to skip them.
    • Allow a null value to be returned by TargetPreloadStatusControl.getTargetPreloadStatus(T) to indicate not to preload a MediaSource with the given rankingData.
    • Add remove(MediaSource) to BasePreloadManager.
    • Add reset() to BasePreloadManager to release all the holding sources while keep the preload manager instance.
    • Add ExoPlayer.setPriority() (and Builder.setPriority()) to define the priority value used in PriorityTaskManager and for MediaCodec importance from API 35.
    • Fix issue with updating the last rebuffer time which resulted in incorrect bs (buffer starvation) key in CMCD (#1124).
    • Add PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) to indicate that the source has loaded to the end. This allows the DefaultPreloadManager and the custom PreloadMediaSource.PreloadControl implementations to preload the next source or take other actions.
    • Fix bug where silence skipping at the end of items can trigger a playback exception.
    • Add clear to PreloadMediaSource to discard the preloading period.
    • Add new error code PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED that is used when codec resources are reclaimed for higher priority tasks.
    • Let AdsMediaSource load preroll ads before initial content media preparation completes (#1358).
    • Fix bug where playback moved to STATE_ENDED when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.
    • Rename onTimelineRefreshed() to onSourcePrepared() and onPrepared() to onTracksSelected() in PreloadMediaSource.PreloadControl. Also rename the IntDefs in DefaultPreloadManager.Stage accordingly.
    • Add experimental support for dynamic scheduling to better align work with CPU wake-cycles and delay waking up to when renderers can progress. You can enable this using experimentalSetDynamicSchedulingEnabled() when setting up your ExoPlayer instance.
    • Add Renderer.getDurationToProgressUs(). A Renderer can implement this method to return to ExoPlayer the duration that playback must advance for the renderer to progress. If ExoPlayer is set with experimentalSetDynamicSchedulingEnabled() then ExoPlayer will call this method when calculating the time to schedule its work task.
    • Add MediaCodecAdapter#OnBufferAvailableListener to alert when input and output buffers are available for use by MediaCodecRenderer. MediaCodecRenderer will signal ExoPlayer when receiving these callbacks and if ExoPlayer is set with experimentalSetDynamicSchedulingEnabled(), then ExoPlayer will schedule its work loop as renderers can make progress.
    • Use data class for LoadControl methods instead of individual parameters.
    • Add ExoPlayer.isReleased() to check whether Exoplayer.release() has been called.
    • Add ExoPlayer.Builder.setMaxSeekToPreviousPositionMs() to configure the maximum position for which seekToPrevious() seeks to the previous item (#1425).
    • Fix some audio focus inconsistencies, e.g. not reporting full or transient focus loss while the player is paused (#1436).
    • Fix potential IndexOutOfBoundsException caused by extractors reporting additional tracks after the initial preparation step (#1476).
    • Effects in ExoPlayer.setVideoEffect() will receive the timestamps with the renderer offset removed (#1098).
    • Fix potential IllegalArgumentException when handling player error that happened while reading ahead into another playlist item (#1483).
  • Transformer:
    • Add audioConversionProcess and videoConversionProcess to ExportResult indicating how the respective track in the output file was made.
    • Relax trim optimization H.264 level checks.
    • Add support for changing between SDR and HDR input media in a sequence.
    • Add support for composition-level audio effects.
    • Add support for transcoding Ultra HDR images into HDR videos.
    • Fix issue where the DefaultAudioMixer does not output the correct amount of bytes after being reset and reused.
    • Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input.
    • When selecting tracks in ExoPlayerAssetLoader, ignore audio channel count constraints as they only apply for playback.
    • Replace androidx.media3.transformer.Muxer interface with androidx.media3.muxer.Muxer and remove androidx.media3.transformer.Muxer.
    • Fix HEIC image loading from content URI schemes (#1373).
    • Adjust audio track duration in AudioGraphInput to improve AV sync.
    • Remove ExportResult.processedInputs field. If you use this field for codec details, then use DefaultDecoderFactory.listener instead. In case of a codec exception, codec details will be available in the ExportException.codecInfo.
  • Extractors:
    • MPEG-TS: Roll forward the change ensuring the last frame is rendered by passing the last access unit of a stream to the sample queue (#7909). Incorporating fixes to resolve the issues that emerged in I-frame only HLS streams(#1150) and H.262 HLS streams (#1126).
    • MP3: Prefer the data size from an Info frame over the size reported by the underlying stream (e.g. file size, or HTTP Content-Length header). This helps to exclude non-playable trailer data (e.g. album artwork) from constant bitrate seeking calculations, making seeks more accurate (#1376).

... (truncated)

Changelog

Sourced from androidx.media3:media3-common's changelog.

1.4.0 (2024-07-24)

This release includes the following changes since the 1.3.1 release:

  • Common Library:
    • Forward presumed no-op seek calls to the protected BasePlayer.seekTo() and SimpleBasePlayer.handleSeek() methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with mediaItemIndex == C.INDEX_UNSET.
    • Remove compile dependency on enhanced Java 8 desugaring (#1312).
    • Ensure the duration passed to MediaItem.Builder.setImageDurationMs() is ignored for a non-image MediaItem (as documented).
    • Add Format.customData to store app-provided custom information about Format instances.
  • ExoPlayer:
    • Add BasePreloadManager which coordinates the preloading for multiple sources based on the priorities defined by their rankingData. Customization is possible by extending this class. Add DefaultPreloadManager which uses PreloadMediaSource to preload media samples of the sources into memory, and uses an integer rankingData that indicates the index of an item on the UI.
    • Add PlayerId to most methods of LoadControl to enable LoadControl implementations to support multiple players.
    • Remove Buffer.isDecodeOnly() and C.BUFFER_FLAG_DECODE_ONLY. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom Renderer implementations should check if the buffer time is at least BaseRenderer.getLastResetPositionUs() to decide whether a sample should be shown. Custom SimpleDecoder implementations can check isAtLeastOutputStartTimeUs() if needed or mark other buffers with DecoderOutputBuffer.shouldBeSkipped to skip them.
    • Allow a null value to be returned by TargetPreloadStatusControl.getTargetPreloadStatus(T) to indicate not to preload a MediaSource with the given rankingData.
    • Add remove(MediaSource) to BasePreloadManager.
    • Add reset() to BasePreloadManager to release all the holding sources while keep the preload manager instance.
    • Add ExoPlayer.setPriority() (and Builder.setPriority()) to define the priority value used in PriorityTaskManager and for MediaCodec importance from API 35.
    • Fix issue with updating the last rebuffer time which resulted in incorrect bs (buffer starvation) key in CMCD (#1124).
    • Add PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) to indicate that the source has loaded to the end. This allows the DefaultPreloadManager and the custom PreloadMediaSource.PreloadControl implementations to preload the next

... (truncated)

Commits
  • b01c6ff Merge branch 'release' into release-1.4.0
  • 9fb7316 Fix the release notes for 1.4.0 stable release
  • 4e6a643 Update media3 version for 1.4.0 stable release
  • 18a1582 Fix the release notes for 1.4.0 stable release
  • 1dfab4f Merge release notes for media3 1.4.0 stable release
  • 567204e Version bump to 1.4.0-rc01
  • 75dadea Update release notes for 1.4.0-rc01
  • d97ec13 Suppress the lint "WrongConstant" error
  • 6946f49 Add OptIn annotation to method declaration in demo app file
  • 5b60f6c Fix index out of bounds exception when a Subtitle is empty
  • Additional commits viewable in compare view

Updates androidx.media3:media3-database from 1.3.1 to 1.4.0

Release notes

Sourced from androidx.media3:media3-database's releases.

1.4.0

This release includes the following changes since the 1.3.1 release:

  • Common Library:
    • Forward presumed no-op seek calls to the protected BasePlayer.seekTo() and SimpleBasePlayer.handleSeek() methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with mediaItemIndex == C.INDEX_UNSET.
    • Remove compile dependency on enhanced Java 8 desugaring (#1312).
    • Ensure the duration passed to MediaItem.Builder.setImageDurationMs() is ignored for a non-image MediaItem (as documented).
    • Add Format.customData to store app-provided custom information about Format instances.
  • ExoPlayer:
    • Add BasePreloadManager which coordinates the preloading for multiple sources based on the priorities defined by their rankingData. Customization is possible by extending this class. Add DefaultPreloadManager which uses PreloadMediaSource to preload media samples of the sources into memory, and uses an integer rankingData that indicates the index of an item on the UI.
    • Add PlayerId to most methods of LoadControl to enable LoadControl implementations to support multiple players.
    • Remove Buffer.isDecodeOnly() and C.BUFFER_FLAG_DECODE_ONLY. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom Renderer implementations should check if the buffer time is at least BaseRenderer.getLastResetPositionUs() to decide whether a sample should be shown. Custom SimpleDecoder implementations can check isAtLeastOutputStartTimeUs() if needed or mark other buffers with DecoderOutputBuffer.shouldBeSkipped to skip them.
    • Allow a null value to be returned by TargetPreloadStatusControl.getTargetPreloadStatus(T) to indicate not to preload a MediaSource with the given rankingData.
    • Add remove(MediaSource) to BasePreloadManager.
    • Add reset() to BasePreloadManager to release all the holding sources while keep the preload manager instance.
    • Add ExoPlayer.setPriority() (and Builder.setPriority()) to define the priority value used in PriorityTaskManager and for MediaCodec importance from API 35.
    • Fix issue with updating the last rebuffer time which resulted in incorrect bs (buffer starvation) key in CMCD (#1124).
    • Add PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) to indicate that the source has loaded to the end. This allows the DefaultPreloadManager and the custom PreloadMediaSource.PreloadControl implementations to preload the next source or take other actions.
    • Fix bug where silence skipping at the end of items can trigger a playback exception.
    • Add clear to PreloadMediaSource to discard the preloading period.
    • Add new error code PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED that is used when codec resources are reclaimed for higher priority tasks.
    • Let AdsMediaSource load preroll ads before initial content media preparation completes (#1358).
    • Fix bug where playback moved to STATE_ENDED when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.
    • Rename onTimelineRefreshed() to onSourcePrepared() and onPrepared() to onTracksSelected() in PreloadMediaSource.PreloadControl. Also rename the IntDefs in DefaultPreloadManager.Stage accordingly.
    • Add experimental support for dynamic scheduling to better align work with CPU wake-cycles and delay waking up to when renderers can progress. You can enable this using experimentalSetDynamicSchedulingEnabled() when setting up your ExoPlayer instance.
    • Add Renderer.getDurationToProgressUs(). A Renderer can implement this method to return to ExoPlayer the duration that playback must advance for the renderer to progress. If ExoPlayer is set with experimentalSetDynamicSchedulingEnabled() then ExoPlayer will call this method when calculating the time to schedule its work task.
    • Add MediaCodecAdapter#OnBufferAvailableListener to alert when input and output buffers are available for use by MediaCodecRenderer. MediaCodecRenderer will signal ExoPlayer when receiving these callbacks and if ExoPlayer is set with experimentalSetDynamicSchedulingEnabled(), then ExoPlayer will schedule its work loop as renderers can make progress.
    • Use data class for LoadControl methods instead of individual parameters.
    • Add ExoPlayer.isReleased() to check whether Exoplayer.release() has been called.
    • Add ExoPlayer.Builder.setMaxSeekToPreviousPositionMs() to configure the maximum position for which seekToPrevious() seeks to the previous item (#1425).
    • Fix some audio focus inconsistencies, e.g. not reporting full or transient focus loss while the player is paused (#1436).
    • Fix potential IndexOutOfBoundsException caused by extractors reporting additional tracks after the initial preparation step (#1476).
    • Effects in ExoPlayer.setVideoEffect() will receive the timestamps with the renderer offset removed (#1098).
    • Fix potential IllegalArgumentException when handling player error that happened while reading ahead into another playlist item (#1483).
  • Transformer:
    • Add audioConversionProcess and videoConversionProcess to ExportResult indicating how the respective track in the output file was made.
    • Relax trim optimization H.264 level checks.
    • Add support for changing between SDR and HDR input media in a sequence.
    • Add support for composition-level audio effects.
    • Add support for transcoding Ultra HDR images into HDR videos.
    • Fix issue where the DefaultAudioMixer does not output the correct amount of bytes after being reset and reused.
    • Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input.
    • When selecting tracks in ExoPlayerAssetLoader, ignore audio channel count constraints as they only apply for playback.
    • Replace androidx.media3.transformer.Muxer interface with androidx.media3.muxer.Muxer and remove androidx.media3.transformer.Muxer.
    • Fix HEIC image loading from content URI schemes (#1373).
    • Adjust audio track duration in AudioGraphInput to improve AV sync.
    • Remove ExportResult.processedInputs field. If you use this field for codec details, then use DefaultDecoderFactory.listener instead. In case of a codec exception, codec details will be available in the ExportException.codecInfo.
  • Extractors:
    • MPEG-TS: Roll forward the change ensuring the last frame is rendered by passing the last access unit of a stream to the sample queue (#7909). Incorporating fixes to resolve the issues that emerged in I-frame only HLS streams(#1150) and H.262 HLS streams (#1126).
    • MP3: Prefer the data size from an Info frame over the size reported by the underlying stream (e.g. file size, or HTTP Content-Length header). This helps to exclude non-playable trailer data (e.g. album artwork) from constant bitrate seeking calculations, making seeks more accurate (#1376).

... (truncated)

Changelog

Sourced from androidx.media3:media3-database's changelog.

1.4.0 (2024-07-24)

This release includes the following changes since the 1.3.1 release:

  • Common Library:
    • Forward presumed no-op seek calls to the protected BasePlayer.seekTo() and SimpleBasePlayer.handleSeek() methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with mediaItemIndex == C.INDEX_UNSET.
    • Remove compile dependency on enhanced Java 8 desugaring (#1312).
    • Ensure the duration passed to MediaItem.Builder.setImageDurationMs() is ignored for a non-image MediaItem (as documented).
    • Add Format.customData to store app-provided custom information about Format instances.
  • ExoPlayer:
    • Add BasePreloadManager which coordinates the preloading for multiple sources based on the priorities defined by their rankingData. Customization is possible by extending this class. Add DefaultPreloadManager which uses PreloadMediaSource to preload media samples of the sources into memory, and uses an integer rankingData that indicates the index of an item on the UI.
    • Add PlayerId to most methods of LoadControl to enable LoadControl implementations to support multiple players.
    • Remove Buffer.isDecodeOnly() and C.BUFFER_FLAG_DECODE_ONLY. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom Renderer implementations should check if the buffer time is at least BaseRenderer.getLastResetPositionUs() to decide whether a sample should be shown. Custom SimpleDecoder implementations can check isAtLeastOutputStartTimeUs() if needed or mark other buffers with DecoderOutputBuffer.shouldBeSkipped to skip them.
    • Allow a null value to be returned by TargetPreloadStatusControl.getTargetPreloadStatus(T) to indicate not to preload a MediaSource with the given rankingData.
    • Add remove(MediaSource) to BasePreloadManager.
    • Add reset() to BasePreloadManager to release all the holding sources while keep the preload manager instance.
    • Add ExoPlayer.setPriority() (and Builder.setPriority()) to define the priority value used in PriorityTaskManager and for MediaCodec importance from API 35.
    • Fix issue with updating the last rebuffer time which resulted in incorrect bs (buffer starvation) key in CMCD (#1124).
    • Add PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) to indicate that the source has loaded to the end. This allows the DefaultPreloadManager and the custom PreloadMediaSource.PreloadControl implementations to preload the next

... (truncated)

Commits
  • b01c6ff Merge branch 'release' into release-1.4.0
  • 9fb7316 Fix the release notes for 1.4.0 stable release
  • 4e6a643 Update media3 version for 1.4.0 stable release
  • 18a1582 Fix the release notes for 1.4.0 stable release
  • 1dfab4f Merge release notes for media3 1.4.0 stable release
  • 567204e Version bump to 1.4.0-rc01
  • 75dadea Update release notes for 1.4.0-rc01
  • d97ec13 Suppress the lint "WrongConstant" error
  • 6946f49 Add OptIn annotation to method declaration in demo app file
  • 5b60f6c Fix index out of bounds exception when a Subtitle is empty
  • Additional commits viewable in compare view

Updates androidx.media3:media3-datasource from 1.3.1 to 1.4.0

Release notes

Sourced from androidx.media3:media3-datasource's releases.

1.4.0

This release includes the following changes since the 1.3.1 release:

  • Common Library:
    • Forward presumed no-op seek calls to the protected BasePlayer.seekTo() and SimpleBasePlayer.handleSeek() methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with mediaItemIndex == C.INDEX_UNSET.
    • Remove compile dependency on enhanced Java 8 desugaring (#1312).
    • Ensure the duration passed to MediaItem.Builder.setImageDurationMs() is ignored for a non-image MediaItem (as documented).
    • Add Format.customData to store app-provided custom information about Format instances.
  • ExoPlayer:
    • Add BasePreloadManager which coordinates the preloading for multiple sources based on the priorities defined by their rankingData. Customization is possible by extending this class. Add DefaultPreloadManager which uses PreloadMediaSource to preload media samples of the sources into memory, and uses an integer rankingData that indicates the index of an item on the UI.
    • Add PlayerId to most methods of LoadControl to enable LoadControl implementations to support multiple players.
    • Remove Buffer.isDecodeOnly() and C.BUFFER_FLAG_DECODE_ONLY. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom Renderer implementations should check if the buffer time is at least BaseRenderer.getLastResetPositionUs() to decide whether a sample should be shown. Custom SimpleDecoder implementations can check isAtLeastOutputStartTimeUs() if needed or mark other buffers with DecoderOutputBuffer.shouldBeSkipped to skip them.
    • Allow a null value to be returned by TargetPreloadStatusControl.getTargetPreloadStatus(T) to indicate not to preload a MediaSource with the given rankingData.
    • Add remove(MediaSource) to BasePreloadManager.
    • Add reset() to BasePreloadManager to release all the holding sources while keep the preload manager instance.
    • Add ExoPlayer.setPriority() (and Builder.setPriority()) to define the priority value used in PriorityTaskManager and for MediaCodec importance from API 35.
    • Fix issue with updating the last rebuffer time which resulted in incorrect bs (buffer starvation) key in CMCD (#1124).
    • Add PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) to indicate that the source has loaded to the end. This allows the DefaultPreloadManager and the custom PreloadMediaSource.PreloadControl implementations to preload the next source or take other actions.
    • Fix bug where silence skipping at the end of items can trigger a playback exception.
    • Add clear to PreloadMediaSource to discard the preloading period.
    • Add new error code PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED that is used when codec resources are reclaimed for higher priority tasks.
    • Let AdsMediaSource load preroll ads before initial content media preparation completes (#1358).
    • Fix bug where playback moved to STATE_ENDED when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.
    • Rename onTimelineRefreshed() to onSourcePrepared() and onPrepared() to onTracksSelected() in PreloadMediaSource.PreloadControl. Also rename the IntDefs in DefaultPreloadManager.Stage accordingly.
    • Add experimental support for dynamic scheduling to better align work with CPU wake-cycles and delay waking up to when renderers can progress. You can enable this using experimentalSetDynamicSchedulingEnabled() when setting up your ExoPlayer instance.
    • Add Renderer.getDurationToProgressUs(). A Renderer can implement this method to return to ExoPlayer the duration that playback must advance for the renderer to progress. If ExoPlayer is set with experimentalSetDynamicSchedulingEnabled() then ExoPlayer will call this method when calculating the time to schedule its work task.
    • Add MediaCodecAdapter#OnBufferAvailableListener to alert when input and output buffers are available for use by MediaCodecRenderer. MediaCodecRenderer will signal ExoPlayer when receiving these callbacks and if ExoPlayer is set with experimentalSetDynamicSchedulingEnabled(), then ExoPlayer will schedule its work loop as renderers can make progress.
    • Use data class for LoadControl methods instead of individual parameters.
    • Add ExoPlayer.isReleased() to check whether Exoplayer.release() has been called.
    • Add ExoPlayer.Builder.setMaxSeekToPreviousPositionMs() to configure the maximum position for which seekToPrevious() seeks to the previous item (#1425).
    • Fix some audio focus inconsistencies, e.g. not reporting full or transient focus loss while the player is paused (#1436).
    • Fix potential IndexOutOfBoundsException caused by extractors reporting additional tracks after the initial preparation step (#1476).
    • Effects in ExoPlayer.setVideoEffect() will receive the timestamps with the renderer offset removed (#1098).
    • Fix potential IllegalArgumentException when handling player error that happened while reading ahead into another playlist item (#1483).
  • Transformer:
    • Add audioConversionProcess and videoConversionProcess to ExportResult indicating how the respective track in the output file was made.
    • Relax trim optimization H.264 level checks.
    • Add support for changing between SDR and HDR input media in a sequence.
    • Add support for composition-level audio effects.
    • Add support for transcoding Ultra HDR images into HDR videos.
    • Fix issue where the DefaultAudioMixer does not output the correct amount of bytes after being reset and reused.
    • Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input.
    • When selecting tracks in ExoPlayerAssetLoader, ignore audio channel count constraints as they only apply for playback.
    • Replace androidx.media3.transformer.Muxer interface with androidx.media3.muxer.Muxer and remove androidx.media3.transformer.Muxer.
    • Fix HEIC image loading from content URI schemes (#1373).
    • Adjust audio track duration in AudioGraphInput to improve AV sync.
    • Remove ExportResult.processedInputs field. If you use this field for codec details, then use DefaultDecoderFactory.listener instead. In case of a codec exception, codec details will be available in the ExportException.codecInfo.
  • Extractors:
    • MPEG-TS: Roll forward the change ensuring the last frame is rendered by passing the last access unit of a stream to the sample queue (#7909). Incorporating fixes to resolve the issues that emerged in I-frame only HLS streams(#1150) and H.262 HLS streams (#1126).
    • MP3: Prefer the data size from an Info frame over the size reported by the underlying stream (e.g. file size, or HTTP Content-Length header). This helps to exclude non-playable trailer data (e.g. album artwork) from constant bitrate seeking calculations, making seeks more accurate (#1376).

... (truncated)

Changelog

Sourced from androidx.media3:media3-datasource's changelog.

1.4.0 (2024-07-24)

This release includes the following changes since the 1.3.1 release:

  • Common Library:
    • Forward presumed no-op seek calls to the protected BasePlayer.seekTo() and SimpleBasePlayer.handleSeek() methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with mediaItemIndex == C.INDEX_UNSET.
    • Remove compile dependency on enhanced Java 8 desugaring (#1312).
    • Ensure the duration passed to MediaItem.Builder.setImageDurationMs() is ignored for a non-image MediaItem (as documented).
    • Add Format.customData to store app-provided custom information about Format instances.
  • ExoPlayer:
    • Add BasePreloadManager which coordinates the preloading for multiple sources based on the priorities defined by their rankingData. Customization is possible by extending this class. Add DefaultPreloadManager which uses PreloadMediaSource to preload media samples of the sources into memory, and uses an integer rankingData that indicates the index of an item on the UI.
    • Add PlayerId to most methods of LoadControl to enable LoadControl implementations to support multiple players.
    • Remove Buffer.isDecodeOnly() and C.BUFFER_FLAG_DECODE_ONLY. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom Renderer implementations should check if the buffer time is at least BaseRenderer.getLastResetPositionUs() to decide whether a sample should be shown. Custom SimpleDecoder implementations can check isAtLeastOutputStartTimeUs() if needed or mark other buffers with DecoderOutputBuffer.shouldBeSkipped to skip them.
    • Allow a null value to be returned by TargetPreloadStatusControl.getTargetPreloadStatus(T) to indicate not to preload a MediaSource with the given rankingData.
    • Add remove(MediaSource) to BasePreloadManager.
    • Add reset() to BasePreloadManager to release all the holding sources while keep the preload manager instance.
    • Add ExoPlayer.setPriority() (and Builder.setPriority()) to define the priority value used in PriorityTaskManager and for MediaCodec importance from API 35.
    • Fix issue with updating the last rebuffer time which resulted in incorrect bs (buffer starvation) key in CMCD (#1124).
    • Add PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) to indicate that the source has loaded to the end. This allows the DefaultPreloadManager and the custom PreloadMediaSource.PreloadControl implementations to preload the next

... (truncated)

Commits
  • b01c6ff Merge branch 'release' into release-1.4.0
  • 9fb7316 Fix the release notes for 1.4.0 stable release
  • 4e6a643 Update media3 version for 1.4.0 stable release
  • 18a1582 Fix the release notes for 1.4.0 stable release
  • 1dfab4f Merge release notes for media3 1.4.0 stable release
  • 567204e Version bump to 1.4.0-rc01
  • 75dadea Update release notes for 1.4.0-rc01
  • d97ec13 Suppress the lint "WrongConstant" error
  • 6946f49 Add OptIn annotation to method declaration in demo app file
  • 5b60f6c Fix index out of bounds exception when a Subtitle is empty
  • Additional commits viewable in compare view

Updates androidx.media3:media3-datasource-okhttp from 1.3.1 to 1.4.0

Release notes

Sourced from androidx.media3:media3-datasource-okhttp's releases.

1.4.0

This release includes the following changes since the 1.3.1 release:

  • Common Library:
    • Forward presumed no-op seek calls to the protected BasePlayer.seekTo() and SimpleBasePlayer.handleSeek() methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with mediaItemIndex == C.INDEX_UNSET.
    • Remove compile dependency on enhanced Java 8 desugaring (#1312).
    • Ensure the duration passed to MediaItem.Builder.setImageDurationMs() is ignored for a non-image MediaItem (as documented).
    • Add Format.customData to store app-provided custom information about Format instances.
  • ExoPlayer:
    • Add BasePreloadManager which coordinates the preloading for multiple sources based on the priorities defined by their rankingData. Customization is possible by extending this class. Add DefaultPreloadManager which uses PreloadMediaSource to preload media samples of the sources into memory, and uses an integer rankingData that indicates the index of an item on the UI.
    • Add PlayerId to most methods of LoadControl to enable LoadControl implementations to support multiple players.
    • Remove Buffer.isDecodeOnly() and C.BUFFER_FLAG_DECODE_ONLY. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom Renderer implementations should check if the buffer time is at least BaseRenderer.getLastResetPositionUs() to decide whether a sample should be shown. Custom SimpleDecoder implementations can check isAtLeastOutputStartTimeUs() if needed or mark other buffers with DecoderOutputBuffer.shouldBeSkipped to skip them.
    • Allow a null value to be returned by TargetPreloadStatusControl.getTargetPreloadStatus(T) to indicate not to preload a MediaSource with the given rankingData.
    • Add remove(MediaSource) to BasePreloadManager.
    • Add reset() to BasePreloadManager to release all the holding sources while keep the preload manager instance.
    • Add ExoPlayer.setPriority() (and Builder.setPriority()) to define the priority value used in PriorityTaskManager and for MediaCodec importance from API 35.
    • Fix issue with updating the last rebuffer time which resulted in incorrect bs (buffer starvation) key in CMCD (#1124).
    • Add PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) to indicate that the source has loaded to the end. This allows the DefaultPreloadManager and the custom PreloadMediaSource.PreloadControl implementations to preload the next source or take other actions.
    • Fix bug where silence skipping at the end of items can trigger a playback exception.
    • Add clear to PreloadMediaSource to discard the preloading period.
    • Add new error code PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED that is used when codec resources are reclaimed for higher priority tasks.
    • Let AdsMediaSource load preroll ads before initial content media preparation completes (#1358).
    • Fix bug where playback moved to STATE_ENDED when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.
    • Rename onTimelineRefreshed() to onSourcePrepared() and onPrepared() to onTracksSelected() in PreloadMediaSource.PreloadControl. Also rename the IntDefs in DefaultPreloadManager.Stage accordingly.
    • Add experimental support for dynamic scheduling to better align work with CPU wake-cycles and delay waking up to when renderers can progress. You can enable this using experimentalSetDynamicSchedulingEnabled() when setting up your ExoPlayer instance.
    • Add Renderer.getDurationToProgressUs(). A Renderer can implement this method to return to ExoPlayer the duration that playback must advance for the renderer to progress. If ExoPlayer is set with experimentalSetDynamicSchedulingEnabled() then ExoPlayer will call this method when calculating the time to schedule its work task.
    • Add MediaCodecAdapter#OnBufferAvailableListener to alert when input and output buffers are available for use by MediaCodecRenderer. MediaCodecRenderer will signal ExoPlayer when receiving these callbacks and if ExoPlayer is set with experimentalSetDynamicSchedulingEnabled(), then ExoPlayer will schedule its work loop as renderers can make progress.
    • Use data class for LoadControl methods instead of individual parameters.
    • Add ExoPlayer.isReleased() to check whether Exoplayer.release() has been called.
    • Add ExoPlayer.Builder.setMaxSeekToPreviousPositionMs() to configure the maximum position for which seekToPrevious() seeks to the previous item (#1425).
    • Fix some audio focus inconsistencies, e.g. not reporting full or transient focus loss while the player is paused (#1436).
    • Fix potential IndexOutOfBoundsException caused by extractors reporting additional tracks after the initial preparation step (#1476).
    • Effects in ExoPlayer.setVideoEffect() will receive the timestamps with the renderer offset removed (#1098).
    • Fix potential IllegalArgumentException when handling player error that happened while reading ahead into another playlist item (#1483).
  • Transformer:
    • Add audioConversionProcess and videoConversionProcess to ExportResult indicating how the respective track in the output file was made.
    • Relax trim optimization H.264 level checks.
    • Add support for changing between SDR and HDR input media in a sequence.
    • Add support for composition-level audio effects.
    • Add support for transcoding Ultra HDR images into HDR videos.
    • Fix issue where the DefaultAudioMixer does not output the correct amount of bytes after being reset and reused.
    • Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input.
    • When selecting tracks in ExoPlayerAssetLoader, ignore audio channel count constraints as they only apply for playback.
    • Replace androidx.media3.transformer.Muxer interface with androidx.media3.muxer.Muxer and remove androidx.media3.transformer.Muxer.
    • Fix HEIC image loading from content URI schemes (#1373).
    • Adjust audio track duration in AudioGraphInput to improve AV sync.
    • Remove ExportResult.processedInputs field. If you use this field for codec details, then use DefaultDecoderFactory.listener instead. In case of a codec exception, codec details will be available in the ExportException.codecInfo.
  • Extractors:
    • MPEG-TS: Roll forward the change ensuring the last frame is rendered by passing the last access unit of a stream to the sample queue (#7909). Incorporating fixes to resolve the issues that emerged in I-frame only HLS streams(#1150) and H.262 HLS streams (#1126).
    • MP3: Prefer the data size from an Info frame over the size reported by the underlying stream (e.g. file size, or HTTP Content-Length header). This helps to exclude non-playable trailer data (e.g. album artwork) from constant bitrate seeking calculations, making seeks more accurate (#1376).

... (truncated)

Changelog

Sourced from androidx.media3:media3-datasource-okhttp's changelog.

1.4.0 (2024-07-24)

This release includes the following changes since the 1.3.1 release:

  • Common Library:
    • Forward presumed no-op seek calls to the protected BasePlayer.seekTo() and SimpleBasePlayer.handleSeek() methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with mediaItemIndex == C.INDEX_UNSET.
    • Remove compile dependency on enhanced Java 8 desugaring (#1312).
    • Ensure the duration passed to MediaItem.Builder.setImageDurationMs() is ignored for a non-image MediaItem (as documented).
    • Add Format.customData to store app-provided custom information about Format instances.
  • ExoPlayer:
    • Add BasePreloadManager which coordinates the preloading for multiple sources based on the priorities defined by their rankingData. Customization is possible by extending this class. Add DefaultPreloadManager which uses PreloadMediaSource to preload media samples of the sources into memory, and uses an integer rankingData that indicates the index of an item on the UI.
    • Add PlayerId to most methods of LoadControl to enable LoadControl implementations to support multiple players.
    • Remove Buffer.isDecodeOnly() and C.BUFFER_FLAG_DECODE_ONLY. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom Renderer implementations should check if the buffer time is at least BaseRenderer.getLastResetPositionUs() to decide whether a sample should be shown. Custom SimpleDecoder implementations can check isAtLeastOutputStartTimeUs() if needed or mark other buffers with DecoderOutputBuffer.shouldBeSkipped to skip them.
    • Allow a null value to be returned by TargetPreloadStatusControl.getTargetPreloadStatus(T) to indicate not to preload a MediaSource with the given rankingData.
    • Add remove(MediaSource) to BasePreloadManager.
    • Add reset() to BasePreloadManager to release all the holding sources while keep the preload manager instance.
    • Add ExoPlayer.setPriority() (and Builder.setPriority()) to define the priority value used in PriorityTaskManager and for MediaCodec importance from API 35.
    • Fix issue with updating the last rebuffer time which resulted in incorrect bs (buffer starvation) key in CMCD (#1124).
    • Add PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) to indicate that the source has loaded to the end. This allows the DefaultPreloadManager and the custom PreloadMediaSource.PreloadControl implementations to preload the next

... (truncated)

Commits
  • b01c6ff Merge branch 'release' into release-1.4.0
  • 9fb7316 Fix the release notes for 1.4.0 stable release
  • 4e6a643 Update media3 version for 1.4.0 stable release
  • 18a1582 Fix the release notes for 1.4.0 stable release
  • 1dfab4f Merge release notes for media3 1.4.0 stable release
  • 567204e Version bump to 1.4.0-rc01
  • 75dadea Update release notes for 1.4.0-rc01
  • d97ec13 Suppress the lint "WrongConstant" error
  • 6946f49 Add OptIn annotation to method declaration in demo app file
  • 5b60f6c Fix index out of bounds exception when a Subtitle is empty
  • Additional commits viewable in compare view

Updates androidx.media3:media3-exoplayer from 1.3.1 to 1.4.0

Release notes

Sourced from androidx.media3:media3-exoplayer's releases.

1.4.0

This release includes the following changes since the 1.3.1 release:

  • Common Library:
    • Forward presumed no-op seek calls to the protected BasePlayer.seekTo() and SimpleBasePlayer.handleSeek() methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with mediaItemIndex == C.INDEX_UNSET.
    • Remove compile dependency on enhanced Java 8 desugaring (#1312).
    • Ensure the duration passed to MediaItem.Builder.setImageDurationMs() is ignored for a non-image MediaItem (as documented).
    • Add Format.customData to store app-provided custom information about Format instances.
  • ExoPlayer:
    • Add BasePreloadManager which coordinates the preloading for multiple sources based on the priorities defined by their rankingData. Customization is possible by extending this class. Add DefaultPreloadManager which uses PreloadMediaSource to preload media samples of the sources into memory, and uses an integer rankingData that indicates the index of an item on the UI.
    • Add PlayerId to most methods of LoadControl to enable LoadControl implementations to support multiple players.
    • Remove Buffer.isDecodeOnly() and C.BUFFER_FLAG_DECODE_ONLY. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom Renderer implementations should check if the buffer time is at least BaseRenderer.getLastResetPositionUs() to decide whether a sample should be shown. Custom SimpleDecoder implementations can check isAtLeastOutputStartTimeUs() if needed or mark other buffers with DecoderOutputBuffer.shouldBeSkipped to skip them.
    • Allow a null value to be returned by TargetPreloadStatusControl.getTargetPreloadStatus(T) to indicate not to preload a MediaSource with the given rankingData.
    • Add remove(MediaSource) to BasePreloadManager.
    • Add reset() to BasePreloadManager to release all the holding sources while keep the preload manager instance.
    • Add ExoPlayer.setPriority() (and Builder.setPriority()) to define the priority value used in PriorityTaskManager and for MediaCodec importance from API 35.
    • Fix issue with updating the last rebuffer time which resulted in incorrect bs (buffer starvation) key in CMCD (#1124).
    • Add PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) to indicate that the source has loaded to the end. This allows the DefaultPreloadManager and the custom PreloadMediaSource.PreloadControl implementations to preload the next source or take other actions.
    • Fix bug where silence skipping at the end of items can trigger a playback exception.
    • Add clear to PreloadMediaSource to discard the preloading period.
    • Add new error code PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED that is used when codec resources are reclaimed for higher priority tasks.
    • Let AdsMediaSource load preroll ads before initial content media preparation completes (#1358).
    • Fix bug where playback moved to STATE_ENDED when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.
    • Rename onTimelineRefreshed() to onSourcePrepared() and onPrepared() to onTracksSelected() in PreloadMediaSource.PreloadControl. Also rename the IntDefs in DefaultPreloadManager.Stage accordingly.
    • Add experimental suppor...

      Description has been truncated

@dependabot dependabot bot added dependencies Pull requests that update a dependency file java Pull requests that update Java code labels Jul 27, 2024
@dependabot dependabot bot requested a review from chvp July 27, 2024 06:42
@dependabot dependabot bot force-pushed the dependabot/gradle/media3_version-1.4.0 branch from d94d09d to 6127ccc Compare July 27, 2024 08:43
Bumps `media3_version` from 1.3.1 to 1.4.0.

Updates `androidx.media3:media3-common` from 1.3.1 to 1.4.0
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.3.1...1.4.0)

Updates `androidx.media3:media3-database` from 1.3.1 to 1.4.0
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.3.1...1.4.0)

Updates `androidx.media3:media3-datasource` from 1.3.1 to 1.4.0
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.3.1...1.4.0)

Updates `androidx.media3:media3-datasource-okhttp` from 1.3.1 to 1.4.0
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.3.1...1.4.0)

Updates `androidx.media3:media3-exoplayer` from 1.3.1 to 1.4.0
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.3.1...1.4.0)

Updates `androidx.media3:media3-session` from 1.3.1 to 1.4.0
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.3.1...1.4.0)

---
updated-dependencies:
- dependency-name: androidx.media3:media3-common
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.media3:media3-database
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.media3:media3-datasource
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.media3:media3-datasource-okhttp
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.media3:media3-exoplayer
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.media3:media3-session
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
@dependabot dependabot bot force-pushed the dependabot/gradle/media3_version-1.4.0 branch from 6127ccc to 1f2edec Compare July 27, 2024 08:43
@chvp chvp merged commit 03bd22e into main Jul 27, 2024
3 checks passed
@chvp chvp deleted the dependabot/gradle/media3_version-1.4.0 branch July 27, 2024 08:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file java Pull requests that update Java code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant