Commit 93506f63 by krocard Committed by Ian Baker

Copy REPEAT_MODE to C temporary for timeline

This copy will be removed once Player is migrated to
common.

#exo-offload

PiperOrigin-RevId: 344515979
parent 46598a46
...@@ -1082,6 +1082,23 @@ public final class C { ...@@ -1082,6 +1082,23 @@ public final class C {
/** Indicates the track is intended for trick play. */ /** Indicates the track is intended for trick play. */
public static final int ROLE_FLAG_TRICK_PLAY = 1 << 14; public static final int ROLE_FLAG_TRICK_PLAY = 1 << 14;
// TODO(b/172315872) Move usage back to Player.RepeatMode when Player is moved in common.
/**
* Repeat modes for playback. One of {@link #REPEAT_MODE_OFF}, {@link #REPEAT_MODE_ONE} or {@link
* #REPEAT_MODE_ALL}.
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
@IntDef({REPEAT_MODE_OFF, REPEAT_MODE_ONE, REPEAT_MODE_ALL})
static @interface RepeatMode {}
/** Normal playback without repetition. */
/* package */ static final int REPEAT_MODE_OFF = 0;
/** "Repeat One" mode to repeat the currently playing window infinitely. */
/* package */ static final int REPEAT_MODE_ONE = 1;
/** "Repeat All" mode to repeat the entire timeline infinitely. */
/* package */ static final int REPEAT_MODE_ALL = 2;
/** /**
* Converts a time in microseconds to the corresponding time in milliseconds, preserving * Converts a time in microseconds to the corresponding time in milliseconds, preserving
* {@link #TIME_UNSET} and {@link #TIME_END_OF_SOURCE} values. * {@link #TIME_UNSET} and {@link #TIME_END_OF_SOURCE} values.
......
...@@ -870,20 +870,20 @@ public interface Player { ...@@ -870,20 +870,20 @@ public interface Player {
* Normal playback without repetition. "Previous" and "Next" actions move to the previous and next * Normal playback without repetition. "Previous" and "Next" actions move to the previous and next
* windows respectively, and do nothing when there is no previous or next window to move to. * windows respectively, and do nothing when there is no previous or next window to move to.
*/ */
int REPEAT_MODE_OFF = 0; int REPEAT_MODE_OFF = C.REPEAT_MODE_OFF;
/** /**
* Repeats the currently playing window infinitely during ongoing playback. "Previous" and "Next" * Repeats the currently playing window infinitely during ongoing playback. "Previous" and "Next"
* actions behave as they do in {@link #REPEAT_MODE_OFF}, moving to the previous and next windows * actions behave as they do in {@link #REPEAT_MODE_OFF}, moving to the previous and next windows
* respectively, and doing nothing when there is no previous or next window to move to. * respectively, and doing nothing when there is no previous or next window to move to.
*/ */
int REPEAT_MODE_ONE = 1; int REPEAT_MODE_ONE = C.REPEAT_MODE_ONE;
/** /**
* Repeats the entire timeline infinitely. "Previous" and "Next" actions behave as they do in * Repeats the entire timeline infinitely. "Previous" and "Next" actions behave as they do in
* {@link #REPEAT_MODE_OFF}, but with looping at the ends so that "Previous" when playing the * {@link #REPEAT_MODE_OFF}, but with looping at the ends so that "Previous" when playing the
* first window will move to the last window, and "Next" when playing the last window will move to * first window will move to the last window, and "Next" when playing the last window will move to
* the first window. * the first window.
*/ */
int REPEAT_MODE_ALL = 2; int REPEAT_MODE_ALL = C.REPEAT_MODE_ALL;
/** /**
* Reasons for position discontinuities. One of {@link #DISCONTINUITY_REASON_PERIOD_TRANSITION}, * Reasons for position discontinuities. One of {@link #DISCONTINUITY_REASON_PERIOD_TRANSITION},
......
...@@ -733,15 +733,15 @@ public abstract class Timeline { ...@@ -733,15 +733,15 @@ public abstract class Timeline {
* @param shuffleModeEnabled Whether shuffling is enabled. * @param shuffleModeEnabled Whether shuffling is enabled.
* @return The index of the next window, or {@link C#INDEX_UNSET} if this is the last window. * @return The index of the next window, or {@link C#INDEX_UNSET} if this is the last window.
*/ */
public int getNextWindowIndex(int windowIndex, @Player.RepeatMode int repeatMode, public int getNextWindowIndex(
boolean shuffleModeEnabled) { int windowIndex, @C.RepeatMode int repeatMode, boolean shuffleModeEnabled) {
switch (repeatMode) { switch (repeatMode) {
case Player.REPEAT_MODE_OFF: case C.REPEAT_MODE_OFF:
return windowIndex == getLastWindowIndex(shuffleModeEnabled) ? C.INDEX_UNSET return windowIndex == getLastWindowIndex(shuffleModeEnabled) ? C.INDEX_UNSET
: windowIndex + 1; : windowIndex + 1;
case Player.REPEAT_MODE_ONE: case C.REPEAT_MODE_ONE:
return windowIndex; return windowIndex;
case Player.REPEAT_MODE_ALL: case C.REPEAT_MODE_ALL:
return windowIndex == getLastWindowIndex(shuffleModeEnabled) return windowIndex == getLastWindowIndex(shuffleModeEnabled)
? getFirstWindowIndex(shuffleModeEnabled) : windowIndex + 1; ? getFirstWindowIndex(shuffleModeEnabled) : windowIndex + 1;
default: default:
...@@ -758,15 +758,15 @@ public abstract class Timeline { ...@@ -758,15 +758,15 @@ public abstract class Timeline {
* @param shuffleModeEnabled Whether shuffling is enabled. * @param shuffleModeEnabled Whether shuffling is enabled.
* @return The index of the previous window, or {@link C#INDEX_UNSET} if this is the first window. * @return The index of the previous window, or {@link C#INDEX_UNSET} if this is the first window.
*/ */
public int getPreviousWindowIndex(int windowIndex, @Player.RepeatMode int repeatMode, public int getPreviousWindowIndex(
boolean shuffleModeEnabled) { int windowIndex, @C.RepeatMode int repeatMode, boolean shuffleModeEnabled) {
switch (repeatMode) { switch (repeatMode) {
case Player.REPEAT_MODE_OFF: case C.REPEAT_MODE_OFF:
return windowIndex == getFirstWindowIndex(shuffleModeEnabled) ? C.INDEX_UNSET return windowIndex == getFirstWindowIndex(shuffleModeEnabled) ? C.INDEX_UNSET
: windowIndex - 1; : windowIndex - 1;
case Player.REPEAT_MODE_ONE: case C.REPEAT_MODE_ONE:
return windowIndex; return windowIndex;
case Player.REPEAT_MODE_ALL: case C.REPEAT_MODE_ALL:
return windowIndex == getFirstWindowIndex(shuffleModeEnabled) return windowIndex == getFirstWindowIndex(shuffleModeEnabled)
? getLastWindowIndex(shuffleModeEnabled) : windowIndex - 1; ? getLastWindowIndex(shuffleModeEnabled) : windowIndex - 1;
default: default:
...@@ -843,8 +843,12 @@ public abstract class Timeline { ...@@ -843,8 +843,12 @@ public abstract class Timeline {
* @param shuffleModeEnabled Whether shuffling is enabled. * @param shuffleModeEnabled Whether shuffling is enabled.
* @return The index of the next period, or {@link C#INDEX_UNSET} if this is the last period. * @return The index of the next period, or {@link C#INDEX_UNSET} if this is the last period.
*/ */
public final int getNextPeriodIndex(int periodIndex, Period period, Window window, public final int getNextPeriodIndex(
@Player.RepeatMode int repeatMode, boolean shuffleModeEnabled) { int periodIndex,
Period period,
Window window,
@C.RepeatMode int repeatMode,
boolean shuffleModeEnabled) {
int windowIndex = getPeriod(periodIndex, period).windowIndex; int windowIndex = getPeriod(periodIndex, period).windowIndex;
if (getWindow(windowIndex, window).lastPeriodIndex == periodIndex) { if (getWindow(windowIndex, window).lastPeriodIndex == periodIndex) {
int nextWindowIndex = getNextWindowIndex(windowIndex, repeatMode, shuffleModeEnabled); int nextWindowIndex = getNextWindowIndex(windowIndex, repeatMode, shuffleModeEnabled);
...@@ -857,8 +861,8 @@ public abstract class Timeline { ...@@ -857,8 +861,8 @@ public abstract class Timeline {
} }
/** /**
* Returns whether the given period is the last period of the timeline depending on the * Returns whether the given period is the last period of the timeline depending on the {@code
* {@code repeatMode} and whether shuffling is enabled. * repeatMode} and whether shuffling is enabled.
* *
* @param periodIndex A period index. * @param periodIndex A period index.
* @param period A {@link Period} to be used internally. Must not be null. * @param period A {@link Period} to be used internally. Must not be null.
...@@ -867,8 +871,12 @@ public abstract class Timeline { ...@@ -867,8 +871,12 @@ public abstract class Timeline {
* @param shuffleModeEnabled Whether shuffling is enabled. * @param shuffleModeEnabled Whether shuffling is enabled.
* @return Whether the period of the given index is the last period of the timeline. * @return Whether the period of the given index is the last period of the timeline.
*/ */
public final boolean isLastPeriod(int periodIndex, Period period, Window window, public final boolean isLastPeriod(
@Player.RepeatMode int repeatMode, boolean shuffleModeEnabled) { int periodIndex,
Period period,
Window window,
@C.RepeatMode int repeatMode,
boolean shuffleModeEnabled) {
return getNextPeriodIndex(periodIndex, period, window, repeatMode, shuffleModeEnabled) return getNextPeriodIndex(periodIndex, period, window, repeatMode, shuffleModeEnabled)
== C.INDEX_UNSET; == C.INDEX_UNSET;
} }
......
...@@ -39,13 +39,12 @@ public class TimelineTest { ...@@ -39,13 +39,12 @@ public class TimelineTest {
Timeline timeline = new FakeTimeline(new TimelineWindowDefinition(1, 111)); Timeline timeline = new FakeTimeline(new TimelineWindowDefinition(1, 111));
TimelineAsserts.assertWindowTags(timeline, 111); TimelineAsserts.assertWindowTags(timeline, 111);
TimelineAsserts.assertPeriodCounts(timeline, 1); TimelineAsserts.assertPeriodCounts(timeline, 1);
TimelineAsserts.assertPreviousWindowIndices( TimelineAsserts.assertPreviousWindowIndices(timeline, C.REPEAT_MODE_OFF, false, C.INDEX_UNSET);
timeline, Player.REPEAT_MODE_OFF, false, C.INDEX_UNSET); TimelineAsserts.assertPreviousWindowIndices(timeline, C.REPEAT_MODE_ONE, false, 0);
TimelineAsserts.assertPreviousWindowIndices(timeline, Player.REPEAT_MODE_ONE, false, 0); TimelineAsserts.assertPreviousWindowIndices(timeline, C.REPEAT_MODE_ALL, false, 0);
TimelineAsserts.assertPreviousWindowIndices(timeline, Player.REPEAT_MODE_ALL, false, 0); TimelineAsserts.assertNextWindowIndices(timeline, C.REPEAT_MODE_OFF, false, C.INDEX_UNSET);
TimelineAsserts.assertNextWindowIndices(timeline, Player.REPEAT_MODE_OFF, false, C.INDEX_UNSET); TimelineAsserts.assertNextWindowIndices(timeline, C.REPEAT_MODE_ONE, false, 0);
TimelineAsserts.assertNextWindowIndices(timeline, Player.REPEAT_MODE_ONE, false, 0); TimelineAsserts.assertNextWindowIndices(timeline, C.REPEAT_MODE_ALL, false, 0);
TimelineAsserts.assertNextWindowIndices(timeline, Player.REPEAT_MODE_ALL, false, 0);
} }
@Test @Test
...@@ -53,13 +52,12 @@ public class TimelineTest { ...@@ -53,13 +52,12 @@ public class TimelineTest {
Timeline timeline = new FakeTimeline(new TimelineWindowDefinition(5, 111)); Timeline timeline = new FakeTimeline(new TimelineWindowDefinition(5, 111));
TimelineAsserts.assertWindowTags(timeline, 111); TimelineAsserts.assertWindowTags(timeline, 111);
TimelineAsserts.assertPeriodCounts(timeline, 5); TimelineAsserts.assertPeriodCounts(timeline, 5);
TimelineAsserts.assertPreviousWindowIndices( TimelineAsserts.assertPreviousWindowIndices(timeline, C.REPEAT_MODE_OFF, false, C.INDEX_UNSET);
timeline, Player.REPEAT_MODE_OFF, false, C.INDEX_UNSET); TimelineAsserts.assertPreviousWindowIndices(timeline, C.REPEAT_MODE_ONE, false, 0);
TimelineAsserts.assertPreviousWindowIndices(timeline, Player.REPEAT_MODE_ONE, false, 0); TimelineAsserts.assertPreviousWindowIndices(timeline, C.REPEAT_MODE_ALL, false, 0);
TimelineAsserts.assertPreviousWindowIndices(timeline, Player.REPEAT_MODE_ALL, false, 0); TimelineAsserts.assertNextWindowIndices(timeline, C.REPEAT_MODE_OFF, false, C.INDEX_UNSET);
TimelineAsserts.assertNextWindowIndices(timeline, Player.REPEAT_MODE_OFF, false, C.INDEX_UNSET); TimelineAsserts.assertNextWindowIndices(timeline, C.REPEAT_MODE_ONE, false, 0);
TimelineAsserts.assertNextWindowIndices(timeline, Player.REPEAT_MODE_ONE, false, 0); TimelineAsserts.assertNextWindowIndices(timeline, C.REPEAT_MODE_ALL, false, 0);
TimelineAsserts.assertNextWindowIndices(timeline, Player.REPEAT_MODE_ALL, false, 0);
} }
@Test @Test
......
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