This release includes the following changes since the 1.2.1 release:
Common Library:
Implement support for android.resource://package/[type/]name raw resource URIs where package is different to the package of the current application. This has always been documented to work, but wasn't correctly implemented until now.
Normalize MIME types set by app code or read from media to be fully lower-case.
Define ads with a full MediaItem instead of a single Uri in AdPlaybackState.
Increase minSdk to 19 (Android KitKat). This is aligned with all other AndroidX libraries, and is required for us to upgrade to the latest versions of our AndroidX dependencies.
Populate both artworkUri and artworkData in MediaMetadata.Builder.populate(MediaMetadata) when at least one of them is non-null (#964).
ExoPlayer:
Add PreloadMediaSource and PreloadMediaPeriod that allows apps to preload a content media source at a specific start position before playback. PreloadMediaSource takes care of preparing the content media source to receive the Timeline, preparing and caching the period at the given start position, selecting tracks and loading media data for the period. Apps control the preload progress by implementing PreloadMediaSource.PreloadControl and set the preloaded source to the player for playback.
Add ExoPlayer.setImageOutput that allows apps to set ImageRenderer.ImageOutput.
DefaultRenderersFactory now provides an ImageRenderer to the player by default with null ImageOutput and ImageDecoder.Factory.DEFAULT.
Emit Player.Listener.onPositionDiscontinuity event when silence is skipped (#765).
Add experimental support for parsing subtitles during extraction. You can enable this using MediaSource.Factory.experimentalParseSubtitlesDuringExtraction().
Support adaptive media sources with PreloadMediaSource.
Implement HttpEngineDataSource, an HttpDataSource using the HttpEngine API.
Prevent subclassing CompositeSequenceableLoader. This component was previously made extensible but was never subclassed within the library. Customizations can be done by wrapping an instance using the decorator pattern and implementing a custom CompositeSequenceableLoaderFactory.
Fix issue where repeating the same time causes metadata from this item to be cleared (#1007).
Rename experimentalSetSubtitleParserFactory methods on BundledChunkExtractor.Factory and DefaultHlsExtractorFactory to setSubtitleParserFactory and disallow passing null. Use the new experimentalParseSubtitlesDuringExtraction(boolean) methods to control parsing behaviour.
Add support for customising the SubtitleParser.Factory used during extraction. This can be achieved with MediaSource.Factory.setSubtitleParserFactory().
Add source prefix to all Format.id fields generated from MergingMediaSource. This helps to identify which source produced a Format (#883).
Fix the regex used for validating custom Common Media Client Data (CMCD) key names by modifying it to only check for hyphen (#1028).
Add support for flattening H.265/HEVC SEF slow motion videos.
Increase transmuxing speed, especially for 'remove video' edits.
Add API to ensure that the output file starts on a video frame. This can make the output of trimming operations more compatible with player implementations that don't show the first video frame until its presentation timestamp (#829).
Add support for optimizing single asset mp4 trim operations.
Add support to ensure a video frame has the first timestamp in the output file. Fixes output files beginning with black frame on iOS based players (#829).
Track Selection:
Add DefaultTrackSelector.selectImageTrack to enable image track selection.
Add TrackSelectionParameters.isPrioritizeImageOverVideoEnabled to determine whether to select an image track if both an image track and a video track are available. The default value is false which means selecting a video track is prioritized.
Extractors:
Add additional AV1C parsing to MP4 extractor to retrieve ColorInfo.colorSpace, ColorInfo.colorTransfer, and ColorInfo.colorRange values (#692).
MP3: Use constant bitrate (CBR) seeking for files with an Info header (the CBR equivalent of the Xing header). Previously we used the seek table from the Info header, but this results in less precise seeking than if we ignore it and assume the file is CBR.
MPEG2-TS: Add DTS, DTS-LBR and DTS:X Profile2 support (#275).
Extract audio types from TS descriptors and map them to role flags, allowing users to make better-informed audio track selections (#973).
Audio:
Improve silence skipping algorithm with smooth volume ramp; retained minimal silence and more natural silence durations (#7423).
Report the skipped silence more deterministically (#1035).
Video:
Change the MediaCodecVideoRenderer constructor that takes a VideoFrameProcessor.Factory argument and replace it with a constructor that takes a VideoSinkProvider argument. Apps that want to inject a custom VideoFrameProcessor.Factory can instantiate a CompositingVideoSinkProvider that uses the custom VideoFrameProcessor.Factory and pass the video sink provider to MediaCodecVideoRenderer.
Text:
Fix serialization of bitmap cues to resolve Tried to marshall a Parcel that contained Binder objects error when using DefaultExtractorsFactory.setTextTrackTranscodingEnabled (#836).
CEA-708: Ignore rowLock value. The CEA-708-E S-2023 spec states that rowLock and columnLock should both be assumed to be true, regardless of the values present in the stream (columnLock support is not implemented, so it's effectively assumed to always be false).
Image:
Add support for DASH thumbnails. Grid images are cropped and individual thumbnails are provided to ImageOutput close to their presentation times.
This release includes the following changes since the
1.2.1 release:
Common Library:
Implement support for android.resource://package/[type/]name raw
resource URIs where package is different to the package of the current
application. This has always been documented to work, but wasn't
correctly implemented until now.
Normalize MIME types set by app code or read from media to be fully
lower-case.
Define ads with a full MediaItem instead of a single Uri in
AdPlaybackState.
Increase minSdk to 19 (Android KitKat). This is
aligned with all other AndroidX libraries,
and is required for us to upgrade to the latest versions of our AndroidX
dependencies.
Populate both artworkUri and artworkData in
MediaMetadata.Builder.populate(MediaMetadata) when at least one of
them is non-null (#964).
ExoPlayer:
Add PreloadMediaSource and PreloadMediaPeriod that allows apps to
preload a content media source at a specific start position before
playback. PreloadMediaSource takes care of preparing the content media
source to receive the Timeline, preparing and caching the period at
the given start position, selecting tracks and loading media data for
the period. Apps control the preload progress by implementing
PreloadMediaSource.PreloadControl and set the preloaded source to the
player for playback.
Add ExoPlayer.setImageOutput that allows apps to set
ImageRenderer.ImageOutput.
DefaultRenderersFactory now provides an ImageRenderer to the player
by default with null ImageOutput and ImageDecoder.Factory.DEFAULT.
Emit Player.Listener.onPositionDiscontinuity event when silence is
skipped (#765).
Add experimental support for parsing subtitles during extraction. You
can enable this using
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction().
Support adaptive media sources with PreloadMediaSource.
Implement HttpEngineDataSource, an HttpDataSource using the
HttpEngine
API.
Prevent subclassing CompositeSequenceableLoader. This component was
previously made extensible
but was never subclassed within the library. Customizations can be done
by wrapping an instance using the
decorator pattern and
implementing a custom CompositeSequenceableLoaderFactory.
Fix issue where repeating the same time causes metadata from this item
This release includes the following changes since the 1.2.1 release:
Common Library:
Implement support for android.resource://package/[type/]name raw resource URIs where package is different to the package of the current application. This has always been documented to work, but wasn't correctly implemented until now.
Normalize MIME types set by app code or read from media to be fully lower-case.
Define ads with a full MediaItem instead of a single Uri in AdPlaybackState.
Increase minSdk to 19 (Android KitKat). This is aligned with all other AndroidX libraries, and is required for us to upgrade to the latest versions of our AndroidX dependencies.
Populate both artworkUri and artworkData in MediaMetadata.Builder.populate(MediaMetadata) when at least one of them is non-null (#964).
ExoPlayer:
Add PreloadMediaSource and PreloadMediaPeriod that allows apps to preload a content media source at a specific start position before playback. PreloadMediaSource takes care of preparing the content media source to receive the Timeline, preparing and caching the period at the given start position, selecting tracks and loading media data for the period. Apps control the preload progress by implementing PreloadMediaSource.PreloadControl and set the preloaded source to the player for playback.
Add ExoPlayer.setImageOutput that allows apps to set ImageRenderer.ImageOutput.
DefaultRenderersFactory now provides an ImageRenderer to the player by default with null ImageOutput and ImageDecoder.Factory.DEFAULT.
Emit Player.Listener.onPositionDiscontinuity event when silence is skipped (#765).
Add experimental support for parsing subtitles during extraction. You can enable this using MediaSource.Factory.experimentalParseSubtitlesDuringExtraction().
Support adaptive media sources with PreloadMediaSource.
Implement HttpEngineDataSource, an HttpDataSource using the HttpEngine API.
Prevent subclassing CompositeSequenceableLoader. This component was previously made extensible but was never subclassed within the library. Customizations can be done by wrapping an instance using the decorator pattern and implementing a custom CompositeSequenceableLoaderFactory.
Fix issue where repeating the same time causes metadata from this item to be cleared (#1007).
Rename experimentalSetSubtitleParserFactory methods on BundledChunkExtractor.Factory and DefaultHlsExtractorFactory to setSubtitleParserFactory and disallow passing null. Use the new experimentalParseSubtitlesDuringExtraction(boolean) methods to control parsing behaviour.
Add support for customising the SubtitleParser.Factory used during extraction. This can be achieved with MediaSource.Factory.setSubtitleParserFactory().
Add source prefix to all Format.id fields generated from MergingMediaSource. This helps to identify which source produced a Format (#883).
Fix the regex used for validating custom Common Media Client Data (CMCD) key names by modifying it to only check for hyphen (#1028).
Add support for flattening H.265/HEVC SEF slow motion videos.
Increase transmuxing speed, especially for 'remove video' edits.
Add API to ensure that the output file starts on a video frame. This can make the output of trimming operations more compatible with player implementations that don't show the first video frame until its presentation timestamp (#829).
Add support for optimizing single asset mp4 trim operations.
Add support to ensure a video frame has the first timestamp in the output file. Fixes output files beginning with black frame on iOS based players (#829).
Track Selection:
Add DefaultTrackSelector.selectImageTrack to enable image track selection.
Add TrackSelectionParameters.isPrioritizeImageOverVideoEnabled to determine whether to select an image track if both an image track and a video track are available. The default value is false which means selecting a video track is prioritized.
Extractors:
Add additional AV1C parsing to MP4 extractor to retrieve ColorInfo.colorSpace, ColorInfo.colorTransfer, and ColorInfo.colorRange values (#692).
MP3: Use constant bitrate (CBR) seeking for files with an Info header (the CBR equivalent of the Xing header). Previously we used the seek table from the Info header, but this results in less precise seeking than if we ignore it and assume the file is CBR.
MPEG2-TS: Add DTS, DTS-LBR and DTS:X Profile2 support (#275).
Extract audio types from TS descriptors and map them to role flags, allowing users to make better-informed audio track selections (#973).
Audio:
Improve silence skipping algorithm with smooth volume ramp; retained minimal silence and more natural silence durations (#7423).
Report the skipped silence more deterministically (#1035).
Video:
Change the MediaCodecVideoRenderer constructor that takes a VideoFrameProcessor.Factory argument and replace it with a constructor that takes a VideoSinkProvider argument. Apps that want to inject a custom VideoFrameProcessor.Factory can instantiate a CompositingVideoSinkProvider that uses the custom VideoFrameProcessor.Factory and pass the video sink provider to MediaCodecVideoRenderer.
Text:
Fix serialization of bitmap cues to resolve Tried to marshall a Parcel that contained Binder objects error when using DefaultExtractorsFactory.setTextTrackTranscodingEnabled (#836).
CEA-708: Ignore rowLock value. The CEA-708-E S-2023 spec states that rowLock and columnLock should both be assumed to be true, regardless of the values present in the stream (columnLock support is not implemented, so it's effectively assumed to always be false).
Image:
Add support for DASH thumbnails. Grid images are cropped and individual thumbnails are provided to ImageOutput close to their presentation times.
This release includes the following changes since the
1.2.1 release:
Common Library:
Implement support for android.resource://package/[type/]name raw
resource URIs where package is different to the package of the current
application. This has always been documented to work, but wasn't
correctly implemented until now.
Normalize MIME types set by app code or read from media to be fully
lower-case.
Define ads with a full MediaItem instead of a single Uri in
AdPlaybackState.
Increase minSdk to 19 (Android KitKat). This is
aligned with all other AndroidX libraries,
and is required for us to upgrade to the latest versions of our AndroidX
dependencies.
Populate both artworkUri and artworkData in
MediaMetadata.Builder.populate(MediaMetadata) when at least one of
them is non-null (#964).
ExoPlayer:
Add PreloadMediaSource and PreloadMediaPeriod that allows apps to
preload a content media source at a specific start position before
playback. PreloadMediaSource takes care of preparing the content media
source to receive the Timeline, preparing and caching the period at
the given start position, selecting tracks and loading media data for
the period. Apps control the preload progress by implementing
PreloadMediaSource.PreloadControl and set the preloaded source to the
player for playback.
Add ExoPlayer.setImageOutput that allows apps to set
ImageRenderer.ImageOutput.
DefaultRenderersFactory now provides an ImageRenderer to the player
by default with null ImageOutput and ImageDecoder.Factory.DEFAULT.
Emit Player.Listener.onPositionDiscontinuity event when silence is
skipped (#765).
Add experimental support for parsing subtitles during extraction. You
can enable this using
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction().
Support adaptive media sources with PreloadMediaSource.
Implement HttpEngineDataSource, an HttpDataSource using the
HttpEngine
API.
Prevent subclassing CompositeSequenceableLoader. This component was
previously made extensible
but was never subclassed within the library. Customizations can be done
by wrapping an instance using the
decorator pattern and
implementing a custom CompositeSequenceableLoaderFactory.
Fix issue where repeating the same time causes metadata from this item
This release includes the following changes since the 1.2.1 release:
Common Library:
Implement support for android.resource://package/[type/]name raw resource URIs where package is different to the package of the current application. This has always been documented to work, but wasn't correctly implemented until now.
Normalize MIME types set by app code or read from media to be fully lower-case.
Define ads with a full MediaItem instead of a single Uri in AdPlaybackState.
Increase minSdk to 19 (Android KitKat). This is aligned with all other AndroidX libraries, and is required for us to upgrade to the latest versions of our AndroidX dependencies.
Populate both artworkUri and artworkData in MediaMetadata.Builder.populate(MediaMetadata) when at least one of them is non-null (#964).
ExoPlayer:
Add PreloadMediaSource and PreloadMediaPeriod that allows apps to preload a content media source at a specific start position before playback. PreloadMediaSource takes care of preparing the content media source to receive the Timeline, preparing and caching the period at the given start position, selecting tracks and loading media data for the period. Apps control the preload progress by implementing PreloadMediaSource.PreloadControl and set the preloaded source to the player for playback.
Add ExoPlayer.setImageOutput that allows apps to set ImageRenderer.ImageOutput.
DefaultRenderersFactory now provides an ImageRenderer to the player by default with null ImageOutput and ImageDecoder.Factory.DEFAULT.
Emit Player.Listener.onPositionDiscontinuity event when silence is skipped (#765).
Add experimental support for parsing subtitles during extraction. You can enable this using MediaSource.Factory.experimentalParseSubtitlesDuringExtraction().
Support adaptive media sources with PreloadMediaSource.
Implement HttpEngineDataSource, an HttpDataSource using the HttpEngine API.
Prevent subclassing CompositeSequenceableLoader. This component was previously made extensible but was never subclassed within the library. Customizations can be done by wrapping an instance using the decorator pattern and implementing a custom CompositeSequenceableLoaderFactory.
Fix issue where repeating the same time causes metadata from this item to be cleared (#1007).
Rename experimentalSetSubtitleParserFactory methods on BundledChunkExtractor.Factory and DefaultHlsExtractorFactory to setSubtitleParserFactory and disallow passing null. Use the new experimentalParseSubtitlesDuringExtraction(boolean) methods to control parsing behaviour.
Add support for customising the SubtitleParser.Factory used during extraction. This can be achieved with MediaSource.Factory.setSubtitleParserFactory().
Add source prefix to all Format.id fields generated from MergingMediaSource. This helps to identify which source produced a Format (#883).
Fix the regex used for validating custom Common Media Client Data (CMCD) key names by modifying it to only check for hyphen (#1028).
Add support for flattening H.265/HEVC SEF slow motion videos.
Increase transmuxing speed, especially for 'remove video' edits.
Add API to ensure that the output file starts on a video frame. This can make the output of trimming operations more compatible with player implementations that don't show the first video frame until its presentation timestamp (#829).
Add support for optimizing single asset mp4 trim operations.
Add support to ensure a video frame has the first timestamp in the output file. Fixes output files beginning with black frame on iOS based players (#829).
Track Selection:
Add DefaultTrackSelector.selectImageTrack to enable image track selection.
Add TrackSelectionParameters.isPrioritizeImageOverVideoEnabled to determine whether to select an image track if both an image track and a video track are available. The default value is false which means selecting a video track is prioritized.
Extractors:
Add additional AV1C parsing to MP4 extractor to retrieve ColorInfo.colorSpace, ColorInfo.colorTransfer, and ColorInfo.colorRange values (#692).
MP3: Use constant bitrate (CBR) seeking for files with an Info header (the CBR equivalent of the Xing header). Previously we used the seek table from the Info header, but this results in less precise seeking than if we ignore it and assume the file is CBR.
MPEG2-TS: Add DTS, DTS-LBR and DTS:X Profile2 support (#275).
Extract audio types from TS descriptors and map them to role flags, allowing users to make better-informed audio track selections (#973).
Audio:
Improve silence skipping algorithm with smooth volume ramp; retained minimal silence and more natural silence durations (#7423).
Report the skipped silence more deterministically (#1035).
Video:
Change the MediaCodecVideoRenderer constructor that takes a VideoFrameProcessor.Factory argument and replace it with a constructor that takes a VideoSinkProvider argument. Apps that want to inject a custom VideoFrameProcessor.Factory can instantiate a CompositingVideoSinkProvider that uses the custom VideoFrameProcessor.Factory and pass the video sink provider to MediaCodecVideoRenderer.
Text:
Fix serialization of bitmap cues to resolve Tried to marshall a Parcel that contained Binder objects error when using DefaultExtractorsFactory.setTextTrackTranscodingEnabled (#836).
CEA-708: Ignore rowLock value. The CEA-708-E S-2023 spec states that rowLock and columnLock should both be assumed to be true, regardless of the values present in the stream (columnLock support is not implemented, so it's effectively assumed to always be false).
Image:
Add support for DASH thumbnails. Grid images are cropped and individual thumbnails are provided to ImageOutput close to their presentation times.
This release includes the following changes since the
1.2.1 release:
Common Library:
Implement support for android.resource://package/[type/]name raw
resource URIs where package is different to the package of the current
application. This has always been documented to work, but wasn't
correctly implemented until now.
Normalize MIME types set by app code or read from media to be fully
lower-case.
Define ads with a full MediaItem instead of a single Uri in
AdPlaybackState.
Increase minSdk to 19 (Android KitKat). This is
aligned with all other AndroidX libraries,
and is required for us to upgrade to the latest versions of our AndroidX
dependencies.
Populate both artworkUri and artworkData in
MediaMetadata.Builder.populate(MediaMetadata) when at least one of
them is non-null (#964).
ExoPlayer:
Add PreloadMediaSource and PreloadMediaPeriod that allows apps to
preload a content media source at a specific start position before
playback. PreloadMediaSource takes care of preparing the content media
source to receive the Timeline, preparing and caching the period at
the given start position, selecting tracks and loading media data for
the period. Apps control the preload progress by implementing
PreloadMediaSource.PreloadControl and set the preloaded source to the
player for playback.
Add ExoPlayer.setImageOutput that allows apps to set
ImageRenderer.ImageOutput.
DefaultRenderersFactory now provides an ImageRenderer to the player
by default with null ImageOutput and ImageDecoder.Factory.DEFAULT.
Emit Player.Listener.onPositionDiscontinuity event when silence is
skipped (#765).
Add experimental support for parsing subtitles during extraction. You
can enable this using
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction().
Support adaptive media sources with PreloadMediaSource.
Implement HttpEngineDataSource, an HttpDataSource using the
HttpEngine
API.
Prevent subclassing CompositeSequenceableLoader. This component was
previously made extensible
but was never subclassed within the library. Customizations can be done
by wrapping an instance using the
decorator pattern and
implementing a custom CompositeSequenceableLoaderFactory.
Fix issue where repeating the same time causes metadata from this item
This release includes the following changes since the 1.2.1 release:
Common Library:
Implement support for android.resource://package/[type/]name raw resource URIs where package is different to the package of the current application. This has always been documented to work, but wasn't correctly implemented until now.
Normalize MIME types set by app code or read from media to be fully lower-case.
Define ads with a full MediaItem instead of a single Uri in AdPlaybackState.
Increase minSdk to 19 (Android KitKat). This is aligned with all other AndroidX libraries, and is required for us to upgrade to the latest versions of our AndroidX dependencies.
Populate both artworkUri and artworkData in MediaMetadata.Builder.populate(MediaMetadata) when at least one of them is non-null (#964).
ExoPlayer:
Add PreloadMediaSource and PreloadMediaPeriod that allows apps to preload a content media source at a specific start position before playback. PreloadMediaSource takes care of preparing the content media source to receive the Timeline, preparing and caching the period at the given start position, selecting tracks and loading media data for the period. Apps control the preload progress by implementing PreloadMediaSource.PreloadControl and set the preloaded source to the player for playback.
Add ExoPlayer.setImageOutput that allows apps to set ImageRenderer.ImageOutput.
DefaultRenderersFactory now provides an ImageRenderer to the player by default with null ImageOutput and ImageDecoder.Factory.DEFAULT.
Emit Player.Listener.onPositionDiscontinuity event when silence is skipped (#765).
Add experimental support for parsing subtitles during extraction. You can enable this using MediaSource.Factory.experimentalParseSubtitlesDuringExtraction().
Support adaptive media sources with PreloadMediaSource.
Implement HttpEngineDataSource, an HttpDataSource using the HttpEngine API.
Prevent subclassing CompositeSequenceableLoader. This component was previously made extensible but was never subclassed within the library. Customizations can be done by wrapping an instance using the decorator pattern and implementing a custom CompositeSequenceableLoaderFactory.
Fix issue where repeating the same time causes metadata from this item to be cleared (#1007).
Rename experimentalSetSubtitleParserFactory methods on BundledChunkExtractor.Factory and DefaultHlsExtractorFactory to setSubtitleParserFactory and disallow passing null. Use the new experimentalParseSubtitlesDuringExtraction(boolean) methods to control parsing behaviour.
Add support for customising the SubtitleParser.Factory used during extraction. This can be achieved with MediaSource.Factory.setSubtitleParserFactory().
Add source prefix to all Format.id fields generated from MergingMediaSource. This helps to identify which source produced a Format (#883).
Fix the regex used for validating custom Common Media Client Data (CMCD) key names by modifying it to only check for hyphen (#1028).
Add support for flattening H.265/HEVC SEF slow motion videos.
Increase transmuxing speed, especially for 'remove video' edits.
Add API to ensure that the output file starts on a video frame. This can make the output of trimming operations more compatible with player implementations that don't show the first video frame until its presentation timestamp (#829).
Add support for optimizing single asset mp4 trim operations.
Add support to ensure a video frame has the first timestamp in the output file. Fixes output files beginning with black frame on iOS based players (#829).
Track Selection:
Add DefaultTrackSelector.selectImageTrack to enable image track selection.
Add TrackSelectionParameters.isPrioritizeImageOverVideoEnabled to determine whether to select an image track if both an image track and a video track are available. The default value is false which means selecting a video track is prioritized.
Extractors:
Add additional AV1C parsing to MP4 extractor to retrieve ColorInfo.colorSpace, ColorInfo.colorTransfer, and ColorInfo.colorRange values (#692).
MP3: Use constant bitrate (CBR) seeking for files with an Info header (the CBR equivalent of the Xing header). Previously we used the seek table from the Info header, but this results in less precise seeking than if we ignore it and assume the file is CBR.
MPEG2-TS: Add DTS, DTS-LBR and DTS:X Profile2 support (#275).
Extract audio types from TS descriptors and map them to role flags, allowing users to make better-informed audio track selections (#973).
Audio:
Improve silence skipping algorithm with smooth volume ramp; retained minimal silence and more natural silence durations (#7423).
Report the skipped silence more deterministically (#1035).
Video:
Change the MediaCodecVideoRenderer constructor that takes a VideoFrameProcessor.Factory argument and replace it with a constructor that takes a VideoSinkProvider argument. Apps that want to inject a custom VideoFrameProcessor.Factory can instantiate a CompositingVideoSinkProvider that uses the custom VideoFrameProcessor.Factory and pass the video sink provider to MediaCodecVideoRenderer.
Text:
Fix serialization of bitmap cues to resolve Tried to marshall a Parcel that contained Binder objects error when using DefaultExtractorsFactory.setTextTrackTranscodingEnabled (#836).
CEA-708: Ignore rowLock value. The CEA-708-E S-2023 spec states that rowLock and columnLock should both be assumed to be true, regardless of the values present in the stream (columnLock support is not implemented, so it's effectively assumed to always be false).
Image:
Add support for DASH thumbnails. Grid images are cropped and individual thumbnails are provided to ImageOutput close to their presentation times.
This release includes the following changes since the
1.2.1 release:
Common Library:
Implement support for android.resource://package/[type/]name raw
resource URIs where package is different to the package of the current
application. This has always been documented to work, but wasn't
correctly implemented until now.
Normalize MIME types set by app code or read from media to be fully
lower-case.
Define ads with a full MediaItem instead of a single Uri in
AdPlaybackState.
Increase minSdk to 19 (Android KitKat). This is
aligned with all other AndroidX libraries,
and is required for us to upgrade to the latest versions of our AndroidX
dependencies.
Populate both artworkUri and artworkData in
MediaMetadata.Builder.populate(MediaMetadata) when at least one of
them is non-null (#964).
ExoPlayer:
Add PreloadMediaSource and PreloadMediaPeriod that allows apps to
preload a content media source at a specific start position before
playback. PreloadMediaSource takes care of preparing the content media
source to receive the Timeline, preparing and caching the period at
the given start position, selecting tracks and loading media data for
the period. Apps control the preload progress by implementing
PreloadMediaSource.PreloadControl and set the preloaded source to the
player for playback.
Add ExoPlayer.setImageOutput that allows apps to set
ImageRenderer.ImageOutput.
DefaultRenderersFactory now provides an ImageRenderer to the player
by default with null ImageOutput and ImageDecoder.Factory.DEFAULT.
Emit Player.Listener.onPositionDiscontinuity event when silence is
skipped (#765).
Add experimental support for parsing subtitles during extraction. You
can enable this using
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction().
Support adaptive media sources with PreloadMediaSource.
Implement HttpEngineDataSource, an HttpDataSource using the
HttpEngine
API.
Prevent subclassing CompositeSequenceableLoader. This component was
previously made extensible
but was never subclassed within the library. Customizations can be done
by wrapping an instance using the
decorator pattern and
implementing a custom CompositeSequenceableLoaderFactory.
Fix issue where repeating the same time causes metadata from this item
This release includes the following changes since the 1.2.1 release:
Common Library:
Implement support for android.resource://package/[type/]name raw resource URIs where package is different to the package of the current application. This has always been documented to work, but wasn't correctly implemented until now.
Normalize MIME types set by app code or read from media to be fully lower-case.
Define ads with a full MediaItem instead of a single Uri in AdPlaybackState.
Increase minSdk to 19 (Android KitKat). This is aligned with all other AndroidX libraries, and is required for us to upgrade to the latest versions of our AndroidX dependencies.
Populate both artworkUri and artworkData in MediaMetadata.Builder.populate(MediaMetadata) when at least one of them is non-null (#964).
ExoPlayer:
Add PreloadMediaSource and PreloadMediaPeriod that allows apps to preload a content media source at a specific start position before playback. PreloadMediaSource takes care of preparing the content media source to receive the Timeline, preparing and caching the period at the given start position, selecting tracks and loading media data for the period. Apps control the preload progress by implementing PreloadMediaSource.PreloadControl and set the preloaded source to the player for playback.
Add ExoPlayer.setImageOutput that allows apps to set ImageRenderer.ImageOutput.
DefaultRenderersFactory now provides an ImageRenderer to the player by default with null ImageOutput and ImageDecoder.Factory.DEFAULT.
Emit Player.Listener.onPositionDiscontinuity event when silence is skipped (#765).
Add experimental support for parsing subtitles during extraction. You can enable this using MediaSource.Factory.experimentalParseSubtitlesDuringExtraction().
Support adaptive media sources with PreloadMediaSource.
Implement HttpEngineDataSource, an HttpDataSource using the HttpEngine API.
Prevent subclassing CompositeSequenceableLoader. This component was previously made extensible but was never subclassed within the library. Customizations can be done by wrapping an instance using the decorator pattern and implementing a custom CompositeSequenceableLoaderFactory.
Fix issue where repeating the same time causes metadata from this item to be cleared (#1007).
Rename experimentalSetSubtitleParserFactory methods on BundledChunkExtractor.Factory and DefaultHlsExtractorFactory to setSubtitleParserFactory and disallow passing null. Use the new experimentalParseSubtitlesDuringExtraction(boolean) methods to control parsing behaviour.
Add support for customising the SubtitleParser.Factory used during extraction. This can be achieved with MediaSource.Factory.setSubtitleParserFactory().
Add source prefix to all Format.id fields generated from
Bumps
androidx-media3
from 1.2.1 to 1.3.0. Updatesandroidx.media3:media3-exoplayer
from 1.2.1 to 1.3.0Release notes
Sourced from androidx.media3:media3-exoplayer's releases.
... (truncated)
Changelog
Sourced from androidx.media3:media3-exoplayer's changelog.
... (truncated)
Commits
d13a0f4
Merge branch 'release' into release-1.3.099e7156
Update media3 version for 1.3.0 stable releasec6a6b81
Update release notes section for 1.3.0 stable releaseee0eac7
Fix nit issues in 1.3.0-rc01 release notesfbf8ac3
Version bump to media3:1.3.0-rc0143ee291
Update release notes for media3:1.3.0-rc0138d5635
Report the skipped silence more deterministicallye492e37
Move release note to the right sectiondbb99fe
Rollback of https://github.com/androidx/media/commit/406c0a15be6f0937fe53df0b...1dc4377
Stop double-encoding CMCD query parametersUpdates
androidx.media3:media3-exoplayer-dash
from 1.2.1 to 1.3.0Release notes
Sourced from androidx.media3:media3-exoplayer-dash's releases.
... (truncated)
Changelog
Sourced from androidx.media3:media3-exoplayer-dash's changelog.
... (truncated)
Commits
d13a0f4
Merge branch 'release' into release-1.3.099e7156
Update media3 version for 1.3.0 stable releasec6a6b81
Update release notes section for 1.3.0 stable releaseee0eac7
Fix nit issues in 1.3.0-rc01 release notesfbf8ac3
Version bump to media3:1.3.0-rc0143ee291
Update release notes for media3:1.3.0-rc0138d5635
Report the skipped silence more deterministicallye492e37
Move release note to the right sectiondbb99fe
Rollback of https://github.com/androidx/media/commit/406c0a15be6f0937fe53df0b...1dc4377
Stop double-encoding CMCD query parametersUpdates
androidx.media3:media3-exoplayer-hls
from 1.2.1 to 1.3.0Release notes
Sourced from androidx.media3:media3-exoplayer-hls's releases.
... (truncated)
Changelog
Sourced from androidx.media3:media3-exoplayer-hls's changelog.
... (truncated)
Commits
d13a0f4
Merge branch 'release' into release-1.3.099e7156
Update media3 version for 1.3.0 stable releasec6a6b81
Update release notes section for 1.3.0 stable releaseee0eac7
Fix nit issues in 1.3.0-rc01 release notesfbf8ac3
Version bump to media3:1.3.0-rc0143ee291
Update release notes for media3:1.3.0-rc0138d5635
Report the skipped silence more deterministicallye492e37
Move release note to the right sectiondbb99fe
Rollback of https://github.com/androidx/media/commit/406c0a15be6f0937fe53df0b...1dc4377
Stop double-encoding CMCD query parametersUpdates
androidx.media3:media3-exoplayer-smoothstreaming
from 1.2.1 to 1.3.0Release notes
Sourced from androidx.media3:media3-exoplayer-smoothstreaming's releases.
... (truncated)
Changelog
Sourced from androidx.media3:media3-exoplayer-smoothstreaming's changelog.
... (truncated)
Commits
d13a0f4
Merge branch 'release' into release-1.3.099e7156
Update media3 version for 1.3.0 stable releasec6a6b81
Update release notes section for 1.3.0 stable releaseee0eac7
Fix nit issues in 1.3.0-rc01 release notesfbf8ac3
Version bump to media3:1.3.0-rc0143ee291
Update release notes for media3:1.3.0-rc0138d5635
Report the skipped silence more deterministicallye492e37
Move release note to the right sectiondbb99fe
Rollback of https://github.com/androidx/media/commit/406c0a15be6f0937fe53df0b...1dc4377
Stop double-encoding CMCD query parametersUpdates
androidx.media3:media3-exoplayer-rtsp
from 1.2.1 to 1.3.0Release notes
Sourced from androidx.media3:media3-exoplayer-rtsp's releases.