From 5183eaaf1e86767730134be12823888bfe46f0f2 Mon Sep 17 00:00:00 2001 From: samrobinson Date: Tue, 7 Sep 2021 12:18:37 +0100 Subject: [PATCH] Add open @IntDef for track selection reasons. #exofixit PiperOrigin-RevId: 395217458 --- .../java/com/google/android/exoplayer2/C.java | 18 +++++++++++++++++ .../exoplayer2/offline/DownloadHelper.java | 1 + .../exoplayer2/source/MediaLoadData.java | 9 +++++---- .../source/MediaSourceEventListener.java | 20 +++++++++---------- .../source/chunk/BaseMediaChunk.java | 2 +- .../exoplayer2/source/chunk/Chunk.java | 10 +++++----- .../source/chunk/ContainerMediaChunk.java | 2 +- .../exoplayer2/source/chunk/DataChunk.java | 2 +- .../source/chunk/InitializationChunk.java | 2 +- .../exoplayer2/source/chunk/MediaChunk.java | 2 +- .../source/chunk/SingleSampleMediaChunk.java | 2 +- .../source/dash/DefaultDashChunkSource.java | 6 +++--- .../exoplayer2/source/hls/HlsChunkSource.java | 2 +- .../exoplayer2/source/hls/HlsMediaChunk.java | 4 ++-- .../smoothstreaming/DefaultSsChunkSource.java | 2 +- .../exoplayer2/testutil/FakeMediaChunk.java | 8 ++++++-- 16 files changed, 58 insertions(+), 34 deletions(-) diff --git a/library/common/src/main/java/com/google/android/exoplayer2/C.java b/library/common/src/main/java/com/google/android/exoplayer2/C.java index 8541583b39..44d9e0277c 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/C.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/C.java @@ -696,6 +696,24 @@ public final class C { */ public static final int TRACK_TYPE_CUSTOM_BASE = 10000; + /** + * Represents a reason for selection. May be one of {@link #SELECTION_REASON_UNKNOWN}, {@link + * #SELECTION_REASON_INITIAL}, {@link #SELECTION_REASON_MANUAL}, {@link + * #SELECTION_REASON_ADAPTIVE} or {@link #SELECTION_REASON_TRICK_PLAY}. May also be an app-defined + * value (see {@link #SELECTION_REASON_CUSTOM_BASE}). + */ + @Documented + @Retention(RetentionPolicy.SOURCE) + @IntDef( + open = true, + value = { + SELECTION_REASON_UNKNOWN, + SELECTION_REASON_INITIAL, + SELECTION_REASON_MANUAL, + SELECTION_REASON_ADAPTIVE, + SELECTION_REASON_TRICK_PLAY + }) + public @interface SelectionReason {} /** A selection reason constant for selections whose reasons are unknown or unspecified. */ public static final int SELECTION_REASON_UNKNOWN = 0; /** A selection reason constant for an initial track selection. */ diff --git a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java index 38448f61b6..c8c832736b 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java @@ -1096,6 +1096,7 @@ public final class DownloadHelper { } @Override + @C.SelectionReason public int getSelectionReason() { return C.SELECTION_REASON_UNKNOWN; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaLoadData.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaLoadData.java index 440b6c2d11..7f0aa46fd6 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaLoadData.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaLoadData.java @@ -18,6 +18,7 @@ package com.google.android.exoplayer2.source; import androidx.annotation.Nullable; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C.DataType; +import com.google.android.exoplayer2.C.SelectionReason; import com.google.android.exoplayer2.C.TrackType; import com.google.android.exoplayer2.Format; @@ -37,8 +38,8 @@ public final class MediaLoadData { */ @Nullable public final Format trackFormat; /** - * One of the {@link C} {@code SELECTION_REASON_*} constants if the data belongs to a track. - * {@link C#SELECTION_REASON_UNKNOWN} otherwise. + * One of the {@link SelectionReason selection reasons} if the data belongs to a track. {@link + * C#SELECTION_REASON_UNKNOWN} otherwise. */ public final int trackSelectionReason; /** @@ -82,9 +83,9 @@ public final class MediaLoadData { */ public MediaLoadData( @DataType int dataType, - int trackType, + @TrackType int trackType, @Nullable Format trackFormat, - int trackSelectionReason, + @SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java index 115bff2a99..13f7562576 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java @@ -229,9 +229,9 @@ public interface MediaSourceEventListener { public void loadStarted( LoadEventInfo loadEventInfo, @DataType int dataType, - int trackType, + @C.TrackType int trackType, @Nullable Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, long mediaStartTimeUs, long mediaEndTimeUs) { @@ -274,9 +274,9 @@ public interface MediaSourceEventListener { public void loadCompleted( LoadEventInfo loadEventInfo, @DataType int dataType, - int trackType, + @C.TrackType int trackType, @Nullable Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, long mediaStartTimeUs, long mediaEndTimeUs) { @@ -320,9 +320,9 @@ public interface MediaSourceEventListener { public void loadCanceled( LoadEventInfo loadEventInfo, @DataType int dataType, - int trackType, + @C.TrackType int trackType, @Nullable Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, long mediaStartTimeUs, long mediaEndTimeUs) { @@ -378,9 +378,9 @@ public interface MediaSourceEventListener { public void loadError( LoadEventInfo loadEventInfo, @DataType int dataType, - int trackType, + @C.TrackType int trackType, @Nullable Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, long mediaStartTimeUs, long mediaEndTimeUs, @@ -445,9 +445,9 @@ public interface MediaSourceEventListener { /** Dispatches {@link #onDownstreamFormatChanged(int, MediaPeriodId, MediaLoadData)}. */ public void downstreamFormatChanged( - int trackType, + @C.TrackType int trackType, @Nullable Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, long mediaTimeUs) { downstreamFormatChanged( diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/BaseMediaChunk.java b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/BaseMediaChunk.java index 330bb494da..992991180e 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/BaseMediaChunk.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/BaseMediaChunk.java @@ -58,7 +58,7 @@ public abstract class BaseMediaChunk extends MediaChunk { DataSource dataSource, DataSpec dataSpec, Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, long startTimeUs, long endTimeUs, diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/Chunk.java b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/Chunk.java index c2d00123b7..c0ee8c5aaa 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/Chunk.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/Chunk.java @@ -44,11 +44,11 @@ public abstract class Chunk implements Loadable { /** The format of the track to which this chunk belongs. */ public final Format trackFormat; /** - * One of the {@link C} {@code SELECTION_REASON_*} constants if the chunk belongs to a track. - * {@link C#SELECTION_REASON_UNKNOWN} if the chunk does not belong to a track, or if the selection - * reason is unknown. + * One of the {@link C.SelectionReason selection reasons} if the chunk belongs to a track. {@link + * C#SELECTION_REASON_UNKNOWN} if the chunk does not belong to a track, or if the selection reason + * is unknown. */ - public final int trackSelectionReason; + @C.SelectionReason public final int trackSelectionReason; /** * Optional data associated with the selection of the track to which this chunk belongs. Null if * the chunk does not belong to a track, or if there is no associated track selection data. @@ -82,7 +82,7 @@ public abstract class Chunk implements Loadable { DataSpec dataSpec, @DataType int type, Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, long startTimeUs, long endTimeUs) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/ContainerMediaChunk.java b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/ContainerMediaChunk.java index cd4fcbee77..776b1803c8 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/ContainerMediaChunk.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/ContainerMediaChunk.java @@ -61,7 +61,7 @@ public class ContainerMediaChunk extends BaseMediaChunk { DataSource dataSource, DataSpec dataSpec, Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, long startTimeUs, long endTimeUs, diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/DataChunk.java b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/DataChunk.java index aa705bc101..a9b989c858 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/DataChunk.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/DataChunk.java @@ -51,7 +51,7 @@ public abstract class DataChunk extends Chunk { DataSpec dataSpec, @DataType int type, Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, @Nullable byte[] data) { super( diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/InitializationChunk.java b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/InitializationChunk.java index b9717a3d46..2b4ba05e36 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/InitializationChunk.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/InitializationChunk.java @@ -51,7 +51,7 @@ public final class InitializationChunk extends Chunk { DataSource dataSource, DataSpec dataSpec, Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, ChunkExtractor chunkExtractor) { super( diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/MediaChunk.java b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/MediaChunk.java index 7e4913db15..2780c0d3bf 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/MediaChunk.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/MediaChunk.java @@ -42,7 +42,7 @@ public abstract class MediaChunk extends Chunk { DataSource dataSource, DataSpec dataSpec, Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, long startTimeUs, long endTimeUs, diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/SingleSampleMediaChunk.java b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/SingleSampleMediaChunk.java index 1ded32b70c..f0d95cf74e 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/SingleSampleMediaChunk.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/SingleSampleMediaChunk.java @@ -52,7 +52,7 @@ public final class SingleSampleMediaChunk extends BaseMediaChunk { DataSource dataSource, DataSpec dataSpec, Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, long startTimeUs, long endTimeUs, diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.java index e5fd60a2b0..b147867854 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.java @@ -609,7 +609,7 @@ public class DefaultDashChunkSource implements DashChunkSource { RepresentationHolder representationHolder, DataSource dataSource, Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, Object trackSelectionData, @Nullable RangedUri initializationUri, RangedUri indexUri) { @@ -644,9 +644,9 @@ public class DefaultDashChunkSource implements DashChunkSource { protected Chunk newMediaChunk( RepresentationHolder representationHolder, DataSource dataSource, - int trackType, + @C.TrackType int trackType, Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, Object trackSelectionData, long firstSegmentNum, int maxSegmentCount, diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsChunkSource.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsChunkSource.java index 7c36d257b1..fa1dfb48ad 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsChunkSource.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsChunkSource.java @@ -875,7 +875,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; DataSource dataSource, DataSpec dataSpec, Format trackFormat, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, byte[] scratchSpace) { super( diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaChunk.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaChunk.java index 930d497e74..d074d269b6 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaChunk.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaChunk.java @@ -84,7 +84,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; HlsChunkSource.SegmentBaseHolder segmentBaseHolder, Uri playlistUrl, @Nullable List muxedCaptionFormats, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, boolean isMasterTimestampSource, TimestampAdjusterProvider timestampAdjusterProvider, @@ -280,7 +280,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; boolean initSegmentEncrypted, Uri playlistUrl, @Nullable List muxedCaptionFormats, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, long startTimeUs, long endTimeUs, diff --git a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/DefaultSsChunkSource.java b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/DefaultSsChunkSource.java index dd3ad568b4..f329cabfcf 100644 --- a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/DefaultSsChunkSource.java +++ b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/DefaultSsChunkSource.java @@ -318,7 +318,7 @@ public class DefaultSsChunkSource implements SsChunkSource { long chunkStartTimeUs, long chunkEndTimeUs, long chunkSeekTimeUs, - int trackSelectionReason, + @C.SelectionReason int trackSelectionReason, @Nullable Object trackSelectionData, ChunkExtractor chunkExtractor) { DataSpec dataSpec = new DataSpec(uri); diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaChunk.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaChunk.java index 23ea5630ae..aa989256ca 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaChunk.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaChunk.java @@ -46,9 +46,13 @@ public final class FakeMediaChunk extends MediaChunk { * @param trackFormat The {@link Format}. * @param startTimeUs The start time of the media, in microseconds. * @param endTimeUs The end time of the media, in microseconds. - * @param selectionReason The reason for selecting this format. + * @param selectionReason One of the {@link C.SelectionReason selection reasons}. */ - public FakeMediaChunk(Format trackFormat, long startTimeUs, long endTimeUs, int selectionReason) { + public FakeMediaChunk( + Format trackFormat, + long startTimeUs, + long endTimeUs, + @C.SelectionReason int selectionReason) { super( DATA_SOURCE, new DataSpec(Uri.EMPTY),