Restructure setup of default values in track selection parameter builders.

PiperOrigin-RevId: 270250456
This commit is contained in:
tonihei 2019-09-20 13:40:49 +01:00 committed by Toni
parent 6cd530520d
commit 0cc0444af8
3 changed files with 58 additions and 64 deletions

View File

@ -89,7 +89,7 @@ public final class DownloadHelper {
* *
* <p>If possible, use {@link #getDefaultTrackSelectorParameters(Context)} instead. * <p>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 = public static final Parameters DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT =
Parameters.DEFAULT_WITHOUT_CONTEXT.buildUpon().setForceHighestSupportedBitrate(true).build(); Parameters.DEFAULT_WITHOUT_CONTEXT.buildUpon().setForceHighestSupportedBitrate(true).build();

View File

@ -43,6 +43,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import org.checkerframework.checker.initialization.qual.UnderInitialization;
import org.checkerframework.checker.nullness.compatqual.NullableType; import org.checkerframework.checker.nullness.compatqual.NullableType;
/** /**
@ -191,8 +192,12 @@ public class DefaultTrackSelector extends MappingTrackSelector {
* #ParametersBuilder(Context)} instead. * #ParametersBuilder(Context)} instead.
*/ */
@Deprecated @Deprecated
@SuppressWarnings({"deprecation"})
public ParametersBuilder() { 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. * @param context Any context.
*/ */
public ParametersBuilder(Context 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); 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<Map<TrackGroupArray, SelectionOverride>> cloneSelectionOverrides( private static SparseArray<Map<TrackGroupArray, SelectionOverride>> cloneSelectionOverrides(
SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides) { SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides) {
SparseArray<Map<TrackGroupArray, SelectionOverride>> clone = new SparseArray<>(); SparseArray<Map<TrackGroupArray, SelectionOverride>> clone = new SparseArray<>();
@ -771,7 +807,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
* {@link android.view.accessibility.CaptioningManager}. * {@link android.view.accessibility.CaptioningManager}.
* </ul> * </ul>
*/ */
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 * @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 * @deprecated This instance does not have {@link Context} constraints configured. Use {@link
* #getDefaults(Context)} instead. * #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. */ /** Returns an instance configured with default values. */
public static Parameters getDefaults(Context context) { public static Parameters getDefaults(Context context) {
return DEFAULT_WITHOUT_CONTEXT return new ParametersBuilder(context).build();
.buildUpon()
.setViewportSizeToPhysicalDisplaySize(context, /* viewportOrientationMayChange= */ true)
.setPreferredTextLanguageAndRoleFlagsToCaptioningManagerSettings(context)
.build();
} }
// Video // Video
@ -931,41 +966,6 @@ public class DefaultTrackSelector extends MappingTrackSelector {
private final SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides; private final SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides;
private final SparseBooleanArray rendererDisabledFlags; 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( /* package */ Parameters(
// Video // Video
int maxVideoWidth, int maxVideoWidth,
@ -1458,6 +1458,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
/** @deprecated Use {@link #DefaultTrackSelector(Context, TrackSelection.Factory)}. */ /** @deprecated Use {@link #DefaultTrackSelector(Context, TrackSelection.Factory)}. */
@Deprecated @Deprecated
@SuppressWarnings("deprecation")
public DefaultTrackSelector(TrackSelection.Factory trackSelectionFactory) { public DefaultTrackSelector(TrackSelection.Factory trackSelectionFactory) {
this(Parameters.DEFAULT_WITHOUT_CONTEXT, trackSelectionFactory); this(Parameters.DEFAULT_WITHOUT_CONTEXT, trackSelectionFactory);
} }

View File

@ -46,8 +46,10 @@ public class TrackSelectionParameters implements Parcelable {
* *
* @param context Any context. * @param context Any context.
*/ */
@SuppressWarnings({"deprecation", "initialization:method.invocation.invalid"})
public Builder(Context context) { public Builder(Context context) {
this(TrackSelectionParameters.getDefaults(context)); this();
setPreferredTextLanguageAndRoleFlagsToCaptioningManagerSettings(context);
} }
/** /**
@ -56,7 +58,11 @@ public class TrackSelectionParameters implements Parcelable {
*/ */
@Deprecated @Deprecated
public Builder() { 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}. * {@link CaptioningManager}.
* </ul> * </ul>
*/ */
public static final TrackSelectionParameters DEFAULT_WITHOUT_CONTEXT = @SuppressWarnings("deprecation")
new TrackSelectionParameters(); public static final TrackSelectionParameters DEFAULT_WITHOUT_CONTEXT = new Builder().build();
/** /**
* @deprecated This instance is not configured using {@link Context} constraints. Use {@link * @deprecated This instance is not configured using {@link Context} constraints. Use {@link
* #getDefaults(Context)} instead. * #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. */ /** Returns an instance configured with default values. */
public static TrackSelectionParameters getDefaults(Context context) { public static TrackSelectionParameters getDefaults(Context context) {
return DEFAULT_WITHOUT_CONTEXT return new Builder(context).build();
.buildUpon()
.setPreferredTextLanguageAndRoleFlagsToCaptioningManagerSettings(context)
.build();
} }
/** /**
@ -239,16 +242,6 @@ public class TrackSelectionParameters implements Parcelable {
*/ */
@C.SelectionFlags public final int disabledTextTrackSelectionFlags; @C.SelectionFlags public final int disabledTextTrackSelectionFlags;
/* package */ TrackSelectionParameters() {
this(
/* preferredAudioLanguage= */ null,
// Text
/* preferredTextLanguage= */ null,
/* preferredTextRoleFlags= */ 0,
/* selectUndeterminedTextLanguage= */ false,
/* disabledTextTrackSelectionFlags= */ 0);
}
/* package */ TrackSelectionParameters( /* package */ TrackSelectionParameters(
@Nullable String preferredAudioLanguage, @Nullable String preferredAudioLanguage,
@Nullable String preferredTextLanguage, @Nullable String preferredTextLanguage,