Remove @Nullable
from some Dash/Hls/SsMediaSource.Factory
methods
The null-behaviour of these methods creates a minimization footgun,
because **any** call to these setters will prevent R8 from removing
the default implementation (even if it's never used by the app) - this
is because R8 can't tell the default implementation is only used if the
parameter is `null`.
Follow-up to 07302a23bd
PiperOrigin-RevId: 450395941
This commit is contained in:
parent
07302a23bd
commit
07039a45b0
@ -74,10 +74,27 @@
|
||||
* Parse channel count from DTS `AudioChannelConfiguration` elements. This
|
||||
re-enables audio passthrough for DTS streams
|
||||
([#10159](https://github.com/google/ExoPlayer/issues/10159)).
|
||||
* Disallow passing `null` to
|
||||
`DashMediaSource.Factory.setCompositeSequenceableLoaderFactory`.
|
||||
Instances of `DefaultCompositeSequenceableLoaderFactory` can be passed
|
||||
explicitly if required.
|
||||
* HLS:
|
||||
* Fallback to chunkful preparation if the playlist CODECS attribute does
|
||||
not contain the audio codec
|
||||
([#10065](https://github.com/google/ExoPlayer/issues/10065)).
|
||||
* Disallow passing `null` to
|
||||
`HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory`,
|
||||
`HlsMediaSource.Factory.setPlaylistParserFactory`, and
|
||||
`HlsMediaSource.Factory.setPlaylistTrackerFactory`. Instances of
|
||||
`DefaultCompositeSequenceableLoaderFactory`,
|
||||
`DefaultHlsPlaylistParserFactory`, or a reference to
|
||||
`DefaultHlsPlaylistTracker.FACTORY` can be passed explicitly if
|
||||
required.
|
||||
* Smooth Streaming:
|
||||
* Disallow passing `null` to
|
||||
`SsMediaSource.Factory.setCompositeSequenceableLoaderFactory`. Instances
|
||||
of `DefaultCompositeSequenceableLoaderFactory` can be passed explicitly
|
||||
if required.
|
||||
* RTSP:
|
||||
* Add RTP reader for MPEG4
|
||||
([#35](https://github.com/androidx/media/pull/35)).
|
||||
|
@ -218,11 +218,13 @@ public final class DashMediaSource extends BaseMediaSource {
|
||||
* @return This factory, for convenience.
|
||||
*/
|
||||
public Factory setCompositeSequenceableLoaderFactory(
|
||||
@Nullable CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory) {
|
||||
CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory) {
|
||||
this.compositeSequenceableLoaderFactory =
|
||||
compositeSequenceableLoaderFactory != null
|
||||
? compositeSequenceableLoaderFactory
|
||||
: new DefaultCompositeSequenceableLoaderFactory();
|
||||
checkNotNull(
|
||||
compositeSequenceableLoaderFactory,
|
||||
"DashMediaSource.Factory#setCompositeSequenceableLoaderFactory no longer handles null"
|
||||
+ " by instantiating a new DefaultCompositeSequenceableLoaderFactory. Explicitly"
|
||||
+ " construct and pass an instance in order to retain the old behavior.");
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -189,41 +189,40 @@ public final class HlsMediaSource extends BaseMediaSource
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the factory from which playlist parsers will be obtained. The default value is a {@link
|
||||
* DefaultHlsPlaylistParserFactory}.
|
||||
* Sets the factory from which playlist parsers will be obtained.
|
||||
*
|
||||
* @param playlistParserFactory An {@link HlsPlaylistParserFactory}.
|
||||
* @return This factory, for convenience.
|
||||
*/
|
||||
public Factory setPlaylistParserFactory(
|
||||
@Nullable HlsPlaylistParserFactory playlistParserFactory) {
|
||||
public Factory setPlaylistParserFactory(HlsPlaylistParserFactory playlistParserFactory) {
|
||||
this.playlistParserFactory =
|
||||
playlistParserFactory != null
|
||||
? playlistParserFactory
|
||||
: new DefaultHlsPlaylistParserFactory();
|
||||
checkNotNull(
|
||||
playlistParserFactory,
|
||||
"HlsMediaSource.Factory#setPlaylistParserFactory no longer handles null by"
|
||||
+ " instantiating a new DefaultHlsPlaylistParserFactory. Explicitly"
|
||||
+ " construct and pass an instance in order to retain the old behavior.");
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the {@link HlsPlaylistTracker} factory. The default value is {@link
|
||||
* DefaultHlsPlaylistTracker#FACTORY}.
|
||||
* Sets the {@link HlsPlaylistTracker} factory.
|
||||
*
|
||||
* @param playlistTrackerFactory A factory for {@link HlsPlaylistTracker} instances.
|
||||
* @return This factory, for convenience.
|
||||
*/
|
||||
public Factory setPlaylistTrackerFactory(
|
||||
@Nullable HlsPlaylistTracker.Factory playlistTrackerFactory) {
|
||||
public Factory setPlaylistTrackerFactory(HlsPlaylistTracker.Factory playlistTrackerFactory) {
|
||||
this.playlistTrackerFactory =
|
||||
playlistTrackerFactory != null
|
||||
? playlistTrackerFactory
|
||||
: DefaultHlsPlaylistTracker.FACTORY;
|
||||
checkNotNull(
|
||||
playlistTrackerFactory,
|
||||
"HlsMediaSource.Factory#setPlaylistTrackerFactory no longer handles null by"
|
||||
+ " defaulting to DefaultHlsPlaylistTracker.FACTORY. Explicitly"
|
||||
+ " pass a reference to this instance in order to retain the old behavior.");
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the factory to create composite {@link SequenceableLoader}s for when this media source
|
||||
* loads data from multiple streams (video, audio etc...). The default is an instance of {@link
|
||||
* DefaultCompositeSequenceableLoaderFactory}.
|
||||
* loads data from multiple streams (video, audio etc...).
|
||||
*
|
||||
* @param compositeSequenceableLoaderFactory A factory to create composite {@link
|
||||
* SequenceableLoader}s for when this media source loads data from multiple streams (video,
|
||||
@ -231,11 +230,13 @@ public final class HlsMediaSource extends BaseMediaSource
|
||||
* @return This factory, for convenience.
|
||||
*/
|
||||
public Factory setCompositeSequenceableLoaderFactory(
|
||||
@Nullable CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory) {
|
||||
CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory) {
|
||||
this.compositeSequenceableLoaderFactory =
|
||||
compositeSequenceableLoaderFactory != null
|
||||
? compositeSequenceableLoaderFactory
|
||||
: new DefaultCompositeSequenceableLoaderFactory();
|
||||
checkNotNull(
|
||||
compositeSequenceableLoaderFactory,
|
||||
"HlsMediaSource.Factory#setCompositeSequenceableLoaderFactory no longer handles null"
|
||||
+ " by instantiating a new DefaultCompositeSequenceableLoaderFactory. Explicitly"
|
||||
+ " construct and pass an instance in order to retain the old behavior.");
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -175,8 +175,7 @@ public final class SsMediaSource extends BaseMediaSource
|
||||
|
||||
/**
|
||||
* Sets the factory to create composite {@link SequenceableLoader}s for when this media source
|
||||
* loads data from multiple streams (video, audio etc.). The default is an instance of {@link
|
||||
* DefaultCompositeSequenceableLoaderFactory}.
|
||||
* loads data from multiple streams (video, audio etc.).
|
||||
*
|
||||
* @param compositeSequenceableLoaderFactory A factory to create composite {@link
|
||||
* SequenceableLoader}s for when this media source loads data from multiple streams (video,
|
||||
@ -184,11 +183,13 @@ public final class SsMediaSource extends BaseMediaSource
|
||||
* @return This factory, for convenience.
|
||||
*/
|
||||
public Factory setCompositeSequenceableLoaderFactory(
|
||||
@Nullable CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory) {
|
||||
CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory) {
|
||||
this.compositeSequenceableLoaderFactory =
|
||||
compositeSequenceableLoaderFactory != null
|
||||
? compositeSequenceableLoaderFactory
|
||||
: new DefaultCompositeSequenceableLoaderFactory();
|
||||
checkNotNull(
|
||||
compositeSequenceableLoaderFactory,
|
||||
"SsMediaSource.Factory#setCompositeSequenceableLoaderFactory no longer handles null"
|
||||
+ " by instantiating a new DefaultCompositeSequenceableLoaderFactory. Explicitly"
|
||||
+ " construct and pass an instance in order to retain the old behavior.");
|
||||
return this;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user