Clean up message naming in EPII

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=184056034
This commit is contained in:
olly 2018-01-31 15:20:41 -08:00 committed by Oliver Woodman
parent fb0b7a7f86
commit 2f932bfaf7
104 changed files with 260 additions and 424 deletions

View File

@ -28,7 +28,6 @@ include modulePrefix + 'extension-ffmpeg'
include modulePrefix + 'extension-flac'
include modulePrefix + 'extension-gvr'
include modulePrefix + 'extension-ima'
include modulePrefix + 'extension-cast'
include modulePrefix + 'extension-mediasession'
include modulePrefix + 'extension-okhttp'
include modulePrefix + 'extension-opus'
@ -47,7 +46,6 @@ project(modulePrefix + 'extension-ffmpeg').projectDir = new File(rootDir, 'exten
project(modulePrefix + 'extension-flac').projectDir = new File(rootDir, 'extensions/flac')
project(modulePrefix + 'extension-gvr').projectDir = new File(rootDir, 'extensions/gvr')
project(modulePrefix + 'extension-ima').projectDir = new File(rootDir, 'extensions/ima')
project(modulePrefix + 'extension-cast').projectDir = new File(rootDir, 'extensions/cast')
project(modulePrefix + 'extension-mediasession').projectDir = new File(rootDir, 'extensions/mediasession')
project(modulePrefix + 'extension-okhttp').projectDir = new File(rootDir, 'extensions/okhttp')
project(modulePrefix + 'extension-opus').projectDir = new File(rootDir, 'extensions/opus')

View File

@ -1,6 +0,0 @@
# Proguard rules specific to the main demo app.
# Constructor accessed via reflection in PlayerActivity
-keepclassmembers class com.google.android.exoplayer2.ext.ima.ImaAdsLoader {
<init>(android.content.Context, android.net.Uri);
}

View File

@ -1,6 +0,0 @@
# Proguard rules specific to the main demo app.
# Constructor accessed via reflection in PlayerActivity
-keepclassmembers class com.google.android.exoplayer2.ext.ima.ImaAdsLoader {
<init>(android.content.Context, android.net.Uri);
}

View File

@ -1,6 +0,0 @@
# Proguard rules specific to the IMA extension.
-keep class com.google.ads.interactivemedia.** { *; }
-keep interface com.google.ads.interactivemedia.** { *; }
-keep class com.google.obf.** { *; }
-keep interface com.google.obf.** { *; }

View File

@ -1,6 +0,0 @@
# Proguard rules specific to the IMA extension.
-keep class com.google.ads.interactivemedia.** { *; }
-keep interface com.google.ads.interactivemedia.** { *; }
-keep class com.google.obf.** { *; }
-keep interface com.google.obf.** { *; }

View File

@ -1,25 +0,0 @@
# Proguard rules specific to the core module.
# Constructors accessed via reflection in DefaultRenderersFactory
-keepclassmembers class com.google.android.exoplayer2.ext.vp9.LibvpxVideoRenderer {
<init>(boolean, long, android.os.Handler, com.google.android.exoplayer2.video.VideoRendererEventListener, int);
}
-keepclassmembers class com.google.android.exoplayer2.ext.opus.LibopusAudioRenderer {
<init>(android.os.Handler, com.google.android.exoplayer2.audio.AudioRendererEventListener, com.google.android.exoplayer2.audio.AudioProcessor[]);
}
-keepclassmembers class com.google.android.exoplayer2.ext.flac.LibflacAudioRenderer {
<init>(android.os.Handler, com.google.android.exoplayer2.audio.AudioRendererEventListener, com.google.android.exoplayer2.audio.AudioProcessor[]);
}
-keepclassmembers class com.google.android.exoplayer2.ext.ffmpeg.FfmpegAudioRenderer {
<init>(android.os.Handler, com.google.android.exoplayer2.audio.AudioRendererEventListener, com.google.android.exoplayer2.audio.AudioProcessor[]);
}
# Constructors accessed via reflection in DefaultExtractorsFactory
-keepclassmembers class com.google.android.exoplayer2.ext.flac.FlacExtractor {
<init>();
}
# Constructors accessed via reflection in DefaultDataSource
-keepclassmembers class com.google.android.exoplayer2.ext.rtmp.RtmpDataSource {
<init>();
}

View File

@ -72,10 +72,10 @@ import java.util.Collections;
private static final int MSG_PERIOD_PREPARED = 9;
private static final int MSG_SOURCE_CONTINUE_LOADING_REQUESTED = 10;
private static final int MSG_TRACK_SELECTION_INVALIDATED = 11;
private static final int MSG_CUSTOM = 12;
private static final int MSG_SET_REPEAT_MODE = 13;
private static final int MSG_SET_SHUFFLE_ENABLED = 14;
private static final int MSG_SEND_MESSAGE_TO_TARGET = 15;
private static final int MSG_SET_REPEAT_MODE = 12;
private static final int MSG_SET_SHUFFLE_ENABLED = 13;
private static final int MSG_SEND_MESSAGE = 14;
private static final int MSG_SEND_MESSAGE_TO_TARGET_THREAD = 15;
private static final int PREPARING_SOURCE_INTERVAL_MS = 10;
private static final int RENDERING_INTERVAL_MS = 10;
@ -104,7 +104,7 @@ import java.util.Collections;
private final boolean retainBackBufferFromKeyframe;
private final DefaultMediaClock mediaClock;
private final PlaybackInfoUpdate playbackInfoUpdate;
private final ArrayList<CustomMessageInfo> customMessageInfos;
private final ArrayList<PendingMessageInfo> pendingMessages;
private final Clock clock;
private final MediaPeriodQueue queue;
@ -123,7 +123,7 @@ import java.util.Collections;
private int pendingPrepareCount;
private SeekPosition pendingInitialSeekPosition;
private long rendererPositionUs;
private int nextCustomMessageInfoIndex;
private int nextPendingMessageIndex;
public ExoPlayerImplInternal(
Renderer[] renderers,
@ -162,7 +162,7 @@ import java.util.Collections;
rendererCapabilities[i] = renderers[i].getCapabilities();
}
mediaClock = new DefaultMediaClock(this, clock);
customMessageInfos = new ArrayList<>();
pendingMessages = new ArrayList<>();
enabledRenderers = new Renderer[0];
window = new Timeline.Window();
period = new Timeline.Period();
@ -217,7 +217,7 @@ import java.util.Collections;
message.markAsProcessed(/* isDelivered= */ false);
return;
}
handler.obtainMessage(MSG_CUSTOM, message).sendToTarget();
handler.obtainMessage(MSG_SEND_MESSAGE, message).sendToTarget();
}
public synchronized void release() {
@ -324,11 +324,11 @@ import java.util.Collections;
case MSG_TRACK_SELECTION_INVALIDATED:
reselectTracksInternal();
break;
case MSG_CUSTOM:
case MSG_SEND_MESSAGE:
sendMessageInternal((PlayerMessage) msg.obj);
break;
case MSG_SEND_MESSAGE_TO_TARGET:
sendCustomMessageToTargetThread((PlayerMessage) msg.obj);
case MSG_SEND_MESSAGE_TO_TARGET_THREAD:
sendMessageToTargetThread((PlayerMessage) msg.obj);
break;
case MSG_RELEASE:
releaseInternal();
@ -504,7 +504,7 @@ import java.util.Collections;
} else {
rendererPositionUs = mediaClock.syncAndGetPositionUs();
periodPositionUs = playingPeriodHolder.toPeriodTime(rendererPositionUs);
maybeTriggerCustomMessages(playbackInfo.positionUs, periodPositionUs);
maybeTriggerPendingMessages(playbackInfo.positionUs, periodPositionUs);
playbackInfo.positionUs = periodPositionUs;
}
@ -805,11 +805,11 @@ import java.util.Collections;
}
if (resetState) {
queue.setTimeline(null);
for (CustomMessageInfo customMessageInfo : customMessageInfos) {
customMessageInfo.message.markAsProcessed(/* isDelivered= */ false);
for (PendingMessageInfo pendingMessageInfo : pendingMessages) {
pendingMessageInfo.message.markAsProcessed(/* isDelivered= */ false);
}
customMessageInfos.clear();
nextCustomMessageInfoIndex = 0;
pendingMessages.clear();
nextPendingMessageIndex = 0;
}
playbackInfo =
new PlaybackInfo(
@ -833,48 +833,48 @@ import java.util.Collections;
private void sendMessageInternal(PlayerMessage message) {
if (message.getPositionMs() == C.TIME_UNSET) {
// If no delivery time is specified, trigger immediate message delivery.
sendCustomMessageToTarget(message);
sendMessageToTarget(message);
} else if (playbackInfo.timeline == null) {
// Still waiting for initial timeline to resolve position.
customMessageInfos.add(new CustomMessageInfo(message));
pendingMessages.add(new PendingMessageInfo(message));
} else {
CustomMessageInfo customMessageInfo = new CustomMessageInfo(message);
if (resolveCustomMessagePosition(customMessageInfo)) {
customMessageInfos.add(customMessageInfo);
PendingMessageInfo pendingMessageInfo = new PendingMessageInfo(message);
if (resolvePendingMessagePosition(pendingMessageInfo)) {
pendingMessages.add(pendingMessageInfo);
// Ensure new message is inserted according to playback order.
Collections.sort(customMessageInfos);
Collections.sort(pendingMessages);
} else {
message.markAsProcessed(/* isDelivered= */ false);
}
}
}
private void sendCustomMessageToTarget(PlayerMessage message) {
private void sendMessageToTarget(PlayerMessage message) {
if (message.getHandler().getLooper() == handler.getLooper()) {
deliverCustomMessage(message);
deliverMessage(message);
if (playbackInfo.playbackState == Player.STATE_READY
|| playbackInfo.playbackState == Player.STATE_BUFFERING) {
// The message may have caused something to change that now requires us to do work.
handler.sendEmptyMessage(MSG_DO_SOME_WORK);
}
} else {
handler.obtainMessage(MSG_SEND_MESSAGE_TO_TARGET, message).sendToTarget();
handler.obtainMessage(MSG_SEND_MESSAGE_TO_TARGET_THREAD, message).sendToTarget();
}
}
private void sendCustomMessageToTargetThread(final PlayerMessage message) {
private void sendMessageToTargetThread(final PlayerMessage message) {
message
.getHandler()
.post(
new Runnable() {
@Override
public void run() {
deliverCustomMessage(message);
deliverMessage(message);
}
});
}
private void deliverCustomMessage(PlayerMessage message) {
private void deliverMessage(PlayerMessage message) {
try {
message.getTarget().handleMessage(message.getType(), message.getPayload());
} catch (ExoPlaybackException e) {
@ -884,48 +884,48 @@ import java.util.Collections;
}
}
private void resolveCustomMessagePositions() {
for (int i = customMessageInfos.size() - 1; i >= 0; i--) {
if (!resolveCustomMessagePosition(customMessageInfos.get(i))) {
// Remove messages if new position can't be resolved.
customMessageInfos.get(i).message.markAsProcessed(/* isDelivered= */ false);
customMessageInfos.remove(i);
private void resolvePendingMessagePositions() {
for (int i = pendingMessages.size() - 1; i >= 0; i--) {
if (!resolvePendingMessagePosition(pendingMessages.get(i))) {
// Unable to resolve a new position for the message. Remove it.
pendingMessages.get(i).message.markAsProcessed(/* isDelivered= */ false);
pendingMessages.remove(i);
}
}
// Re-sort messages by playback order.
Collections.sort(customMessageInfos);
Collections.sort(pendingMessages);
}
private boolean resolveCustomMessagePosition(CustomMessageInfo customMessageInfo) {
if (customMessageInfo.resolvedPeriodUid == null) {
private boolean resolvePendingMessagePosition(PendingMessageInfo pendingMessageInfo) {
if (pendingMessageInfo.resolvedPeriodUid == null) {
// Position is still unresolved. Try to find window in current timeline.
Pair<Integer, Long> periodPosition =
resolveSeekPosition(
new SeekPosition(
customMessageInfo.message.getTimeline(),
customMessageInfo.message.getWindowIndex(),
C.msToUs(customMessageInfo.message.getPositionMs())),
pendingMessageInfo.message.getTimeline(),
pendingMessageInfo.message.getWindowIndex(),
C.msToUs(pendingMessageInfo.message.getPositionMs())),
/* trySubsequentPeriods= */ false);
if (periodPosition == null) {
return false;
}
customMessageInfo.setResolvedPosition(
pendingMessageInfo.setResolvedPosition(
periodPosition.first,
periodPosition.second,
playbackInfo.timeline.getPeriod(periodPosition.first, period, true).uid);
} else {
// Position has been resolved for a previous timeline. Try to find the updated period index.
int index = playbackInfo.timeline.getIndexOfPeriod(customMessageInfo.resolvedPeriodUid);
int index = playbackInfo.timeline.getIndexOfPeriod(pendingMessageInfo.resolvedPeriodUid);
if (index == C.INDEX_UNSET) {
return false;
}
customMessageInfo.resolvedPeriodIndex = index;
pendingMessageInfo.resolvedPeriodIndex = index;
}
return true;
}
private void maybeTriggerCustomMessages(long oldPeriodPositionUs, long newPeriodPositionUs) {
if (customMessageInfos.isEmpty() || playbackInfo.periodId.isAd()) {
private void maybeTriggerPendingMessages(long oldPeriodPositionUs, long newPeriodPositionUs) {
if (pendingMessages.isEmpty() || playbackInfo.periodId.isAd()) {
return;
}
// If this is the first call from the start position, include oldPeriodPositionUs in potential
@ -935,33 +935,29 @@ import java.util.Collections;
}
// Correct next index if necessary (e.g. after seeking, timeline changes, or new messages)
int currentPeriodIndex = playbackInfo.periodId.periodIndex;
CustomMessageInfo prevInfo =
nextCustomMessageInfoIndex > 0
? customMessageInfos.get(nextCustomMessageInfoIndex - 1)
: null;
while (prevInfo != null
&& (prevInfo.resolvedPeriodIndex > currentPeriodIndex
|| (prevInfo.resolvedPeriodIndex == currentPeriodIndex
&& prevInfo.resolvedPeriodTimeUs > oldPeriodPositionUs))) {
nextCustomMessageInfoIndex--;
prevInfo =
nextCustomMessageInfoIndex > 0
? customMessageInfos.get(nextCustomMessageInfoIndex - 1)
: null;
PendingMessageInfo previousInfo =
nextPendingMessageIndex > 0 ? pendingMessages.get(nextPendingMessageIndex - 1) : null;
while (previousInfo != null
&& (previousInfo.resolvedPeriodIndex > currentPeriodIndex
|| (previousInfo.resolvedPeriodIndex == currentPeriodIndex
&& previousInfo.resolvedPeriodTimeUs > oldPeriodPositionUs))) {
nextPendingMessageIndex--;
previousInfo =
nextPendingMessageIndex > 0 ? pendingMessages.get(nextPendingMessageIndex - 1) : null;
}
CustomMessageInfo nextInfo =
nextCustomMessageInfoIndex < customMessageInfos.size()
? customMessageInfos.get(nextCustomMessageInfoIndex)
PendingMessageInfo nextInfo =
nextPendingMessageIndex < pendingMessages.size()
? pendingMessages.get(nextPendingMessageIndex)
: null;
while (nextInfo != null
&& nextInfo.resolvedPeriodUid != null
&& (nextInfo.resolvedPeriodIndex < currentPeriodIndex
|| (nextInfo.resolvedPeriodIndex == currentPeriodIndex
&& nextInfo.resolvedPeriodTimeUs <= oldPeriodPositionUs))) {
nextCustomMessageInfoIndex++;
nextPendingMessageIndex++;
nextInfo =
nextCustomMessageInfoIndex < customMessageInfos.size()
? customMessageInfos.get(nextCustomMessageInfoIndex)
nextPendingMessageIndex < pendingMessages.size()
? pendingMessages.get(nextPendingMessageIndex)
: null;
}
// Check if any message falls within the covered time span.
@ -970,15 +966,15 @@ import java.util.Collections;
&& nextInfo.resolvedPeriodIndex == currentPeriodIndex
&& nextInfo.resolvedPeriodTimeUs > oldPeriodPositionUs
&& nextInfo.resolvedPeriodTimeUs <= newPeriodPositionUs) {
sendCustomMessageToTarget(nextInfo.message);
sendMessageToTarget(nextInfo.message);
if (nextInfo.message.getDeleteAfterDelivery()) {
customMessageInfos.remove(nextCustomMessageInfoIndex);
pendingMessages.remove(nextPendingMessageIndex);
} else {
nextCustomMessageInfoIndex++;
nextPendingMessageIndex++;
}
nextInfo =
nextCustomMessageInfoIndex < customMessageInfos.size()
? customMessageInfos.get(nextCustomMessageInfoIndex)
nextPendingMessageIndex < pendingMessages.size()
? pendingMessages.get(nextPendingMessageIndex)
: null;
}
}
@ -1157,7 +1153,7 @@ import java.util.Collections;
Object manifest = sourceRefreshInfo.manifest;
queue.setTimeline(timeline);
playbackInfo = playbackInfo.copyWithTimeline(timeline, manifest);
resolveCustomMessagePositions();
resolvePendingMessagePositions();
if (oldTimeline == null) {
playbackInfoUpdate.incrementPendingOperationAcks(pendingPrepareCount);
@ -1689,7 +1685,7 @@ import java.util.Collections;
}
}
private static final class CustomMessageInfo implements Comparable<CustomMessageInfo> {
private static final class PendingMessageInfo implements Comparable<PendingMessageInfo> {
public final PlayerMessage message;
@ -1697,7 +1693,7 @@ import java.util.Collections;
public long resolvedPeriodTimeUs;
public @Nullable Object resolvedPeriodUid;
public CustomMessageInfo(PlayerMessage message) {
public PendingMessageInfo(PlayerMessage message) {
this.message = message;
}
@ -1708,9 +1704,9 @@ import java.util.Collections;
}
@Override
public int compareTo(@NonNull CustomMessageInfo other) {
public int compareTo(@NonNull PendingMessageInfo other) {
if ((resolvedPeriodUid == null) != (other.resolvedPeriodUid == null)) {
// CustomMessageInfos with a resolved period position are always smaller.
// PendingMessageInfos with a resolved period position are always smaller.
return resolvedPeriodUid != null ? -1 : 1;
}
if (resolvedPeriodUid == null) {

View File

@ -224,6 +224,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
private long codecHotswapDeadlineMs;
private int inputIndex;
private int outputIndex;
private ByteBuffer outputBuffer;
private boolean shouldSkipOutputBuffer;
private boolean codecReconfigured;
private @ReconfigurationState int codecReconfigurationState;
@ -322,7 +323,6 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
protected abstract void configureCodec(MediaCodecInfo codecInfo, MediaCodec codec, Format format,
MediaCrypto crypto) throws DecoderQueryException;
@SuppressWarnings("deprecation")
protected final void maybeInitCodec() throws ExoPlaybackException {
if (codec != null || format == null) {
// We have a codec already, or we don't have a format with which to instantiate one.
@ -402,16 +402,15 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
long codecInitializedTimestamp = SystemClock.elapsedRealtime();
onCodecInitialized(codecName, codecInitializedTimestamp,
codecInitializedTimestamp - codecInitializingTimestamp);
inputBuffers = codec.getInputBuffers();
outputBuffers = codec.getOutputBuffers();
getCodecBuffers();
} catch (Exception e) {
throwDecoderInitError(new DecoderInitializationException(format, e,
drmSessionRequiresSecureDecoder, codecName));
}
codecHotswapDeadlineMs = getState() == STATE_STARTED
? (SystemClock.elapsedRealtime() + MAX_CODEC_HOTSWAP_TIME_MS) : C.TIME_UNSET;
inputIndex = C.INDEX_UNSET;
outputIndex = C.INDEX_UNSET;
resetInputBuffer();
resetOutputBuffer();
waitingForFirstSyncFrame = true;
decoderCounters.decoderInitCount++;
}
@ -487,13 +486,12 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
protected void releaseCodec() {
codecHotswapDeadlineMs = C.TIME_UNSET;
inputIndex = C.INDEX_UNSET;
outputIndex = C.INDEX_UNSET;
resetInputBuffer();
resetOutputBuffer();
waitingForKeys = false;
shouldSkipOutputBuffer = false;
decodeOnlyPresentationTimestamps.clear();
inputBuffers = null;
outputBuffers = null;
resetCodecBuffers();
codecInfo = null;
codecReconfigured = false;
codecReceivedBuffers = false;
@ -508,7 +506,6 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
codecReceivedEos = false;
codecReconfigurationState = RECONFIGURATION_STATE_NONE;
codecReinitializationState = REINITIALIZATION_STATE_NONE;
buffer.data = null;
if (codec != null) {
decoderCounters.decoderReleaseCount++;
try {
@ -591,8 +588,8 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
protected void flushCodec() throws ExoPlaybackException {
codecHotswapDeadlineMs = C.TIME_UNSET;
inputIndex = C.INDEX_UNSET;
outputIndex = C.INDEX_UNSET;
resetInputBuffer();
resetOutputBuffer();
waitingForFirstSyncFrame = true;
waitingForKeys = false;
shouldSkipOutputBuffer = false;
@ -635,7 +632,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
if (inputIndex < 0) {
return false;
}
buffer.data = inputBuffers[inputIndex];
buffer.data = getInputBuffer(inputIndex);
buffer.clear();
}
@ -647,7 +644,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
} else {
codecReceivedEos = true;
codec.queueInputBuffer(inputIndex, 0, 0, 0, MediaCodec.BUFFER_FLAG_END_OF_STREAM);
inputIndex = C.INDEX_UNSET;
resetInputBuffer();
}
codecReinitializationState = REINITIALIZATION_STATE_WAIT_END_OF_STREAM;
return false;
@ -657,7 +654,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
codecNeedsAdaptationWorkaroundBuffer = false;
buffer.data.put(ADAPTATION_WORKAROUND_BUFFER);
codec.queueInputBuffer(inputIndex, 0, ADAPTATION_WORKAROUND_BUFFER.length, 0, 0);
inputIndex = C.INDEX_UNSET;
resetInputBuffer();
codecReceivedBuffers = true;
return true;
}
@ -715,7 +712,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
} else {
codecReceivedEos = true;
codec.queueInputBuffer(inputIndex, 0, 0, 0, MediaCodec.BUFFER_FLAG_END_OF_STREAM);
inputIndex = C.INDEX_UNSET;
resetInputBuffer();
}
} catch (CryptoException e) {
throw ExoPlaybackException.createForRenderer(e, getIndex());
@ -760,7 +757,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
} else {
codec.queueInputBuffer(inputIndex, 0, buffer.data.limit(), presentationTimeUs, 0);
}
inputIndex = C.INDEX_UNSET;
resetInputBuffer();
codecReceivedBuffers = true;
codecReconfigurationState = RECONFIGURATION_STATE_NONE;
decoderCounters.inputBufferCount++;
@ -770,6 +767,56 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
return true;
}
private void getCodecBuffers() {
if (Util.SDK_INT < 21) {
inputBuffers = codec.getInputBuffers();
outputBuffers = codec.getOutputBuffers();
}
}
private void resetCodecBuffers() {
if (Util.SDK_INT < 21) {
inputBuffers = null;
outputBuffers = null;
}
}
private ByteBuffer getInputBuffer(int inputIndex) {
if (Util.SDK_INT >= 21) {
return codec.getInputBuffer(inputIndex);
} else {
return inputBuffers[inputIndex];
}
}
private void setOutputBuffer(int outputIndex) {
this.outputIndex = outputIndex;
if (Util.SDK_INT >= 21) {
outputBuffer = codec.getOutputBuffer(outputIndex);
} else {
outputBuffer = outputBuffers[outputIndex];
}
// The dequeued buffer is a media buffer. Do some initial setup.
if (outputBuffer != null) {
outputBuffer.position(outputBufferInfo.offset);
outputBuffer.limit(outputBufferInfo.offset + outputBufferInfo.size);
}
}
private boolean hasOutputBuffer() {
return outputIndex >= 0;
}
private void resetInputBuffer() {
inputIndex = C.INDEX_UNSET;
buffer.data = null;
}
private void resetOutputBuffer() {
outputIndex = C.INDEX_UNSET;
outputBuffer = null;
}
private static MediaCodec.CryptoInfo getFrameworkCryptoInfo(DecoderInputBuffer buffer,
int adaptiveReconfigurationBytes) {
MediaCodec.CryptoInfo cryptoInfo = buffer.cryptoInfo.getFrameworkCryptoInfoV16();
@ -922,9 +969,12 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
@Override
public boolean isReady() {
return format != null && !waitingForKeys && (isSourceReady() || outputIndex >= 0
|| (codecHotswapDeadlineMs != C.TIME_UNSET
&& SystemClock.elapsedRealtime() < codecHotswapDeadlineMs));
return format != null
&& !waitingForKeys
&& (isSourceReady()
|| hasOutputBuffer()
|| (codecHotswapDeadlineMs != C.TIME_UNSET
&& SystemClock.elapsedRealtime() < codecHotswapDeadlineMs));
}
/**
@ -940,14 +990,14 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
* @return Whether it may be possible to drain more output data.
* @throws ExoPlaybackException If an error occurs draining the output buffer.
*/
@SuppressWarnings("deprecation")
private boolean drainOutputBuffer(long positionUs, long elapsedRealtimeUs)
throws ExoPlaybackException {
if (outputIndex < 0) {
if (!hasOutputBuffer()) {
int outputIndex;
if (codecNeedsEosOutputExceptionWorkaround && codecReceivedEos) {
try {
outputIndex = codec.dequeueOutputBuffer(outputBufferInfo,
getDequeueOutputBufferTimeoutUs());
outputIndex =
codec.dequeueOutputBuffer(outputBufferInfo, getDequeueOutputBufferTimeoutUs());
} catch (IllegalStateException e) {
processEndOfStream();
if (outputStreamEnded) {
@ -957,30 +1007,24 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
return false;
}
} else {
outputIndex = codec.dequeueOutputBuffer(outputBufferInfo,
getDequeueOutputBufferTimeoutUs());
outputIndex =
codec.dequeueOutputBuffer(outputBufferInfo, getDequeueOutputBufferTimeoutUs());
}
if (outputIndex >= 0) {
// We've dequeued a buffer.
if (shouldSkipAdaptationWorkaroundOutputBuffer) {
shouldSkipAdaptationWorkaroundOutputBuffer = false;
codec.releaseOutputBuffer(outputIndex, false);
outputIndex = C.INDEX_UNSET;
return true;
}
if ((outputBufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
} else if ((outputBufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
// The dequeued buffer indicates the end of the stream. Process it immediately.
processEndOfStream();
outputIndex = C.INDEX_UNSET;
return false;
} else {
// The dequeued buffer is a media buffer. Do some initial setup. The buffer will be
// processed by calling processOutputBuffer (possibly multiple times) below.
ByteBuffer outputBuffer = outputBuffers[outputIndex];
if (outputBuffer != null) {
outputBuffer.position(outputBufferInfo.offset);
outputBuffer.limit(outputBufferInfo.offset + outputBufferInfo.size);
}
// The dequeued buffer is a media buffer. It will be processed by calling
// processOutputBuffer (possibly multiple times).
setOutputBuffer(outputIndex);
shouldSkipOutputBuffer = shouldSkipOutputBuffer(outputBufferInfo.presentationTimeUs);
}
} else if (outputIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED /* (-2) */) {
@ -990,8 +1034,9 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
processOutputBuffersChanged();
return true;
} else /* MediaCodec.INFO_TRY_AGAIN_LATER (-1) or unknown negative return value */ {
if (codecNeedsEosPropagationWorkaround && (inputStreamEnded
|| codecReinitializationState == REINITIALIZATION_STATE_WAIT_END_OF_STREAM)) {
if (codecNeedsEosPropagationWorkaround
&& (inputStreamEnded
|| codecReinitializationState == REINITIALIZATION_STATE_WAIT_END_OF_STREAM)) {
processEndOfStream();
}
return false;
@ -1001,9 +1046,16 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
boolean processedOutputBuffer;
if (codecNeedsEosOutputExceptionWorkaround && codecReceivedEos) {
try {
processedOutputBuffer = processOutputBuffer(positionUs, elapsedRealtimeUs, codec,
outputBuffers[outputIndex], outputIndex, outputBufferInfo.flags,
outputBufferInfo.presentationTimeUs, shouldSkipOutputBuffer);
processedOutputBuffer =
processOutputBuffer(
positionUs,
elapsedRealtimeUs,
codec,
outputBuffer,
outputIndex,
outputBufferInfo.flags,
outputBufferInfo.presentationTimeUs,
shouldSkipOutputBuffer);
} catch (IllegalStateException e) {
processEndOfStream();
if (outputStreamEnded) {
@ -1013,14 +1065,21 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
return false;
}
} else {
processedOutputBuffer = processOutputBuffer(positionUs, elapsedRealtimeUs, codec,
outputBuffers[outputIndex], outputIndex, outputBufferInfo.flags,
outputBufferInfo.presentationTimeUs, shouldSkipOutputBuffer);
processedOutputBuffer =
processOutputBuffer(
positionUs,
elapsedRealtimeUs,
codec,
outputBuffer,
outputIndex,
outputBufferInfo.flags,
outputBufferInfo.presentationTimeUs,
shouldSkipOutputBuffer);
}
if (processedOutputBuffer) {
onProcessedOutputBuffer(outputBufferInfo.presentationTimeUs);
outputIndex = C.INDEX_UNSET;
resetOutputBuffer();
return true;
}
@ -1048,9 +1107,10 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
/**
* Processes a change in the output buffers.
*/
@SuppressWarnings("deprecation")
private void processOutputBuffersChanged() {
outputBuffers = codec.getOutputBuffers();
if (Util.SDK_INT < 21) {
outputBuffers = codec.getOutputBuffers();
}
}
/**

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2018 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:viewportWidth="24"
android:viewportHeight="24"
android:width="48dp"
android:height="48dp">
<path
android:pathData="M7 14l-2 0 0 5 5 0 0 -2 -3 0 0 -3zm-2 -4l2 0 0 -3 3 0 0 -2 -5 0 0 5zm12 7l-3 0 0 2 5 0 0 -5 -2 0 0 3zm-3 -12l0 2 3 0 0 3 2 0 0 -5 -5 0z"
android:fillColor="#FFFFFF" />
</vector>

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2018 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:viewportWidth="24"
android:viewportHeight="24"
android:width="48dp"
android:height="48dp">
<path
android:pathData="M5 16l3 0 0 3 2 0 0 -5 -5 0 0 2zm3 -8l-3 0 0 2 5 0 0 -5 -2 0 0 3zm6 11l2 0 0 -3 3 0 0 -2 -5 0 0 5zm2 -11l0 -3 -2 0 0 5 5 0 0 -2 -3 0z"
android:fillColor="#FFFFFF" />
</vector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 B

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Volgende snit"</string>
<string name="exo_controls_pause_description">"Wag"</string>
<string name="exo_controls_play_description">"Speel"</string>
<string name="exo_controls_stop_description">"Stop"</string>
<string name="exo_controls_rewind_description">"Spoel terug"</string>
<string name="exo_controls_fastforward_description">"Vinnig vorentoe"</string>
<string name="exo_controls_repeat_all_description">"Herhaal alles"</string>
<string name="exo_controls_repeat_off_description">"Herhaal niks"</string>
<string name="exo_controls_repeat_one_description">"Herhaal een"</string>
<string name="exo_controls_shuffle_description">"Skommel"</string>
<string name="exo_controls_fullscreen_description">Volskermmodus</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"ቀጣይ ትራክ"</string>
<string name="exo_controls_pause_description">"ለአፍታ አቁም"</string>
<string name="exo_controls_play_description">"አጫውት"</string>
<string name="exo_controls_stop_description">"አቁም"</string>
<string name="exo_controls_rewind_description">"ወደኋላ አጠንጥን"</string>
<string name="exo_controls_rewind_description">"ወደኋላ አጠንጥን"</string>
<string name="exo_controls_fastforward_description">"በፍጥነት አሳልፍ"</string>
<string name="exo_controls_repeat_all_description">"ሁሉንም ድገም"</string>
<string name="exo_controls_repeat_off_description">"ምንም አትድገም"</string>
<string name="exo_controls_repeat_one_description">"አንዱን ድገም"</string>
<string name="exo_controls_shuffle_description">"በው"</string>
<string name="exo_controls_fullscreen_description">ባለ ሙሉ ማያ ገጽ ሁኔታ</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"المقطع الصوتي التالي"</string>
<string name="exo_controls_pause_description">"إيقاف مؤقت"</string>
<string name="exo_controls_play_description">"تشغيل"</string>
<string name="exo_controls_stop_description">"إيقاف"</string>
<string name="exo_controls_rewind_description">"إرجاع"</string>
<string name="exo_controls_rewind_description">"إرجاع"</string>
<string name="exo_controls_fastforward_description">"تقديم سريع"</string>
<string name="exo_controls_repeat_all_description">"تكرار الكل"</string>
<string name="exo_controls_repeat_off_description">"عدم التكرار"</string>
<string name="exo_controls_repeat_one_description">"تكرار مقطع واحد"</string>
<string name="exo_controls_shuffle_description">"ترتيب عشوائي"</string>
<string name="exo_controls_fullscreen_description">وضع ملء الشاشة</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Növbəti trek"</string>
<string name="exo_controls_pause_description">"Pauza"</string>
<string name="exo_controls_play_description">"Oyun"</string>
<string name="exo_controls_stop_description">"Dayandır"</string>
<string name="exo_controls_rewind_description">"Geri sarıma"</string>
<string name="exo_controls_rewind_description">"Geri sarıma"</string>
<string name="exo_controls_fastforward_description">"Sürətlə irəli"</string>
<string name="exo_controls_repeat_all_description">"Bütün təkrarlayın"</string>
<string name="exo_controls_repeat_one_description">"Təkrar bir"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Sledeća pesma"</string>
<string name="exo_controls_pause_description">"Pauza"</string>
<string name="exo_controls_play_description">"Pusti"</string>
<string name="exo_controls_stop_description">"Zaustavi"</string>
<string name="exo_controls_rewind_description">"Premotaj unazad"</string>
<string name="exo_controls_rewind_description">"Premotaj unazad"</string>
<string name="exo_controls_fastforward_description">"Premotaj unapred"</string>
<string name="exo_controls_repeat_all_description">"Ponovi sve"</string>
<string name="exo_controls_repeat_off_description">"Ne ponavljaj nijednu"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Наступны трэк"</string>
<string name="exo_controls_pause_description">"Прыпыніць"</string>
<string name="exo_controls_play_description">"Прайграць"</string>
<string name="exo_controls_stop_description">"Спыніць"</string>
<string name="exo_controls_rewind_description">"Перамотка назад"</string>
<string name="exo_controls_rewind_description">"Перамотка назад"</string>
<string name="exo_controls_fastforward_description">"Перамотка ўперад"</string>
<string name="exo_controls_repeat_all_description">"Паўтарыць усё"</string>
<string name="exo_controls_repeat_off_description">"Паўтараць ні"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Следващ запис"</string>
<string name="exo_controls_pause_description">"Пауза"</string>
<string name="exo_controls_play_description">"Пускане"</string>
<string name="exo_controls_stop_description">"Спиране"</string>
<string name="exo_controls_rewind_description">"Превъртане назад"</string>
<string name="exo_controls_rewind_description">"Превъртане назад"</string>
<string name="exo_controls_fastforward_description">"Превъртане напред"</string>
<string name="exo_controls_repeat_all_description">"Повтаряне на всички"</string>
<string name="exo_controls_repeat_off_description">"Без повтаряне"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"পরবর্তী ট্র্যাক"</string>
<string name="exo_controls_pause_description">"বিরাম দিন"</string>
<string name="exo_controls_play_description">"প্লে করুন"</string>
<string name="exo_controls_stop_description">"থামান"</string>
<string name="exo_controls_rewind_description">"গুটিয়ে নিন"</string>
<string name="exo_controls_rewind_description">"গুটিয়ে নিন"</string>
<string name="exo_controls_fastforward_description">"দ্রুত সামনে এগোন"</string>
<string name="exo_controls_repeat_all_description">"সবগুলির পুনরাবৃত্তি করুন"</string>
<string name="exo_controls_repeat_off_description">"একটিরও পুনরাবৃত্তি করবেন না"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Sljedeća numera"</string>
<string name="exo_controls_pause_description">"Pauziraj"</string>
<string name="exo_controls_play_description">"Reproduciraj"</string>
<string name="exo_controls_stop_description">"Zaustavi"</string>
<string name="exo_controls_rewind_description">"Premotaj"</string>
<string name="exo_controls_rewind_description">"Premotaj"</string>
<string name="exo_controls_fastforward_description">"Ubrzaj"</string>
<string name="exo_controls_repeat_all_description">"Ponovite sve"</string>
<string name="exo_controls_repeat_off_description">"Ne ponavljaju"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Ruta següent"</string>
<string name="exo_controls_pause_description">"Posa en pausa"</string>
<string name="exo_controls_play_description">"Reprodueix"</string>
<string name="exo_controls_stop_description">"Atura"</string>
<string name="exo_controls_rewind_description">"Rebobina"</string>
<string name="exo_controls_rewind_description">"Rebobina"</string>
<string name="exo_controls_fastforward_description">"Avança ràpidament"</string>
<string name="exo_controls_repeat_all_description">"Repeteix-ho tot"</string>
<string name="exo_controls_repeat_off_description">"No en repeteixis cap"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Další skladba"</string>
<string name="exo_controls_pause_description">"Pozastavit"</string>
<string name="exo_controls_play_description">"Přehrát"</string>
<string name="exo_controls_stop_description">"Zastavit"</string>
<string name="exo_controls_rewind_description">"Přetočit zpět"</string>
<string name="exo_controls_rewind_description">"Přetočit zpět"</string>
<string name="exo_controls_fastforward_description">"Přetočit vpřed"</string>
<string name="exo_controls_repeat_all_description">"Opakovat vše"</string>
<string name="exo_controls_repeat_off_description">"Neopakovat"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Næste nummer"</string>
<string name="exo_controls_pause_description">"Pause"</string>
<string name="exo_controls_play_description">"Afspil"</string>
<string name="exo_controls_stop_description">"Stop"</string>
<string name="exo_controls_rewind_description">"Spol tilbage"</string>
<string name="exo_controls_rewind_description">"Spol tilbage"</string>
<string name="exo_controls_fastforward_description">"Spol frem"</string>
<string name="exo_controls_repeat_all_description">"Gentag alle"</string>
<string name="exo_controls_repeat_off_description">"Gentag ingen"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Nächster Titel"</string>
<string name="exo_controls_pause_description">"Pausieren"</string>
<string name="exo_controls_play_description">"Wiedergabe"</string>
<string name="exo_controls_stop_description">"Beenden"</string>
<string name="exo_controls_rewind_description">"Zurückspulen"</string>
<string name="exo_controls_rewind_description">"Zurückspulen"</string>
<string name="exo_controls_fastforward_description">"Vorspulen"</string>
<string name="exo_controls_repeat_all_description">"Alle wiederholen"</string>
<string name="exo_controls_repeat_off_description">"Keinen Titel wiederholen"</string>
<string name="exo_controls_repeat_one_description">"Einen Titel wiederholen"</string>
<string name="exo_controls_shuffle_description">"Zufallsmix"</string>
<string name="exo_controls_fullscreen_description">Vollbildmodus</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Επόμενο κομμάτι"</string>
<string name="exo_controls_pause_description">"Παύση"</string>
<string name="exo_controls_play_description">"Αναπαραγωγή"</string>
<string name="exo_controls_stop_description">"Διακοπή"</string>
<string name="exo_controls_rewind_description">"Επαναφορά"</string>
<string name="exo_controls_rewind_description">"Επαναφορά"</string>
<string name="exo_controls_fastforward_description">"Γρήγορη προώθηση"</string>
<string name="exo_controls_repeat_all_description">"Επανάληψη όλων"</string>
<string name="exo_controls_repeat_off_description">"Καμία επανάληψη"</string>
<string name="exo_controls_repeat_one_description">"Επανάληψη ενός στοιχείου"</string>
<string name="exo_controls_shuffle_description">"Τυχαία αναπαραγωγή"</string>
<string name="exo_controls_fullscreen_description">Λειτουργία πλήρους οθόνης</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Next track"</string>
<string name="exo_controls_pause_description">"Pause"</string>
<string name="exo_controls_play_description">"Play"</string>
<string name="exo_controls_stop_description">"Stop"</string>
<string name="exo_controls_rewind_description">"Rewind"</string>
<string name="exo_controls_rewind_description">"Rewind"</string>
<string name="exo_controls_fastforward_description">"Fast-forward"</string>
<string name="exo_controls_repeat_all_description">"Repeat all"</string>
<string name="exo_controls_repeat_off_description">"Repeat none"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Next track"</string>
<string name="exo_controls_pause_description">"Pause"</string>
<string name="exo_controls_play_description">"Play"</string>
<string name="exo_controls_stop_description">"Stop"</string>
<string name="exo_controls_rewind_description">"Rewind"</string>
<string name="exo_controls_rewind_description">"Rewind"</string>
<string name="exo_controls_fastforward_description">"Fast-forward"</string>
<string name="exo_controls_repeat_all_description">"Repeat all"</string>
<string name="exo_controls_repeat_off_description">"Repeat none"</string>
<string name="exo_controls_repeat_one_description">"Repeat one"</string>
<string name="exo_controls_shuffle_description">"Shuffle"</string>
<string name="exo_controls_fullscreen_description">Fullscreen mode</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Next track"</string>
<string name="exo_controls_pause_description">"Pause"</string>
<string name="exo_controls_play_description">"Play"</string>
<string name="exo_controls_stop_description">"Stop"</string>
<string name="exo_controls_rewind_description">"Rewind"</string>
<string name="exo_controls_rewind_description">"Rewind"</string>
<string name="exo_controls_fastforward_description">"Fast-forward"</string>
<string name="exo_controls_repeat_all_description">"Repeat all"</string>
<string name="exo_controls_repeat_off_description">"Repeat none"</string>
<string name="exo_controls_repeat_one_description">"Repeat one"</string>
<string name="exo_controls_shuffle_description">"Shuffle"</string>
<string name="exo_controls_fullscreen_description">Fullscreen mode</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Siguiente pista"</string>
<string name="exo_controls_pause_description">"Pausar"</string>
<string name="exo_controls_play_description">"Reproducir"</string>
<string name="exo_controls_stop_description">"Detener"</string>
<string name="exo_controls_rewind_description">"Retroceder"</string>
<string name="exo_controls_rewind_description">"Retroceder"</string>
<string name="exo_controls_fastforward_description">"Avanzar"</string>
<string name="exo_controls_repeat_all_description">"Repetir todo"</string>
<string name="exo_controls_repeat_off_description">"No repetir"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Siguiente canción"</string>
<string name="exo_controls_pause_description">"Pausar"</string>
<string name="exo_controls_play_description">"Reproducir"</string>
<string name="exo_controls_stop_description">"Detener"</string>
<string name="exo_controls_rewind_description">"Rebobinar"</string>
<string name="exo_controls_rewind_description">"Rebobinar"</string>
<string name="exo_controls_fastforward_description">"Avance rápido"</string>
<string name="exo_controls_repeat_all_description">"Repetir todo"</string>
<string name="exo_controls_repeat_off_description">"No repetir"</string>
<string name="exo_controls_repeat_one_description">"Repetir uno"</string>
<string name="exo_controls_shuffle_description">"Reproducción aleatoria"</string>
<string name="exo_controls_fullscreen_description">Modo de pantalla completa</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Järgmine lugu"</string>
<string name="exo_controls_pause_description">"Peata"</string>
<string name="exo_controls_play_description">"Esita"</string>
<string name="exo_controls_stop_description">"Peata"</string>
<string name="exo_controls_rewind_description">"Keri tagasi"</string>
<string name="exo_controls_rewind_description">"Keri tagasi"</string>
<string name="exo_controls_fastforward_description">"Keri edasi"</string>
<string name="exo_controls_repeat_all_description">"Korda kõike"</string>
<string name="exo_controls_repeat_off_description">"Ära korda midagi"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Hurrengo pista"</string>
<string name="exo_controls_pause_description">"Pausatu"</string>
<string name="exo_controls_play_description">"Erreproduzitu"</string>
<string name="exo_controls_stop_description">"Gelditu"</string>
<string name="exo_controls_rewind_description">"Atzeratu"</string>
<string name="exo_controls_rewind_description">"Atzeratu"</string>
<string name="exo_controls_fastforward_description">"Aurreratu"</string>
<string name="exo_controls_repeat_all_description">"Errepikatu guztiak"</string>
<string name="exo_controls_repeat_off_description">"Ez errepikatu"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"آهنگ بعدی"</string>
<string name="exo_controls_pause_description">"مکث"</string>
<string name="exo_controls_play_description">"پخش"</string>
<string name="exo_controls_stop_description">"توقف"</string>
<string name="exo_controls_rewind_description">"عقب بردن"</string>
<string name="exo_controls_rewind_description">"عقب بردن"</string>
<string name="exo_controls_fastforward_description">"جلو بردن سریع"</string>
<string name="exo_controls_repeat_all_description">"تکرار همه"</string>
<string name="exo_controls_repeat_off_description">"تکرار هیچ‌کدام"</string>
<string name="exo_controls_repeat_one_description">"یک‌بار تکرار"</string>
<string name="exo_controls_shuffle_description">"پخش درهم"</string>
<string name="exo_controls_fullscreen_description">حالت تمام صفحه</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Seuraava raita"</string>
<string name="exo_controls_pause_description">"Tauko"</string>
<string name="exo_controls_play_description">"Toista"</string>
<string name="exo_controls_stop_description">"Seis"</string>
<string name="exo_controls_rewind_description">"Kelaa taakse"</string>
<string name="exo_controls_rewind_description">"Kelaa taakse"</string>
<string name="exo_controls_fastforward_description">"Kelaa eteen"</string>
<string name="exo_controls_repeat_all_description">"Toista kaikki"</string>
<string name="exo_controls_repeat_off_description">"Toista ei mitään"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Chanson suivante"</string>
<string name="exo_controls_pause_description">"Pause"</string>
<string name="exo_controls_play_description">"Lecture"</string>
<string name="exo_controls_stop_description">"Arrêter"</string>
<string name="exo_controls_rewind_description">"Reculer"</string>
<string name="exo_controls_rewind_description">"Reculer"</string>
<string name="exo_controls_fastforward_description">"Avance rapide"</string>
<string name="exo_controls_repeat_all_description">"Tout lire en boucle"</string>
<string name="exo_controls_repeat_off_description">"Aucune répétition"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Piste suivante"</string>
<string name="exo_controls_pause_description">"Interrompre"</string>
<string name="exo_controls_play_description">"Lire"</string>
<string name="exo_controls_stop_description">"Arrêter"</string>
<string name="exo_controls_rewind_description">"Retour arrière"</string>
<string name="exo_controls_rewind_description">"Retour arrière"</string>
<string name="exo_controls_fastforward_description">"Avance rapide"</string>
<string name="exo_controls_repeat_all_description">"Tout lire en boucle"</string>
<string name="exo_controls_repeat_off_description">"Ne rien lire en boucle"</string>
<string name="exo_controls_repeat_one_description">"Lire en boucle un élément"</string>
<string name="exo_controls_shuffle_description">"Lire en mode aléatoire"</string>
<string name="exo_controls_fullscreen_description">Mode plein écran</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Seguinte pista"</string>
<string name="exo_controls_pause_description">"Pausar"</string>
<string name="exo_controls_play_description">"Reproducir"</string>
<string name="exo_controls_stop_description">"Deter"</string>
<string name="exo_controls_rewind_description">"Rebobinar"</string>
<string name="exo_controls_rewind_description">"Rebobinar"</string>
<string name="exo_controls_fastforward_description">"Avance rápido"</string>
<string name="exo_controls_repeat_all_description">"Repetir todo"</string>
<string name="exo_controls_repeat_off_description">"Non repetir"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"આગલો ટ્રૅક"</string>
<string name="exo_controls_pause_description">"થોભો"</string>
<string name="exo_controls_play_description">"ચલાવો"</string>
<string name="exo_controls_stop_description">"રોકો"</string>
<string name="exo_controls_rewind_description">"રીવાઇન્ડ કરો"</string>
<string name="exo_controls_rewind_description">"રીવાઇન્ડ કરો"</string>
<string name="exo_controls_fastforward_description">"ઝડપી ફોરવર્ડ કરો"</string>
<string name="exo_controls_repeat_all_description">"બધા પુનરાવર્તન કરો"</string>
<string name="exo_controls_repeat_off_description">"કંઈ પુનરાવર્તન કરો"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"अगला ट्रैक"</string>
<string name="exo_controls_pause_description">"रोकें"</string>
<string name="exo_controls_play_description">"चलाएं"</string>
<string name="exo_controls_stop_description">"बंद करें"</string>
<string name="exo_controls_rewind_description">"रिवाइंड करें"</string>
<string name="exo_controls_rewind_description">"रिवाइंड करें"</string>
<string name="exo_controls_fastforward_description">"फ़ास्ट फ़ॉरवर्ड"</string>
<string name="exo_controls_repeat_all_description">"सभी को दोहराएं"</string>
<string name="exo_controls_repeat_off_description">"कुछ भी न दोहराएं"</string>
<string name="exo_controls_repeat_one_description">"एक दोहराएं"</string>
<string name="exo_controls_shuffle_description">"शफ़ल करें"</string>
<string name="exo_controls_fullscreen_description">पूर्ण-स्क्रीन मोड</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Sljedeća pjesma"</string>
<string name="exo_controls_pause_description">"Pauziraj"</string>
<string name="exo_controls_play_description">"Reproduciraj"</string>
<string name="exo_controls_stop_description">"Zaustavi"</string>
<string name="exo_controls_rewind_description">"Unatrag"</string>
<string name="exo_controls_rewind_description">"Unatrag"</string>
<string name="exo_controls_fastforward_description">"Brzo unaprijed"</string>
<string name="exo_controls_repeat_all_description">"Ponovi sve"</string>
<string name="exo_controls_repeat_off_description">"Bez ponavljanja"</string>
<string name="exo_controls_repeat_one_description">"Ponovi jedno"</string>
<string name="exo_controls_shuffle_description">"Reproduciraj nasumično"</string>
<string name="exo_controls_fullscreen_description">Prikaz na cijelom zaslonu</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Következő szám"</string>
<string name="exo_controls_pause_description">"Szünet"</string>
<string name="exo_controls_play_description">"Lejátszás"</string>
<string name="exo_controls_stop_description">"Leállítás"</string>
<string name="exo_controls_rewind_description">"Visszatekerés"</string>
<string name="exo_controls_rewind_description">"Visszatekerés"</string>
<string name="exo_controls_fastforward_description">"Előretekerés"</string>
<string name="exo_controls_repeat_all_description">"Összes ismétlése"</string>
<string name="exo_controls_repeat_off_description">"Nincs ismétlés"</string>
<string name="exo_controls_repeat_one_description">"Egy ismétlése"</string>
<string name="exo_controls_shuffle_description">"Véletlenszerű lejátszás"</string>
<string name="exo_controls_fullscreen_description">Teljes képernyős mód</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Հաջորդը"</string>
<string name="exo_controls_pause_description">"Դադարեցնել"</string>
<string name="exo_controls_play_description">"Նվագարկել"</string>
<string name="exo_controls_stop_description">"Դադարեցնել"</string>
<string name="exo_controls_rewind_description">"Հետ փաթաթել"</string>
<string name="exo_controls_rewind_description">"Հետ փաթաթել"</string>
<string name="exo_controls_fastforward_description">"Արագ առաջ անցնել"</string>
<string name="exo_controls_repeat_all_description">"կրկնել այն ամենը"</string>
<string name="exo_controls_repeat_off_description">"Չկրկնել"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Lagu berikutnya"</string>
<string name="exo_controls_pause_description">"Jeda"</string>
<string name="exo_controls_play_description">"Putar"</string>
<string name="exo_controls_stop_description">"Berhenti"</string>
<string name="exo_controls_rewind_description">"Putar Ulang"</string>
<string name="exo_controls_rewind_description">"Putar Ulang"</string>
<string name="exo_controls_fastforward_description">"Maju cepat"</string>
<string name="exo_controls_repeat_all_description">"Ulangi Semua"</string>
<string name="exo_controls_repeat_off_description">"Jangan Ulangi"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Næsta lag"</string>
<string name="exo_controls_pause_description">"Hlé"</string>
<string name="exo_controls_play_description">"Spila"</string>
<string name="exo_controls_stop_description">"Stöðva"</string>
<string name="exo_controls_rewind_description">"Spóla til baka"</string>
<string name="exo_controls_rewind_description">"Spóla til baka"</string>
<string name="exo_controls_fastforward_description">"Spóla áfram"</string>
<string name="exo_controls_repeat_all_description">"Endurtaka allt"</string>
<string name="exo_controls_repeat_off_description">"Endurtaka ekkert"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Traccia successiva"</string>
<string name="exo_controls_pause_description">"Metti in pausa"</string>
<string name="exo_controls_play_description">"Riproduci"</string>
<string name="exo_controls_stop_description">"Interrompi"</string>
<string name="exo_controls_rewind_description">"Riavvolgi"</string>
<string name="exo_controls_rewind_description">"Riavvolgi"</string>
<string name="exo_controls_fastforward_description">"Avanti veloce"</string>
<string name="exo_controls_repeat_all_description">"Ripeti tutti"</string>
<string name="exo_controls_repeat_off_description">"Non ripetere nessuno"</string>
<string name="exo_controls_repeat_one_description">"Ripeti uno"</string>
<string name="exo_controls_shuffle_description">"Riproduci casualmente"</string>
<string name="exo_controls_fullscreen_description">Modalità a schermo intero</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"הרצועה הבאה"</string>
<string name="exo_controls_pause_description">"השהה"</string>
<string name="exo_controls_play_description">"הפעל"</string>
<string name="exo_controls_stop_description">"הפסק"</string>
<string name="exo_controls_rewind_description">"הרץ אחורה"</string>
<string name="exo_controls_rewind_description">"הרץ אחורה"</string>
<string name="exo_controls_fastforward_description">"הרץ קדימה"</string>
<string name="exo_controls_repeat_all_description">"חזור על הכל"</string>
<string name="exo_controls_repeat_off_description">"אל תחזור על כלום"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"次のトラック"</string>
<string name="exo_controls_pause_description">"一時停止"</string>
<string name="exo_controls_play_description">"再生"</string>
<string name="exo_controls_stop_description">"停止"</string>
<string name="exo_controls_rewind_description">"巻き戻し"</string>
<string name="exo_controls_rewind_description">"巻き戻し"</string>
<string name="exo_controls_fastforward_description">"早送り"</string>
<string name="exo_controls_repeat_all_description">"全曲を繰り返し"</string>
<string name="exo_controls_repeat_off_description">"繰り返しなし"</string>
<string name="exo_controls_repeat_one_description">"1曲を繰り返し"</string>
<string name="exo_controls_shuffle_description">"シャッフル"</string>
<string name="exo_controls_fullscreen_description">フルスクリーンモード</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"შემდეგი ჩანაწერი"</string>
<string name="exo_controls_pause_description">"პაუზა"</string>
<string name="exo_controls_play_description">"დაკვრა"</string>
<string name="exo_controls_stop_description">"შეწყვეტა"</string>
<string name="exo_controls_rewind_description">"უკან გადახვევა"</string>
<string name="exo_controls_rewind_description">"უკან გადახვევა"</string>
<string name="exo_controls_fastforward_description">"წინ გადახვევა"</string>
<string name="exo_controls_repeat_all_description">"გამეორება ყველა"</string>
<string name="exo_controls_repeat_off_description">"გაიმეორეთ არცერთი"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Келесі трек"</string>
<string name="exo_controls_pause_description">"Кідірту"</string>
<string name="exo_controls_play_description">"Ойнату"</string>
<string name="exo_controls_stop_description">"Тоқтату"</string>
<string name="exo_controls_rewind_description">"Кері айналдыру"</string>
<string name="exo_controls_rewind_description">"Кері айналдыру"</string>
<string name="exo_controls_fastforward_description">"Жылдам алға айналдыру"</string>
<string name="exo_controls_repeat_all_description">"Барлығын қайталау"</string>
<string name="exo_controls_repeat_off_description">"Ешқайсысын қайталамау"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"បទ​បន្ទាប់"</string>
<string name="exo_controls_pause_description">"ផ្អាក"</string>
<string name="exo_controls_play_description">"ចាក់"</string>
<string name="exo_controls_stop_description">"បញ្ឈប់"</string>
<string name="exo_controls_rewind_description">"ខា​ថយក្រោយ"</string>
<string name="exo_controls_rewind_description">"ខា​ថយក្រោយ"</string>
<string name="exo_controls_fastforward_description">"ទៅ​មុខ​​​រហ័ស"</string>
<string name="exo_controls_repeat_all_description">"ធ្វើ​ម្ដង​ទៀត​ទាំងអស់"</string>
<string name="exo_controls_repeat_off_description">"មិន​ធ្វើ​ឡើង​វិញ"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"ಮುಂದಿನ ಟ್ರ್ಯಾಕ್"</string>
<string name="exo_controls_pause_description">"ವಿರಾಮಗೊಳಿಸು"</string>
<string name="exo_controls_play_description">"ಪ್ಲೇ ಮಾಡು"</string>
<string name="exo_controls_stop_description">"ನಿಲ್ಲಿಸು"</string>
<string name="exo_controls_rewind_description">"ರಿವೈಂಡ್ ಮಾಡು"</string>
<string name="exo_controls_rewind_description">"ರಿವೈಂಡ್ ಮಾಡು"</string>
<string name="exo_controls_fastforward_description">"ವೇಗವಾಗಿ ಮುಂದಕ್ಕೆ"</string>
<string name="exo_controls_repeat_all_description">"ಎಲ್ಲವನ್ನು ಪುನರಾವರ್ತಿಸಿ"</string>
<string name="exo_controls_repeat_off_description">"ಯಾವುದನ್ನೂ ಪುನರಾವರ್ತಿಸಬೇಡಿ"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"다음 트랙"</string>
<string name="exo_controls_pause_description">"일시중지"</string>
<string name="exo_controls_play_description">"재생"</string>
<string name="exo_controls_stop_description">"중지"</string>
<string name="exo_controls_rewind_description">"되감기"</string>
<string name="exo_controls_rewind_description">"되감기"</string>
<string name="exo_controls_fastforward_description">"빨리 감기"</string>
<string name="exo_controls_repeat_all_description">"전체 반복"</string>
<string name="exo_controls_repeat_off_description">"반복 안함"</string>
<string name="exo_controls_repeat_one_description">"한 항목 반복"</string>
<string name="exo_controls_shuffle_description">"셔플"</string>
<string name="exo_controls_fullscreen_description">전체 화면 모드</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Кийинки трек"</string>
<string name="exo_controls_pause_description">"Тындыруу"</string>
<string name="exo_controls_play_description">"Ойнотуу"</string>
<string name="exo_controls_stop_description">"Токтотуу"</string>
<string name="exo_controls_rewind_description">"Артка түрүү"</string>
<string name="exo_controls_rewind_description">"Артка түрүү"</string>
<string name="exo_controls_fastforward_description">"Алдыга түрүү"</string>
<string name="exo_controls_repeat_all_description">"Баарын кайталоо"</string>
<string name="exo_controls_repeat_off_description">"Эч бирин кайталабоо"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"​ເພງ​ຕໍ່​ໄປ"</string>
<string name="exo_controls_pause_description">"ຢຸດຊົ່ວຄາວ"</string>
<string name="exo_controls_play_description">"ຫຼິ້ນ"</string>
<string name="exo_controls_stop_description">"ຢຸດ"</string>
<string name="exo_controls_rewind_description">"​ຣີ​​ວາຍກັບ"</string>
<string name="exo_controls_rewind_description">"​ຣີ​​ວາຍກັບ"</string>
<string name="exo_controls_fastforward_description">"ເລື່ອນ​ໄປ​ໜ້າ"</string>
<string name="exo_controls_repeat_all_description">"ຫຼິ້ນ​ຊ້ຳ​ທັງ​ໝົດ"</string>
<string name="exo_controls_repeat_off_description">"​ບໍ່ຫຼິ້ນ​ຊ້ຳ"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Kitas takelis"</string>
<string name="exo_controls_pause_description">"Pristabdyti"</string>
<string name="exo_controls_play_description">"Leisti"</string>
<string name="exo_controls_stop_description">"Stabdyti"</string>
<string name="exo_controls_rewind_description">"Sukti atgal"</string>
<string name="exo_controls_fastforward_description">"Sukti pirmyn"</string>
<string name="exo_controls_repeat_all_description">"Kartoti viską"</string>
<string name="exo_controls_repeat_off_description">"Nekartoti nieko"</string>
<string name="exo_controls_repeat_one_description">"Kartoti vieną"</string>
<string name="exo_controls_shuffle_description">"Maišyti"</string>
<string name="exo_controls_fullscreen_description">Viso ekrano režimas</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Nākamais ieraksts"</string>
<string name="exo_controls_pause_description">"Pārtraukt"</string>
<string name="exo_controls_play_description">"Atskaņot"</string>
<string name="exo_controls_stop_description">"Apturēt"</string>
<string name="exo_controls_rewind_description">"Attīt atpakaļ"</string>
<string name="exo_controls_rewind_description">"Attīt atpakaļ"</string>
<string name="exo_controls_fastforward_description">"Ātri patīt"</string>
<string name="exo_controls_repeat_all_description">"Atkārtot visu"</string>
<string name="exo_controls_repeat_off_description">"Neatkārtot nevienu"</string>
<string name="exo_controls_repeat_one_description">"Atkārtot vienu"</string>
<string name="exo_controls_shuffle_description">"Atskaņot jauktā secībā"</string>
<string name="exo_controls_fullscreen_description">Pilnekrāna režīms</string>
</resources>

View File

@ -19,7 +19,6 @@
<string name="exo_controls_next_description">"Следна песна"</string>
<string name="exo_controls_pause_description">"Пауза"</string>
<string name="exo_controls_play_description">"Пушти"</string>
<string name="exo_controls_stop_description">"Запри"</string>
<string name="exo_controls_rewind_description">"Премотај назад"</string>
<string name="exo_controls_fastforward_description">"Брзо премотај напред"</string>
<string name="exo_controls_repeat_all_description">"Повтори ги сите"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"അടുത്ത ട്രാക്ക്"</string>
<string name="exo_controls_pause_description">"താൽക്കാലികമായി നിർത്തുക"</string>
<string name="exo_controls_play_description">"പ്ലേ ചെയ്യുക"</string>
<string name="exo_controls_stop_description">"നിര്‍ത്തുക"</string>
<string name="exo_controls_rewind_description">"റിവൈൻഡുചെയ്യുക"</string>
<string name="exo_controls_rewind_description">"റിവൈൻഡുചെയ്യുക"</string>
<string name="exo_controls_fastforward_description">"വേഗത്തിലുള്ള കൈമാറൽ"</string>
<string name="exo_controls_repeat_all_description">"എല്ലാം ആവർത്തിക്കുക"</string>
<string name="exo_controls_repeat_off_description">"ഒന്നും ആവർത്തിക്കരുത്"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Дараагийн трек"</string>
<string name="exo_controls_pause_description">"Түр зогсоох"</string>
<string name="exo_controls_play_description">"Тоглуулах"</string>
<string name="exo_controls_stop_description">"Зогсоох"</string>
<string name="exo_controls_rewind_description">"Буцааж хураах"</string>
<string name="exo_controls_rewind_description">"Буцааж хураах"</string>
<string name="exo_controls_fastforward_description">"Хурдан урагшлуулах"</string>
<string name="exo_controls_repeat_all_description">"Бүгдийг давтах"</string>
<string name="exo_controls_repeat_off_description">"Алийг нь ч давтахгүй"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"पुढील ट्रॅक"</string>
<string name="exo_controls_pause_description">"विराम द्या"</string>
<string name="exo_controls_play_description">"प्ले करा"</string>
<string name="exo_controls_stop_description">"थांबा"</string>
<string name="exo_controls_rewind_description">"रिवाईँड करा"</string>
<string name="exo_controls_rewind_description">"रिवाईँड करा"</string>
<string name="exo_controls_fastforward_description">"फास्ट फॉरवर्ड करा"</string>
<string name="exo_controls_repeat_all_description">"सर्व पुनरावृत्ती करा"</string>
<string name="exo_controls_repeat_off_description">"काहीही पुनरावृत्ती करू नका"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Lagu seterusnya"</string>
<string name="exo_controls_pause_description">"Jeda"</string>
<string name="exo_controls_play_description">"Main"</string>
<string name="exo_controls_stop_description">"Berhenti"</string>
<string name="exo_controls_rewind_description">"Gulung semula"</string>
<string name="exo_controls_rewind_description">"Gulung semula"</string>
<string name="exo_controls_fastforward_description">"Mara laju"</string>
<string name="exo_controls_repeat_all_description">"Ulang semua"</string>
<string name="exo_controls_repeat_off_description">"Tiada ulangan"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"နောက် တစ်ပုဒ်"</string>
<string name="exo_controls_pause_description">"ခဏရပ်ရန်"</string>
<string name="exo_controls_play_description">"ဖွင့်ရန်"</string>
<string name="exo_controls_stop_description">"ရပ်ရန်"</string>
<string name="exo_controls_rewind_description">"ပြန်ရစ်ရန်"</string>
<string name="exo_controls_rewind_description">"ပြန်ရစ်ရန်"</string>
<string name="exo_controls_fastforward_description">"ရှေ့သို့ သွားရန်"</string>
<string name="exo_controls_repeat_all_description">"အားလုံး ထပ်တလဲလဲဖွင့်ရန်"</string>
<string name="exo_controls_repeat_off_description">"ထပ်တလဲလဲမဖွင့်ရန်"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Neste spor"</string>
<string name="exo_controls_pause_description">"Sett på pause"</string>
<string name="exo_controls_play_description">"Spill av"</string>
<string name="exo_controls_stop_description">"Stopp"</string>
<string name="exo_controls_rewind_description">"Tilbakespoling"</string>
<string name="exo_controls_rewind_description">"Tilbakespoling"</string>
<string name="exo_controls_fastforward_description">"Fremoverspoling"</string>
<string name="exo_controls_repeat_all_description">"Gjenta alle"</string>
<string name="exo_controls_repeat_off_description">"Ikke gjenta noen"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"अर्को ट्रयाक"</string>
<string name="exo_controls_pause_description">"रोक्नुहोस्"</string>
<string name="exo_controls_play_description">"चलाउनुहोस्"</string>
<string name="exo_controls_stop_description">"रोक्नुहोस्"</string>
<string name="exo_controls_rewind_description">"दोहोर्याउनुहोस्"</string>
<string name="exo_controls_rewind_description">"दोहोर्याउनुहोस्"</string>
<string name="exo_controls_fastforward_description">"फास्ट फर्वार्ड"</string>
<string name="exo_controls_repeat_all_description">"सबै दोहोर्याउनुहोस्"</string>
<string name="exo_controls_repeat_off_description">"कुनै पनि नदोहोर्याउनुहोस्"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Volgend nummer"</string>
<string name="exo_controls_pause_description">"Onderbreken"</string>
<string name="exo_controls_play_description">"Afspelen"</string>
<string name="exo_controls_stop_description">"Stoppen"</string>
<string name="exo_controls_rewind_description">"Terugspoelen"</string>
<string name="exo_controls_rewind_description">"Terugspoelen"</string>
<string name="exo_controls_fastforward_description">"Vooruitspoelen"</string>
<string name="exo_controls_repeat_all_description">"Alles herhalen"</string>
<string name="exo_controls_repeat_off_description">"Niet herhalen"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"ਅਗਲਾ ਟਰੈਕ"</string>
<string name="exo_controls_pause_description">"ਰੋਕੋ"</string>
<string name="exo_controls_play_description">"ਪਲੇ ਕਰੋ"</string>
<string name="exo_controls_stop_description">"ਰੋਕੋ"</string>
<string name="exo_controls_rewind_description">"ਰੀਵਾਈਂਡ ਕਰੋ"</string>
<string name="exo_controls_rewind_description">"ਰੀਵਾਈਂਡ ਕਰੋ"</string>
<string name="exo_controls_fastforward_description">"ਅੱਗੇ ਭੇਜੋ"</string>
<string name="exo_controls_repeat_all_description">"ਸਭ ਨੂੰ ਦੁਹਰਾਓ"</string>
<string name="exo_controls_repeat_off_description">"ਕੋਈ ਵੀ ਨਹੀਂ ਦੁਹਰਾਓ"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Następny utwór"</string>
<string name="exo_controls_pause_description">"Wstrzymaj"</string>
<string name="exo_controls_play_description">"Odtwórz"</string>
<string name="exo_controls_stop_description">"Zatrzymaj"</string>
<string name="exo_controls_rewind_description">"Przewiń do tyłu"</string>
<string name="exo_controls_rewind_description">"Przewiń do tyłu"</string>
<string name="exo_controls_fastforward_description">"Przewiń do przodu"</string>
<string name="exo_controls_repeat_all_description">"Powtórz wszystkie"</string>
<string name="exo_controls_repeat_off_description">"Nie powtarzaj"</string>
<string name="exo_controls_repeat_one_description">"Powtórz jeden"</string>
<string name="exo_controls_shuffle_description">"Odtwarzaj losowo"</string>
<string name="exo_controls_fullscreen_description">Tryb pełnoekranowy</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Próxima faixa"</string>
<string name="exo_controls_pause_description">"Pausar"</string>
<string name="exo_controls_play_description">"Reproduzir"</string>
<string name="exo_controls_stop_description">"Parar"</string>
<string name="exo_controls_rewind_description">"Retroceder"</string>
<string name="exo_controls_rewind_description">"Retroceder"</string>
<string name="exo_controls_fastforward_description">"Avançar"</string>
<string name="exo_controls_repeat_all_description">"Repetir tudo"</string>
<string name="exo_controls_repeat_off_description">"Não repetir"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Faixa seguinte"</string>
<string name="exo_controls_pause_description">"Interromper"</string>
<string name="exo_controls_play_description">"Reproduzir"</string>
<string name="exo_controls_stop_description">"Parar"</string>
<string name="exo_controls_rewind_description">"Rebobinar"</string>
<string name="exo_controls_rewind_description">"Rebobinar"</string>
<string name="exo_controls_fastforward_description">"Avançar"</string>
<string name="exo_controls_repeat_all_description">"Repetir tudo"</string>
<string name="exo_controls_repeat_off_description">"Não repetir"</string>
<string name="exo_controls_repeat_one_description">"Repetir um"</string>
<string name="exo_controls_shuffle_description">"Reproduzir aleatoriamente"</string>
<string name="exo_controls_fullscreen_description">Modo de ecrã inteiro</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Próxima faixa"</string>
<string name="exo_controls_pause_description">"Pausar"</string>
<string name="exo_controls_play_description">"Reproduzir"</string>
<string name="exo_controls_stop_description">"Parar"</string>
<string name="exo_controls_rewind_description">"Retroceder"</string>
<string name="exo_controls_rewind_description">"Retroceder"</string>
<string name="exo_controls_fastforward_description">"Avançar"</string>
<string name="exo_controls_repeat_all_description">"Repetir tudo"</string>
<string name="exo_controls_repeat_off_description">"Não repetir"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Melodia următoare"</string>
<string name="exo_controls_pause_description">"Pauză"</string>
<string name="exo_controls_play_description">"Redați"</string>
<string name="exo_controls_stop_description">"Opriți"</string>
<string name="exo_controls_rewind_description">"Derulați"</string>
<string name="exo_controls_rewind_description">"Derulați"</string>
<string name="exo_controls_fastforward_description">"Derulați rapid înainte"</string>
<string name="exo_controls_repeat_all_description">"Repetați toate"</string>
<string name="exo_controls_repeat_off_description">"Repetați niciuna"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Следующий трек"</string>
<string name="exo_controls_pause_description">"Приостановить"</string>
<string name="exo_controls_play_description">"Воспроизвести"</string>
<string name="exo_controls_stop_description">"Остановить"</string>
<string name="exo_controls_rewind_description">"Перемотать назад"</string>
<string name="exo_controls_rewind_description">"Перемотать назад"</string>
<string name="exo_controls_fastforward_description">"Перемотать вперед"</string>
<string name="exo_controls_repeat_all_description">"Повторять все"</string>
<string name="exo_controls_repeat_off_description">"Не повторять"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"ඊළඟ ගීතය"</string>
<string name="exo_controls_pause_description">"විරාමය"</string>
<string name="exo_controls_play_description">"ධාවනය කරන්න"</string>
<string name="exo_controls_stop_description">"නතර කරන්න"</string>
<string name="exo_controls_rewind_description">"නැවත ඔතන්න"</string>
<string name="exo_controls_rewind_description">"නැවත ඔතන්න"</string>
<string name="exo_controls_fastforward_description">"වේගයෙන් ඉදිරියට යන"</string>
<string name="exo_controls_repeat_all_description">"සියලු නැවත"</string>
<string name="exo_controls_repeat_off_description">"කිසිවක් නැවත"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Ďalšia stopa"</string>
<string name="exo_controls_pause_description">"Pozastaviť"</string>
<string name="exo_controls_play_description">"Prehrať"</string>
<string name="exo_controls_stop_description">"Zastaviť"</string>
<string name="exo_controls_rewind_description">"Pretočiť späť"</string>
<string name="exo_controls_rewind_description">"Pretočiť späť"</string>
<string name="exo_controls_fastforward_description">"Pretočiť dopredu"</string>
<string name="exo_controls_repeat_all_description">"Opakovať všetko"</string>
<string name="exo_controls_repeat_off_description">"Neopakovať"</string>
<string name="exo_controls_repeat_one_description">"Opakovať jednu položku"</string>
<string name="exo_controls_shuffle_description">"Náhodne prehrávať"</string>
<string name="exo_controls_fullscreen_description">Režim celej obrazovky</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Naslednja skladba"</string>
<string name="exo_controls_pause_description">"Zaustavi"</string>
<string name="exo_controls_play_description">"Predvajaj"</string>
<string name="exo_controls_stop_description">"Ustavi"</string>
<string name="exo_controls_rewind_description">"Previj nazaj"</string>
<string name="exo_controls_rewind_description">"Previj nazaj"</string>
<string name="exo_controls_fastforward_description">"Previj naprej"</string>
<string name="exo_controls_repeat_all_description">"Ponovi vse"</string>
<string name="exo_controls_repeat_off_description">"Ne ponovi"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Kënga tjetër"</string>
<string name="exo_controls_pause_description">"Pauzë"</string>
<string name="exo_controls_play_description">"Luaj"</string>
<string name="exo_controls_stop_description">"Ndalo"</string>
<string name="exo_controls_rewind_description">"Kthehu pas"</string>
<string name="exo_controls_rewind_description">"Kthehu pas"</string>
<string name="exo_controls_fastforward_description">"Përparo me shpejtësi"</string>
<string name="exo_controls_repeat_all_description">"Përsërit të gjithë"</string>
<string name="exo_controls_repeat_off_description">"Përsëritni asnjë"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Следећа песма"</string>
<string name="exo_controls_pause_description">"Пауза"</string>
<string name="exo_controls_play_description">"Пусти"</string>
<string name="exo_controls_stop_description">"Заустави"</string>
<string name="exo_controls_rewind_description">"Премотај уназад"</string>
<string name="exo_controls_rewind_description">"Премотај уназад"</string>
<string name="exo_controls_fastforward_description">"Премотај унапред"</string>
<string name="exo_controls_repeat_all_description">"Понови све"</string>
<string name="exo_controls_repeat_off_description">"Понављање је искључено"</string>
<string name="exo_controls_repeat_one_description">"Понови једну"</string>
<string name="exo_controls_shuffle_description">"Пусти насумично"</string>
<string name="exo_controls_fullscreen_description">Режим целог екрана</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Nästa spår"</string>
<string name="exo_controls_pause_description">"Pausa"</string>
<string name="exo_controls_play_description">"Spela upp"</string>
<string name="exo_controls_stop_description">"Avbryt"</string>
<string name="exo_controls_rewind_description">"Spola tillbaka"</string>
<string name="exo_controls_rewind_description">"Spola tillbaka"</string>
<string name="exo_controls_fastforward_description">"Snabbspola framåt"</string>
<string name="exo_controls_repeat_all_description">"Upprepa alla"</string>
<string name="exo_controls_repeat_off_description">"Upprepa inga"</string>
<string name="exo_controls_repeat_one_description">"Upprepa en"</string>
<string name="exo_controls_shuffle_description">"Blanda"</string>
<string name="exo_controls_fullscreen_description">Helskärmsläge</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Wimbo unaofuata"</string>
<string name="exo_controls_pause_description">"Sitisha"</string>
<string name="exo_controls_play_description">"Cheza"</string>
<string name="exo_controls_stop_description">"Simamisha"</string>
<string name="exo_controls_rewind_description">"Rudisha nyuma"</string>
<string name="exo_controls_rewind_description">"Rudisha nyuma"</string>
<string name="exo_controls_fastforward_description">"Peleka mbele kwa kasi"</string>
<string name="exo_controls_repeat_all_description">"Rudia zote"</string>
<string name="exo_controls_repeat_off_description">"Usirudie Yoyote"</string>
<string name="exo_controls_repeat_one_description">"Rudia Moja"</string>
<string name="exo_controls_shuffle_description">"Changanya"</string>
<string name="exo_controls_fullscreen_description">Hali ya skrini kamili</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"அடுத்த ட்ராக்"</string>
<string name="exo_controls_pause_description">"இடைநிறுத்து"</string>
<string name="exo_controls_play_description">"இயக்கு"</string>
<string name="exo_controls_stop_description">"நிறுத்து"</string>
<string name="exo_controls_rewind_description">"மீண்டும் காட்டு"</string>
<string name="exo_controls_rewind_description">"மீண்டும் காட்டு"</string>
<string name="exo_controls_fastforward_description">"வேகமாக முன்செல்"</string>
<string name="exo_controls_repeat_all_description">"அனைத்தையும் மீண்டும் இயக்கு"</string>
<string name="exo_controls_repeat_off_description">"எதையும் மீண்டும் இயக்காதே"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"తదుపరి ట్రాక్"</string>
<string name="exo_controls_pause_description">"పాజ్ చేయి"</string>
<string name="exo_controls_play_description">"ప్లే చేయి"</string>
<string name="exo_controls_stop_description">"ఆపివేయి"</string>
<string name="exo_controls_rewind_description">"రివైండ్ చేయి"</string>
<string name="exo_controls_rewind_description">"రివైండ్ చేయి"</string>
<string name="exo_controls_fastforward_description">"వేగంగా ఫార్వార్డ్ చేయి"</string>
<string name="exo_controls_repeat_all_description">"అన్నీ పునరావృతం చేయి"</string>
<string name="exo_controls_repeat_off_description">"ఏదీ పునరావృతం చేయవద్దు"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"แทร็กถัดไป"</string>
<string name="exo_controls_pause_description">"หยุดชั่วคราว"</string>
<string name="exo_controls_play_description">"เล่น"</string>
<string name="exo_controls_stop_description">"หยุด"</string>
<string name="exo_controls_rewind_description">"กรอกลับ"</string>
<string name="exo_controls_rewind_description">"กรอกลับ"</string>
<string name="exo_controls_fastforward_description">"กรอไปข้างหน้า"</string>
<string name="exo_controls_repeat_all_description">"เล่นซ้ำทั้งหมด"</string>
<string name="exo_controls_repeat_off_description">"ไม่เล่นซ้ำ"</string>
<string name="exo_controls_repeat_one_description">"เล่นซ้ำรายการเดียว"</string>
<string name="exo_controls_shuffle_description">"สุ่มเพลง"</string>
<string name="exo_controls_fullscreen_description">โหมดเต็มหน้าจอ</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Susunod na track"</string>
<string name="exo_controls_pause_description">"I-pause"</string>
<string name="exo_controls_play_description">"I-play"</string>
<string name="exo_controls_stop_description">"Ihinto"</string>
<string name="exo_controls_rewind_description">"I-rewind"</string>
<string name="exo_controls_rewind_description">"I-rewind"</string>
<string name="exo_controls_fastforward_description">"I-fast forward"</string>
<string name="exo_controls_repeat_all_description">"Ulitin Lahat"</string>
<string name="exo_controls_repeat_off_description">"Walang Uulitin"</string>
<string name="exo_controls_repeat_one_description">"Ulitin ang Isa"</string>
<string name="exo_controls_shuffle_description">"I-shuffle"</string>
<string name="exo_controls_fullscreen_description">Fullscreen mode</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Sonraki parça"</string>
<string name="exo_controls_pause_description">"Duraklat"</string>
<string name="exo_controls_play_description">"Çal"</string>
<string name="exo_controls_stop_description">"Durdur"</string>
<string name="exo_controls_rewind_description">"Geri sar"</string>
<string name="exo_controls_rewind_description">"Geri sar"</string>
<string name="exo_controls_fastforward_description">"İleri sar"</string>
<string name="exo_controls_repeat_all_description">"Tümünü Tekrarla"</string>
<string name="exo_controls_repeat_off_description">"Hiçbirini Tekrarlama"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Наступна композиція"</string>
<string name="exo_controls_pause_description">"Пауза"</string>
<string name="exo_controls_play_description">"Відтворити"</string>
<string name="exo_controls_stop_description">"Зупинити"</string>
<string name="exo_controls_rewind_description">"Перемотати назад"</string>
<string name="exo_controls_rewind_description">"Перемотати назад"</string>
<string name="exo_controls_fastforward_description">"Перемотати вперед"</string>
<string name="exo_controls_repeat_all_description">"Повторити все"</string>
<string name="exo_controls_repeat_off_description">"Не повторювати"</string>
<string name="exo_controls_repeat_one_description">"Повторити один елемент"</string>
<string name="exo_controls_shuffle_description">"Перемішати"</string>
<string name="exo_controls_fullscreen_description">Повноекранний режим</string>
</resources>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"اگلا ٹریک"</string>
<string name="exo_controls_pause_description">"موقوف کریں"</string>
<string name="exo_controls_play_description">"چلائیں"</string>
<string name="exo_controls_stop_description">"روکیں"</string>
<string name="exo_controls_rewind_description">"ریوائینڈ کریں"</string>
<string name="exo_controls_rewind_description">"ریوائینڈ کریں"</string>
<string name="exo_controls_fastforward_description">"تیزی سے فارورڈ کریں"</string>
<string name="exo_controls_repeat_all_description">"سبھی کو دہرائیں"</string>
<string name="exo_controls_repeat_off_description">"کسی کو نہ دہرائیں"</string>

View File

@ -19,8 +19,7 @@
<string name="exo_controls_next_description">"Keyingi musiqa"</string>
<string name="exo_controls_pause_description">"Toxtatib turish"</string>
<string name="exo_controls_play_description">"Ijro qilish"</string>
<string name="exo_controls_stop_description">"Toxtatish"</string>
<string name="exo_controls_rewind_description">"Orqaga otkazish"</string>
<string name="exo_controls_rewind_description">"Orqaga otkazish"</string>
<string name="exo_controls_fastforward_description">"Oldinga otkazish"</string>
<string name="exo_controls_repeat_all_description">"Barchasini takrorlash"</string>
<string name="exo_controls_repeat_off_description">"Takrorlamaslik"</string>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"Bản nhạc tiếp theo"</string>
<string name="exo_controls_pause_description">"Tạm dừng"</string>
<string name="exo_controls_play_description">"Phát"</string>
<string name="exo_controls_stop_description">"Ngừng"</string>
<string name="exo_controls_rewind_description">"Tua lại"</string>
<string name="exo_controls_rewind_description">"Tua lại"</string>
<string name="exo_controls_fastforward_description">"Tua đi"</string>
<string name="exo_controls_repeat_all_description">"Lặp lại tất cả"</string>
<string name="exo_controls_repeat_off_description">"Không lặp lại"</string>
<string name="exo_controls_repeat_one_description">"Lặp lại một mục"</string>
<string name="exo_controls_shuffle_description">"Trộn bài"</string>
<string name="exo_controls_fullscreen_description">Chế độ toàn màn hình</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"下一曲"</string>
<string name="exo_controls_pause_description">"暂停"</string>
<string name="exo_controls_play_description">"播放"</string>
<string name="exo_controls_stop_description">"停止"</string>
<string name="exo_controls_rewind_description">"快退"</string>
<string name="exo_controls_rewind_description">"快退"</string>
<string name="exo_controls_fastforward_description">"快进"</string>
<string name="exo_controls_repeat_all_description">"重复播放全部"</string>
<string name="exo_controls_repeat_off_description">"不重复播放"</string>
<string name="exo_controls_repeat_one_description">"重复播放单个视频"</string>
<string name="exo_controls_shuffle_description">"随机播放"</string>
<string name="exo_controls_fullscreen_description">全屏模式</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"下一首曲目"</string>
<string name="exo_controls_pause_description">"暫停"</string>
<string name="exo_controls_play_description">"播放"</string>
<string name="exo_controls_stop_description">"停止"</string>
<string name="exo_controls_rewind_description">"倒帶"</string>
<string name="exo_controls_rewind_description">"倒帶"</string>
<string name="exo_controls_fastforward_description">"向前快轉"</string>
<string name="exo_controls_repeat_all_description">"重複播放所有媒體項目"</string>
<string name="exo_controls_repeat_off_description">"不重複播放任何媒體項目"</string>
<string name="exo_controls_repeat_one_description">"重複播放一個媒體項目"</string>
<string name="exo_controls_shuffle_description">"隨機播放"</string>
<string name="exo_controls_fullscreen_description">全螢幕模式</string>
</resources>

View File

@ -19,12 +19,10 @@
<string name="exo_controls_next_description">"下一首曲目"</string>
<string name="exo_controls_pause_description">"暫停"</string>
<string name="exo_controls_play_description">"播放"</string>
<string name="exo_controls_stop_description">"停止"</string>
<string name="exo_controls_rewind_description">"倒轉"</string>
<string name="exo_controls_rewind_description">"倒轉"</string>
<string name="exo_controls_fastforward_description">"快轉"</string>
<string name="exo_controls_repeat_all_description">"重複播放所有媒體項目"</string>
<string name="exo_controls_repeat_off_description">"不重複播放"</string>
<string name="exo_controls_repeat_one_description">"重複播放單一媒體項目"</string>
<string name="exo_controls_shuffle_description">"隨機播放"</string>
<string name="exo_controls_fullscreen_description">全螢幕模式</string>
</resources>

Some files were not shown because too many files have changed in this diff Show More