diff --git a/libraries/common/src/main/java/androidx/media3/common/C.java b/libraries/common/src/main/java/androidx/media3/common/C.java
index 084d3a4b61..f22b9b4e85 100644
--- a/libraries/common/src/main/java/androidx/media3/common/C.java
+++ b/libraries/common/src/main/java/androidx/media3/common/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})
@UnstableApi
public @interface CryptoMode {}
@@ -191,6 +192,7 @@ public final class C {
@UnstableApi
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
Format.NO_VALUE,
ENCODING_INVALID,
@@ -226,6 +228,7 @@ public final class C {
@UnstableApi
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
Format.NO_VALUE,
ENCODING_INVALID,
@@ -484,6 +487,7 @@ public final class C {
@UnstableApi
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
@@ -516,6 +520,7 @@ public final class C {
@UnstableApi
@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. */
@@ -651,6 +656,7 @@ public final class C {
@UnstableApi
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
open = true,
value = {
@@ -849,6 +855,7 @@ public final class C {
@UnstableApi
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
Format.NO_VALUE,
STEREO_MODE_MONO,
@@ -876,6 +883,7 @@ public final class C {
@UnstableApi
@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 */
@@ -892,6 +900,7 @@ public final class C {
@UnstableApi
@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 */
@@ -908,6 +917,7 @@ public final class C {
@UnstableApi
@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 */
@@ -919,6 +929,7 @@ public final class C {
@UnstableApi
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
Format.NO_VALUE,
PROJECTION_RECTANGULAR,
diff --git a/libraries/common/src/main/java/androidx/media3/common/FileTypes.java b/libraries/common/src/main/java/androidx/media3/common/FileTypes.java
index d6400447bd..50a988f980 100644
--- a/libraries/common/src/main/java/androidx/media3/common/FileTypes.java
+++ b/libraries/common/src/main/java/androidx/media3/common/FileTypes.java
@@ -16,6 +16,7 @@
package androidx.media3.common;
import static androidx.media3.common.MimeTypes.normalizeMimeType;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.net.Uri;
import androidx.annotation.IntDef;
@@ -25,6 +26,7 @@ import androidx.media3.common.util.UnstableApi;
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;
@@ -39,6 +41,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/libraries/common/src/main/java/androidx/media3/common/PlaybackException.java b/libraries/common/src/main/java/androidx/media3/common/PlaybackException.java
index 7193467a74..4e7850de45 100644
--- a/libraries/common/src/main/java/androidx/media3/common/PlaybackException.java
+++ b/libraries/common/src/main/java/androidx/media3/common/PlaybackException.java
@@ -410,6 +410,7 @@ public class PlaybackException extends Exception implements Bundleable {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
open = true,
value = {
diff --git a/libraries/common/src/main/java/androidx/media3/common/text/TextAnnotation.java b/libraries/common/src/main/java/androidx/media3/common/text/TextAnnotation.java
index 4edf7a60ae..e96c6cf60e 100644
--- a/libraries/common/src/main/java/androidx/media3/common/text/TextAnnotation.java
+++ b/libraries/common/src/main/java/androidx/media3/common/text/TextAnnotation.java
@@ -15,12 +15,14 @@
*/
package androidx.media3.common.text;
+import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import androidx.annotation.IntDef;
import androidx.media3.common.util.UnstableApi;
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). */
@UnstableApi
@@ -57,6 +59,7 @@ public final class TextAnnotation {
*/
@Documented
@Retention(SOURCE)
+ @Target(TYPE_USE)
@IntDef({POSITION_UNKNOWN, POSITION_BEFORE, POSITION_AFTER})
public @interface Position {}
diff --git a/libraries/common/src/main/java/androidx/media3/common/text/TextEmphasisSpan.java b/libraries/common/src/main/java/androidx/media3/common/text/TextEmphasisSpan.java
index b853f24cad..68d6e236e5 100644
--- a/libraries/common/src/main/java/androidx/media3/common/text/TextEmphasisSpan.java
+++ b/libraries/common/src/main/java/androidx/media3/common/text/TextEmphasisSpan.java
@@ -15,12 +15,14 @@
*/
package androidx.media3.common.text;
+import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import androidx.annotation.IntDef;
import androidx.media3.common.util.UnstableApi;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
/**
* A styling span for text emphasis marks.
@@ -50,6 +52,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 {}
@@ -71,6 +74,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/libraries/common/src/main/java/androidx/media3/common/util/EGLSurfaceTexture.java b/libraries/common/src/main/java/androidx/media3/common/util/EGLSurfaceTexture.java
index fb4b561845..ee76ed476b 100644
--- a/libraries/common/src/main/java/androidx/media3/common/util/EGLSurfaceTexture.java
+++ b/libraries/common/src/main/java/androidx/media3/common/util/EGLSurfaceTexture.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.common.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)
@@ -47,6 +50,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/libraries/common/src/main/java/androidx/media3/common/util/NotificationUtil.java b/libraries/common/src/main/java/androidx/media3/common/util/NotificationUtil.java
index bca6f0e589..e857b0817c 100644
--- a/libraries/common/src/main/java/androidx/media3/common/util/NotificationUtil.java
+++ b/libraries/common/src/main/java/androidx/media3/common/util/NotificationUtil.java
@@ -16,6 +16,7 @@
package androidx.media3.common.util;
import static androidx.media3.common.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")
@@ -42,6 +44,7 @@ public final class NotificationUtil {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
IMPORTANCE_UNSPECIFIED,
IMPORTANCE_NONE,
diff --git a/libraries/datasource/src/main/java/androidx/media3/datasource/DataSpec.java b/libraries/datasource/src/main/java/androidx/media3/datasource/DataSpec.java
index 4f8f8667f9..9927ec238d 100644
--- a/libraries/datasource/src/main/java/androidx/media3/datasource/DataSpec.java
+++ b/libraries/datasource/src/main/java/androidx/media3/datasource/DataSpec.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.datasource;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.net.Uri;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -25,6 +27,7 @@ import androidx.media3.common.util.UnstableApi;
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;
@@ -234,6 +237,7 @@ public final class DataSpec {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
@@ -276,6 +280,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/libraries/datasource/src/main/java/androidx/media3/datasource/HttpDataSource.java b/libraries/datasource/src/main/java/androidx/media3/datasource/HttpDataSource.java
index 5564dfa0b3..4352008b78 100644
--- a/libraries/datasource/src/main/java/androidx/media3/datasource/HttpDataSource.java
+++ b/libraries/datasource/src/main/java/androidx/media3/datasource/HttpDataSource.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.datasource;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.text.TextUtils;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -28,6 +30,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;
@@ -190,6 +193,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/libraries/datasource/src/main/java/androidx/media3/datasource/cache/CacheDataSource.java b/libraries/datasource/src/main/java/androidx/media3/datasource/cache/CacheDataSource.java
index 56b736f739..8802d8b187 100644
--- a/libraries/datasource/src/main/java/androidx/media3/datasource/cache/CacheDataSource.java
+++ b/libraries/datasource/src/main/java/androidx/media3/datasource/cache/CacheDataSource.java
@@ -18,6 +18,7 @@ package androidx.media3.datasource.cache;
import static androidx.media3.common.util.Assertions.checkNotNull;
import static androidx.media3.common.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;
@@ -42,6 +43,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;
@@ -330,6 +332,7 @@ public final class CacheDataSource implements DataSource {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/libraries/decoder/src/main/java/androidx/media3/decoder/DecoderInputBuffer.java b/libraries/decoder/src/main/java/androidx/media3/decoder/DecoderInputBuffer.java
index 276aaa2fdd..05a0164493 100644
--- a/libraries/decoder/src/main/java/androidx/media3/decoder/DecoderInputBuffer.java
+++ b/libraries/decoder/src/main/java/androidx/media3/decoder/DecoderInputBuffer.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.decoder;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import androidx.media3.common.C;
@@ -24,6 +26,7 @@ import androidx.media3.common.util.UnstableApi;
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;
@@ -68,6 +71,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/libraries/decoder_flac/src/main/java/androidx/media3/decoder/flac/FlacExtractor.java b/libraries/decoder_flac/src/main/java/androidx/media3/decoder/flac/FlacExtractor.java
index e65e2de18a..8d2d84d209 100644
--- a/libraries/decoder_flac/src/main/java/androidx/media3/decoder/flac/FlacExtractor.java
+++ b/libraries/decoder_flac/src/main/java/androidx/media3/decoder/flac/FlacExtractor.java
@@ -16,6 +16,7 @@
package androidx.media3.decoder.flac;
import static androidx.media3.common.util.Util.getPcmEncoding;
+import static java.lang.annotation.ElementType.TYPE_USE;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -41,6 +42,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;
@@ -63,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/AudioFocusManager.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/AudioFocusManager.java
index d330c22b6a..68203349aa 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/AudioFocusManager.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/AudioFocusManager.java
@@ -64,6 +64,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/DecoderReuseEvaluation.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/DecoderReuseEvaluation.java
index e02bddc7a3..0257b4af1d 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/DecoderReuseEvaluation.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/DecoderReuseEvaluation.java
@@ -18,6 +18,7 @@ package androidx.media3.exoplayer;
import static androidx.media3.common.util.Assertions.checkArgument;
import static androidx.media3.common.util.Assertions.checkNotEmpty;
import static androidx.media3.common.util.Assertions.checkNotNull;
+import static java.lang.annotation.ElementType.TYPE_USE;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -27,6 +28,7 @@ import androidx.media3.common.util.UnstableApi;
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.
@@ -37,6 +39,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,
@@ -59,6 +62,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/DefaultRenderersFactory.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/DefaultRenderersFactory.java
index 3d11c23acd..61e3c0f5e8 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/DefaultRenderersFactory.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/DefaultRenderersFactory.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.exoplayer;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.content.Context;
import android.media.MediaCodec;
import android.media.PlaybackParams;
@@ -43,6 +45,7 @@ import androidx.media3.exoplayer.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;
@@ -62,6 +65,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/Renderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/Renderer.java
index 0572c04ea8..850421e315 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/Renderer.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/Renderer.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.exoplayer;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.media.MediaCodec;
import android.view.Surface;
import androidx.annotation.IntDef;
@@ -26,7 +28,6 @@ import androidx.media3.common.Format;
import androidx.media3.common.Player;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.common.util.Util;
-import androidx.media3.exoplayer.PlayerMessage.Target;
import androidx.media3.exoplayer.analytics.PlayerId;
import androidx.media3.exoplayer.source.SampleStream;
import androidx.media3.exoplayer.video.VideoDecoderOutputBufferRenderer;
@@ -36,6 +37,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}.
@@ -90,6 +92,7 @@ public interface Renderer extends PlayerMessage.Target {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
open = true,
value = {
@@ -108,8 +111,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.
@@ -117,15 +121,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.
@@ -144,8 +148,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}.
@@ -153,45 +157,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.
*/
@@ -208,6 +213,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/RendererCapabilities.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/RendererCapabilities.java
index 53fe394e47..755b2c77b7 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/RendererCapabilities.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/RendererCapabilities.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.exoplayer;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.annotation.SuppressLint;
import androidx.annotation.IntDef;
import androidx.media3.common.C;
@@ -23,6 +25,7 @@ import androidx.media3.common.util.UnstableApi;
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}. */
@UnstableApi
@@ -32,6 +35,7 @@ public interface RendererCapabilities {
@SuppressWarnings("deprecation")
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
FORMAT_HANDLED,
FORMAT_EXCEEDS_CAPABILITIES,
@@ -60,6 +64,7 @@ public interface RendererCapabilities {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({ADAPTIVE_SEAMLESS, ADAPTIVE_NOT_SEAMLESS, ADAPTIVE_NOT_SUPPORTED})
@interface AdaptiveSupport {}
@@ -81,6 +86,7 @@ public interface RendererCapabilities {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({TUNNELING_SUPPORTED, TUNNELING_NOT_SUPPORTED})
@interface TunnelingSupport {}
@@ -99,6 +105,7 @@ public interface RendererCapabilities {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
HARDWARE_ACCELERATION_SUPPORTED,
HARDWARE_ACCELERATION_NOT_SUPPORTED,
@@ -119,6 +126,7 @@ public interface RendererCapabilities {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
DECODER_SUPPORT_PRIMARY,
DECODER_SUPPORT_FALLBACK,
@@ -167,6 +175,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioSink.java
index 65d8a1b954..04d91a3d05 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioSink.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioSink.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.exoplayer.audio;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.media.AudioTrack;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -31,6 +33,7 @@ import androidx.media3.exoplayer.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;
/**
@@ -260,6 +263,7 @@ public interface AudioSink {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
SINK_FORMAT_SUPPORTED_DIRECTLY,
SINK_FORMAT_SUPPORTED_WITH_TRANSCODING,
diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java
index bfdfb580b9..d9859a99e6 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java
@@ -21,6 +21,7 @@ import static androidx.media3.exoplayer.audio.AudioCapabilities.DEFAULT_AUDIO_CA
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;
@@ -58,6 +59,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;
@@ -391,6 +393,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,
@@ -428,6 +431,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.java
index 07fae53002..1a3c8ebcf9 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.java
@@ -19,6 +19,7 @@ import static androidx.media3.common.util.Assertions.checkArgument;
import static androidx.media3.common.util.Assertions.checkNotNull;
import static androidx.media3.common.util.Assertions.checkState;
import static androidx.media3.common.util.Assertions.checkStateNotNull;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.annotation.SuppressLint;
import android.media.ResourceBusyException;
@@ -49,6 +50,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;
@@ -263,6 +265,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/ExoMediaDrm.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/ExoMediaDrm.java
index c88f2a934b..5557e00392 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/ExoMediaDrm.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/ExoMediaDrm.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.exoplayer.drm;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.media.DeniedByServerException;
import android.media.MediaCryptoException;
import android.media.MediaDrm;
@@ -33,6 +35,7 @@ import androidx.media3.exoplayer.analytics.PlayerId;
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;
@@ -228,6 +231,7 @@ public interface ExoMediaDrm {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
REQUEST_TYPE_UNKNOWN,
REQUEST_TYPE_INITIAL,
diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ClippingMediaSource.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ClippingMediaSource.java
index b798b969d2..4263da5d62 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ClippingMediaSource.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ClippingMediaSource.java
@@ -17,6 +17,7 @@ package androidx.media3.exoplayer.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;
@@ -32,6 +33,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;
/**
@@ -50,6 +52,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MergingMediaSource.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MergingMediaSource.java
index 17f9e4df8e..c9c589fb74 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MergingMediaSource.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MergingMediaSource.java
@@ -17,6 +17,7 @@ package androidx.media3.exoplayer.source;
import static androidx.media3.common.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;
@@ -32,6 +33,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;
@@ -52,6 +54,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/SampleStream.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/SampleStream.java
index b6d3946597..dc088cd117 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/SampleStream.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/SampleStream.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.exoplayer.source;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.media3.common.C;
import androidx.media3.common.util.UnstableApi;
@@ -25,6 +27,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). */
@UnstableApi
@@ -36,6 +39,7 @@ public interface SampleStream {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {FLAG_PEEK, FLAG_REQUIRE_FORMAT, FLAG_OMIT_SAMPLE_DATA})
@@ -69,6 +73,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ads/AdsMediaSource.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ads/AdsMediaSource.java
index 7cb73edc6f..74b3093156 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ads/AdsMediaSource.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ads/AdsMediaSource.java
@@ -17,6 +17,7 @@ package androidx.media3.exoplayer.source.ads;
import static androidx.media3.common.util.Assertions.checkNotNull;
import static androidx.media3.common.util.Assertions.checkState;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.net.Uri;
import android.os.Handler;
@@ -47,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 java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -74,6 +76,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java
index 5b83a7f22c..e8dc20c7e3 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java
@@ -1428,6 +1428,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy.java
index d1ae4fb4ae..fd40859f2d 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy.java
@@ -16,6 +16,7 @@
package androidx.media3.exoplayer.upstream;
import static androidx.media3.common.util.Assertions.checkArgument;
+import static java.lang.annotation.ElementType.TYPE_USE;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -29,6 +30,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.
@@ -54,6 +56,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/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/playlist/HlsMediaPlaylist.java b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/playlist/HlsMediaPlaylist.java
index efe7bb89a0..c6a43c9eec 100644
--- a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/playlist/HlsMediaPlaylist.java
+++ b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/playlist/HlsMediaPlaylist.java
@@ -17,6 +17,7 @@ package androidx.media3.exoplayer.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;
@@ -31,6 +32,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;
@@ -387,6 +389,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/libraries/extractor/src/main/java/androidx/media3/extractor/AacUtil.java b/libraries/extractor/src/main/java/androidx/media3/extractor/AacUtil.java
index 929dbc841b..9c72d87966 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/AacUtil.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/AacUtil.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.extractor;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.media3.common.C;
import androidx.media3.common.ParserException;
@@ -24,6 +26,7 @@ import androidx.media3.common.util.UnstableApi;
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. */
@UnstableApi
@@ -159,6 +162,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/libraries/extractor/src/main/java/androidx/media3/extractor/Ac3Util.java b/libraries/extractor/src/main/java/androidx/media3/extractor/Ac3Util.java
index e6536a66b1..e4a61f3e0b 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/Ac3Util.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/Ac3Util.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.extractor;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import androidx.media3.common.C;
@@ -29,6 +31,7 @@ import androidx.media3.extractor.Ac3Util.SyncFrameInfo.StreamType;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.nio.ByteBuffer;
/**
@@ -47,6 +50,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/libraries/extractor/src/main/java/androidx/media3/extractor/BinarySearchSeeker.java b/libraries/extractor/src/main/java/androidx/media3/extractor/BinarySearchSeeker.java
index 224de9d730..1ff09dfdff 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/BinarySearchSeeker.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/BinarySearchSeeker.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.extractor;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import androidx.media3.common.C;
@@ -25,6 +27,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
@@ -407,6 +410,7 @@ public abstract class BinarySearchSeeker {
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
TYPE_TARGET_TIMESTAMP_FOUND,
TYPE_POSITION_OVERESTIMATED,
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/Extractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/Extractor.java
index 3b221a605d..2c67cf99c5 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/Extractor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/Extractor.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.extractor;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.media3.common.C;
import androidx.media3.common.util.UnstableApi;
@@ -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;
/** Extracts media data from a container format. */
@UnstableApi
@@ -51,6 +54,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/libraries/extractor/src/main/java/androidx/media3/extractor/TrackOutput.java b/libraries/extractor/src/main/java/androidx/media3/extractor/TrackOutput.java
index 947fc000f6..710e11a7ad 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/TrackOutput.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/TrackOutput.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.extractor;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import androidx.media3.common.C;
@@ -27,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;
import java.util.Arrays;
/** Receives track level data extracted by an {@link Extractor}. */
@@ -95,6 +98,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/libraries/extractor/src/main/java/androidx/media3/extractor/amr/AmrExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/amr/AmrExtractor.java
index ba8610101a..5a4b3e1f52 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/amr/AmrExtractor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/amr/AmrExtractor.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.extractor.amr;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.media3.common.C;
import androidx.media3.common.Format;
@@ -38,6 +40,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;
@@ -62,6 +65,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/libraries/extractor/src/main/java/androidx/media3/extractor/flac/FlacExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/flac/FlacExtractor.java
index bf005a2317..2eacd85b1f 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/flac/FlacExtractor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/flac/FlacExtractor.java
@@ -67,6 +67,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/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/EbmlProcessor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/EbmlProcessor.java
index cab9f2d7be..762e897d9d 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/EbmlProcessor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/EbmlProcessor.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.extractor.mkv;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.media3.common.ParserException;
import androidx.media3.common.util.UnstableApi;
@@ -23,6 +25,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. */
@UnstableApi
@@ -35,6 +38,7 @@ public interface EbmlProcessor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
ELEMENT_TYPE_UNKNOWN,
ELEMENT_TYPE_MASTER,
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java
index c2222d5008..6442ad7993 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java
@@ -21,6 +21,7 @@ import static androidx.media3.common.util.Assertions.checkState;
import static androidx.media3.common.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;
@@ -59,6 +60,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;
@@ -87,6 +89,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/libraries/extractor/src/main/java/androidx/media3/extractor/mp3/Mp3Extractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mp3/Mp3Extractor.java
index b1bdadc0e9..936c7be490 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/mp3/Mp3Extractor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mp3/Mp3Extractor.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.extractor.mp3;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import androidx.media3.common.C;
@@ -47,6 +49,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;
@@ -65,6 +68,7 @@ public final class Mp3Extractor implements Extractor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java
index 0b70c32d23..dc83015d88 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java
@@ -21,6 +21,7 @@ import static androidx.media3.common.util.Util.castNonNull;
import static androidx.media3.common.util.Util.nullSafeArrayCopy;
import static androidx.media3.extractor.mp4.AtomParsers.parseTraks;
import static java.lang.Math.max;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.util.Pair;
import android.util.SparseArray;
@@ -57,6 +58,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;
@@ -80,6 +82,7 @@ public class FragmentedMp4Extractor implements Extractor {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Mp4Extractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Mp4Extractor.java
index c9b5bb0fe5..b2b8bc74a3 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Mp4Extractor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Mp4Extractor.java
@@ -76,6 +76,7 @@ public final class Mp4Extractor implements Extractor, SeekMap {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Track.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Track.java
index 16a125573c..2259bbae86 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Track.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/Track.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.extractor.mp4;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import androidx.media3.common.C;
@@ -23,6 +25,7 @@ import androidx.media3.common.util.UnstableApi;
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. */
@UnstableApi
@@ -34,6 +37,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/libraries/extractor/src/main/java/androidx/media3/extractor/text/webvtt/WebvttCssStyle.java b/libraries/extractor/src/main/java/androidx/media3/extractor/text/webvtt/WebvttCssStyle.java
index 168b5a76d7..29753e1d4f 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/text/webvtt/WebvttCssStyle.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/text/webvtt/WebvttCssStyle.java
@@ -51,6 +51,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})
@@ -67,6 +68,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/libraries/extractor/src/main/java/androidx/media3/extractor/ts/AdtsExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/AdtsExtractor.java
index 9936323ed1..b62e4dd9d5 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/AdtsExtractor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/AdtsExtractor.java
@@ -18,6 +18,7 @@ package androidx.media3.extractor.ts;
import static androidx.media3.extractor.metadata.id3.Id3Decoder.ID3_HEADER_LENGTH;
import static androidx.media3.extractor.metadata.id3.Id3Decoder.ID3_TAG;
import static androidx.media3.extractor.ts.TsPayloadReader.FLAG_DATA_ALIGNMENT_INDICATOR;
+import static java.lang.annotation.ElementType.TYPE_USE;
import androidx.annotation.IntDef;
import androidx.media3.common.C;
@@ -41,6 +42,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;
@@ -58,6 +60,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/libraries/extractor/src/main/java/androidx/media3/extractor/ts/DefaultTsPayloadReaderFactory.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/DefaultTsPayloadReaderFactory.java
index 9303d087c2..105059098f 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/DefaultTsPayloadReaderFactory.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/DefaultTsPayloadReaderFactory.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.extractor.ts;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.util.SparseArray;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -28,6 +30,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;
@@ -44,6 +47,7 @@ public final class DefaultTsPayloadReaderFactory implements TsPayloadReader.Fact
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/TsExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/TsExtractor.java
index fd47e6f37e..aa2a36b02b 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/TsExtractor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/TsExtractor.java
@@ -16,6 +16,7 @@
package androidx.media3.extractor.ts;
import static androidx.media3.extractor.ts.TsPayloadReader.FLAG_PAYLOAD_UNIT_START_INDICATOR;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
@@ -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.Collections;
@@ -65,6 +67,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/libraries/extractor/src/main/java/androidx/media3/extractor/ts/TsPayloadReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/TsPayloadReader.java
index 86dd878b83..66ba7a1b91 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/TsPayloadReader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/TsPayloadReader.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.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 androidx.media3.extractor.TrackOutput;
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;
@@ -178,6 +181,7 @@ public interface TsPayloadReader {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef(
flag = true,
value = {
diff --git a/libraries/session/src/main/java/androidx/media3/session/PlayerNotificationManager.java b/libraries/session/src/main/java/androidx/media3/session/PlayerNotificationManager.java
index 6b55f5a26f..7796aa2624 100644
--- a/libraries/session/src/main/java/androidx/media3/session/PlayerNotificationManager.java
+++ b/libraries/session/src/main/java/androidx/media3/session/PlayerNotificationManager.java
@@ -32,6 +32,7 @@ import static androidx.media3.common.Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED;
import static androidx.media3.common.Player.EVENT_TIMELINE_CHANGED;
import static androidx.media3.common.util.Assertions.checkArgument;
import static androidx.media3.common.util.Assertions.checkStateNotNull;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.app.Notification;
import android.app.NotificationChannel;
@@ -67,6 +68,7 @@ import com.google.common.util.concurrent.ListenableFuture;
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;
@@ -412,6 +414,7 @@ public class PlayerNotificationManager {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
NotificationCompat.VISIBILITY_PRIVATE,
NotificationCompat.VISIBILITY_PUBLIC,
@@ -427,6 +430,7 @@ public class PlayerNotificationManager {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
NotificationCompat.PRIORITY_DEFAULT,
NotificationCompat.PRIORITY_MAX,
diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java
index 26969d2211..ffc6bcf8ac 100644
--- a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java
+++ b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java
@@ -23,6 +23,7 @@ import static androidx.media3.exoplayer.DefaultLoadControl.DEFAULT_BUFFER_FOR_PL
import static androidx.media3.exoplayer.DefaultLoadControl.DEFAULT_MAX_BUFFER_MS;
import static androidx.media3.exoplayer.DefaultLoadControl.DEFAULT_MIN_BUFFER_MS;
import static java.lang.Math.min;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.content.Context;
import android.graphics.Matrix;
@@ -63,6 +64,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;
/**
@@ -503,6 +505,7 @@ public final class Transformer {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
PROGRESS_STATE_WAITING_FOR_AVAILABILITY,
PROGRESS_STATE_AVAILABLE,
diff --git a/libraries/ui/src/main/java/androidx/media3/ui/AspectRatioFrameLayout.java b/libraries/ui/src/main/java/androidx/media3/ui/AspectRatioFrameLayout.java
index 24f5eec38a..457559555e 100644
--- a/libraries/ui/src/main/java/androidx/media3/ui/AspectRatioFrameLayout.java
+++ b/libraries/ui/src/main/java/androidx/media3/ui/AspectRatioFrameLayout.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.ui;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
@@ -25,6 +27,7 @@ import androidx.media3.common.util.UnstableApi;
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. */
@UnstableApi
@@ -53,6 +56,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/libraries/ui/src/main/java/androidx/media3/ui/CaptionStyleCompat.java b/libraries/ui/src/main/java/androidx/media3/ui/CaptionStyleCompat.java
index 103638c3bc..45373a2aac 100644
--- a/libraries/ui/src/main/java/androidx/media3/ui/CaptionStyleCompat.java
+++ b/libraries/ui/src/main/java/androidx/media3/ui/CaptionStyleCompat.java
@@ -15,6 +15,8 @@
*/
package androidx.media3.ui;
+import static java.lang.annotation.ElementType.TYPE_USE;
+
import android.graphics.Color;
import android.graphics.Typeface;
import android.view.accessibility.CaptioningManager;
@@ -27,6 +29,7 @@ import androidx.media3.common.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}. */
@UnstableApi
@@ -39,6 +42,7 @@ public final class CaptionStyleCompat {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
EDGE_TYPE_NONE,
EDGE_TYPE_OUTLINE,
diff --git a/libraries/ui/src/main/java/androidx/media3/ui/LegacyPlayerView.java b/libraries/ui/src/main/java/androidx/media3/ui/LegacyPlayerView.java
index 5c2bd1545f..2aae797968 100644
--- a/libraries/ui/src/main/java/androidx/media3/ui/LegacyPlayerView.java
+++ b/libraries/ui/src/main/java/androidx/media3/ui/LegacyPlayerView.java
@@ -17,6 +17,7 @@ package androidx.media3.ui;
import static androidx.media3.common.Player.COMMAND_GET_TEXT;
import static androidx.media3.common.Player.COMMAND_SET_VIDEO_SURFACE;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.annotation.SuppressLint;
import android.content.Context;
@@ -67,6 +68,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;
@@ -265,6 +267,7 @@ public class LegacyPlayerView 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/libraries/ui/src/main/java/androidx/media3/ui/PlayerNotificationManager.java b/libraries/ui/src/main/java/androidx/media3/ui/PlayerNotificationManager.java
index 142b84cb88..f5c5009c2e 100644
--- a/libraries/ui/src/main/java/androidx/media3/ui/PlayerNotificationManager.java
+++ b/libraries/ui/src/main/java/androidx/media3/ui/PlayerNotificationManager.java
@@ -30,6 +30,7 @@ import static androidx.media3.common.Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED;
import static androidx.media3.common.Player.EVENT_TIMELINE_CHANGED;
import static androidx.media3.common.util.Assertions.checkArgument;
import static androidx.media3.common.util.Assertions.checkState;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.app.Notification;
import android.app.NotificationChannel;
@@ -59,6 +60,7 @@ import androidx.media3.common.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;
@@ -639,6 +641,7 @@ public class PlayerNotificationManager {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
NotificationCompat.VISIBILITY_PRIVATE,
NotificationCompat.VISIBILITY_PUBLIC,
@@ -654,6 +657,7 @@ public class PlayerNotificationManager {
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
+ @Target(TYPE_USE)
@IntDef({
NotificationCompat.PRIORITY_DEFAULT,
NotificationCompat.PRIORITY_MAX,
diff --git a/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java b/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java
index 7bc88cff91..158ff83b85 100644
--- a/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java
+++ b/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java
@@ -18,6 +18,7 @@ package androidx.media3.ui;
import static androidx.media3.common.Player.COMMAND_GET_TEXT;
import static androidx.media3.common.Player.COMMAND_SET_VIDEO_SURFACE;
import static androidx.media3.common.util.Assertions.checkNotNull;
+import static java.lang.annotation.ElementType.TYPE_USE;
import android.annotation.SuppressLint;
import android.content.Context;
@@ -68,6 +69,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;
@@ -187,6 +189,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/libraries/ui/src/main/java/androidx/media3/ui/SubtitleView.java b/libraries/ui/src/main/java/androidx/media3/ui/SubtitleView.java
index b2bac223e7..f996337eaa 100644
--- a/libraries/ui/src/main/java/androidx/media3/ui/SubtitleView.java
+++ b/libraries/ui/src/main/java/androidx/media3/ui/SubtitleView.java
@@ -16,6 +16,7 @@
*/
package androidx.media3.ui;
+import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.content.Context;
@@ -36,6 +37,7 @@ import androidx.media3.common.util.UnstableApi;
import androidx.media3.common.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;
@@ -113,6 +115,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 {}