Commit 194d0f33 by olly Committed by Oliver Woodman

Add a bit of structure DefaultTrackSelector, for sanity

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219109829
parent ed32e2a7
Showing with 348 additions and 285 deletions
......@@ -164,23 +164,27 @@ public class DefaultTrackSelector extends MappingTrackSelector {
private final SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides;
private final SparseBooleanArray rendererDisabledFlags;
private @Nullable String preferredAudioLanguage;
private @Nullable String preferredTextLanguage;
private boolean selectUndeterminedTextLanguage;
private int disabledTextTrackSelectionFlags;
private boolean forceLowestBitrate;
private boolean forceHighestSupportedBitrate;
private boolean allowMixedMimeAdaptiveness;
private boolean allowNonSeamlessAdaptiveness;
// Video
private int maxVideoWidth;
private int maxVideoHeight;
private int maxVideoFrameRate;
private int maxVideoBitrate;
private boolean exceedVideoConstraintsIfNecessary;
private boolean exceedRendererCapabilitiesIfNecessary;
private int viewportWidth;
private int viewportHeight;
private boolean viewportOrientationMayChange;
// Audio
@Nullable private String preferredAudioLanguage;
// Text
@Nullable private String preferredTextLanguage;
private boolean selectUndeterminedTextLanguage;
private int disabledTextTrackSelectionFlags;
// General
private boolean forceLowestBitrate;
private boolean forceHighestSupportedBitrate;
private boolean allowMixedMimeAdaptiveness;
private boolean allowNonSeamlessAdaptiveness;
private boolean exceedRendererCapabilitiesIfNecessary;
private int tunnelingAudioSessionId;
/** Creates a builder with default initial values. */
......@@ -193,223 +197,258 @@ public class DefaultTrackSelector extends MappingTrackSelector {
* obtained.
*/
private ParametersBuilder(Parameters initialValues) {
selectionOverrides = cloneSelectionOverrides(initialValues.selectionOverrides);
rendererDisabledFlags = initialValues.rendererDisabledFlags.clone();
// Video
maxVideoWidth = initialValues.maxVideoWidth;
maxVideoHeight = initialValues.maxVideoHeight;
maxVideoFrameRate = initialValues.maxVideoFrameRate;
maxVideoBitrate = initialValues.maxVideoBitrate;
exceedVideoConstraintsIfNecessary = initialValues.exceedVideoConstraintsIfNecessary;
viewportWidth = initialValues.viewportWidth;
viewportHeight = initialValues.viewportHeight;
viewportOrientationMayChange = initialValues.viewportOrientationMayChange;
// Audio
preferredAudioLanguage = initialValues.preferredAudioLanguage;
// Text
preferredTextLanguage = initialValues.preferredTextLanguage;
selectUndeterminedTextLanguage = initialValues.selectUndeterminedTextLanguage;
disabledTextTrackSelectionFlags = initialValues.disabledTextTrackSelectionFlags;
// General
forceLowestBitrate = initialValues.forceLowestBitrate;
forceHighestSupportedBitrate = initialValues.forceHighestSupportedBitrate;
allowMixedMimeAdaptiveness = initialValues.allowMixedMimeAdaptiveness;
allowNonSeamlessAdaptiveness = initialValues.allowNonSeamlessAdaptiveness;
maxVideoWidth = initialValues.maxVideoWidth;
maxVideoHeight = initialValues.maxVideoHeight;
maxVideoFrameRate = initialValues.maxVideoFrameRate;
maxVideoBitrate = initialValues.maxVideoBitrate;
exceedVideoConstraintsIfNecessary = initialValues.exceedVideoConstraintsIfNecessary;
exceedRendererCapabilitiesIfNecessary = initialValues.exceedRendererCapabilitiesIfNecessary;
viewportWidth = initialValues.viewportWidth;
viewportHeight = initialValues.viewportHeight;
viewportOrientationMayChange = initialValues.viewportOrientationMayChange;
tunnelingAudioSessionId = initialValues.tunnelingAudioSessionId;
// Overrides
selectionOverrides = cloneSelectionOverrides(initialValues.selectionOverrides);
rendererDisabledFlags = initialValues.rendererDisabledFlags.clone();
}
// Video
/**
* See {@link Parameters#preferredAudioLanguage}.
* Equivalent to {@link #setMaxVideoSize setMaxVideoSize(1279, 719)}.
*
* @return This builder.
*/
public ParametersBuilder setPreferredAudioLanguage(String preferredAudioLanguage) {
this.preferredAudioLanguage = preferredAudioLanguage;
return this;
public ParametersBuilder setMaxVideoSizeSd() {
return setMaxVideoSize(1279, 719);
}
/**
* See {@link Parameters#preferredTextLanguage}.
* Equivalent to {@link #setMaxVideoSize setMaxVideoSize(Integer.MAX_VALUE, Integer.MAX_VALUE)}.
*
* @return This builder.
*/
public ParametersBuilder setPreferredTextLanguage(String preferredTextLanguage) {
this.preferredTextLanguage = preferredTextLanguage;
return this;
public ParametersBuilder clearVideoSizeConstraints() {
return setMaxVideoSize(Integer.MAX_VALUE, Integer.MAX_VALUE);
}
/**
* See {@link Parameters#selectUndeterminedTextLanguage}.
* See {@link Parameters#maxVideoWidth} and {@link Parameters#maxVideoHeight}.
*
* @return This builder.
*/
public ParametersBuilder setSelectUndeterminedTextLanguage(
boolean selectUndeterminedTextLanguage) {
this.selectUndeterminedTextLanguage = selectUndeterminedTextLanguage;
public ParametersBuilder setMaxVideoSize(int maxVideoWidth, int maxVideoHeight) {
this.maxVideoWidth = maxVideoWidth;
this.maxVideoHeight = maxVideoHeight;
return this;
}
/**
* See {@link Parameters#disabledTextTrackSelectionFlags}.
* See {@link Parameters#maxVideoFrameRate}.
*
* @return This builder.
*/
public ParametersBuilder setDisabledTextTrackSelectionFlags(
int disabledTextTrackSelectionFlags) {
this.disabledTextTrackSelectionFlags = disabledTextTrackSelectionFlags;
public ParametersBuilder setMaxVideoFrameRate(int maxVideoFrameRate) {
this.maxVideoFrameRate = maxVideoFrameRate;
return this;
}
/**
* See {@link Parameters#forceLowestBitrate}.
* See {@link Parameters#maxVideoBitrate}.
*
* @return This builder.
*/
public ParametersBuilder setForceLowestBitrate(boolean forceLowestBitrate) {
this.forceLowestBitrate = forceLowestBitrate;
public ParametersBuilder setMaxVideoBitrate(int maxVideoBitrate) {
this.maxVideoBitrate = maxVideoBitrate;
return this;
}
/**
* See {@link Parameters#forceHighestSupportedBitrate}.
* See {@link Parameters#exceedVideoConstraintsIfNecessary}.
*
* @return This builder.
*/
public ParametersBuilder setForceHighestSupportedBitrate(boolean forceHighestSupportedBitrate) {
this.forceHighestSupportedBitrate = forceHighestSupportedBitrate;
public ParametersBuilder setExceedVideoConstraintsIfNecessary(
boolean exceedVideoConstraintsIfNecessary) {
this.exceedVideoConstraintsIfNecessary = exceedVideoConstraintsIfNecessary;
return this;
}
/**
* See {@link Parameters#allowMixedMimeAdaptiveness}.
* Equivalent to calling {@link #setViewportSize(int, int, boolean)} with the viewport size
* obtained from {@link Util#getPhysicalDisplaySize(Context)}.
*
* @param context Any context.
* @param viewportOrientationMayChange See {@link Parameters#viewportOrientationMayChange}.
* @return This builder.
*/
public ParametersBuilder setAllowMixedMimeAdaptiveness(boolean allowMixedMimeAdaptiveness) {
this.allowMixedMimeAdaptiveness = allowMixedMimeAdaptiveness;
return this;
public ParametersBuilder setViewportSizeToPhysicalDisplaySize(
Context context, boolean viewportOrientationMayChange) {
// Assume the viewport is fullscreen.
Point viewportSize = Util.getPhysicalDisplaySize(context);
return setViewportSize(viewportSize.x, viewportSize.y, viewportOrientationMayChange);
}
/**
* See {@link Parameters#allowNonSeamlessAdaptiveness}.
* Equivalent to {@link #setViewportSize setViewportSize(Integer.MAX_VALUE, Integer.MAX_VALUE,
* true)}.
*
* @return This builder.
*/
public ParametersBuilder setAllowNonSeamlessAdaptiveness(boolean allowNonSeamlessAdaptiveness) {
this.allowNonSeamlessAdaptiveness = allowNonSeamlessAdaptiveness;
return this;
public ParametersBuilder clearViewportSizeConstraints() {
return setViewportSize(Integer.MAX_VALUE, Integer.MAX_VALUE, true);
}
/**
* Equivalent to {@link #setMaxVideoSize setMaxVideoSize(1279, 719)}.
* See {@link Parameters#viewportWidth}, {@link Parameters#maxVideoHeight} and {@link
* Parameters#viewportOrientationMayChange}.
*
* @param viewportWidth See {@link Parameters#viewportWidth}.
* @param viewportHeight See {@link Parameters#viewportHeight}.
* @param viewportOrientationMayChange See {@link Parameters#viewportOrientationMayChange}.
* @return This builder.
*/
public ParametersBuilder setMaxVideoSizeSd() {
return setMaxVideoSize(1279, 719);
public ParametersBuilder setViewportSize(
int viewportWidth, int viewportHeight, boolean viewportOrientationMayChange) {
this.viewportWidth = viewportWidth;
this.viewportHeight = viewportHeight;
this.viewportOrientationMayChange = viewportOrientationMayChange;
return this;
}
// Audio
/**
* Equivalent to {@link #setMaxVideoSize setMaxVideoSize(Integer.MAX_VALUE, Integer.MAX_VALUE)}.
* See {@link Parameters#preferredAudioLanguage}.
*
* @return This builder.
*/
public ParametersBuilder clearVideoSizeConstraints() {
return setMaxVideoSize(Integer.MAX_VALUE, Integer.MAX_VALUE);
public ParametersBuilder setPreferredAudioLanguage(String preferredAudioLanguage) {
this.preferredAudioLanguage = preferredAudioLanguage;
return this;
}
// Text
/**
* See {@link Parameters#maxVideoWidth} and {@link Parameters#maxVideoHeight}.
* See {@link Parameters#preferredTextLanguage}.
*
* @return This builder.
*/
public ParametersBuilder setMaxVideoSize(int maxVideoWidth, int maxVideoHeight) {
this.maxVideoWidth = maxVideoWidth;
this.maxVideoHeight = maxVideoHeight;
public ParametersBuilder setPreferredTextLanguage(String preferredTextLanguage) {
this.preferredTextLanguage = preferredTextLanguage;
return this;
}
/**
* See {@link Parameters#maxVideoFrameRate}.
* See {@link Parameters#selectUndeterminedTextLanguage}.
*
* @return This builder.
*/
public ParametersBuilder setMaxVideoFrameRate(int maxVideoFrameRate) {
this.maxVideoFrameRate = maxVideoFrameRate;
public ParametersBuilder setSelectUndeterminedTextLanguage(
boolean selectUndeterminedTextLanguage) {
this.selectUndeterminedTextLanguage = selectUndeterminedTextLanguage;
return this;
}
/**
* See {@link Parameters#maxVideoBitrate}.
* See {@link Parameters#disabledTextTrackSelectionFlags}.
*
* @return This builder.
*/
public ParametersBuilder setMaxVideoBitrate(int maxVideoBitrate) {
this.maxVideoBitrate = maxVideoBitrate;
public ParametersBuilder setDisabledTextTrackSelectionFlags(
int disabledTextTrackSelectionFlags) {
this.disabledTextTrackSelectionFlags = disabledTextTrackSelectionFlags;
return this;
}
// General
/**
* See {@link Parameters#exceedVideoConstraintsIfNecessary}.
* See {@link Parameters#forceLowestBitrate}.
*
* @return This builder.
*/
public ParametersBuilder setExceedVideoConstraintsIfNecessary(
boolean exceedVideoConstraintsIfNecessary) {
this.exceedVideoConstraintsIfNecessary = exceedVideoConstraintsIfNecessary;
public ParametersBuilder setForceLowestBitrate(boolean forceLowestBitrate) {
this.forceLowestBitrate = forceLowestBitrate;
return this;
}
/**
* See {@link Parameters#exceedRendererCapabilitiesIfNecessary}.
* See {@link Parameters#forceHighestSupportedBitrate}.
*
* @return This builder.
*/
public ParametersBuilder setExceedRendererCapabilitiesIfNecessary(
boolean exceedRendererCapabilitiesIfNecessary) {
this.exceedRendererCapabilitiesIfNecessary = exceedRendererCapabilitiesIfNecessary;
public ParametersBuilder setForceHighestSupportedBitrate(boolean forceHighestSupportedBitrate) {
this.forceHighestSupportedBitrate = forceHighestSupportedBitrate;
return this;
}
/**
* Equivalent to calling {@link #setViewportSize(int, int, boolean)} with the viewport size
* obtained from {@link Util#getPhysicalDisplaySize(Context)}.
* See {@link Parameters#allowMixedMimeAdaptiveness}.
*
* @param context Any context.
* @param viewportOrientationMayChange See {@link Parameters#viewportOrientationMayChange}.
* @return This builder.
*/
public ParametersBuilder setViewportSizeToPhysicalDisplaySize(
Context context, boolean viewportOrientationMayChange) {
// Assume the viewport is fullscreen.
Point viewportSize = Util.getPhysicalDisplaySize(context);
return setViewportSize(viewportSize.x, viewportSize.y, viewportOrientationMayChange);
public ParametersBuilder setAllowMixedMimeAdaptiveness(boolean allowMixedMimeAdaptiveness) {
this.allowMixedMimeAdaptiveness = allowMixedMimeAdaptiveness;
return this;
}
/**
* Equivalent to
* {@link #setViewportSize setViewportSize(Integer.MAX_VALUE, Integer.MAX_VALUE, true)}.
* See {@link Parameters#allowNonSeamlessAdaptiveness}.
*
* @return This builder.
*/
public ParametersBuilder clearViewportSizeConstraints() {
return setViewportSize(Integer.MAX_VALUE, Integer.MAX_VALUE, true);
public ParametersBuilder setAllowNonSeamlessAdaptiveness(boolean allowNonSeamlessAdaptiveness) {
this.allowNonSeamlessAdaptiveness = allowNonSeamlessAdaptiveness;
return this;
}
/**
* See {@link Parameters#viewportWidth}, {@link Parameters#maxVideoHeight} and {@link
* Parameters#viewportOrientationMayChange}.
* See {@link Parameters#exceedRendererCapabilitiesIfNecessary}.
*
* @param viewportWidth See {@link Parameters#viewportWidth}.
* @param viewportHeight See {@link Parameters#viewportHeight}.
* @param viewportOrientationMayChange See {@link Parameters#viewportOrientationMayChange}.
* @return This builder.
*/
public ParametersBuilder setViewportSize(
int viewportWidth, int viewportHeight, boolean viewportOrientationMayChange) {
this.viewportWidth = viewportWidth;
this.viewportHeight = viewportHeight;
this.viewportOrientationMayChange = viewportOrientationMayChange;
public ParametersBuilder setExceedRendererCapabilitiesIfNecessary(
boolean exceedRendererCapabilitiesIfNecessary) {
this.exceedRendererCapabilitiesIfNecessary = exceedRendererCapabilitiesIfNecessary;
return this;
}
/**
* See {@link Parameters#tunnelingAudioSessionId}.
*
* <p>Enables or disables tunneling. To enable tunneling, pass an audio session id to use when
* in tunneling mode. Session ids can be generated using {@link
* C#generateAudioSessionIdV21(Context)}. To disable tunneling pass {@link
* C#AUDIO_SESSION_ID_UNSET}. Tunneling will only be activated if it's both enabled and
* supported by the audio and video renderers for the selected tracks.
*
* @param tunnelingAudioSessionId The audio session id to use when tunneling, or {@link
* C#AUDIO_SESSION_ID_UNSET} to disable tunneling.
*/
public ParametersBuilder setTunnelingAudioSessionId(int tunnelingAudioSessionId) {
if (this.tunnelingAudioSessionId != tunnelingAudioSessionId) {
this.tunnelingAudioSessionId = tunnelingAudioSessionId;
return this;
}
return this;
}
// Overrides
/**
* Sets whether the renderer at the specified index is disabled. Disabling a renderer prevents
* the selector from selecting any tracks for it.
......@@ -514,50 +553,35 @@ public class DefaultTrackSelector extends MappingTrackSelector {
}
/**
* See {@link Parameters#tunnelingAudioSessionId}.
*
* <p>Enables or disables tunneling. To enable tunneling, pass an audio session id to use when
* in tunneling mode. Session ids can be generated using {@link
* C#generateAudioSessionIdV21(Context)}. To disable tunneling pass {@link
* C#AUDIO_SESSION_ID_UNSET}. Tunneling will only be activated if it's both enabled and
* supported by the audio and video renderers for the selected tracks.
*
* @param tunnelingAudioSessionId The audio session id to use when tunneling, or {@link
* C#AUDIO_SESSION_ID_UNSET} to disable tunneling.
*/
public ParametersBuilder setTunnelingAudioSessionId(int tunnelingAudioSessionId) {
if (this.tunnelingAudioSessionId != tunnelingAudioSessionId) {
this.tunnelingAudioSessionId = tunnelingAudioSessionId;
return this;
}
return this;
}
/**
* Builds a {@link Parameters} instance with the selected values.
*/
public Parameters build() {
return new Parameters(
selectionOverrides,
rendererDisabledFlags,
// Video
maxVideoWidth,
maxVideoHeight,
maxVideoFrameRate,
maxVideoBitrate,
exceedVideoConstraintsIfNecessary,
viewportWidth,
viewportHeight,
viewportOrientationMayChange,
// Audio
preferredAudioLanguage,
// Text
preferredTextLanguage,
selectUndeterminedTextLanguage,
disabledTextTrackSelectionFlags,
// General
forceLowestBitrate,
forceHighestSupportedBitrate,
allowMixedMimeAdaptiveness,
allowNonSeamlessAdaptiveness,
maxVideoWidth,
maxVideoHeight,
maxVideoFrameRate,
maxVideoBitrate,
exceedVideoConstraintsIfNecessary,
exceedRendererCapabilitiesIfNecessary,
viewportWidth,
viewportHeight,
viewportOrientationMayChange,
tunnelingAudioSessionId);
tunnelingAudioSessionId,
// Overrides
selectionOverrides,
rendererDisabledFlags);
}
private static SparseArray<Map<TrackGroupArray, SelectionOverride>> cloneSelectionOverrides(
......@@ -576,37 +600,10 @@ public class DefaultTrackSelector extends MappingTrackSelector {
/** An instance with default values. */
public static final Parameters DEFAULT = new Parameters();
// Per renderer overrides.
// Overrides
private final SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides;
private final SparseBooleanArray rendererDisabledFlags;
// Audio
/**
* The preferred language for audio and forced text tracks, as an ISO 639-2/T tag. {@code null}
* selects the default track, or the first track if there's no default. The default value is
* {@code null}.
*/
public final @Nullable String preferredAudioLanguage;
// Text
/**
* The preferred language for text tracks as an ISO 639-2/T tag. {@code null} selects the
* default track if there is one, or no track otherwise. The default value is {@code null}.
*/
public final @Nullable String preferredTextLanguage;
/**
* Whether a text track with undetermined language should be selected if no track with {@link
* #preferredTextLanguage} is available, or if {@link #preferredTextLanguage} is unset. The
* default value is {@code false}.
*/
public final boolean selectUndeterminedTextLanguage;
/**
* Bitmask of selection flags that are disabled for text track selections. See {@link
* C.SelectionFlags}. The default value is {@code 0} (i.e. no flags).
*/
public final int disabledTextTrackSelectionFlags;
// Video
/**
* Maximum allowed video width. The default value is {@link Integer#MAX_VALUE} (i.e. no
......@@ -660,6 +657,32 @@ public class DefaultTrackSelector extends MappingTrackSelector {
*/
public final boolean viewportOrientationMayChange;
// Audio
/**
* The preferred language for audio and forced text tracks, as an ISO 639-2/T tag. {@code null}
* selects the default track, or the first track if there's no default. The default value is
* {@code null}.
*/
@Nullable public final String preferredAudioLanguage;
// Text
/**
* The preferred language for text tracks as an ISO 639-2/T tag. {@code null} selects the
* default track if there is one, or no track otherwise. The default value is {@code null}.
*/
@Nullable public final String preferredTextLanguage;
/**
* Whether a text track with undetermined language should be selected if no track with {@link
* #preferredTextLanguage} is available, or if {@link #preferredTextLanguage} is unset. The
* default value is {@code false}.
*/
public final boolean selectUndeterminedTextLanguage;
/**
* Bitmask of selection flags that are disabled for text track selections. See {@link
* C.SelectionFlags}. The default value is {@code 0} (i.e. no flags).
*/
public final int disabledTextTrackSelectionFlags;
// General
/**
* Whether to force selection of the single lowest bitrate audio and video tracks that comply
......@@ -700,92 +723,112 @@ public class DefaultTrackSelector extends MappingTrackSelector {
private Parameters() {
this(
/* selectionOverrides= */ new SparseArray<>(),
/* rendererDisabledFlags= */ new SparseBooleanArray(),
// Video
/* maxVideoWidth= */ Integer.MAX_VALUE,
/* maxVideoHeight= */ Integer.MAX_VALUE,
/* maxVideoFrameRate= */ Integer.MAX_VALUE,
/* maxVideoBitrate= */ Integer.MAX_VALUE,
/* exceedVideoConstraintsIfNecessary= */ true,
/* viewportWidth= */ Integer.MAX_VALUE,
/* viewportHeight= */ Integer.MAX_VALUE,
/* viewportOrientationMayChange= */ true,
// Audio
/* preferredAudioLanguage= */ null,
// Text
/* preferredTextLanguage= */ null,
/* selectUndeterminedTextLanguage= */ false,
/* disabledTextTrackSelectionFlags= */ 0,
// General
/* forceLowestBitrate= */ false,
/* forceHighestSupportedBitrate= */ false,
/* allowMixedMimeAdaptiveness= */ false,
/* allowNonSeamlessAdaptiveness= */ true,
/* maxVideoWidth= */ Integer.MAX_VALUE,
/* maxVideoHeight= */ Integer.MAX_VALUE,
/* maxVideoFrameRate= */ Integer.MAX_VALUE,
/* maxVideoBitrate= */ Integer.MAX_VALUE,
/* exceedVideoConstraintsIfNecessary= */ true,
/* exceedRendererCapabilitiesIfNecessary= */ true,
/* viewportWidth= */ Integer.MAX_VALUE,
/* viewportHeight= */ Integer.MAX_VALUE,
/* viewportOrientationMayChange= */ true,
/* tunnelingAudioSessionId= */ C.AUDIO_SESSION_ID_UNSET);
/* tunnelingAudioSessionId= */ C.AUDIO_SESSION_ID_UNSET,
// Overrides
/* selectionOverrides= */ new SparseArray<>(),
/* rendererDisabledFlags= */ new SparseBooleanArray());
}
/* package */ Parameters(
SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides,
SparseBooleanArray rendererDisabledFlags,
// Video
int maxVideoWidth,
int maxVideoHeight,
int maxVideoFrameRate,
int maxVideoBitrate,
boolean exceedVideoConstraintsIfNecessary,
int viewportWidth,
int viewportHeight,
boolean viewportOrientationMayChange,
// Audio
@Nullable String preferredAudioLanguage,
// Text
@Nullable String preferredTextLanguage,
boolean selectUndeterminedTextLanguage,
int disabledTextTrackSelectionFlags,
// General
boolean forceLowestBitrate,
boolean forceHighestSupportedBitrate,
boolean allowMixedMimeAdaptiveness,
boolean allowNonSeamlessAdaptiveness,
int maxVideoWidth,
int maxVideoHeight,
int maxVideoFrameRate,
int maxVideoBitrate,
boolean exceedVideoConstraintsIfNecessary,
boolean exceedRendererCapabilitiesIfNecessary,
int viewportWidth,
int viewportHeight,
boolean viewportOrientationMayChange,
int tunnelingAudioSessionId) {
this.selectionOverrides = selectionOverrides;
this.rendererDisabledFlags = rendererDisabledFlags;
int tunnelingAudioSessionId,
// Overrides
SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides,
SparseBooleanArray rendererDisabledFlags) {
// Video
this.maxVideoWidth = maxVideoWidth;
this.maxVideoHeight = maxVideoHeight;
this.maxVideoFrameRate = maxVideoFrameRate;
this.maxVideoBitrate = maxVideoBitrate;
this.exceedVideoConstraintsIfNecessary = exceedVideoConstraintsIfNecessary;
this.viewportWidth = viewportWidth;
this.viewportHeight = viewportHeight;
this.viewportOrientationMayChange = viewportOrientationMayChange;
// Audio
this.preferredAudioLanguage = Util.normalizeLanguageCode(preferredAudioLanguage);
// Text
this.preferredTextLanguage = Util.normalizeLanguageCode(preferredTextLanguage);
this.selectUndeterminedTextLanguage = selectUndeterminedTextLanguage;
this.disabledTextTrackSelectionFlags = disabledTextTrackSelectionFlags;
// General
this.forceLowestBitrate = forceLowestBitrate;
this.forceHighestSupportedBitrate = forceHighestSupportedBitrate;
this.allowMixedMimeAdaptiveness = allowMixedMimeAdaptiveness;
this.allowNonSeamlessAdaptiveness = allowNonSeamlessAdaptiveness;
this.maxVideoWidth = maxVideoWidth;
this.maxVideoHeight = maxVideoHeight;
this.maxVideoFrameRate = maxVideoFrameRate;
this.maxVideoBitrate = maxVideoBitrate;
this.exceedVideoConstraintsIfNecessary = exceedVideoConstraintsIfNecessary;
this.exceedRendererCapabilitiesIfNecessary = exceedRendererCapabilitiesIfNecessary;
this.viewportWidth = viewportWidth;
this.viewportHeight = viewportHeight;
this.viewportOrientationMayChange = viewportOrientationMayChange;
this.tunnelingAudioSessionId = tunnelingAudioSessionId;
// Overrides
this.selectionOverrides = selectionOverrides;
this.rendererDisabledFlags = rendererDisabledFlags;
}
/* package */ Parameters(Parcel in) {
this.selectionOverrides = readSelectionOverrides(in);
this.rendererDisabledFlags = in.readSparseBooleanArray();
// Video
this.maxVideoWidth = in.readInt();
this.maxVideoHeight = in.readInt();
this.maxVideoFrameRate = in.readInt();
this.maxVideoBitrate = in.readInt();
this.exceedVideoConstraintsIfNecessary = Util.readBoolean(in);
this.viewportWidth = in.readInt();
this.viewportHeight = in.readInt();
this.viewportOrientationMayChange = Util.readBoolean(in);
// Audio
this.preferredAudioLanguage = in.readString();
// Text
this.preferredTextLanguage = in.readString();
this.selectUndeterminedTextLanguage = Util.readBoolean(in);
this.disabledTextTrackSelectionFlags = in.readInt();
// General
this.forceLowestBitrate = Util.readBoolean(in);
this.forceHighestSupportedBitrate = Util.readBoolean(in);
this.allowMixedMimeAdaptiveness = Util.readBoolean(in);
this.allowNonSeamlessAdaptiveness = Util.readBoolean(in);
this.maxVideoWidth = in.readInt();
this.maxVideoHeight = in.readInt();
this.maxVideoFrameRate = in.readInt();
this.maxVideoBitrate = in.readInt();
this.exceedVideoConstraintsIfNecessary = Util.readBoolean(in);
this.exceedRendererCapabilitiesIfNecessary = Util.readBoolean(in);
this.viewportWidth = in.readInt();
this.viewportHeight = in.readInt();
this.viewportOrientationMayChange = Util.readBoolean(in);
this.tunnelingAudioSessionId = in.readInt();
// Overrides
this.selectionOverrides = readSelectionOverrides(in);
this.rendererDisabledFlags = in.readSparseBooleanArray();
}
/**
......@@ -839,49 +882,59 @@ public class DefaultTrackSelector extends MappingTrackSelector {
return false;
}
Parameters other = (Parameters) obj;
return selectUndeterminedTextLanguage == other.selectUndeterminedTextLanguage
&& disabledTextTrackSelectionFlags == other.disabledTextTrackSelectionFlags
&& forceLowestBitrate == other.forceLowestBitrate
&& forceHighestSupportedBitrate == other.forceHighestSupportedBitrate
&& allowMixedMimeAdaptiveness == other.allowMixedMimeAdaptiveness
&& allowNonSeamlessAdaptiveness == other.allowNonSeamlessAdaptiveness
&& maxVideoWidth == other.maxVideoWidth
return maxVideoWidth == other.maxVideoWidth
&& maxVideoHeight == other.maxVideoHeight
&& maxVideoFrameRate == other.maxVideoFrameRate
&& maxVideoBitrate == other.maxVideoBitrate
&& exceedVideoConstraintsIfNecessary == other.exceedVideoConstraintsIfNecessary
&& exceedRendererCapabilitiesIfNecessary == other.exceedRendererCapabilitiesIfNecessary
&& viewportOrientationMayChange == other.viewportOrientationMayChange
&& viewportWidth == other.viewportWidth
&& viewportHeight == other.viewportHeight
&& maxVideoBitrate == other.maxVideoBitrate
&& tunnelingAudioSessionId == other.tunnelingAudioSessionId
// Audio
&& TextUtils.equals(preferredAudioLanguage, other.preferredAudioLanguage)
// Text
&& TextUtils.equals(preferredTextLanguage, other.preferredTextLanguage)
&& selectUndeterminedTextLanguage == other.selectUndeterminedTextLanguage
&& disabledTextTrackSelectionFlags == other.disabledTextTrackSelectionFlags
// General
&& forceLowestBitrate == other.forceLowestBitrate
&& forceHighestSupportedBitrate == other.forceHighestSupportedBitrate
&& allowMixedMimeAdaptiveness == other.allowMixedMimeAdaptiveness
&& allowNonSeamlessAdaptiveness == other.allowNonSeamlessAdaptiveness
&& exceedRendererCapabilitiesIfNecessary == other.exceedRendererCapabilitiesIfNecessary
&& tunnelingAudioSessionId == other.tunnelingAudioSessionId
// Overrides
&& areRendererDisabledFlagsEqual(rendererDisabledFlags, other.rendererDisabledFlags)
&& areSelectionOverridesEqual(selectionOverrides, other.selectionOverrides);
}
@Override
public int hashCode() {
int result = selectUndeterminedTextLanguage ? 1 : 0;
result = 31 * result + disabledTextTrackSelectionFlags;
result = 31 * result + (forceLowestBitrate ? 1 : 0);
result = 31 * result + (forceHighestSupportedBitrate ? 1 : 0);
result = 31 * result + (allowMixedMimeAdaptiveness ? 1 : 0);
result = 31 * result + (allowNonSeamlessAdaptiveness ? 1 : 0);
int result = 1;
// Video
result = 31 * result + maxVideoWidth;
result = 31 * result + maxVideoHeight;
result = 31 * result + maxVideoFrameRate;
result = 31 * result + maxVideoBitrate;
result = 31 * result + (exceedVideoConstraintsIfNecessary ? 1 : 0);
result = 31 * result + (exceedRendererCapabilitiesIfNecessary ? 1 : 0);
result = 31 * result + (viewportOrientationMayChange ? 1 : 0);
result = 31 * result + viewportWidth;
result = 31 * result + viewportHeight;
result = 31 * result + maxVideoBitrate;
result = 31 * result + tunnelingAudioSessionId;
// Audio
result =
31 * result + (preferredAudioLanguage == null ? 0 : preferredAudioLanguage.hashCode());
// Text
result = 31 * result + (preferredTextLanguage == null ? 0 : preferredTextLanguage.hashCode());
result = 31 * result + (selectUndeterminedTextLanguage ? 1 : 0);
result = 31 * result + disabledTextTrackSelectionFlags;
// General
result = 31 * result + (forceLowestBitrate ? 1 : 0);
result = 31 * result + (forceHighestSupportedBitrate ? 1 : 0);
result = 31 * result + (allowMixedMimeAdaptiveness ? 1 : 0);
result = 31 * result + (allowNonSeamlessAdaptiveness ? 1 : 0);
result = 31 * result + (exceedRendererCapabilitiesIfNecessary ? 1 : 0);
result = 31 * result + tunnelingAudioSessionId;
// Overrides (omitted from hashCode).
return result;
}
......@@ -894,26 +947,31 @@ public class DefaultTrackSelector extends MappingTrackSelector {
@Override
public void writeToParcel(Parcel dest, int flags) {
writeSelectionOverridesToParcel(dest, selectionOverrides);
dest.writeSparseBooleanArray(rendererDisabledFlags);
// Video
dest.writeInt(maxVideoWidth);
dest.writeInt(maxVideoHeight);
dest.writeInt(maxVideoFrameRate);
dest.writeInt(maxVideoBitrate);
Util.writeBoolean(dest, exceedVideoConstraintsIfNecessary);
dest.writeInt(viewportWidth);
dest.writeInt(viewportHeight);
Util.writeBoolean(dest, viewportOrientationMayChange);
// Audio
dest.writeString(preferredAudioLanguage);
// Text
dest.writeString(preferredTextLanguage);
Util.writeBoolean(dest, selectUndeterminedTextLanguage);
dest.writeInt(disabledTextTrackSelectionFlags);
// General
Util.writeBoolean(dest, forceLowestBitrate);
Util.writeBoolean(dest, forceHighestSupportedBitrate);
Util.writeBoolean(dest, allowMixedMimeAdaptiveness);
Util.writeBoolean(dest, allowNonSeamlessAdaptiveness);
dest.writeInt(maxVideoWidth);
dest.writeInt(maxVideoHeight);
dest.writeInt(maxVideoFrameRate);
dest.writeInt(maxVideoBitrate);
Util.writeBoolean(dest, exceedVideoConstraintsIfNecessary);
Util.writeBoolean(dest, exceedRendererCapabilitiesIfNecessary);
dest.writeInt(viewportWidth);
dest.writeInt(viewportHeight);
Util.writeBoolean(dest, viewportOrientationMayChange);
dest.writeInt(tunnelingAudioSessionId);
// Overrides
writeSelectionOverridesToParcel(dest, selectionOverrides);
dest.writeSparseBooleanArray(rendererDisabledFlags);
}
public static final Parcelable.Creator<Parameters> CREATOR =
......@@ -2216,7 +2274,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
public final int channelCount;
public final int sampleRate;
public final @Nullable String mimeType;
@Nullable public final String mimeType;
public AudioConfigurationTuple(int channelCount, int sampleRate, @Nullable String mimeType) {
this.channelCount = channelCount;
......
......@@ -129,26 +129,31 @@ public final class DefaultTrackSelectorTest {
Parameters parametersToParcel =
new Parameters(
selectionOverrides,
rendererDisabledFlags,
// Video
/* maxVideoWidth= */ 0,
/* maxVideoHeight= */ 1,
/* maxVideoFrameRate= */ 2,
/* maxVideoBitrate= */ 3,
/* exceedVideoConstraintsIfNecessary= */ false,
/* viewportWidth= */ 4,
/* viewportHeight= */ 5,
/* viewportOrientationMayChange= */ true,
// Audio
/* preferredAudioLanguage= */ "en",
// Text
/* preferredTextLanguage= */ "de",
/* selectUndeterminedTextLanguage= */ false,
/* disabledTextTrackSelectionFlags= */ 0,
/* disabledTextTrackSelectionFlags= */ 6,
// General
/* forceLowestBitrate= */ true,
/* forceHighestSupportedBitrate= */ true,
/* allowMixedMimeAdaptiveness= */ false,
/* allowNonSeamlessAdaptiveness= */ true,
/* maxVideoWidth= */ 1,
/* maxVideoHeight= */ 2,
/* maxVideoFrameRate= */ 3,
/* maxVideoBitrate= */ 4,
/* exceedVideoConstraintsIfNecessary= */ false,
/* forceHighestSupportedBitrate= */ false,
/* allowMixedMimeAdaptiveness= */ true,
/* allowNonSeamlessAdaptiveness= */ false,
/* exceedRendererCapabilitiesIfNecessary= */ true,
/* viewportWidth= */ 5,
/* viewportHeight= */ 6,
/* viewportOrientationMayChange= */ false,
/* tunnelingAudioSessionId= */ C.AUDIO_SESSION_ID_UNSET);
/* tunnelingAudioSessionId= */ C.AUDIO_SESSION_ID_UNSET,
// Overrides
selectionOverrides,
rendererDisabledFlags);
Parcel parcel = Parcel.obtain();
parametersToParcel.writeToParcel(parcel, 0);
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Ponovi sve</string>
<string name="exo_controls_shuffle_description">Pusti nasumično</string>
<string name="exo_controls_fullscreen_description">Režim celog ekrana</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Izađi iz VR režima</string>
<string name="exo_download_description">Preuzmi</string>
<string name="exo_download_notification_channel_name">Preuzimanja</string>
<string name="exo_download_downloading">Preuzima se</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Паўтарыць усе</string>
<string name="exo_controls_shuffle_description">Перамяшаць</string>
<string name="exo_controls_fullscreen_description">Поўнаэкранны рэжым</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Выйсці з VR-рэжыму</string>
<string name="exo_download_description">Спампаваць</string>
<string name="exo_download_notification_channel_name">Спампоўкі</string>
<string name="exo_download_downloading">Спампоўваецца</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Повтаряне на всички</string>
<string name="exo_controls_shuffle_description">Разбъркване</string>
<string name="exo_controls_fullscreen_description">Режим на цял екран</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Изход от режима за VR</string>
<string name="exo_download_description">Изтегляне</string>
<string name="exo_download_notification_channel_name">Изтегляния</string>
<string name="exo_download_downloading">Изтегля се</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Ponovi sve</string>
<string name="exo_controls_shuffle_description">Izmiješaj</string>
<string name="exo_controls_fullscreen_description">Način rada preko cijelog ekrana</string>
<string name="exo_controls_exit_vr_description">Izlazak iz VR načina</string>
<string name="exo_controls_exit_vr_description">Izađi iz VR načina rada</string>
<string name="exo_download_description">Preuzmi</string>
<string name="exo_download_notification_channel_name">Preuzimanja</string>
<string name="exo_download_downloading">Preuzimanje</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Repeteix tot</string>
<string name="exo_controls_shuffle_description">Reprodueix aleatòriament</string>
<string name="exo_controls_fullscreen_description">Mode de pantalla completa</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Surt del mode RV</string>
<string name="exo_download_description">Baixa</string>
<string name="exo_download_notification_channel_name">Baixades</string>
<string name="exo_download_downloading">S\'està baixant</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Gentag alle</string>
<string name="exo_controls_shuffle_description">Bland</string>
<string name="exo_controls_fullscreen_description">Fuld skærm</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Luk VR-tilstand</string>
<string name="exo_download_description">Download</string>
<string name="exo_download_notification_channel_name">Downloads</string>
<string name="exo_download_downloading">Downloader</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Alle wiederholen</string>
<string name="exo_controls_shuffle_description">Zufallsmix</string>
<string name="exo_controls_fullscreen_description">Vollbildmodus</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">VR-Modus beenden</string>
<string name="exo_download_description">Herunterladen</string>
<string name="exo_download_notification_channel_name">Downloads</string>
<string name="exo_download_downloading">Wird heruntergeladen</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Repetir todo</string>
<string name="exo_controls_shuffle_description">Reproducir aleatoriamente</string>
<string name="exo_controls_fullscreen_description">Modo de pantalla completa</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Salir del modo RV</string>
<string name="exo_download_description">Descargar</string>
<string name="exo_download_notification_channel_name">Descargas</string>
<string name="exo_download_downloading">Descargando</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Korda kõiki</string>
<string name="exo_controls_shuffle_description">Esita juhuslikus järjekorras</string>
<string name="exo_controls_fullscreen_description">Täisekraani režiim</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Välju VR-režiimist</string>
<string name="exo_download_description">Allalaadimine</string>
<string name="exo_download_notification_channel_name">Allalaadimised</string>
<string name="exo_download_downloading">Allalaadimine</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Toista kaikki uudelleen</string>
<string name="exo_controls_shuffle_description">Satunnaistoisto</string>
<string name="exo_controls_fullscreen_description">Koko näytön tila</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Poistu VR-tilasta</string>
<string name="exo_download_description">Lataa</string>
<string name="exo_download_notification_channel_name">Lataukset</string>
<string name="exo_download_downloading">Ladataan</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Tout lire en boucle</string>
<string name="exo_controls_shuffle_description">Lecture aléatoire</string>
<string name="exo_controls_fullscreen_description">Mode Plein écran</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Quitter le mode RV</string>
<string name="exo_download_description">Télécharger</string>
<string name="exo_download_notification_channel_name">Téléchargements</string>
<string name="exo_download_downloading">Téléchargement en cours…</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Tout lire en boucle</string>
<string name="exo_controls_shuffle_description">Aléatoire</string>
<string name="exo_controls_fullscreen_description">Mode plein écran</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Quitter le mode RV</string>
<string name="exo_download_description">Télécharger</string>
<string name="exo_download_notification_channel_name">Téléchargements</string>
<string name="exo_download_downloading">Téléchargement…</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Repetir todas as pistas</string>
<string name="exo_controls_shuffle_description">Reprodución aleatoria</string>
<string name="exo_controls_fullscreen_description">Modo de pantalla completa</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Sae do modo de RV</string>
<string name="exo_download_description">Descargar</string>
<string name="exo_download_notification_channel_name">Descargas</string>
<string name="exo_download_downloading">Descargando</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">सभी को दोहराएं</string>
<string name="exo_controls_shuffle_description">शफ़ल करें</string>
<string name="exo_controls_fullscreen_description">फ़ुलस्क्रीन मोड</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">VR मोड से बाहर निकलें</string>
<string name="exo_download_description">डाउनलोड करें</string>
<string name="exo_download_notification_channel_name">डाउनलोड की गई मीडिया फ़ाइलें</string>
<string name="exo_download_downloading">डाउनलोड हो रहा है</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Összes szám ismétlése</string>
<string name="exo_controls_shuffle_description">Keverés</string>
<string name="exo_controls_fullscreen_description">Teljes képernyős mód</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Kilépés a VR-módból</string>
<string name="exo_download_description">Letöltés</string>
<string name="exo_download_notification_channel_name">Letöltések</string>
<string name="exo_download_downloading">Letöltés folyamatban</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Կրկնել բոլորը</string>
<string name="exo_controls_shuffle_description">Խառնել</string>
<string name="exo_controls_fullscreen_description">Լիաէկրան ռեժիմ</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Դուրս գալ VR ռեժիմից</string>
<string name="exo_download_description">Ներբեռնել</string>
<string name="exo_download_notification_channel_name">Ներբեռնումներ</string>
<string name="exo_download_downloading">Ներբեռնում</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Endurtaka allt</string>
<string name="exo_controls_shuffle_description">Stokka</string>
<string name="exo_controls_fullscreen_description">Allur skjárinn</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Loka sýndarveruleikastillingu</string>
<string name="exo_download_description">Sækja</string>
<string name="exo_download_notification_channel_name">Niðurhal</string>
<string name="exo_download_downloading">Sækir</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">חזור על הכול</string>
<string name="exo_controls_shuffle_description">ערבוב</string>
<string name="exo_controls_fullscreen_description">מצב מסך מלא</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">יציאה ממצב VR</string>
<string name="exo_download_description">הורדה</string>
<string name="exo_download_notification_channel_name">הורדות</string>
<string name="exo_download_downloading">ההורדה מתבצעת</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Барлығын қайталау</string>
<string name="exo_controls_shuffle_description">Араластыру</string>
<string name="exo_controls_fullscreen_description">Толық экран режимі</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">VR режимінен шығу</string>
<string name="exo_download_description">Жүктеп алу</string>
<string name="exo_download_notification_channel_name">Жүктеп алынғандар</string>
<string name="exo_download_downloading">Жүктеп алынуда</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Баарын кайталоо</string>
<string name="exo_controls_shuffle_description">Аралаштыруу</string>
<string name="exo_controls_fullscreen_description">Толук экран режими</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">VR режиминен чыгуу</string>
<string name="exo_download_description">Жүктөп алуу</string>
<string name="exo_download_notification_channel_name">Жүктөлүп алынгандар</string>
<string name="exo_download_downloading">Жүктөлүп алынууда</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Kartoti viską</string>
<string name="exo_controls_shuffle_description">Maišyti</string>
<string name="exo_controls_fullscreen_description">Viso ekrano režimas</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Išeiti iš VR režimo</string>
<string name="exo_download_description">Atsisiųsti</string>
<string name="exo_download_notification_channel_name">Atsisiuntimai</string>
<string name="exo_download_downloading">Atsisiunčiama</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Atkārtot visu</string>
<string name="exo_controls_shuffle_description">Atskaņot jauktā secībā</string>
<string name="exo_controls_fullscreen_description">Pilnekrāna režīms</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Iziet no VR režīma</string>
<string name="exo_download_description">Lejupielādēt</string>
<string name="exo_download_notification_channel_name">Lejupielādes</string>
<string name="exo_download_downloading">Notiek lejupielāde</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Повтори ги сите</string>
<string name="exo_controls_shuffle_description">Измешај</string>
<string name="exo_controls_fullscreen_description">Режим на цел екран</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Излези од режимот на VR</string>
<string name="exo_download_description">Преземи</string>
<string name="exo_download_notification_channel_name">Преземања</string>
<string name="exo_download_downloading">Се презема</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Бүгдийг нь дахин тоглуулах</string>
<string name="exo_controls_shuffle_description">Холих</string>
<string name="exo_controls_fullscreen_description">Бүтэн дэлгэцийн горим</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">VR горимоос гарах</string>
<string name="exo_download_description">Татах</string>
<string name="exo_download_notification_channel_name">Татaлт</string>
<string name="exo_download_downloading">Татаж байна</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Ulang semua</string>
<string name="exo_controls_shuffle_description">Rombak</string>
<string name="exo_controls_fullscreen_description">Mod skrin penuh</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Keluar daripada mod VR</string>
<string name="exo_download_description">Muat turun</string>
<string name="exo_download_notification_channel_name">Muat turun</string>
<string name="exo_download_downloading">Memuat turun</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Gjenta alle</string>
<string name="exo_controls_shuffle_description">Tilfeldig rekkefølge</string>
<string name="exo_controls_fullscreen_description">Fullskjermmodus</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Avslutt VR-modus</string>
<string name="exo_download_description">Last ned</string>
<string name="exo_download_notification_channel_name">Nedlastinger</string>
<string name="exo_download_downloading">Laster ned</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">सबै दोहोर्‍याउनुहोस्</string>
<string name="exo_controls_shuffle_description">मिसाउनुहोस्</string>
<string name="exo_controls_fullscreen_description">पूर्ण स्क्रिन मोड</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">VR मोडबाट बाहिरिनुहोस्</string>
<string name="exo_download_description">डाउनलोड गर्नुहोस्</string>
<string name="exo_download_notification_channel_name">डाउनलोडहरू</string>
<string name="exo_download_downloading">डाउनलोड गरिँदै छ</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Alles herhalen</string>
<string name="exo_controls_shuffle_description">Shuffle</string>
<string name="exo_controls_fullscreen_description">Modus \'Volledig scherm\'</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">VR-modus sluiten</string>
<string name="exo_download_description">Downloaden</string>
<string name="exo_download_notification_channel_name">Downloads</string>
<string name="exo_download_downloading">Downloaden</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Repetir tudo</string>
<string name="exo_controls_shuffle_description">Reproduzir aleatoriamente</string>
<string name="exo_controls_fullscreen_description">Modo de ecrã inteiro</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Sair do Modo de RV</string>
<string name="exo_download_description">Transferir</string>
<string name="exo_download_notification_channel_name">Transferências</string>
<string name="exo_download_downloading">A transferir…</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Repetați-le pe toate</string>
<string name="exo_controls_shuffle_description">Redați aleatoriu</string>
<string name="exo_controls_fullscreen_description">Modul Ecran complet</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Ieșiți din modul RV</string>
<string name="exo_download_description">Descărcați</string>
<string name="exo_download_notification_channel_name">Descărcări</string>
<string name="exo_download_downloading">Se descarcă</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Повторять все</string>
<string name="exo_controls_shuffle_description">Перемешать</string>
<string name="exo_controls_fullscreen_description">Полноэкранный режим</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Выйти из VR-режима</string>
<string name="exo_download_description">Скачать</string>
<string name="exo_download_notification_channel_name">Скачивания</string>
<string name="exo_download_downloading">Скачивание…</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Понови све</string>
<string name="exo_controls_shuffle_description">Пусти насумично</string>
<string name="exo_controls_fullscreen_description">Режим целог екрана</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Изађи из ВР режима</string>
<string name="exo_download_description">Преузми</string>
<string name="exo_download_notification_channel_name">Преузимања</string>
<string name="exo_download_downloading">Преузима се</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Upprepa alla</string>
<string name="exo_controls_shuffle_description">Blanda spår</string>
<string name="exo_controls_fullscreen_description">Helskärmsläge</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Avsluta VR-läget</string>
<string name="exo_download_description">Ladda ned</string>
<string name="exo_download_notification_channel_name">Nedladdningar</string>
<string name="exo_download_downloading">Laddar ned</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Rudia zote</string>
<string name="exo_controls_shuffle_description">Changanya</string>
<string name="exo_controls_fullscreen_description">Hali ya skrini nzima</string>
<string name="exo_controls_exit_vr_description">Ondoka kwenye hali ya VR</string>
<string name="exo_controls_exit_vr_description">Funga hali ya VR</string>
<string name="exo_download_description">Pakua</string>
<string name="exo_download_notification_channel_name">Vipakuliwa</string>
<string name="exo_download_downloading">Inapakua</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">เล่นซ้ำทั้งหมด</string>
<string name="exo_controls_shuffle_description">สุ่ม</string>
<string name="exo_controls_fullscreen_description">โหมดเต็มหน้าจอ</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">ออกจากโหมด VR</string>
<string name="exo_download_description">ดาวน์โหลด</string>
<string name="exo_download_notification_channel_name">ดาวน์โหลด</string>
<string name="exo_download_downloading">กำลังดาวน์โหลด</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Ulitin lahat</string>
<string name="exo_controls_shuffle_description">I-shuffle</string>
<string name="exo_controls_fullscreen_description">Fullscreen mode</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Lumabas sa VR mode</string>
<string name="exo_download_description">I-download</string>
<string name="exo_download_notification_channel_name">Mga Download</string>
<string name="exo_download_downloading">Nagda-download</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Tümünü tekrarla</string>
<string name="exo_controls_shuffle_description">Karıştır</string>
<string name="exo_controls_fullscreen_description">Tam ekran modu</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">VR modundan çıkar</string>
<string name="exo_download_description">İndir</string>
<string name="exo_download_notification_channel_name">İndirilenler</string>
<string name="exo_download_downloading">İndiriliyor</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Повторити всі</string>
<string name="exo_controls_shuffle_description">Перемішати</string>
<string name="exo_controls_fullscreen_description">Повноекранний режим</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Вийти з режиму VR</string>
<string name="exo_download_description">Завантажити</string>
<string name="exo_download_notification_channel_name">Завантаження</string>
<string name="exo_download_downloading">Завантажується</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">سبھی کو دہرائیں</string>
<string name="exo_controls_shuffle_description">شفل کریں</string>
<string name="exo_controls_fullscreen_description">پوری اسکرین والی وضع</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">VR موڈ سے باہر نکلیں</string>
<string name="exo_download_description">ڈاؤن لوڈ کریں</string>
<string name="exo_download_notification_channel_name">ڈاؤن لوڈز</string>
<string name="exo_download_downloading">ڈاؤن لوڈ ہو رہا ہے</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Lặp lại tất cả</string>
<string name="exo_controls_shuffle_description">Phát ngẫu nhiên</string>
<string name="exo_controls_fullscreen_description">Chế độ toàn màn hình</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">Thoát chế độ thực tế ảo (VR)</string>
<string name="exo_download_description">Tải xuống</string>
<string name="exo_download_notification_channel_name">Tài nguyên đã tải xuống</string>
<string name="exo_download_downloading">Đang tải xuống</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">全部重复播放</string>
<string name="exo_controls_shuffle_description">随机播放</string>
<string name="exo_controls_fullscreen_description">全屏模式</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">退出 VR 模式</string>
<string name="exo_download_description">下载</string>
<string name="exo_download_notification_channel_name">下载内容</string>
<string name="exo_download_downloading">正在下载</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">全部重複播放</string>
<string name="exo_controls_shuffle_description">隨機播放</string>
<string name="exo_controls_fullscreen_description">全螢幕模式</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">結束虛擬現實模式</string>
<string name="exo_download_description">下載</string>
<string name="exo_download_notification_channel_name">下載內容</string>
<string name="exo_download_downloading">正在下載</string>
......
......@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">重複播放所有項目</string>
<string name="exo_controls_shuffle_description">隨機播放</string>
<string name="exo_controls_fullscreen_description">全螢幕模式</string>
<string name="exo_controls_exit_vr_description">Exit VR mode</string>
<string name="exo_controls_exit_vr_description">結束虛擬實境模式</string>
<string name="exo_download_description">下載</string>
<string name="exo_download_notification_channel_name">下載</string>
<string name="exo_download_downloading">下載中</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment