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 { ...@@ -164,23 +164,27 @@ 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 @Nullable String preferredAudioLanguage; // Video
private @Nullable String preferredTextLanguage;
private boolean selectUndeterminedTextLanguage;
private int disabledTextTrackSelectionFlags;
private boolean forceLowestBitrate;
private boolean forceHighestSupportedBitrate;
private boolean allowMixedMimeAdaptiveness;
private boolean allowNonSeamlessAdaptiveness;
private int maxVideoWidth; private int maxVideoWidth;
private int maxVideoHeight; private int maxVideoHeight;
private int maxVideoFrameRate; private int maxVideoFrameRate;
private int maxVideoBitrate; private int maxVideoBitrate;
private boolean exceedVideoConstraintsIfNecessary; private boolean exceedVideoConstraintsIfNecessary;
private boolean exceedRendererCapabilitiesIfNecessary;
private int viewportWidth; private int viewportWidth;
private int viewportHeight; private int viewportHeight;
private boolean viewportOrientationMayChange; 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; private int tunnelingAudioSessionId;
/** Creates a builder with default initial values. */ /** Creates a builder with default initial values. */
...@@ -193,223 +197,258 @@ public class DefaultTrackSelector extends MappingTrackSelector { ...@@ -193,223 +197,258 @@ public class DefaultTrackSelector extends MappingTrackSelector {
* obtained. * obtained.
*/ */
private ParametersBuilder(Parameters initialValues) { private ParametersBuilder(Parameters initialValues) {
selectionOverrides = cloneSelectionOverrides(initialValues.selectionOverrides); // Video
rendererDisabledFlags = initialValues.rendererDisabledFlags.clone(); 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; preferredAudioLanguage = initialValues.preferredAudioLanguage;
// Text
preferredTextLanguage = initialValues.preferredTextLanguage; preferredTextLanguage = initialValues.preferredTextLanguage;
selectUndeterminedTextLanguage = initialValues.selectUndeterminedTextLanguage; selectUndeterminedTextLanguage = initialValues.selectUndeterminedTextLanguage;
disabledTextTrackSelectionFlags = initialValues.disabledTextTrackSelectionFlags; disabledTextTrackSelectionFlags = initialValues.disabledTextTrackSelectionFlags;
// General
forceLowestBitrate = initialValues.forceLowestBitrate; forceLowestBitrate = initialValues.forceLowestBitrate;
forceHighestSupportedBitrate = initialValues.forceHighestSupportedBitrate; forceHighestSupportedBitrate = initialValues.forceHighestSupportedBitrate;
allowMixedMimeAdaptiveness = initialValues.allowMixedMimeAdaptiveness; allowMixedMimeAdaptiveness = initialValues.allowMixedMimeAdaptiveness;
allowNonSeamlessAdaptiveness = initialValues.allowNonSeamlessAdaptiveness; allowNonSeamlessAdaptiveness = initialValues.allowNonSeamlessAdaptiveness;
maxVideoWidth = initialValues.maxVideoWidth;
maxVideoHeight = initialValues.maxVideoHeight;
maxVideoFrameRate = initialValues.maxVideoFrameRate;
maxVideoBitrate = initialValues.maxVideoBitrate;
exceedVideoConstraintsIfNecessary = initialValues.exceedVideoConstraintsIfNecessary;
exceedRendererCapabilitiesIfNecessary = initialValues.exceedRendererCapabilitiesIfNecessary; exceedRendererCapabilitiesIfNecessary = initialValues.exceedRendererCapabilitiesIfNecessary;
viewportWidth = initialValues.viewportWidth;
viewportHeight = initialValues.viewportHeight;
viewportOrientationMayChange = initialValues.viewportOrientationMayChange;
tunnelingAudioSessionId = initialValues.tunnelingAudioSessionId; 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. * @return This builder.
*/ */
public ParametersBuilder setPreferredAudioLanguage(String preferredAudioLanguage) { public ParametersBuilder setMaxVideoSizeSd() {
this.preferredAudioLanguage = preferredAudioLanguage; return setMaxVideoSize(1279, 719);
return this;
} }
/** /**
* See {@link Parameters#preferredTextLanguage}. * Equivalent to {@link #setMaxVideoSize setMaxVideoSize(Integer.MAX_VALUE, Integer.MAX_VALUE)}.
* *
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder setPreferredTextLanguage(String preferredTextLanguage) { public ParametersBuilder clearVideoSizeConstraints() {
this.preferredTextLanguage = preferredTextLanguage; return setMaxVideoSize(Integer.MAX_VALUE, Integer.MAX_VALUE);
return this;
} }
/** /**
* See {@link Parameters#selectUndeterminedTextLanguage}. * See {@link Parameters#maxVideoWidth} and {@link Parameters#maxVideoHeight}.
* *
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder setSelectUndeterminedTextLanguage( public ParametersBuilder setMaxVideoSize(int maxVideoWidth, int maxVideoHeight) {
boolean selectUndeterminedTextLanguage) { this.maxVideoWidth = maxVideoWidth;
this.selectUndeterminedTextLanguage = selectUndeterminedTextLanguage; this.maxVideoHeight = maxVideoHeight;
return this; return this;
} }
/** /**
* See {@link Parameters#disabledTextTrackSelectionFlags}. * See {@link Parameters#maxVideoFrameRate}.
* *
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder setDisabledTextTrackSelectionFlags( public ParametersBuilder setMaxVideoFrameRate(int maxVideoFrameRate) {
int disabledTextTrackSelectionFlags) { this.maxVideoFrameRate = maxVideoFrameRate;
this.disabledTextTrackSelectionFlags = disabledTextTrackSelectionFlags;
return this; return this;
} }
/** /**
* See {@link Parameters#forceLowestBitrate}. * See {@link Parameters#maxVideoBitrate}.
* *
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder setForceLowestBitrate(boolean forceLowestBitrate) { public ParametersBuilder setMaxVideoBitrate(int maxVideoBitrate) {
this.forceLowestBitrate = forceLowestBitrate; this.maxVideoBitrate = maxVideoBitrate;
return this; return this;
} }
/** /**
* See {@link Parameters#forceHighestSupportedBitrate}. * See {@link Parameters#exceedVideoConstraintsIfNecessary}.
* *
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder setForceHighestSupportedBitrate(boolean forceHighestSupportedBitrate) { public ParametersBuilder setExceedVideoConstraintsIfNecessary(
this.forceHighestSupportedBitrate = forceHighestSupportedBitrate; boolean exceedVideoConstraintsIfNecessary) {
this.exceedVideoConstraintsIfNecessary = exceedVideoConstraintsIfNecessary;
return this; 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. * @return This builder.
*/ */
public ParametersBuilder setAllowMixedMimeAdaptiveness(boolean allowMixedMimeAdaptiveness) { public ParametersBuilder setViewportSizeToPhysicalDisplaySize(
this.allowMixedMimeAdaptiveness = allowMixedMimeAdaptiveness; Context context, boolean viewportOrientationMayChange) {
return this; // 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. * @return This builder.
*/ */
public ParametersBuilder setAllowNonSeamlessAdaptiveness(boolean allowNonSeamlessAdaptiveness) { public ParametersBuilder clearViewportSizeConstraints() {
this.allowNonSeamlessAdaptiveness = allowNonSeamlessAdaptiveness; return setViewportSize(Integer.MAX_VALUE, Integer.MAX_VALUE, true);
return this;
} }
/** /**
* 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. * @return This builder.
*/ */
public ParametersBuilder setMaxVideoSizeSd() { public ParametersBuilder setViewportSize(
return setMaxVideoSize(1279, 719); 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. * @return This builder.
*/ */
public ParametersBuilder clearVideoSizeConstraints() { public ParametersBuilder setPreferredAudioLanguage(String preferredAudioLanguage) {
return setMaxVideoSize(Integer.MAX_VALUE, Integer.MAX_VALUE); this.preferredAudioLanguage = preferredAudioLanguage;
return this;
} }
// Text
/** /**
* See {@link Parameters#maxVideoWidth} and {@link Parameters#maxVideoHeight}. * See {@link Parameters#preferredTextLanguage}.
* *
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder setMaxVideoSize(int maxVideoWidth, int maxVideoHeight) { public ParametersBuilder setPreferredTextLanguage(String preferredTextLanguage) {
this.maxVideoWidth = maxVideoWidth; this.preferredTextLanguage = preferredTextLanguage;
this.maxVideoHeight = maxVideoHeight;
return this; return this;
} }
/** /**
* See {@link Parameters#maxVideoFrameRate}. * See {@link Parameters#selectUndeterminedTextLanguage}.
* *
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder setMaxVideoFrameRate(int maxVideoFrameRate) { public ParametersBuilder setSelectUndeterminedTextLanguage(
this.maxVideoFrameRate = maxVideoFrameRate; boolean selectUndeterminedTextLanguage) {
this.selectUndeterminedTextLanguage = selectUndeterminedTextLanguage;
return this; return this;
} }
/** /**
* See {@link Parameters#maxVideoBitrate}. * See {@link Parameters#disabledTextTrackSelectionFlags}.
* *
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder setMaxVideoBitrate(int maxVideoBitrate) { public ParametersBuilder setDisabledTextTrackSelectionFlags(
this.maxVideoBitrate = maxVideoBitrate; int disabledTextTrackSelectionFlags) {
this.disabledTextTrackSelectionFlags = disabledTextTrackSelectionFlags;
return this; return this;
} }
// General
/** /**
* See {@link Parameters#exceedVideoConstraintsIfNecessary}. * See {@link Parameters#forceLowestBitrate}.
* *
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder setExceedVideoConstraintsIfNecessary( public ParametersBuilder setForceLowestBitrate(boolean forceLowestBitrate) {
boolean exceedVideoConstraintsIfNecessary) { this.forceLowestBitrate = forceLowestBitrate;
this.exceedVideoConstraintsIfNecessary = exceedVideoConstraintsIfNecessary;
return this; return this;
} }
/** /**
* See {@link Parameters#exceedRendererCapabilitiesIfNecessary}. * See {@link Parameters#forceHighestSupportedBitrate}.
* *
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder setExceedRendererCapabilitiesIfNecessary( public ParametersBuilder setForceHighestSupportedBitrate(boolean forceHighestSupportedBitrate) {
boolean exceedRendererCapabilitiesIfNecessary) { this.forceHighestSupportedBitrate = forceHighestSupportedBitrate;
this.exceedRendererCapabilitiesIfNecessary = exceedRendererCapabilitiesIfNecessary;
return this; return this;
} }
/** /**
* Equivalent to calling {@link #setViewportSize(int, int, boolean)} with the viewport size * See {@link Parameters#allowMixedMimeAdaptiveness}.
* obtained from {@link Util#getPhysicalDisplaySize(Context)}.
* *
* @param context Any context.
* @param viewportOrientationMayChange See {@link Parameters#viewportOrientationMayChange}.
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder setViewportSizeToPhysicalDisplaySize( public ParametersBuilder setAllowMixedMimeAdaptiveness(boolean allowMixedMimeAdaptiveness) {
Context context, boolean viewportOrientationMayChange) { this.allowMixedMimeAdaptiveness = allowMixedMimeAdaptiveness;
// Assume the viewport is fullscreen. return this;
Point viewportSize = Util.getPhysicalDisplaySize(context);
return setViewportSize(viewportSize.x, viewportSize.y, viewportOrientationMayChange);
} }
/** /**
* Equivalent to * See {@link Parameters#allowNonSeamlessAdaptiveness}.
* {@link #setViewportSize setViewportSize(Integer.MAX_VALUE, Integer.MAX_VALUE, true)}.
* *
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder clearViewportSizeConstraints() { public ParametersBuilder setAllowNonSeamlessAdaptiveness(boolean allowNonSeamlessAdaptiveness) {
return setViewportSize(Integer.MAX_VALUE, Integer.MAX_VALUE, true); this.allowNonSeamlessAdaptiveness = allowNonSeamlessAdaptiveness;
return this;
} }
/** /**
* See {@link Parameters#viewportWidth}, {@link Parameters#maxVideoHeight} and {@link * See {@link Parameters#exceedRendererCapabilitiesIfNecessary}.
* Parameters#viewportOrientationMayChange}.
* *
* @param viewportWidth See {@link Parameters#viewportWidth}.
* @param viewportHeight See {@link Parameters#viewportHeight}.
* @param viewportOrientationMayChange See {@link Parameters#viewportOrientationMayChange}.
* @return This builder. * @return This builder.
*/ */
public ParametersBuilder setViewportSize( public ParametersBuilder setExceedRendererCapabilitiesIfNecessary(
int viewportWidth, int viewportHeight, boolean viewportOrientationMayChange) { boolean exceedRendererCapabilitiesIfNecessary) {
this.viewportWidth = viewportWidth; this.exceedRendererCapabilitiesIfNecessary = exceedRendererCapabilitiesIfNecessary;
this.viewportHeight = viewportHeight; return this;
this.viewportOrientationMayChange = viewportOrientationMayChange; }
/**
* 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; return this;
} }
// Overrides
/** /**
* Sets whether the renderer at the specified index is disabled. Disabling a renderer prevents * Sets whether the renderer at the specified index is disabled. Disabling a renderer prevents
* the selector from selecting any tracks for it. * the selector from selecting any tracks for it.
...@@ -514,50 +553,35 @@ public class DefaultTrackSelector extends MappingTrackSelector { ...@@ -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. * Builds a {@link Parameters} instance with the selected values.
*/ */
public Parameters build() { public Parameters build() {
return new Parameters( return new Parameters(
selectionOverrides, // Video
rendererDisabledFlags, maxVideoWidth,
maxVideoHeight,
maxVideoFrameRate,
maxVideoBitrate,
exceedVideoConstraintsIfNecessary,
viewportWidth,
viewportHeight,
viewportOrientationMayChange,
// Audio
preferredAudioLanguage, preferredAudioLanguage,
// Text
preferredTextLanguage, preferredTextLanguage,
selectUndeterminedTextLanguage, selectUndeterminedTextLanguage,
disabledTextTrackSelectionFlags, disabledTextTrackSelectionFlags,
// General
forceLowestBitrate, forceLowestBitrate,
forceHighestSupportedBitrate, forceHighestSupportedBitrate,
allowMixedMimeAdaptiveness, allowMixedMimeAdaptiveness,
allowNonSeamlessAdaptiveness, allowNonSeamlessAdaptiveness,
maxVideoWidth,
maxVideoHeight,
maxVideoFrameRate,
maxVideoBitrate,
exceedVideoConstraintsIfNecessary,
exceedRendererCapabilitiesIfNecessary, exceedRendererCapabilitiesIfNecessary,
viewportWidth, tunnelingAudioSessionId,
viewportHeight, // Overrides
viewportOrientationMayChange, selectionOverrides,
tunnelingAudioSessionId); rendererDisabledFlags);
} }
private static SparseArray<Map<TrackGroupArray, SelectionOverride>> cloneSelectionOverrides( private static SparseArray<Map<TrackGroupArray, SelectionOverride>> cloneSelectionOverrides(
...@@ -576,37 +600,10 @@ public class DefaultTrackSelector extends MappingTrackSelector { ...@@ -576,37 +600,10 @@ public class DefaultTrackSelector extends MappingTrackSelector {
/** An instance with default values. */ /** An instance with default values. */
public static final Parameters DEFAULT = new Parameters(); public static final Parameters DEFAULT = new Parameters();
// Per renderer overrides. // Overrides
private final SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides; private final SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides;
private final SparseBooleanArray rendererDisabledFlags; 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 // Video
/** /**
* Maximum allowed video width. The default value is {@link Integer#MAX_VALUE} (i.e. no * Maximum allowed video width. The default value is {@link Integer#MAX_VALUE} (i.e. no
...@@ -660,6 +657,32 @@ public class DefaultTrackSelector extends MappingTrackSelector { ...@@ -660,6 +657,32 @@ public class DefaultTrackSelector extends MappingTrackSelector {
*/ */
public final boolean viewportOrientationMayChange; 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 // General
/** /**
* Whether to force selection of the single lowest bitrate audio and video tracks that comply * Whether to force selection of the single lowest bitrate audio and video tracks that comply
...@@ -700,92 +723,112 @@ public class DefaultTrackSelector extends MappingTrackSelector { ...@@ -700,92 +723,112 @@ public class DefaultTrackSelector extends MappingTrackSelector {
private Parameters() { private Parameters() {
this( this(
/* selectionOverrides= */ new SparseArray<>(), // Video
/* rendererDisabledFlags= */ new SparseBooleanArray(), /* 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, /* preferredAudioLanguage= */ null,
// Text
/* preferredTextLanguage= */ null, /* preferredTextLanguage= */ null,
/* selectUndeterminedTextLanguage= */ false, /* selectUndeterminedTextLanguage= */ false,
/* disabledTextTrackSelectionFlags= */ 0, /* disabledTextTrackSelectionFlags= */ 0,
// General
/* forceLowestBitrate= */ false, /* forceLowestBitrate= */ false,
/* forceHighestSupportedBitrate= */ false, /* forceHighestSupportedBitrate= */ false,
/* allowMixedMimeAdaptiveness= */ false, /* allowMixedMimeAdaptiveness= */ false,
/* allowNonSeamlessAdaptiveness= */ true, /* allowNonSeamlessAdaptiveness= */ true,
/* maxVideoWidth= */ Integer.MAX_VALUE,
/* maxVideoHeight= */ Integer.MAX_VALUE,
/* maxVideoFrameRate= */ Integer.MAX_VALUE,
/* maxVideoBitrate= */ Integer.MAX_VALUE,
/* exceedVideoConstraintsIfNecessary= */ true,
/* exceedRendererCapabilitiesIfNecessary= */ true, /* exceedRendererCapabilitiesIfNecessary= */ true,
/* viewportWidth= */ Integer.MAX_VALUE, /* tunnelingAudioSessionId= */ C.AUDIO_SESSION_ID_UNSET,
/* viewportHeight= */ Integer.MAX_VALUE, // Overrides
/* viewportOrientationMayChange= */ true, /* selectionOverrides= */ new SparseArray<>(),
/* tunnelingAudioSessionId= */ C.AUDIO_SESSION_ID_UNSET); /* rendererDisabledFlags= */ new SparseBooleanArray());
} }
/* package */ Parameters( /* package */ Parameters(
SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides, // Video
SparseBooleanArray rendererDisabledFlags, int maxVideoWidth,
int maxVideoHeight,
int maxVideoFrameRate,
int maxVideoBitrate,
boolean exceedVideoConstraintsIfNecessary,
int viewportWidth,
int viewportHeight,
boolean viewportOrientationMayChange,
// Audio
@Nullable String preferredAudioLanguage, @Nullable String preferredAudioLanguage,
// Text
@Nullable String preferredTextLanguage, @Nullable String preferredTextLanguage,
boolean selectUndeterminedTextLanguage, boolean selectUndeterminedTextLanguage,
int disabledTextTrackSelectionFlags, int disabledTextTrackSelectionFlags,
// General
boolean forceLowestBitrate, boolean forceLowestBitrate,
boolean forceHighestSupportedBitrate, boolean forceHighestSupportedBitrate,
boolean allowMixedMimeAdaptiveness, boolean allowMixedMimeAdaptiveness,
boolean allowNonSeamlessAdaptiveness, boolean allowNonSeamlessAdaptiveness,
int maxVideoWidth,
int maxVideoHeight,
int maxVideoFrameRate,
int maxVideoBitrate,
boolean exceedVideoConstraintsIfNecessary,
boolean exceedRendererCapabilitiesIfNecessary, boolean exceedRendererCapabilitiesIfNecessary,
int viewportWidth, int tunnelingAudioSessionId,
int viewportHeight, // Overrides
boolean viewportOrientationMayChange, SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides,
int tunnelingAudioSessionId) { SparseBooleanArray rendererDisabledFlags) {
this.selectionOverrides = selectionOverrides; // Video
this.rendererDisabledFlags = rendererDisabledFlags; 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); this.preferredAudioLanguage = Util.normalizeLanguageCode(preferredAudioLanguage);
// Text
this.preferredTextLanguage = Util.normalizeLanguageCode(preferredTextLanguage); this.preferredTextLanguage = Util.normalizeLanguageCode(preferredTextLanguage);
this.selectUndeterminedTextLanguage = selectUndeterminedTextLanguage; this.selectUndeterminedTextLanguage = selectUndeterminedTextLanguage;
this.disabledTextTrackSelectionFlags = disabledTextTrackSelectionFlags; this.disabledTextTrackSelectionFlags = disabledTextTrackSelectionFlags;
// General
this.forceLowestBitrate = forceLowestBitrate; this.forceLowestBitrate = forceLowestBitrate;
this.forceHighestSupportedBitrate = forceHighestSupportedBitrate; this.forceHighestSupportedBitrate = forceHighestSupportedBitrate;
this.allowMixedMimeAdaptiveness = allowMixedMimeAdaptiveness; this.allowMixedMimeAdaptiveness = allowMixedMimeAdaptiveness;
this.allowNonSeamlessAdaptiveness = allowNonSeamlessAdaptiveness; this.allowNonSeamlessAdaptiveness = allowNonSeamlessAdaptiveness;
this.maxVideoWidth = maxVideoWidth;
this.maxVideoHeight = maxVideoHeight;
this.maxVideoFrameRate = maxVideoFrameRate;
this.maxVideoBitrate = maxVideoBitrate;
this.exceedVideoConstraintsIfNecessary = exceedVideoConstraintsIfNecessary;
this.exceedRendererCapabilitiesIfNecessary = exceedRendererCapabilitiesIfNecessary; this.exceedRendererCapabilitiesIfNecessary = exceedRendererCapabilitiesIfNecessary;
this.viewportWidth = viewportWidth;
this.viewportHeight = viewportHeight;
this.viewportOrientationMayChange = viewportOrientationMayChange;
this.tunnelingAudioSessionId = tunnelingAudioSessionId; this.tunnelingAudioSessionId = tunnelingAudioSessionId;
// Overrides
this.selectionOverrides = selectionOverrides;
this.rendererDisabledFlags = rendererDisabledFlags;
} }
/* package */ Parameters(Parcel in) { /* package */ Parameters(Parcel in) {
this.selectionOverrides = readSelectionOverrides(in); // Video
this.rendererDisabledFlags = in.readSparseBooleanArray(); 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(); this.preferredAudioLanguage = in.readString();
// Text
this.preferredTextLanguage = in.readString(); this.preferredTextLanguage = in.readString();
this.selectUndeterminedTextLanguage = Util.readBoolean(in); this.selectUndeterminedTextLanguage = Util.readBoolean(in);
this.disabledTextTrackSelectionFlags = in.readInt(); this.disabledTextTrackSelectionFlags = in.readInt();
// General
this.forceLowestBitrate = Util.readBoolean(in); this.forceLowestBitrate = Util.readBoolean(in);
this.forceHighestSupportedBitrate = Util.readBoolean(in); this.forceHighestSupportedBitrate = Util.readBoolean(in);
this.allowMixedMimeAdaptiveness = Util.readBoolean(in); this.allowMixedMimeAdaptiveness = Util.readBoolean(in);
this.allowNonSeamlessAdaptiveness = 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.exceedRendererCapabilitiesIfNecessary = Util.readBoolean(in);
this.viewportWidth = in.readInt();
this.viewportHeight = in.readInt();
this.viewportOrientationMayChange = Util.readBoolean(in);
this.tunnelingAudioSessionId = in.readInt(); this.tunnelingAudioSessionId = in.readInt();
// Overrides
this.selectionOverrides = readSelectionOverrides(in);
this.rendererDisabledFlags = in.readSparseBooleanArray();
} }
/** /**
...@@ -839,49 +882,59 @@ public class DefaultTrackSelector extends MappingTrackSelector { ...@@ -839,49 +882,59 @@ public class DefaultTrackSelector extends MappingTrackSelector {
return false; return false;
} }
Parameters other = (Parameters) obj; Parameters other = (Parameters) obj;
return selectUndeterminedTextLanguage == other.selectUndeterminedTextLanguage return maxVideoWidth == other.maxVideoWidth
&& disabledTextTrackSelectionFlags == other.disabledTextTrackSelectionFlags
&& forceLowestBitrate == other.forceLowestBitrate
&& forceHighestSupportedBitrate == other.forceHighestSupportedBitrate
&& allowMixedMimeAdaptiveness == other.allowMixedMimeAdaptiveness
&& allowNonSeamlessAdaptiveness == other.allowNonSeamlessAdaptiveness
&& maxVideoWidth == other.maxVideoWidth
&& maxVideoHeight == other.maxVideoHeight && maxVideoHeight == other.maxVideoHeight
&& maxVideoFrameRate == other.maxVideoFrameRate && maxVideoFrameRate == other.maxVideoFrameRate
&& maxVideoBitrate == other.maxVideoBitrate
&& exceedVideoConstraintsIfNecessary == other.exceedVideoConstraintsIfNecessary && exceedVideoConstraintsIfNecessary == other.exceedVideoConstraintsIfNecessary
&& exceedRendererCapabilitiesIfNecessary == other.exceedRendererCapabilitiesIfNecessary
&& viewportOrientationMayChange == other.viewportOrientationMayChange && viewportOrientationMayChange == other.viewportOrientationMayChange
&& viewportWidth == other.viewportWidth && viewportWidth == other.viewportWidth
&& viewportHeight == other.viewportHeight && viewportHeight == other.viewportHeight
&& maxVideoBitrate == other.maxVideoBitrate // Audio
&& tunnelingAudioSessionId == other.tunnelingAudioSessionId
&& TextUtils.equals(preferredAudioLanguage, other.preferredAudioLanguage) && TextUtils.equals(preferredAudioLanguage, other.preferredAudioLanguage)
// Text
&& TextUtils.equals(preferredTextLanguage, other.preferredTextLanguage) && 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) && areRendererDisabledFlagsEqual(rendererDisabledFlags, other.rendererDisabledFlags)
&& areSelectionOverridesEqual(selectionOverrides, other.selectionOverrides); && areSelectionOverridesEqual(selectionOverrides, other.selectionOverrides);
} }
@Override @Override
public int hashCode() { public int hashCode() {
int result = selectUndeterminedTextLanguage ? 1 : 0; int result = 1;
result = 31 * result + disabledTextTrackSelectionFlags; // Video
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 + maxVideoWidth; result = 31 * result + maxVideoWidth;
result = 31 * result + maxVideoHeight; result = 31 * result + maxVideoHeight;
result = 31 * result + maxVideoFrameRate; result = 31 * result + maxVideoFrameRate;
result = 31 * result + maxVideoBitrate;
result = 31 * result + (exceedVideoConstraintsIfNecessary ? 1 : 0); result = 31 * result + (exceedVideoConstraintsIfNecessary ? 1 : 0);
result = 31 * result + (exceedRendererCapabilitiesIfNecessary ? 1 : 0);
result = 31 * result + (viewportOrientationMayChange ? 1 : 0); result = 31 * result + (viewportOrientationMayChange ? 1 : 0);
result = 31 * result + viewportWidth; result = 31 * result + viewportWidth;
result = 31 * result + viewportHeight; result = 31 * result + viewportHeight;
result = 31 * result + maxVideoBitrate; // Audio
result = 31 * result + tunnelingAudioSessionId;
result = result =
31 * result + (preferredAudioLanguage == null ? 0 : preferredAudioLanguage.hashCode()); 31 * result + (preferredAudioLanguage == null ? 0 : preferredAudioLanguage.hashCode());
// Text
result = 31 * result + (preferredTextLanguage == null ? 0 : preferredTextLanguage.hashCode()); 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; return result;
} }
...@@ -894,26 +947,31 @@ public class DefaultTrackSelector extends MappingTrackSelector { ...@@ -894,26 +947,31 @@ public class DefaultTrackSelector extends MappingTrackSelector {
@Override @Override
public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) {
writeSelectionOverridesToParcel(dest, selectionOverrides); // Video
dest.writeSparseBooleanArray(rendererDisabledFlags); 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); dest.writeString(preferredAudioLanguage);
// Text
dest.writeString(preferredTextLanguage); dest.writeString(preferredTextLanguage);
Util.writeBoolean(dest, selectUndeterminedTextLanguage); Util.writeBoolean(dest, selectUndeterminedTextLanguage);
dest.writeInt(disabledTextTrackSelectionFlags); dest.writeInt(disabledTextTrackSelectionFlags);
// General
Util.writeBoolean(dest, forceLowestBitrate); Util.writeBoolean(dest, forceLowestBitrate);
Util.writeBoolean(dest, forceHighestSupportedBitrate); Util.writeBoolean(dest, forceHighestSupportedBitrate);
Util.writeBoolean(dest, allowMixedMimeAdaptiveness); Util.writeBoolean(dest, allowMixedMimeAdaptiveness);
Util.writeBoolean(dest, allowNonSeamlessAdaptiveness); Util.writeBoolean(dest, allowNonSeamlessAdaptiveness);
dest.writeInt(maxVideoWidth);
dest.writeInt(maxVideoHeight);
dest.writeInt(maxVideoFrameRate);
dest.writeInt(maxVideoBitrate);
Util.writeBoolean(dest, exceedVideoConstraintsIfNecessary);
Util.writeBoolean(dest, exceedRendererCapabilitiesIfNecessary); Util.writeBoolean(dest, exceedRendererCapabilitiesIfNecessary);
dest.writeInt(viewportWidth);
dest.writeInt(viewportHeight);
Util.writeBoolean(dest, viewportOrientationMayChange);
dest.writeInt(tunnelingAudioSessionId); dest.writeInt(tunnelingAudioSessionId);
// Overrides
writeSelectionOverridesToParcel(dest, selectionOverrides);
dest.writeSparseBooleanArray(rendererDisabledFlags);
} }
public static final Parcelable.Creator<Parameters> CREATOR = public static final Parcelable.Creator<Parameters> CREATOR =
...@@ -2216,7 +2274,7 @@ public class DefaultTrackSelector extends MappingTrackSelector { ...@@ -2216,7 +2274,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
public final int channelCount; public final int channelCount;
public final int sampleRate; public final int sampleRate;
public final @Nullable String mimeType; @Nullable public final String mimeType;
public AudioConfigurationTuple(int channelCount, int sampleRate, @Nullable String mimeType) { public AudioConfigurationTuple(int channelCount, int sampleRate, @Nullable String mimeType) {
this.channelCount = channelCount; this.channelCount = channelCount;
......
...@@ -129,26 +129,31 @@ public final class DefaultTrackSelectorTest { ...@@ -129,26 +129,31 @@ public final class DefaultTrackSelectorTest {
Parameters parametersToParcel = Parameters parametersToParcel =
new Parameters( new Parameters(
selectionOverrides, // Video
rendererDisabledFlags, /* maxVideoWidth= */ 0,
/* maxVideoHeight= */ 1,
/* maxVideoFrameRate= */ 2,
/* maxVideoBitrate= */ 3,
/* exceedVideoConstraintsIfNecessary= */ false,
/* viewportWidth= */ 4,
/* viewportHeight= */ 5,
/* viewportOrientationMayChange= */ true,
// Audio
/* preferredAudioLanguage= */ "en", /* preferredAudioLanguage= */ "en",
// Text
/* preferredTextLanguage= */ "de", /* preferredTextLanguage= */ "de",
/* selectUndeterminedTextLanguage= */ false, /* selectUndeterminedTextLanguage= */ false,
/* disabledTextTrackSelectionFlags= */ 0, /* disabledTextTrackSelectionFlags= */ 6,
// General
/* forceLowestBitrate= */ true, /* forceLowestBitrate= */ true,
/* forceHighestSupportedBitrate= */ true, /* forceHighestSupportedBitrate= */ false,
/* allowMixedMimeAdaptiveness= */ false, /* allowMixedMimeAdaptiveness= */ true,
/* allowNonSeamlessAdaptiveness= */ true, /* allowNonSeamlessAdaptiveness= */ false,
/* maxVideoWidth= */ 1,
/* maxVideoHeight= */ 2,
/* maxVideoFrameRate= */ 3,
/* maxVideoBitrate= */ 4,
/* exceedVideoConstraintsIfNecessary= */ false,
/* exceedRendererCapabilitiesIfNecessary= */ true, /* exceedRendererCapabilitiesIfNecessary= */ true,
/* viewportWidth= */ 5, /* tunnelingAudioSessionId= */ C.AUDIO_SESSION_ID_UNSET,
/* viewportHeight= */ 6, // Overrides
/* viewportOrientationMayChange= */ false, selectionOverrides,
/* tunnelingAudioSessionId= */ C.AUDIO_SESSION_ID_UNSET); rendererDisabledFlags);
Parcel parcel = Parcel.obtain(); Parcel parcel = Parcel.obtain();
parametersToParcel.writeToParcel(parcel, 0); parametersToParcel.writeToParcel(parcel, 0);
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Ponovi sve</string> <string name="exo_controls_repeat_all_description">Ponovi sve</string>
<string name="exo_controls_shuffle_description">Pusti nasumično</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_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_description">Preuzmi</string>
<string name="exo_download_notification_channel_name">Preuzimanja</string> <string name="exo_download_notification_channel_name">Preuzimanja</string>
<string name="exo_download_downloading">Preuzima se</string> <string name="exo_download_downloading">Preuzima se</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Паўтарыць усе</string> <string name="exo_controls_repeat_all_description">Паўтарыць усе</string>
<string name="exo_controls_shuffle_description">Перамяшаць</string> <string name="exo_controls_shuffle_description">Перамяшаць</string>
<string name="exo_controls_fullscreen_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_description">Спампаваць</string>
<string name="exo_download_notification_channel_name">Спампоўкі</string> <string name="exo_download_notification_channel_name">Спампоўкі</string>
<string name="exo_download_downloading">Спампоўваецца</string> <string name="exo_download_downloading">Спампоўваецца</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Повтаряне на всички</string> <string name="exo_controls_repeat_all_description">Повтаряне на всички</string>
<string name="exo_controls_shuffle_description">Разбъркване</string> <string name="exo_controls_shuffle_description">Разбъркване</string>
<string name="exo_controls_fullscreen_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_description">Изтегляне</string>
<string name="exo_download_notification_channel_name">Изтегляния</string> <string name="exo_download_notification_channel_name">Изтегляния</string>
<string name="exo_download_downloading">Изтегля се</string> <string name="exo_download_downloading">Изтегля се</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Ponovi sve</string> <string name="exo_controls_repeat_all_description">Ponovi sve</string>
<string name="exo_controls_shuffle_description">Izmiješaj</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_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_description">Preuzmi</string>
<string name="exo_download_notification_channel_name">Preuzimanja</string> <string name="exo_download_notification_channel_name">Preuzimanja</string>
<string name="exo_download_downloading">Preuzimanje</string> <string name="exo_download_downloading">Preuzimanje</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Repeteix tot</string> <string name="exo_controls_repeat_all_description">Repeteix tot</string>
<string name="exo_controls_shuffle_description">Reprodueix aleatòriament</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_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_description">Baixa</string>
<string name="exo_download_notification_channel_name">Baixades</string> <string name="exo_download_notification_channel_name">Baixades</string>
<string name="exo_download_downloading">S\'està baixant</string> <string name="exo_download_downloading">S\'està baixant</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Gentag alle</string> <string name="exo_controls_repeat_all_description">Gentag alle</string>
<string name="exo_controls_shuffle_description">Bland</string> <string name="exo_controls_shuffle_description">Bland</string>
<string name="exo_controls_fullscreen_description">Fuld skærm</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_description">Download</string>
<string name="exo_download_notification_channel_name">Downloads</string> <string name="exo_download_notification_channel_name">Downloads</string>
<string name="exo_download_downloading">Downloader</string> <string name="exo_download_downloading">Downloader</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Alle wiederholen</string> <string name="exo_controls_repeat_all_description">Alle wiederholen</string>
<string name="exo_controls_shuffle_description">Zufallsmix</string> <string name="exo_controls_shuffle_description">Zufallsmix</string>
<string name="exo_controls_fullscreen_description">Vollbildmodus</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_description">Herunterladen</string>
<string name="exo_download_notification_channel_name">Downloads</string> <string name="exo_download_notification_channel_name">Downloads</string>
<string name="exo_download_downloading">Wird heruntergeladen</string> <string name="exo_download_downloading">Wird heruntergeladen</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Repetir todo</string> <string name="exo_controls_repeat_all_description">Repetir todo</string>
<string name="exo_controls_shuffle_description">Reproducir aleatoriamente</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_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_description">Descargar</string>
<string name="exo_download_notification_channel_name">Descargas</string> <string name="exo_download_notification_channel_name">Descargas</string>
<string name="exo_download_downloading">Descargando</string> <string name="exo_download_downloading">Descargando</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Korda kõiki</string> <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_shuffle_description">Esita juhuslikus järjekorras</string>
<string name="exo_controls_fullscreen_description">Täisekraani režiim</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_description">Allalaadimine</string>
<string name="exo_download_notification_channel_name">Allalaadimised</string> <string name="exo_download_notification_channel_name">Allalaadimised</string>
<string name="exo_download_downloading">Allalaadimine</string> <string name="exo_download_downloading">Allalaadimine</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Toista kaikki uudelleen</string> <string name="exo_controls_repeat_all_description">Toista kaikki uudelleen</string>
<string name="exo_controls_shuffle_description">Satunnaistoisto</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_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_description">Lataa</string>
<string name="exo_download_notification_channel_name">Lataukset</string> <string name="exo_download_notification_channel_name">Lataukset</string>
<string name="exo_download_downloading">Ladataan</string> <string name="exo_download_downloading">Ladataan</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Tout lire en boucle</string> <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_shuffle_description">Lecture aléatoire</string>
<string name="exo_controls_fullscreen_description">Mode Plein écran</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_description">Télécharger</string>
<string name="exo_download_notification_channel_name">Téléchargements</string> <string name="exo_download_notification_channel_name">Téléchargements</string>
<string name="exo_download_downloading">Téléchargement en cours…</string> <string name="exo_download_downloading">Téléchargement en cours…</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Tout lire en boucle</string> <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_shuffle_description">Aléatoire</string>
<string name="exo_controls_fullscreen_description">Mode plein écran</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_description">Télécharger</string>
<string name="exo_download_notification_channel_name">Téléchargements</string> <string name="exo_download_notification_channel_name">Téléchargements</string>
<string name="exo_download_downloading">Téléchargement…</string> <string name="exo_download_downloading">Téléchargement…</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Repetir todas as pistas</string> <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_shuffle_description">Reprodución aleatoria</string>
<string name="exo_controls_fullscreen_description">Modo de pantalla completa</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_description">Descargar</string>
<string name="exo_download_notification_channel_name">Descargas</string> <string name="exo_download_notification_channel_name">Descargas</string>
<string name="exo_download_downloading">Descargando</string> <string name="exo_download_downloading">Descargando</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">सभी को दोहराएं</string> <string name="exo_controls_repeat_all_description">सभी को दोहराएं</string>
<string name="exo_controls_shuffle_description">शफ़ल करें</string> <string name="exo_controls_shuffle_description">शफ़ल करें</string>
<string name="exo_controls_fullscreen_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_description">डाउनलोड करें</string>
<string name="exo_download_notification_channel_name">डाउनलोड की गई मीडिया फ़ाइलें</string> <string name="exo_download_notification_channel_name">डाउनलोड की गई मीडिया फ़ाइलें</string>
<string name="exo_download_downloading">डाउनलोड हो रहा है</string> <string name="exo_download_downloading">डाउनलोड हो रहा है</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Összes szám ismétlése</string> <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_shuffle_description">Keverés</string>
<string name="exo_controls_fullscreen_description">Teljes képernyős mód</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_description">Letöltés</string>
<string name="exo_download_notification_channel_name">Letöltések</string> <string name="exo_download_notification_channel_name">Letöltések</string>
<string name="exo_download_downloading">Letöltés folyamatban</string> <string name="exo_download_downloading">Letöltés folyamatban</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Կրկնել բոլորը</string> <string name="exo_controls_repeat_all_description">Կրկնել բոլորը</string>
<string name="exo_controls_shuffle_description">Խառնել</string> <string name="exo_controls_shuffle_description">Խառնել</string>
<string name="exo_controls_fullscreen_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_description">Ներբեռնել</string>
<string name="exo_download_notification_channel_name">Ներբեռնումներ</string> <string name="exo_download_notification_channel_name">Ներբեռնումներ</string>
<string name="exo_download_downloading">Ներբեռնում</string> <string name="exo_download_downloading">Ներբեռնում</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Endurtaka allt</string> <string name="exo_controls_repeat_all_description">Endurtaka allt</string>
<string name="exo_controls_shuffle_description">Stokka</string> <string name="exo_controls_shuffle_description">Stokka</string>
<string name="exo_controls_fullscreen_description">Allur skjárinn</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_description">Sækja</string>
<string name="exo_download_notification_channel_name">Niðurhal</string> <string name="exo_download_notification_channel_name">Niðurhal</string>
<string name="exo_download_downloading">Sækir</string> <string name="exo_download_downloading">Sækir</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">חזור על הכול</string> <string name="exo_controls_repeat_all_description">חזור על הכול</string>
<string name="exo_controls_shuffle_description">ערבוב</string> <string name="exo_controls_shuffle_description">ערבוב</string>
<string name="exo_controls_fullscreen_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_description">הורדה</string>
<string name="exo_download_notification_channel_name">הורדות</string> <string name="exo_download_notification_channel_name">הורדות</string>
<string name="exo_download_downloading">ההורדה מתבצעת</string> <string name="exo_download_downloading">ההורדה מתבצעת</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Барлығын қайталау</string> <string name="exo_controls_repeat_all_description">Барлығын қайталау</string>
<string name="exo_controls_shuffle_description">Араластыру</string> <string name="exo_controls_shuffle_description">Араластыру</string>
<string name="exo_controls_fullscreen_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_description">Жүктеп алу</string>
<string name="exo_download_notification_channel_name">Жүктеп алынғандар</string> <string name="exo_download_notification_channel_name">Жүктеп алынғандар</string>
<string name="exo_download_downloading">Жүктеп алынуда</string> <string name="exo_download_downloading">Жүктеп алынуда</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Баарын кайталоо</string> <string name="exo_controls_repeat_all_description">Баарын кайталоо</string>
<string name="exo_controls_shuffle_description">Аралаштыруу</string> <string name="exo_controls_shuffle_description">Аралаштыруу</string>
<string name="exo_controls_fullscreen_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_description">Жүктөп алуу</string>
<string name="exo_download_notification_channel_name">Жүктөлүп алынгандар</string> <string name="exo_download_notification_channel_name">Жүктөлүп алынгандар</string>
<string name="exo_download_downloading">Жүктөлүп алынууда</string> <string name="exo_download_downloading">Жүктөлүп алынууда</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Kartoti viską</string> <string name="exo_controls_repeat_all_description">Kartoti viską</string>
<string name="exo_controls_shuffle_description">Maišyti</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_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_description">Atsisiųsti</string>
<string name="exo_download_notification_channel_name">Atsisiuntimai</string> <string name="exo_download_notification_channel_name">Atsisiuntimai</string>
<string name="exo_download_downloading">Atsisiunčiama</string> <string name="exo_download_downloading">Atsisiunčiama</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Atkārtot visu</string> <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_shuffle_description">Atskaņot jauktā secībā</string>
<string name="exo_controls_fullscreen_description">Pilnekrāna režīms</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_description">Lejupielādēt</string>
<string name="exo_download_notification_channel_name">Lejupielādes</string> <string name="exo_download_notification_channel_name">Lejupielādes</string>
<string name="exo_download_downloading">Notiek lejupielāde</string> <string name="exo_download_downloading">Notiek lejupielāde</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Повтори ги сите</string> <string name="exo_controls_repeat_all_description">Повтори ги сите</string>
<string name="exo_controls_shuffle_description">Измешај</string> <string name="exo_controls_shuffle_description">Измешај</string>
<string name="exo_controls_fullscreen_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_description">Преземи</string>
<string name="exo_download_notification_channel_name">Преземања</string> <string name="exo_download_notification_channel_name">Преземања</string>
<string name="exo_download_downloading">Се презема</string> <string name="exo_download_downloading">Се презема</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Бүгдийг нь дахин тоглуулах</string> <string name="exo_controls_repeat_all_description">Бүгдийг нь дахин тоглуулах</string>
<string name="exo_controls_shuffle_description">Холих</string> <string name="exo_controls_shuffle_description">Холих</string>
<string name="exo_controls_fullscreen_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_description">Татах</string>
<string name="exo_download_notification_channel_name">Татaлт</string> <string name="exo_download_notification_channel_name">Татaлт</string>
<string name="exo_download_downloading">Татаж байна</string> <string name="exo_download_downloading">Татаж байна</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Ulang semua</string> <string name="exo_controls_repeat_all_description">Ulang semua</string>
<string name="exo_controls_shuffle_description">Rombak</string> <string name="exo_controls_shuffle_description">Rombak</string>
<string name="exo_controls_fullscreen_description">Mod skrin penuh</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_description">Muat turun</string>
<string name="exo_download_notification_channel_name">Muat turun</string> <string name="exo_download_notification_channel_name">Muat turun</string>
<string name="exo_download_downloading">Memuat turun</string> <string name="exo_download_downloading">Memuat turun</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Gjenta alle</string> <string name="exo_controls_repeat_all_description">Gjenta alle</string>
<string name="exo_controls_shuffle_description">Tilfeldig rekkefølge</string> <string name="exo_controls_shuffle_description">Tilfeldig rekkefølge</string>
<string name="exo_controls_fullscreen_description">Fullskjermmodus</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_description">Last ned</string>
<string name="exo_download_notification_channel_name">Nedlastinger</string> <string name="exo_download_notification_channel_name">Nedlastinger</string>
<string name="exo_download_downloading">Laster ned</string> <string name="exo_download_downloading">Laster ned</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">सबै दोहोर्‍याउनुहोस्</string> <string name="exo_controls_repeat_all_description">सबै दोहोर्‍याउनुहोस्</string>
<string name="exo_controls_shuffle_description">मिसाउनुहोस्</string> <string name="exo_controls_shuffle_description">मिसाउनुहोस्</string>
<string name="exo_controls_fullscreen_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_description">डाउनलोड गर्नुहोस्</string>
<string name="exo_download_notification_channel_name">डाउनलोडहरू</string> <string name="exo_download_notification_channel_name">डाउनलोडहरू</string>
<string name="exo_download_downloading">डाउनलोड गरिँदै छ</string> <string name="exo_download_downloading">डाउनलोड गरिँदै छ</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Alles herhalen</string> <string name="exo_controls_repeat_all_description">Alles herhalen</string>
<string name="exo_controls_shuffle_description">Shuffle</string> <string name="exo_controls_shuffle_description">Shuffle</string>
<string name="exo_controls_fullscreen_description">Modus \'Volledig scherm\'</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_description">Downloaden</string>
<string name="exo_download_notification_channel_name">Downloads</string> <string name="exo_download_notification_channel_name">Downloads</string>
<string name="exo_download_downloading">Downloaden</string> <string name="exo_download_downloading">Downloaden</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Repetir tudo</string> <string name="exo_controls_repeat_all_description">Repetir tudo</string>
<string name="exo_controls_shuffle_description">Reproduzir aleatoriamente</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_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_description">Transferir</string>
<string name="exo_download_notification_channel_name">Transferências</string> <string name="exo_download_notification_channel_name">Transferências</string>
<string name="exo_download_downloading">A transferir…</string> <string name="exo_download_downloading">A transferir…</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Repetați-le pe toate</string> <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_shuffle_description">Redați aleatoriu</string>
<string name="exo_controls_fullscreen_description">Modul Ecran complet</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_description">Descărcați</string>
<string name="exo_download_notification_channel_name">Descărcări</string> <string name="exo_download_notification_channel_name">Descărcări</string>
<string name="exo_download_downloading">Se descarcă</string> <string name="exo_download_downloading">Se descarcă</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Повторять все</string> <string name="exo_controls_repeat_all_description">Повторять все</string>
<string name="exo_controls_shuffle_description">Перемешать</string> <string name="exo_controls_shuffle_description">Перемешать</string>
<string name="exo_controls_fullscreen_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_description">Скачать</string>
<string name="exo_download_notification_channel_name">Скачивания</string> <string name="exo_download_notification_channel_name">Скачивания</string>
<string name="exo_download_downloading">Скачивание…</string> <string name="exo_download_downloading">Скачивание…</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Понови све</string> <string name="exo_controls_repeat_all_description">Понови све</string>
<string name="exo_controls_shuffle_description">Пусти насумично</string> <string name="exo_controls_shuffle_description">Пусти насумично</string>
<string name="exo_controls_fullscreen_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_description">Преузми</string>
<string name="exo_download_notification_channel_name">Преузимања</string> <string name="exo_download_notification_channel_name">Преузимања</string>
<string name="exo_download_downloading">Преузима се</string> <string name="exo_download_downloading">Преузима се</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Upprepa alla</string> <string name="exo_controls_repeat_all_description">Upprepa alla</string>
<string name="exo_controls_shuffle_description">Blanda spår</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_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_description">Ladda ned</string>
<string name="exo_download_notification_channel_name">Nedladdningar</string> <string name="exo_download_notification_channel_name">Nedladdningar</string>
<string name="exo_download_downloading">Laddar ned</string> <string name="exo_download_downloading">Laddar ned</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Rudia zote</string> <string name="exo_controls_repeat_all_description">Rudia zote</string>
<string name="exo_controls_shuffle_description">Changanya</string> <string name="exo_controls_shuffle_description">Changanya</string>
<string name="exo_controls_fullscreen_description">Hali ya skrini nzima</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_description">Pakua</string>
<string name="exo_download_notification_channel_name">Vipakuliwa</string> <string name="exo_download_notification_channel_name">Vipakuliwa</string>
<string name="exo_download_downloading">Inapakua</string> <string name="exo_download_downloading">Inapakua</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">เล่นซ้ำทั้งหมด</string> <string name="exo_controls_repeat_all_description">เล่นซ้ำทั้งหมด</string>
<string name="exo_controls_shuffle_description">สุ่ม</string> <string name="exo_controls_shuffle_description">สุ่ม</string>
<string name="exo_controls_fullscreen_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_description">ดาวน์โหลด</string>
<string name="exo_download_notification_channel_name">ดาวน์โหลด</string> <string name="exo_download_notification_channel_name">ดาวน์โหลด</string>
<string name="exo_download_downloading">กำลังดาวน์โหลด</string> <string name="exo_download_downloading">กำลังดาวน์โหลด</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Ulitin lahat</string> <string name="exo_controls_repeat_all_description">Ulitin lahat</string>
<string name="exo_controls_shuffle_description">I-shuffle</string> <string name="exo_controls_shuffle_description">I-shuffle</string>
<string name="exo_controls_fullscreen_description">Fullscreen mode</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_description">I-download</string>
<string name="exo_download_notification_channel_name">Mga Download</string> <string name="exo_download_notification_channel_name">Mga Download</string>
<string name="exo_download_downloading">Nagda-download</string> <string name="exo_download_downloading">Nagda-download</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Tümünü tekrarla</string> <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_shuffle_description">Karıştır</string>
<string name="exo_controls_fullscreen_description">Tam ekran modu</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_description">İndir</string>
<string name="exo_download_notification_channel_name">İndirilenler</string> <string name="exo_download_notification_channel_name">İndirilenler</string>
<string name="exo_download_downloading">İndiriliyor</string> <string name="exo_download_downloading">İndiriliyor</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Повторити всі</string> <string name="exo_controls_repeat_all_description">Повторити всі</string>
<string name="exo_controls_shuffle_description">Перемішати</string> <string name="exo_controls_shuffle_description">Перемішати</string>
<string name="exo_controls_fullscreen_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_description">Завантажити</string>
<string name="exo_download_notification_channel_name">Завантаження</string> <string name="exo_download_notification_channel_name">Завантаження</string>
<string name="exo_download_downloading">Завантажується</string> <string name="exo_download_downloading">Завантажується</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">سبھی کو دہرائیں</string> <string name="exo_controls_repeat_all_description">سبھی کو دہرائیں</string>
<string name="exo_controls_shuffle_description">شفل کریں</string> <string name="exo_controls_shuffle_description">شفل کریں</string>
<string name="exo_controls_fullscreen_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_description">ڈاؤن لوڈ کریں</string>
<string name="exo_download_notification_channel_name">ڈاؤن لوڈز</string> <string name="exo_download_notification_channel_name">ڈاؤن لوڈز</string>
<string name="exo_download_downloading">ڈاؤن لوڈ ہو رہا ہے</string> <string name="exo_download_downloading">ڈاؤن لوڈ ہو رہا ہے</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">Lặp lại tất cả</string> <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_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_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_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_notification_channel_name">Tài nguyên đã tải xuống</string>
<string name="exo_download_downloading">Đang tải xuống</string> <string name="exo_download_downloading">Đang tải xuống</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">全部重复播放</string> <string name="exo_controls_repeat_all_description">全部重复播放</string>
<string name="exo_controls_shuffle_description">随机播放</string> <string name="exo_controls_shuffle_description">随机播放</string>
<string name="exo_controls_fullscreen_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_description">下载</string>
<string name="exo_download_notification_channel_name">下载内容</string> <string name="exo_download_notification_channel_name">下载内容</string>
<string name="exo_download_downloading">正在下载</string> <string name="exo_download_downloading">正在下载</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">全部重複播放</string> <string name="exo_controls_repeat_all_description">全部重複播放</string>
<string name="exo_controls_shuffle_description">隨機播放</string> <string name="exo_controls_shuffle_description">隨機播放</string>
<string name="exo_controls_fullscreen_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_description">下載</string>
<string name="exo_download_notification_channel_name">下載內容</string> <string name="exo_download_notification_channel_name">下載內容</string>
<string name="exo_download_downloading">正在下載</string> <string name="exo_download_downloading">正在下載</string>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<string name="exo_controls_repeat_all_description">重複播放所有項目</string> <string name="exo_controls_repeat_all_description">重複播放所有項目</string>
<string name="exo_controls_shuffle_description">隨機播放</string> <string name="exo_controls_shuffle_description">隨機播放</string>
<string name="exo_controls_fullscreen_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_description">下載</string>
<string name="exo_download_notification_channel_name">下載</string> <string name="exo_download_notification_channel_name">下載</string>
<string name="exo_download_downloading">下載中</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