diff --git a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java index aad2b45eab..57ef5731fb 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java @@ -89,7 +89,7 @@ public final class DownloadHelper { * *

If possible, use {@link #getDefaultTrackSelectorParameters(Context)} instead. * - * @see DefaultTrackSelector.Parameters#DEFAULT_WITHOUT_CONTEXT + * @see Parameters#DEFAULT_WITHOUT_CONTEXT */ public static final Parameters DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT = Parameters.DEFAULT_WITHOUT_CONTEXT.buildUpon().setForceHighestSupportedBitrate(true).build(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java b/library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java index ad606d78dd..c36f23c472 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java @@ -43,6 +43,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; +import org.checkerframework.checker.initialization.qual.UnderInitialization; import org.checkerframework.checker.nullness.compatqual.NullableType; /** @@ -191,8 +192,12 @@ public class DefaultTrackSelector extends MappingTrackSelector { * #ParametersBuilder(Context)} instead. */ @Deprecated + @SuppressWarnings({"deprecation"}) public ParametersBuilder() { - this(Parameters.DEFAULT_WITHOUT_CONTEXT); + super(); + setInitialValuesWithoutContext(); + selectionOverrides = new SparseArray<>(); + rendererDisabledFlags = new SparseBooleanArray(); } /** @@ -200,8 +205,13 @@ public class DefaultTrackSelector extends MappingTrackSelector { * * @param context Any context. */ + public ParametersBuilder(Context context) { - this(Parameters.getDefaults(context)); + super(context); + setInitialValuesWithoutContext(); + selectionOverrides = new SparseArray<>(); + rendererDisabledFlags = new SparseBooleanArray(); + setViewportSizeToPhysicalDisplaySize(context, /* viewportOrientationMayChange= */ true); } /** @@ -739,6 +749,32 @@ public class DefaultTrackSelector extends MappingTrackSelector { rendererDisabledFlags); } + private void setInitialValuesWithoutContext(@UnderInitialization ParametersBuilder this) { + // Video + maxVideoWidth = Integer.MAX_VALUE; + maxVideoHeight = Integer.MAX_VALUE; + maxVideoFrameRate = Integer.MAX_VALUE; + maxVideoBitrate = Integer.MAX_VALUE; + exceedVideoConstraintsIfNecessary = true; + allowVideoMixedMimeTypeAdaptiveness = false; + allowVideoNonSeamlessAdaptiveness = true; + viewportWidth = Integer.MAX_VALUE; + viewportHeight = Integer.MAX_VALUE; + viewportOrientationMayChange = true; + // Audio + maxAudioChannelCount = Integer.MAX_VALUE; + maxAudioBitrate = Integer.MAX_VALUE; + exceedAudioConstraintsIfNecessary = true; + allowAudioMixedMimeTypeAdaptiveness = false; + allowAudioMixedSampleRateAdaptiveness = false; + allowAudioMixedChannelCountAdaptiveness = false; + // General + forceLowestBitrate = false; + forceHighestSupportedBitrate = false; + exceedRendererCapabilitiesIfNecessary = true; + tunnelingAudioSessionId = C.AUDIO_SESSION_ID_UNSET; + } + private static SparseArray> cloneSelectionOverrides( SparseArray> selectionOverrides) { SparseArray> clone = new SparseArray<>(); @@ -771,7 +807,8 @@ public class DefaultTrackSelector extends MappingTrackSelector { * {@link android.view.accessibility.CaptioningManager}. * */ - public static final Parameters DEFAULT_WITHOUT_CONTEXT = new Parameters(); + @SuppressWarnings("deprecation") + public static final Parameters DEFAULT_WITHOUT_CONTEXT = new ParametersBuilder().build(); /** * @deprecated This instance does not have {@link Context} constraints configured. Use {@link @@ -783,15 +820,13 @@ public class DefaultTrackSelector extends MappingTrackSelector { * @deprecated This instance does not have {@link Context} constraints configured. Use {@link * #getDefaults(Context)} instead. */ - @Deprecated public static final Parameters DEFAULT = DEFAULT_WITHOUT_CONTEXT; + @SuppressWarnings("deprecation") + @Deprecated + public static final Parameters DEFAULT = DEFAULT_WITHOUT_CONTEXT; /** Returns an instance configured with default values. */ public static Parameters getDefaults(Context context) { - return DEFAULT_WITHOUT_CONTEXT - .buildUpon() - .setViewportSizeToPhysicalDisplaySize(context, /* viewportOrientationMayChange= */ true) - .setPreferredTextLanguageAndRoleFlagsToCaptioningManagerSettings(context) - .build(); + return new ParametersBuilder(context).build(); } // Video @@ -931,41 +966,6 @@ public class DefaultTrackSelector extends MappingTrackSelector { private final SparseArray> selectionOverrides; private final SparseBooleanArray rendererDisabledFlags; - private Parameters() { - this( - // Video - /* maxVideoWidth= */ Integer.MAX_VALUE, - /* maxVideoHeight= */ Integer.MAX_VALUE, - /* maxVideoFrameRate= */ Integer.MAX_VALUE, - /* maxVideoBitrate= */ Integer.MAX_VALUE, - /* exceedVideoConstraintsIfNecessary= */ true, - /* allowVideoMixedMimeTypeAdaptiveness= */ false, - /* allowVideoNonSeamlessAdaptiveness= */ true, - /* viewportWidth= */ Integer.MAX_VALUE, - /* viewportHeight= */ Integer.MAX_VALUE, - /* viewportOrientationMayChange= */ true, - // Audio - TrackSelectionParameters.DEFAULT_WITHOUT_CONTEXT.preferredAudioLanguage, - /* maxAudioChannelCount= */ Integer.MAX_VALUE, - /* maxAudioBitrate= */ Integer.MAX_VALUE, - /* exceedAudioConstraintsIfNecessary= */ true, - /* allowAudioMixedMimeTypeAdaptiveness= */ false, - /* allowAudioMixedSampleRateAdaptiveness= */ false, - /* allowAudioMixedChannelCountAdaptiveness= */ false, - // Text - TrackSelectionParameters.DEFAULT_WITHOUT_CONTEXT.preferredTextLanguage, - TrackSelectionParameters.DEFAULT_WITHOUT_CONTEXT.preferredTextRoleFlags, - TrackSelectionParameters.DEFAULT_WITHOUT_CONTEXT.selectUndeterminedTextLanguage, - TrackSelectionParameters.DEFAULT_WITHOUT_CONTEXT.disabledTextTrackSelectionFlags, - // General - /* forceLowestBitrate= */ false, - /* forceHighestSupportedBitrate= */ false, - /* exceedRendererCapabilitiesIfNecessary= */ true, - /* tunnelingAudioSessionId= */ C.AUDIO_SESSION_ID_UNSET, - new SparseArray<>(), - new SparseBooleanArray()); - } - /* package */ Parameters( // Video int maxVideoWidth, @@ -1458,6 +1458,7 @@ public class DefaultTrackSelector extends MappingTrackSelector { /** @deprecated Use {@link #DefaultTrackSelector(Context, TrackSelection.Factory)}. */ @Deprecated + @SuppressWarnings("deprecation") public DefaultTrackSelector(TrackSelection.Factory trackSelectionFactory) { this(Parameters.DEFAULT_WITHOUT_CONTEXT, trackSelectionFactory); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/trackselection/TrackSelectionParameters.java b/library/core/src/main/java/com/google/android/exoplayer2/trackselection/TrackSelectionParameters.java index dca9aef209..bc21fb2bf3 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/trackselection/TrackSelectionParameters.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/trackselection/TrackSelectionParameters.java @@ -46,8 +46,10 @@ public class TrackSelectionParameters implements Parcelable { * * @param context Any context. */ + @SuppressWarnings({"deprecation", "initialization:method.invocation.invalid"}) public Builder(Context context) { - this(TrackSelectionParameters.getDefaults(context)); + this(); + setPreferredTextLanguageAndRoleFlagsToCaptioningManagerSettings(context); } /** @@ -56,7 +58,11 @@ public class TrackSelectionParameters implements Parcelable { */ @Deprecated public Builder() { - this(DEFAULT_WITHOUT_CONTEXT); + preferredAudioLanguage = null; + preferredTextLanguage = null; + preferredTextRoleFlags = 0; + selectUndeterminedTextLanguage = false; + disabledTextTrackSelectionFlags = 0; } /** @@ -191,21 +197,18 @@ public class TrackSelectionParameters implements Parcelable { * {@link CaptioningManager}. * */ - public static final TrackSelectionParameters DEFAULT_WITHOUT_CONTEXT = - new TrackSelectionParameters(); + @SuppressWarnings("deprecation") + public static final TrackSelectionParameters DEFAULT_WITHOUT_CONTEXT = new Builder().build(); /** * @deprecated This instance is not configured using {@link Context} constraints. Use {@link * #getDefaults(Context)} instead. */ - @Deprecated public static final TrackSelectionParameters DEFAULT = new TrackSelectionParameters(); + @Deprecated public static final TrackSelectionParameters DEFAULT = DEFAULT_WITHOUT_CONTEXT; /** Returns an instance configured with default values. */ public static TrackSelectionParameters getDefaults(Context context) { - return DEFAULT_WITHOUT_CONTEXT - .buildUpon() - .setPreferredTextLanguageAndRoleFlagsToCaptioningManagerSettings(context) - .build(); + return new Builder(context).build(); } /** @@ -239,16 +242,6 @@ public class TrackSelectionParameters implements Parcelable { */ @C.SelectionFlags public final int disabledTextTrackSelectionFlags; - /* package */ TrackSelectionParameters() { - this( - /* preferredAudioLanguage= */ null, - // Text - /* preferredTextLanguage= */ null, - /* preferredTextRoleFlags= */ 0, - /* selectUndeterminedTextLanguage= */ false, - /* disabledTextTrackSelectionFlags= */ 0); - } - /* package */ TrackSelectionParameters( @Nullable String preferredAudioLanguage, @Nullable String preferredTextLanguage,