diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 51580c032c..28689c76a9 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -172,7 +172,81 @@
* Change the following `IntDefs` to `@Target(TYPE_USE)` only. This may break
the compilation of usages in Kotlin, which can be fixed by moving the
annotation to annotate the type (`Int`).
+ * `@AacAudioObjectType`
+ * `@Ac3Util.SyncFrameInfo.StreamType`
+ * `@AdLoadException.Type`
+ * `@AdtsExtractor.Flags`
+ * `@AmrExtractor.Flags`
+ * `@AspectRatioFrameLayout.ResizeMode`
+ * `@AudioFocusManager.PlayerCommand`
+ * `@AudioSink.SinkFormatSupport`
+ * `@BinarySearchSeeker.TimestampSearchResult.Type`
+ * `@BufferReplacementMode`
+ * `@C.BufferFlags`
+ * `@C.ColorRange`
+ * `@C.ColorSpace`
+ * `@C.ColorTransfer`
+ * `@C.CryptoMode`
+ * `@C.Encoding`
+ * `@C.PcmEncoding`
+ * `@C.Projection`
* `@C.SelectionReason`
+ * `@C.StereoMode`
+ * `@C.VideoOutputMode`
+ * `@CacheDataSource.Flags`
+ * `@CaptionStyleCompat.EdgeType`
+ * `@DataSpec.Flags`
+ * `@DataSpec.HttpMethods`
+ * `@DecoderDiscardReasons`
+ * `@DecoderReuseResult`
+ * `@DefaultAudioSink.OutputMode`
+ * `@DefaultDrmSessionManager.Mode`
+ * `@DefaultTrackSelector.SelectionEligibility`
+ * `@DefaultTsPayloadReaderFactory.Flags`
+ * `@EGLSurfaceTexture.SecureMode`
+ * `@EbmlProcessor.ElementType`
+ * `@ExoMediaDrm.KeyRequest.RequestType`
+ * `@ExtensionRendererMode`
+ * `@Extractor.ReadResult`
+ * `@FileTypes.Type`
+ * `@FlacExtractor.Flags` (in `com.google.android.exoplayer2.ext.flac`
+ package)
+ * `@FlacExtractor.Flags` (in
+ `com.google.android.exoplayer2.extractor.flac` package)
+ * `@FragmentedMp4Extractor.Flags`
+ * `@HlsMediaPlaylist.PlaylistType`
+ * `@HttpDataSourceException.Type`
+ * `@IllegalClippingException.Reason`
+ * `@IllegalMergeException.Reason`
+ * `@LoadErrorHandlingPolicy.FallbackType`
+ * `@MatroskaExtractor.Flags`
+ * `@Mp3Extractor.Flags`
+ * `@Mp4Extractor.Flags`
+ * `@NotificationUtil.Importance`
+ * `@PlaybackException.FieldNumber`
+ * `@PlayerNotificationManager.Priority`
+ * `@PlayerNotificationManager.Visibility`
+ * `@PlayerView.ShowBuffering`
+ * `@Renderer.State`
+ * `@RendererCapabilities.AdaptiveSupport`
+ * `@RendererCapabilities.Capabilities`
+ * `@RendererCapabilities.DecoderSupport`
+ * `@RendererCapabilities.FormatSupport`
+ * `@RendererCapabilities.HardwareAccelerationSupport`
+ * `@RendererCapabilities.TunnelingSupport`
+ * `@SampleStream.ReadDataResult`
+ * `@SampleStream.ReadFlags`
+ * `@StyledPlayerView.ShowBuffering`
+ * `@SubtitleView.ViewType`
+ * `@TextAnnotation.Position`
+ * `@TextEmphasisSpan.MarkFill`
+ * `@TextEmphasisSpan.MarkShape`
+ * `@Track.Transformation`
+ * `@TrackOutput.SampleDataPart`
+ * `@Transformer.ProgressState`
+ * `@TsExtractor.Mode`
+ * `@TsPayloadReader.Flags`
+ * `@WebvttCssStyle.FontSizeUnit`
### 2.16.1 (2021-11-18)
diff --git a/extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacExtractor.java b/extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacExtractor.java
index 23cb9f3bbd..0c51811e8e 100644
--- a/extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacExtractor.java
+++ b/extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacExtractor.java
@@ -16,6 +16,7 @@
package com.google.android.exoplayer2.ext.flac;
import static com.google.android.exoplayer2.util.Util.getPcmEncoding;
+import static java.lang.annotation.ElementType.TYPE_USE;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -40,6 +41,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.nio.ByteBuffer;
import org.checkerframework.checker.nullness.qual.EnsuresNonNull;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
@@ -61,6 +63,7 @@ public final class FlacExtractor implements Extractor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {FLAG_DISABLE_ID3_METADATA})
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 ecc3f9c48b..0c476e17a9 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
@@ -163,6 +163,7 @@ public final class C {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({CRYPTO_MODE_UNENCRYPTED, CRYPTO_MODE_AES_CTR, CRYPTO_MODE_AES_CBC})
public @interface CryptoMode {}
/** @see MediaCodec#CRYPTO_MODE_UNENCRYPTED */
@@ -188,6 +189,7 @@ public final class C {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
Format.NO_VALUE,
ENCODING_INVALID,
@@ -222,6 +224,7 @@ public final class C {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
Format.NO_VALUE,
ENCODING_INVALID,
@@ -478,6 +481,7 @@ public final class C {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
@@ -508,6 +512,7 @@ public final class C {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(value = {VIDEO_OUTPUT_MODE_NONE, VIDEO_OUTPUT_MODE_YUV, VIDEO_OUTPUT_MODE_SURFACE_YUV})
public @interface VideoOutputMode {}
/** Video decoder output mode is not set. */
@@ -636,6 +641,7 @@ public final class C {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
open = true,
value = {
@@ -828,6 +834,7 @@ public final class C {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
Format.NO_VALUE,
STEREO_MODE_MONO,
@@ -854,6 +861,7 @@ public final class C {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({Format.NO_VALUE, COLOR_SPACE_BT709, COLOR_SPACE_BT601, COLOR_SPACE_BT2020})
public @interface ColorSpace {}
/** @see MediaFormat#COLOR_STANDARD_BT709 */
@@ -869,6 +877,7 @@ public final class C {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({Format.NO_VALUE, COLOR_TRANSFER_SDR, COLOR_TRANSFER_ST2084, COLOR_TRANSFER_HLG})
public @interface ColorTransfer {}
/** @see MediaFormat#COLOR_TRANSFER_SDR_VIDEO */
@@ -884,6 +893,7 @@ public final class C {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({Format.NO_VALUE, COLOR_RANGE_LIMITED, COLOR_RANGE_FULL})
public @interface ColorRange {}
/** @see MediaFormat#COLOR_RANGE_LIMITED */
@@ -894,6 +904,7 @@ public final class C {
/** Video projection types. */
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
Format.NO_VALUE,
PROJECTION_RECTANGULAR,
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/PlaybackException.java b/library/common/src/main/java/com/google/android/exoplayer2/PlaybackException.java
index 0a3b012d8f..edcb9dc448 100644
--- a/library/common/src/main/java/com/google/android/exoplayer2/PlaybackException.java
+++ b/library/common/src/main/java/com/google/android/exoplayer2/PlaybackException.java
@@ -406,6 +406,7 @@ public class PlaybackException extends Exception implements Bundleable {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
open = true,
value = {
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/text/span/TextAnnotation.java b/library/common/src/main/java/com/google/android/exoplayer2/text/span/TextAnnotation.java
index 6d86aac161..81eeff99f4 100644
--- a/library/common/src/main/java/com/google/android/exoplayer2/text/span/TextAnnotation.java
+++ b/library/common/src/main/java/com/google/android/exoplayer2/text/span/TextAnnotation.java
@@ -15,11 +15,13 @@
*/
package com.google.android.exoplayer2.text.span;
+import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import androidx.annotation.IntDef;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
/** Properties of a text annotation (i.e. ruby, text emphasis marks). */
public final class TextAnnotation {
@@ -55,6 +57,7 @@ public final class TextAnnotation {
*/
@Documented
@Retention(SOURCE)
+ @Target(TYPE_USE)
@IntDef({POSITION_UNKNOWN, POSITION_BEFORE, POSITION_AFTER})
public @interface Position {}
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/text/span/TextEmphasisSpan.java b/library/common/src/main/java/com/google/android/exoplayer2/text/span/TextEmphasisSpan.java
index ce79cf6134..a273d74c1c 100644
--- a/library/common/src/main/java/com/google/android/exoplayer2/text/span/TextEmphasisSpan.java
+++ b/library/common/src/main/java/com/google/android/exoplayer2/text/span/TextEmphasisSpan.java
@@ -15,11 +15,13 @@
*/
package com.google.android.exoplayer2.text.span;
+import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import androidx.annotation.IntDef;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
/**
* A styling span for text emphasis marks.
@@ -48,6 +50,7 @@ public final class TextEmphasisSpan implements LanguageFeatureSpan {
*/
@Documented
@Retention(SOURCE)
+ @Target(TYPE_USE)
@IntDef({MARK_SHAPE_NONE, MARK_SHAPE_CIRCLE, MARK_SHAPE_DOT, MARK_SHAPE_SESAME})
public @interface MarkShape {}
@@ -69,6 +72,7 @@ public final class TextEmphasisSpan implements LanguageFeatureSpan {
*/
@Documented
@Retention(SOURCE)
+ @Target(TYPE_USE)
@IntDef({MARK_FILL_UNKNOWN, MARK_FILL_FILLED, MARK_FILL_OPEN})
public @interface MarkFill {}
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/util/EGLSurfaceTexture.java b/library/common/src/main/java/com/google/android/exoplayer2/util/EGLSurfaceTexture.java
index b4b7ec1a96..011a48cd8c 100644
--- a/library/common/src/main/java/com/google/android/exoplayer2/util/EGLSurfaceTexture.java
+++ b/library/common/src/main/java/com/google/android/exoplayer2/util/EGLSurfaceTexture.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.util;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.graphics.SurfaceTexture;
import android.opengl.EGL14;
import android.opengl.EGLConfig;
@@ -29,6 +31,7 @@ import androidx.annotation.RequiresApi;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/** Generates a {@link SurfaceTexture} using EGL/GLES functions. */
@RequiresApi(17)
@@ -46,6 +49,7 @@ public final class EGLSurfaceTexture implements SurfaceTexture.OnFrameAvailableL
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({SECURE_MODE_NONE, SECURE_MODE_SURFACELESS_CONTEXT, SECURE_MODE_PROTECTED_PBUFFER})
public @interface SecureMode {}
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/util/FileTypes.java b/library/common/src/main/java/com/google/android/exoplayer2/util/FileTypes.java
index 53396e135b..6bf5d01099 100644
--- a/library/common/src/main/java/com/google/android/exoplayer2/util/FileTypes.java
+++ b/library/common/src/main/java/com/google/android/exoplayer2/util/FileTypes.java
@@ -16,6 +16,7 @@
package com.google.android.exoplayer2.util;
import static com.google.android.exoplayer2.util.MimeTypes.normalizeMimeType;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.net.Uri;
import androidx.annotation.IntDef;
@@ -24,6 +25,7 @@ import androidx.annotation.VisibleForTesting;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.List;
import java.util.Map;
@@ -37,6 +39,7 @@ public final class FileTypes {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
UNKNOWN, AC3, AC4, ADTS, AMR, FLAC, FLV, MATROSKA, MP3, MP4, OGG, PS, TS, WAV, WEBVTT, JPEG
})
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/util/NotificationUtil.java b/library/common/src/main/java/com/google/android/exoplayer2/util/NotificationUtil.java
index 9f6274afd6..2d1211b93a 100644
--- a/library/common/src/main/java/com/google/android/exoplayer2/util/NotificationUtil.java
+++ b/library/common/src/main/java/com/google/android/exoplayer2/util/NotificationUtil.java
@@ -16,6 +16,7 @@
package com.google.android.exoplayer2.util;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.annotation.SuppressLint;
import android.app.Notification;
@@ -29,6 +30,7 @@ import androidx.annotation.StringRes;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/** Utility methods for displaying {@link Notification Notifications}. */
@SuppressLint("InlinedApi")
@@ -41,6 +43,7 @@ public final class NotificationUtil {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
IMPORTANCE_UNSPECIFIED,
IMPORTANCE_NONE,
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/AudioFocusManager.java b/library/core/src/main/java/com/google/android/exoplayer2/AudioFocusManager.java
index 00d09cb562..0510193b06 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/AudioFocusManager.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/AudioFocusManager.java
@@ -62,6 +62,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
PLAYER_COMMAND_DO_NOT_PLAY,
PLAYER_COMMAND_WAIT_FOR_CALLBACK,
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/DefaultRenderersFactory.java b/library/core/src/main/java/com/google/android/exoplayer2/DefaultRenderersFactory.java
index 0d1c126dc5..bef12b5e2c 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/DefaultRenderersFactory.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/DefaultRenderersFactory.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.content.Context;
import android.media.MediaCodec;
import android.media.PlaybackParams;
@@ -42,6 +44,7 @@ import com.google.android.exoplayer2.video.spherical.CameraMotionRenderer;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
@@ -60,6 +63,7 @@ public class DefaultRenderersFactory implements RenderersFactory {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({EXTENSION_RENDERER_MODE_OFF, EXTENSION_RENDERER_MODE_ON, EXTENSION_RENDERER_MODE_PREFER})
public @interface ExtensionRendererMode {}
/** Do not allow use of extension renderers. */
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/Renderer.java b/library/core/src/main/java/com/google/android/exoplayer2/Renderer.java
index efefe4c61c..8b7dc9c710 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/Renderer.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/Renderer.java
@@ -15,11 +15,12 @@
*/
package com.google.android.exoplayer2;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.media.MediaCodec;
import android.view.Surface;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
-import com.google.android.exoplayer2.PlayerMessage.Target;
import com.google.android.exoplayer2.analytics.PlayerId;
import com.google.android.exoplayer2.audio.AudioAttributes;
import com.google.android.exoplayer2.audio.AuxEffectInfo;
@@ -33,6 +34,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/**
* Renders media read from a {@link SampleStream}.
@@ -86,6 +88,7 @@ public interface Renderer extends PlayerMessage.Target {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
open = true,
value = {
@@ -104,8 +107,9 @@ public interface Renderer extends PlayerMessage.Target {
public @interface MessageType {}
/**
* The type of a message that can be passed to a video renderer via {@link
- * ExoPlayer#createMessage(Target)}. The message payload is normally a {@link Surface}, however
- * some video renderers may accept other outputs (e.g., {@link VideoDecoderOutputBufferRenderer}).
+ * ExoPlayer#createMessage(PlayerMessage.Target)}. The message payload is normally a {@link
+ * Surface}, however some video renderers may accept other outputs (e.g., {@link
+ * VideoDecoderOutputBufferRenderer}).
*
*
If the receiving renderer does not support the payload type as an output, then it will clear
* any existing output that it has.
@@ -113,15 +117,15 @@ public interface Renderer extends PlayerMessage.Target {
int MSG_SET_VIDEO_OUTPUT = 1;
/**
* A type of a message that can be passed to an audio renderer via {@link
- * ExoPlayer#createMessage(Target)}. The message payload should be a {@link Float} with 0 being
- * silence and 1 being unity gain.
+ * ExoPlayer#createMessage(PlayerMessage.Target)}. The message payload should be a {@link Float}
+ * with 0 being silence and 1 being unity gain.
*/
int MSG_SET_VOLUME = 2;
/**
* A type of a message that can be passed to an audio renderer via {@link
- * ExoPlayer#createMessage(Target)}. The message payload should be an {@link AudioAttributes}
- * instance that will configure the underlying audio track. If not set, the default audio
- * attributes will be used. They are suitable for general media playback.
+ * ExoPlayer#createMessage(PlayerMessage.Target)}. The message payload should be an {@link
+ * AudioAttributes} instance that will configure the underlying audio track. If not set, the
+ * default audio attributes will be used. They are suitable for general media playback.
*
*
Setting the audio attributes during playback may introduce a short gap in audio output as
* the audio track is recreated. A new audio session id will also be generated.
@@ -140,8 +144,8 @@ public interface Renderer extends PlayerMessage.Target {
int MSG_SET_AUDIO_ATTRIBUTES = 3;
/**
* The type of a message that can be passed to a {@link MediaCodec}-based video renderer via
- * {@link ExoPlayer#createMessage(Target)}. The message payload should be one of the integer
- * scaling modes in {@link C.VideoScalingMode}.
+ * {@link ExoPlayer#createMessage(PlayerMessage.Target)}. The message payload should be one of the
+ * integer scaling modes in {@link C.VideoScalingMode}.
*
*
Note that the scaling mode only applies if the {@link Surface} targeted by the renderer is
* owned by a {@link android.view.SurfaceView}.
@@ -149,45 +153,46 @@ public interface Renderer extends PlayerMessage.Target {
int MSG_SET_SCALING_MODE = 4;
/**
* The type of a message that can be passed to a video renderer via {@link
- * ExoPlayer#createMessage(Target)}. The message payload should be one of the integer strategy
- * constants in {@link C.VideoChangeFrameRateStrategy}.
+ * ExoPlayer#createMessage(PlayerMessage.Target)}. The message payload should be one of the
+ * integer strategy constants in {@link C.VideoChangeFrameRateStrategy}.
*/
int MSG_SET_CHANGE_FRAME_RATE_STRATEGY = 5;
/**
* A type of a message that can be passed to an audio renderer via {@link
- * ExoPlayer#createMessage(Target)}. The message payload should be an {@link AuxEffectInfo}
- * instance representing an auxiliary audio effect for the underlying audio track.
+ * ExoPlayer#createMessage(PlayerMessage.Target)}. The message payload should be an {@link
+ * AuxEffectInfo} instance representing an auxiliary audio effect for the underlying audio track.
*/
int MSG_SET_AUX_EFFECT_INFO = 6;
/**
* The type of a message that can be passed to a video renderer via {@link
- * ExoPlayer#createMessage(Target)}. The message payload should be a {@link
+ * ExoPlayer#createMessage(PlayerMessage.Target)}. The message payload should be a {@link
* VideoFrameMetadataListener} instance, or null.
*/
int MSG_SET_VIDEO_FRAME_METADATA_LISTENER = 7;
/**
* The type of a message that can be passed to a camera motion renderer via {@link
- * ExoPlayer#createMessage(Target)}. The message payload should be a {@link CameraMotionListener}
- * instance, or null.
+ * ExoPlayer#createMessage(PlayerMessage.Target)}. The message payload should be a {@link
+ * CameraMotionListener} instance, or null.
*/
int MSG_SET_CAMERA_MOTION_LISTENER = 8;
/**
* The type of a message that can be passed to an audio renderer via {@link
- * ExoPlayer#createMessage(Target)}. The message payload should be a {@link Boolean} instance
- * telling whether to enable or disable skipping silences in the audio stream.
+ * ExoPlayer#createMessage(PlayerMessage.Target)}. The message payload should be a {@link Boolean}
+ * instance telling whether to enable or disable skipping silences in the audio stream.
*/
int MSG_SET_SKIP_SILENCE_ENABLED = 9;
/**
* The type of a message that can be passed to audio and video renderers via {@link
- * ExoPlayer#createMessage(Target)}. The message payload should be an {@link Integer} instance
- * representing the audio session ID that will be attached to the underlying audio track. Video
- * renderers that support tunneling will use the audio session ID when tunneling is enabled.
+ * ExoPlayer#createMessage(PlayerMessage.Target)}. The message payload should be an {@link
+ * Integer} instance representing the audio session ID that will be attached to the underlying
+ * audio track. Video renderers that support tunneling will use the audio session ID when
+ * tunneling is enabled.
*/
int MSG_SET_AUDIO_SESSION_ID = 10;
/**
* The type of a message that can be passed to a {@link Renderer} via {@link
- * ExoPlayer#createMessage(Target)}, to inform the renderer that it can schedule waking up another
- * component.
+ * ExoPlayer#createMessage(PlayerMessage.Target)}, to inform the renderer that it can schedule
+ * waking up another component.
*
*
The message payload must be a {@link WakeupListener} instance.
*/
@@ -204,6 +209,7 @@ public interface Renderer extends PlayerMessage.Target {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({STATE_DISABLED, STATE_ENABLED, STATE_STARTED})
@interface State {}
/**
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/RendererCapabilities.java b/library/core/src/main/java/com/google/android/exoplayer2/RendererCapabilities.java
index 79938f6946..1b6d6d03b6 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/RendererCapabilities.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/RendererCapabilities.java
@@ -15,11 +15,14 @@
*/
package com.google.android.exoplayer2;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.annotation.SuppressLint;
import androidx.annotation.IntDef;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/** Defines the capabilities of a {@link Renderer}. */
public interface RendererCapabilities {
@@ -28,6 +31,7 @@ public interface RendererCapabilities {
@SuppressWarnings("deprecation")
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
FORMAT_HANDLED,
FORMAT_EXCEEDS_CAPABILITIES,
@@ -56,6 +60,7 @@ public interface RendererCapabilities {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({ADAPTIVE_SEAMLESS, ADAPTIVE_NOT_SEAMLESS, ADAPTIVE_NOT_SUPPORTED})
@interface AdaptiveSupport {}
@@ -77,6 +82,7 @@ public interface RendererCapabilities {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({TUNNELING_SUPPORTED, TUNNELING_NOT_SUPPORTED})
@interface TunnelingSupport {}
@@ -95,6 +101,7 @@ public interface RendererCapabilities {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
HARDWARE_ACCELERATION_SUPPORTED,
HARDWARE_ACCELERATION_NOT_SUPPORTED,
@@ -115,6 +122,7 @@ public interface RendererCapabilities {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
DECODER_SUPPORT_PRIMARY,
DECODER_SUPPORT_FALLBACK,
@@ -163,6 +171,7 @@ public interface RendererCapabilities {
@Documented
@Retention(RetentionPolicy.SOURCE)
// Intentionally empty to prevent assignment or comparison with individual flags without masking.
+ @Target(TYPE_USE)
@IntDef({})
@interface Capabilities {}
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioSink.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioSink.java
index 2fa6c708aa..e7ff1b0ec6 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioSink.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioSink.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.audio;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.media.AudioTrack;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -28,6 +30,7 @@ import com.google.android.exoplayer2.analytics.PlayerId;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.nio.ByteBuffer;
/**
@@ -256,6 +259,7 @@ public interface AudioSink {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
SINK_FORMAT_SUPPORTED_DIRECTLY,
SINK_FORMAT_SUPPORTED_WITH_TRANSCODING,
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java
index 3e6c7d1c7b..8807031698 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java
@@ -21,6 +21,7 @@ import static com.google.android.exoplayer2.util.Util.constrainValue;
import static com.google.common.base.MoreObjects.firstNonNull;
import static java.lang.Math.max;
import static java.lang.Math.min;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.annotation.SuppressLint;
import android.media.AudioFormat;
@@ -50,6 +51,7 @@ import com.google.errorprone.annotations.InlineMeValidationDisabled;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayDeque;
@@ -382,6 +384,7 @@ public final class DefaultAudioSink implements AudioSink {
/** Audio offload mode configuration. */
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
OFFLOAD_MODE_DISABLED,
OFFLOAD_MODE_ENABLED_GAPLESS_REQUIRED,
@@ -419,6 +422,7 @@ public final class DefaultAudioSink implements AudioSink {
/** Output mode of the audio sink. */
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({OUTPUT_MODE_PCM, OUTPUT_MODE_OFFLOAD, OUTPUT_MODE_PASSTHROUGH})
public @interface OutputMode {}
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/decoder/DecoderReuseEvaluation.java b/library/core/src/main/java/com/google/android/exoplayer2/decoder/DecoderReuseEvaluation.java
index a23c92ec65..560dfb78a7 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/decoder/DecoderReuseEvaluation.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/decoder/DecoderReuseEvaluation.java
@@ -18,6 +18,7 @@ package com.google.android.exoplayer2.decoder;
import static com.google.android.exoplayer2.util.Assertions.checkArgument;
import static com.google.android.exoplayer2.util.Assertions.checkNotEmpty;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
+import static java.lang.annotation.ElementType.TYPE_USE;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -26,6 +27,7 @@ import com.google.android.exoplayer2.video.ColorInfo;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/**
* The result of an evaluation to determine whether a decoder can be reused for a new input format.
@@ -35,6 +37,7 @@ public final class DecoderReuseEvaluation {
/** Possible outcomes of the evaluation. */
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
REUSE_RESULT_NO,
REUSE_RESULT_YES_WITH_FLUSH,
@@ -57,6 +60,7 @@ public final class DecoderReuseEvaluation {
/** Possible reasons why reuse is not possible. */
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java
index 3fe2636d09..4c50748e89 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java
@@ -19,6 +19,7 @@ import static com.google.android.exoplayer2.util.Assertions.checkArgument;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import static com.google.android.exoplayer2.util.Assertions.checkState;
import static com.google.android.exoplayer2.util.Assertions.checkStateNotNull;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.annotation.SuppressLint;
import android.media.ResourceBusyException;
@@ -47,6 +48,7 @@ import com.google.common.collect.Sets;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -260,6 +262,7 @@ public class DefaultDrmSessionManager implements DrmSessionManager {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({MODE_PLAYBACK, MODE_QUERY, MODE_DOWNLOAD, MODE_RELEASE})
public @interface Mode {}
/**
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/ExoMediaDrm.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/ExoMediaDrm.java
index 722a010150..45b7885569 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/drm/ExoMediaDrm.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/ExoMediaDrm.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.drm;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.media.DeniedByServerException;
import android.media.MediaCryptoException;
import android.media.MediaDrm;
@@ -32,6 +34,7 @@ import com.google.android.exoplayer2.drm.DrmInitData.SchemeData;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -226,6 +229,7 @@ public interface ExoMediaDrm {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
REQUEST_TYPE_UNKNOWN,
REQUEST_TYPE_INITIAL,
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaSource.java
index ab62cca0c5..b23eb29c2a 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaSource.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaSource.java
@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.source;
import static java.lang.Math.max;
import static java.lang.Math.min;
+import static java.lang.annotation.ElementType.TYPE_USE;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -31,6 +32,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.ArrayList;
/**
@@ -48,6 +50,7 @@ public final class ClippingMediaSource extends CompositeMediaSource {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({REASON_INVALID_PERIOD_COUNT, REASON_NOT_SEEKABLE_TO_START, REASON_START_EXCEEDS_END})
public @interface Reason {}
/** The wrapped source doesn't consist of a single period. */
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java
index f4d44b9540..601ab327cd 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java
@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.source;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import static java.lang.Math.min;
+import static java.lang.annotation.ElementType.TYPE_USE;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -31,6 +32,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -50,6 +52,7 @@ public final class MergingMediaSource extends CompositeMediaSource {
/** The reason the merge failed. One of {@link #REASON_PERIOD_COUNT_MISMATCH}. */
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({REASON_PERIOD_COUNT_MISMATCH})
public @interface Reason {}
/** The sources have different period counts. */
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/SampleStream.java b/library/core/src/main/java/com/google/android/exoplayer2/source/SampleStream.java
index a5a05951d1..ff40bd1c34 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/source/SampleStream.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/source/SampleStream.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.source;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.FormatHolder;
@@ -24,6 +26,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/** A stream of media samples (and associated format information). */
public interface SampleStream {
@@ -34,6 +37,7 @@ public interface SampleStream {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {FLAG_PEEK, FLAG_REQUIRE_FORMAT, FLAG_OMIT_SAMPLE_DATA})
@@ -67,6 +71,7 @@ public interface SampleStream {
/** Return values of {@link #readData}. */
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({C.RESULT_NOTHING_READ, C.RESULT_FORMAT_READ, C.RESULT_BUFFER_READ})
@interface ReadDataResult {}
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java
index 4667cbea05..ae35402b54 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java
@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.source.ads;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import static com.google.android.exoplayer2.util.Assertions.checkState;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.net.Uri;
import android.os.Handler;
@@ -45,6 +46,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -71,6 +73,7 @@ public final class AdsMediaSource extends CompositeMediaSource {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({TYPE_AD, TYPE_AD_GROUP, TYPE_ALL_ADS, TYPE_UNEXPECTED})
public @interface Type {}
/** Type for when an ad failed to load. The ad will be skipped. */
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java b/library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java
index ef0804feb0..97bc9decde 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java
@@ -1420,6 +1420,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({SELECTION_ELIGIBILITY_NO, SELECTION_ELIGIBILITY_FIXED, SELECTION_ELIGIBILITY_ADAPTIVE})
protected @interface SelectionEligibility {}
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/LoadErrorHandlingPolicy.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/LoadErrorHandlingPolicy.java
index 0815f9ed5f..67d6109249 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/LoadErrorHandlingPolicy.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/LoadErrorHandlingPolicy.java
@@ -16,6 +16,7 @@
package com.google.android.exoplayer2.upstream;
import static com.google.android.exoplayer2.util.Assertions.checkArgument;
+import static java.lang.annotation.ElementType.TYPE_USE;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -28,6 +29,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/**
* A policy that defines how load errors are handled.
@@ -52,6 +54,7 @@ public interface LoadErrorHandlingPolicy {
/** Fallback type. One of {@link #FALLBACK_TYPE_LOCATION} or {@link #FALLBACK_TYPE_TRACK}. */
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({FALLBACK_TYPE_LOCATION, FALLBACK_TYPE_TRACK})
@interface FallbackType {}
diff --git a/library/datasource/src/main/java/com/google/android/exoplayer2/upstream/DataSpec.java b/library/datasource/src/main/java/com/google/android/exoplayer2/upstream/DataSpec.java
index a117a2e3c5..46fd495995 100644
--- a/library/datasource/src/main/java/com/google/android/exoplayer2/upstream/DataSpec.java
+++ b/library/datasource/src/main/java/com/google/android/exoplayer2/upstream/DataSpec.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.upstream;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.net.Uri;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -24,6 +26,7 @@ import com.google.android.exoplayer2.util.Assertions;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -232,6 +235,7 @@ public final class DataSpec {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
@@ -274,6 +278,7 @@ public final class DataSpec {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({HTTP_METHOD_GET, HTTP_METHOD_POST, HTTP_METHOD_HEAD})
public @interface HttpMethod {}
/** HTTP GET method. */
diff --git a/library/datasource/src/main/java/com/google/android/exoplayer2/upstream/HttpDataSource.java b/library/datasource/src/main/java/com/google/android/exoplayer2/upstream/HttpDataSource.java
index e76e6f0414..f7c0847a10 100644
--- a/library/datasource/src/main/java/com/google/android/exoplayer2/upstream/HttpDataSource.java
+++ b/library/datasource/src/main/java/com/google/android/exoplayer2/upstream/HttpDataSource.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.upstream;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.text.TextUtils;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -27,6 +29,7 @@ import java.io.InterruptedIOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.net.SocketTimeoutException;
import java.util.Collections;
import java.util.HashMap;
@@ -188,6 +191,7 @@ public interface HttpDataSource extends DataSource {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({TYPE_OPEN, TYPE_READ, TYPE_CLOSE})
public @interface Type {}
diff --git a/library/datasource/src/main/java/com/google/android/exoplayer2/upstream/cache/CacheDataSource.java b/library/datasource/src/main/java/com/google/android/exoplayer2/upstream/cache/CacheDataSource.java
index 338d9cd2ac..c18175e6d3 100644
--- a/library/datasource/src/main/java/com/google/android/exoplayer2/upstream/cache/CacheDataSource.java
+++ b/library/datasource/src/main/java/com/google/android/exoplayer2/upstream/cache/CacheDataSource.java
@@ -18,6 +18,7 @@ package com.google.android.exoplayer2.upstream.cache;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import static com.google.android.exoplayer2.util.Util.castNonNull;
import static java.lang.Math.min;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.net.Uri;
import androidx.annotation.IntDef;
@@ -41,6 +42,7 @@ import java.io.InterruptedIOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -328,6 +330,7 @@ public final class CacheDataSource implements DataSource {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/DecoderInputBuffer.java b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/DecoderInputBuffer.java
index 5ddfb9cc81..4ffa262fa7 100644
--- a/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/DecoderInputBuffer.java
+++ b/library/decoder/src/main/java/com/google/android/exoplayer2/decoder/DecoderInputBuffer.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.decoder;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C;
@@ -23,6 +25,7 @@ import com.google.android.exoplayer2.Format;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.nio.ByteBuffer;
import org.checkerframework.checker.nullness.qual.EnsuresNonNull;
@@ -66,6 +69,7 @@ public class DecoderInputBuffer extends Buffer {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
BUFFER_REPLACEMENT_MODE_DISABLED,
BUFFER_REPLACEMENT_MODE_NORMAL,
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java
index 9fe10f1f86..7010f1c3bf 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.audio;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.ParserException;
@@ -23,6 +25,7 @@ import com.google.android.exoplayer2.util.ParsableBitArray;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/** Utility methods for handling AAC audio streams. */
public final class AacUtil {
@@ -157,6 +160,7 @@ public final class AacUtil {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
AUDIO_OBJECT_TYPE_AAC_LC,
AUDIO_OBJECT_TYPE_AAC_SBR,
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java
index f3dfb20f9b..be79879dba 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.audio;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C;
@@ -28,6 +30,7 @@ import com.google.android.exoplayer2.util.Util;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.nio.ByteBuffer;
/**
@@ -45,6 +48,7 @@ public final class Ac3Util {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({STREAM_TYPE_UNDEFINED, STREAM_TYPE_TYPE0, STREAM_TYPE_TYPE1, STREAM_TYPE_TYPE2})
public @interface StreamType {}
/** Undefined AC3 stream type. */
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/BinarySearchSeeker.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/BinarySearchSeeker.java
index b5eb092dfb..8ebe3b84fb 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/BinarySearchSeeker.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/BinarySearchSeeker.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.extractor;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C;
@@ -24,6 +26,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/**
* A seeker that supports seeking within a stream by searching for the target frame using binary
@@ -405,6 +408,7 @@ public abstract class BinarySearchSeeker {
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
TYPE_TARGET_TIMESTAMP_FOUND,
TYPE_POSITION_OVERESTIMATED,
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/Extractor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/Extractor.java
index 21fb7f1269..b0791bb981 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/Extractor.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/Extractor.java
@@ -15,12 +15,15 @@
*/
package com.google.android.exoplayer2.extractor;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import com.google.android.exoplayer2.C;
import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/** Extracts media data from a container format. */
public interface Extractor {
@@ -49,6 +52,7 @@ public interface Extractor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(value = {RESULT_CONTINUE, RESULT_SEEK, RESULT_END_OF_INPUT})
@interface ReadResult {}
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/TrackOutput.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/TrackOutput.java
index 1a58d232f0..aa505388b4 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/TrackOutput.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/TrackOutput.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.extractor;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C;
@@ -26,6 +28,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.Arrays;
/** Receives track level data extracted by an {@link Extractor}. */
@@ -93,6 +96,7 @@ public interface TrackOutput {
/** Defines the part of the sample data to which a call to {@link #sampleData} corresponds. */
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({SAMPLE_DATA_PART_MAIN, SAMPLE_DATA_PART_ENCRYPTION, SAMPLE_DATA_PART_SUPPLEMENTAL})
@interface SampleDataPart {}
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/amr/AmrExtractor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/amr/AmrExtractor.java
index b368874f56..8cd21b0182 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/amr/AmrExtractor.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/amr/AmrExtractor.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.extractor.amr;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format;
@@ -37,6 +39,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.Arrays;
import org.checkerframework.checker.nullness.qual.EnsuresNonNull;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
@@ -60,6 +63,7 @@ public final class AmrExtractor implements Extractor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {FLAG_ENABLE_CONSTANT_BITRATE_SEEKING, FLAG_ENABLE_CONSTANT_BITRATE_SEEKING_ALWAYS})
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/flac/FlacExtractor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/flac/FlacExtractor.java
index 5182a8a073..02d40451d8 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/flac/FlacExtractor.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/flac/FlacExtractor.java
@@ -65,6 +65,7 @@ public final class FlacExtractor implements Extractor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {FLAG_DISABLE_ID3_METADATA})
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mkv/EbmlProcessor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mkv/EbmlProcessor.java
index 458b2e87e3..5c377becb1 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mkv/EbmlProcessor.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mkv/EbmlProcessor.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.extractor.mkv;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import com.google.android.exoplayer2.ParserException;
import com.google.android.exoplayer2.extractor.ExtractorInput;
@@ -22,6 +24,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/** Defines EBML element IDs/types and processes events. */
public interface EbmlProcessor {
@@ -33,6 +36,7 @@ public interface EbmlProcessor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
ELEMENT_TYPE_UNKNOWN,
ELEMENT_TYPE_MASTER,
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mkv/MatroskaExtractor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mkv/MatroskaExtractor.java
index 3659f2270e..ccc017c29c 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mkv/MatroskaExtractor.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mkv/MatroskaExtractor.java
@@ -21,6 +21,7 @@ import static com.google.android.exoplayer2.util.Assertions.checkState;
import static com.google.android.exoplayer2.util.Assertions.checkStateNotNull;
import static java.lang.Math.max;
import static java.lang.Math.min;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.util.Pair;
import android.util.SparseArray;
@@ -58,6 +59,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
@@ -85,6 +87,7 @@ public class MatroskaExtractor implements Extractor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {FLAG_DISABLE_SEEK_FOR_CUES})
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp3/Mp3Extractor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp3/Mp3Extractor.java
index d70b6c2f90..fb62350aa2 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp3/Mp3Extractor.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp3/Mp3Extractor.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.extractor.mp3;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C;
@@ -46,6 +48,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import org.checkerframework.checker.nullness.qual.EnsuresNonNull;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
import org.checkerframework.checker.nullness.qual.RequiresNonNull;
@@ -63,6 +66,7 @@ public final class Mp3Extractor implements Extractor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor.java
index df05019f9b..0c976bf55b 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor.java
@@ -21,6 +21,7 @@ import static com.google.android.exoplayer2.util.Assertions.checkState;
import static com.google.android.exoplayer2.util.Util.castNonNull;
import static com.google.android.exoplayer2.util.Util.nullSafeArrayCopy;
import static java.lang.Math.max;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.util.Pair;
import android.util.SparseArray;
@@ -56,6 +57,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
@@ -78,6 +80,7 @@ public class FragmentedMp4Extractor implements Extractor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Mp4Extractor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Mp4Extractor.java
index 3b863e1a8d..4731569fca 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Mp4Extractor.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Mp4Extractor.java
@@ -74,6 +74,7 @@ public final class Mp4Extractor implements Extractor, SeekMap {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Track.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Track.java
index 68eb7b4674..eb0427a36a 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Track.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Track.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.extractor.mp4;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C;
@@ -22,6 +24,7 @@ import com.google.android.exoplayer2.Format;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/** Encapsulates information describing an MP4 track. */
public final class Track {
@@ -32,6 +35,7 @@ public final class Track {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({TRANSFORMATION_NONE, TRANSFORMATION_CEA608_CDAT})
public @interface Transformation {}
/** A no-op sample transformation. */
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsExtractor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsExtractor.java
index 6ebf9d31b5..827a72c1b9 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsExtractor.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsExtractor.java
@@ -18,6 +18,7 @@ package com.google.android.exoplayer2.extractor.ts;
import static com.google.android.exoplayer2.extractor.ts.TsPayloadReader.FLAG_DATA_ALIGNMENT_INDICATOR;
import static com.google.android.exoplayer2.metadata.id3.Id3Decoder.ID3_HEADER_LENGTH;
import static com.google.android.exoplayer2.metadata.id3.Id3Decoder.ID3_TAG;
+import static java.lang.annotation.ElementType.TYPE_USE;
import androidx.annotation.IntDef;
import com.google.android.exoplayer2.C;
@@ -40,6 +41,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
import org.checkerframework.checker.nullness.qual.RequiresNonNull;
@@ -56,6 +58,7 @@ public final class AdtsExtractor implements Extractor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {FLAG_ENABLE_CONSTANT_BITRATE_SEEKING, FLAG_ENABLE_CONSTANT_BITRATE_SEEKING_ALWAYS})
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/DefaultTsPayloadReaderFactory.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/DefaultTsPayloadReaderFactory.java
index 78af78efc0..6627a64b83 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/DefaultTsPayloadReaderFactory.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/DefaultTsPayloadReaderFactory.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.extractor.ts;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.util.SparseArray;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -27,6 +29,7 @@ import com.google.common.collect.ImmutableList;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.List;
@@ -42,6 +45,7 @@ public final class DefaultTsPayloadReaderFactory implements TsPayloadReader.Fact
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/TsExtractor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/TsExtractor.java
index fd678103ab..9d9d0fc656 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/TsExtractor.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/TsExtractor.java
@@ -16,6 +16,7 @@
package com.google.android.exoplayer2.extractor.ts;
import static com.google.android.exoplayer2.extractor.ts.TsPayloadReader.FLAG_PAYLOAD_UNIT_START_INDICATOR;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
@@ -44,6 +45,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -63,6 +65,7 @@ public final class TsExtractor implements Extractor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({MODE_MULTI_PMT, MODE_SINGLE_PMT, MODE_HLS})
public @interface Mode {}
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/TsPayloadReader.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/TsPayloadReader.java
index 34405a7a1a..06945fe7e1 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/TsPayloadReader.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/TsPayloadReader.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.extractor.ts;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.util.SparseArray;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -26,6 +28,7 @@ import com.google.android.exoplayer2.util.TimestampAdjuster;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.Collections;
import java.util.List;
@@ -176,6 +179,7 @@ public interface TsPayloadReader {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/text/webvtt/WebvttCssStyle.java b/library/extractor/src/main/java/com/google/android/exoplayer2/text/webvtt/WebvttCssStyle.java
index 3edddf17e9..360018cbc5 100644
--- a/library/extractor/src/main/java/com/google/android/exoplayer2/text/webvtt/WebvttCssStyle.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/text/webvtt/WebvttCssStyle.java
@@ -49,6 +49,7 @@ public final class WebvttCssStyle {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {UNSPECIFIED, STYLE_NORMAL, STYLE_BOLD, STYLE_ITALIC, STYLE_BOLD_ITALIC})
@@ -65,6 +66,7 @@ public final class WebvttCssStyle {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({UNSPECIFIED, FONT_SIZE_UNIT_PIXEL, FONT_SIZE_UNIT_EM, FONT_SIZE_UNIT_PERCENT})
public @interface FontSizeUnit {}
diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylist.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylist.java
index c0f867dc76..44632fd260 100644
--- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylist.java
+++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylist.java
@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.source.hls.playlist;
import static java.lang.Math.max;
import static java.lang.Math.min;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.net.Uri;
import androidx.annotation.IntDef;
@@ -30,6 +31,7 @@ import com.google.common.collect.Iterables;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -385,6 +387,7 @@ public final class HlsMediaPlaylist extends HlsPlaylist {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({PLAYLIST_TYPE_UNKNOWN, PLAYLIST_TYPE_VOD, PLAYLIST_TYPE_EVENT})
public @interface PlaylistType {}
diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java
index e1f3348bf0..d61dad444a 100644
--- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java
+++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java
@@ -23,6 +23,7 @@ import static com.google.android.exoplayer2.DefaultLoadControl.DEFAULT_MIN_BUFFE
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import static com.google.android.exoplayer2.util.Assertions.checkState;
import static java.lang.Math.min;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.content.Context;
import android.graphics.Matrix;
@@ -62,6 +63,7 @@ import java.io.IOException;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
/**
@@ -501,6 +503,7 @@ public final class Transformer {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
PROGRESS_STATE_WAITING_FOR_AVAILABILITY,
PROGRESS_STATE_AVAILABLE,
diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/AspectRatioFrameLayout.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/AspectRatioFrameLayout.java
index e2428948fa..5ad88c29d7 100644
--- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/AspectRatioFrameLayout.java
+++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/AspectRatioFrameLayout.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.ui;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
@@ -24,6 +26,7 @@ import androidx.annotation.Nullable;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/** A {@link FrameLayout} that resizes itself to match a specified aspect ratio. */
public final class AspectRatioFrameLayout extends FrameLayout {
@@ -51,6 +54,7 @@ public final class AspectRatioFrameLayout extends FrameLayout {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
RESIZE_MODE_FIT,
RESIZE_MODE_FIXED_WIDTH,
diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/CaptionStyleCompat.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/CaptionStyleCompat.java
index dc96abb31d..93761fedd9 100644
--- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/CaptionStyleCompat.java
+++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/CaptionStyleCompat.java
@@ -15,6 +15,8 @@
*/
package com.google.android.exoplayer2.ui;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.graphics.Color;
import android.graphics.Typeface;
import android.view.accessibility.CaptioningManager;
@@ -26,6 +28,7 @@ import com.google.android.exoplayer2.util.Util;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/** A compatibility wrapper for {@link CaptionStyle}. */
public final class CaptionStyleCompat {
@@ -37,6 +40,7 @@ public final class CaptionStyleCompat {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
EDGE_TYPE_NONE,
EDGE_TYPE_OUTLINE,
diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerNotificationManager.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerNotificationManager.java
index abb554855b..ec5e48e37f 100644
--- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerNotificationManager.java
+++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerNotificationManager.java
@@ -30,6 +30,7 @@ import static com.google.android.exoplayer2.Player.EVENT_SHUFFLE_MODE_ENABLED_CH
import static com.google.android.exoplayer2.Player.EVENT_TIMELINE_CHANGED;
import static com.google.android.exoplayer2.util.Assertions.checkArgument;
import static com.google.android.exoplayer2.util.Assertions.checkState;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.app.Notification;
import android.app.NotificationChannel;
@@ -58,6 +59,7 @@ import com.google.android.exoplayer2.util.Util;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -637,6 +639,7 @@ public class PlayerNotificationManager {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
NotificationCompat.VISIBILITY_PRIVATE,
NotificationCompat.VISIBILITY_PUBLIC,
@@ -652,6 +655,7 @@ public class PlayerNotificationManager {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
NotificationCompat.PRIORITY_DEFAULT,
NotificationCompat.PRIORITY_MAX,
diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerView.java
index 8f9ca5d345..b66e1efa80 100644
--- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerView.java
+++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerView.java
@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.ui;
import static com.google.android.exoplayer2.Player.COMMAND_GET_TEXT;
import static com.google.android.exoplayer2.Player.COMMAND_SET_VIDEO_SURFACE;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.annotation.SuppressLint;
import android.content.Context;
@@ -64,6 +65,7 @@ import com.google.common.collect.ImmutableList;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.List;
import org.checkerframework.checker.nullness.qual.EnsuresNonNullIf;
@@ -261,6 +263,7 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({SHOW_BUFFERING_NEVER, SHOW_BUFFERING_WHEN_PLAYING, SHOW_BUFFERING_ALWAYS})
public @interface ShowBuffering {}
/** The buffering view is never shown. */
diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java
index 2a6107ee09..b32e610731 100644
--- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java
+++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerView.java
@@ -18,6 +18,7 @@ package com.google.android.exoplayer2.ui;
import static com.google.android.exoplayer2.Player.COMMAND_GET_TEXT;
import static com.google.android.exoplayer2.Player.COMMAND_SET_VIDEO_SURFACE;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.annotation.SuppressLint;
import android.content.Context;
@@ -65,6 +66,7 @@ import com.google.common.collect.ImmutableList;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.List;
import org.checkerframework.checker.nullness.qual.EnsuresNonNullIf;
@@ -183,6 +185,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({SHOW_BUFFERING_NEVER, SHOW_BUFFERING_WHEN_PLAYING, SHOW_BUFFERING_ALWAYS})
public @interface ShowBuffering {}
/** The buffering view is never shown. */
diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleView.java
index 5c5b630d5d..568949b403 100644
--- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleView.java
+++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleView.java
@@ -16,6 +16,7 @@
*/
package com.google.android.exoplayer2.ui;
+import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.content.Context;
@@ -35,6 +36,7 @@ import com.google.android.exoplayer2.text.Cue;
import com.google.android.exoplayer2.util.Util;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -111,6 +113,7 @@ public final class SubtitleView extends FrameLayout implements Player.Listener {
*/
@Documented
@Retention(SOURCE)
+ @Target(TYPE_USE)
@IntDef({VIEW_TYPE_CANVAS, VIEW_TYPE_WEB})
public @interface ViewType {}