// Signature format: 3.0
package androidx.media3.common {

  public final class AdOverlayInfo {
    field public static final int PURPOSE_CLOSE_AD = 2; // 0x2
    field public static final int PURPOSE_CONTROLS = 1; // 0x1
    field public static final int PURPOSE_NOT_VISIBLE = 4; // 0x4
    field public static final int PURPOSE_OTHER = 3; // 0x3
    field @androidx.media3.common.AdOverlayInfo.Purpose public final int purpose;
    field @Nullable public final String reasonDetail;
    field public final android.view.View view;
  }

  public static final class AdOverlayInfo.Builder {
    ctor public AdOverlayInfo.Builder(android.view.View, @androidx.media3.common.AdOverlayInfo.Purpose int);
    method public androidx.media3.common.AdOverlayInfo build();
    method public androidx.media3.common.AdOverlayInfo.Builder setDetailedReason(@Nullable String);
  }

  @IntDef({androidx.media3.common.AdOverlayInfo.PURPOSE_CONTROLS, androidx.media3.common.AdOverlayInfo.PURPOSE_CLOSE_AD, androidx.media3.common.AdOverlayInfo.PURPOSE_OTHER, androidx.media3.common.AdOverlayInfo.PURPOSE_NOT_VISIBLE}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface AdOverlayInfo.Purpose {
  }

  public interface AdViewProvider {
    method public default java.util.List<androidx.media3.common.AdOverlayInfo> getAdOverlayInfos();
    method @Nullable public android.view.ViewGroup getAdViewGroup();
  }

  public final class AudioAttributes {
    method @RequiresApi(21) public androidx.media3.common.AudioAttributes.AudioAttributesV21 getAudioAttributesV21();
    field public static final androidx.media3.common.AudioAttributes DEFAULT;
    field @androidx.media3.common.C.AudioAllowedCapturePolicy public final int allowedCapturePolicy;
    field @androidx.media3.common.C.AudioContentType public final int contentType;
    field @androidx.media3.common.C.AudioFlags public final int flags;
    field @androidx.media3.common.C.SpatializationBehavior public final int spatializationBehavior;
    field @androidx.media3.common.C.AudioUsage public final int usage;
  }

  @RequiresApi(21) public static final class AudioAttributes.AudioAttributesV21 {
    field public final android.media.AudioAttributes audioAttributes;
  }

  public static final class AudioAttributes.Builder {
    ctor public AudioAttributes.Builder();
    method public androidx.media3.common.AudioAttributes build();
    method public androidx.media3.common.AudioAttributes.Builder setAllowedCapturePolicy(@androidx.media3.common.C.AudioAllowedCapturePolicy int);
    method public androidx.media3.common.AudioAttributes.Builder setContentType(@androidx.media3.common.C.AudioContentType int);
    method public androidx.media3.common.AudioAttributes.Builder setFlags(@androidx.media3.common.C.AudioFlags int);
    method public androidx.media3.common.AudioAttributes.Builder setSpatializationBehavior(@androidx.media3.common.C.SpatializationBehavior int);
    method public androidx.media3.common.AudioAttributes.Builder setUsage(@androidx.media3.common.C.AudioUsage int);
  }

  public final class C {
    field public static final int ALLOW_CAPTURE_BY_ALL = 1; // 0x1
    field public static final int ALLOW_CAPTURE_BY_NONE = 3; // 0x3
    field public static final int ALLOW_CAPTURE_BY_SYSTEM = 2; // 0x2
    field public static final int AUDIO_CONTENT_TYPE_MOVIE = 3; // 0x3
    field public static final int AUDIO_CONTENT_TYPE_MUSIC = 2; // 0x2
    field public static final int AUDIO_CONTENT_TYPE_SONIFICATION = 4; // 0x4
    field public static final int AUDIO_CONTENT_TYPE_SPEECH = 1; // 0x1
    field public static final int AUDIO_CONTENT_TYPE_UNKNOWN = 0; // 0x0
    field public static final java.util.UUID CLEARKEY_UUID;
    field public static final java.util.UUID COMMON_PSSH_UUID;
    field public static final int CONTENT_TYPE_DASH = 0; // 0x0
    field public static final int CONTENT_TYPE_HLS = 2; // 0x2
    field public static final int CONTENT_TYPE_OTHER = 4; // 0x4
    field public static final int CONTENT_TYPE_RTSP = 3; // 0x3
    field public static final int CONTENT_TYPE_SS = 1; // 0x1
    field public static final int CRYPTO_TYPE_CUSTOM_BASE = 10000; // 0x2710
    field public static final int CRYPTO_TYPE_FRAMEWORK = 2; // 0x2
    field public static final int CRYPTO_TYPE_NONE = 0; // 0x0
    field public static final int CRYPTO_TYPE_UNSUPPORTED = 1; // 0x1
    field public static final long DEFAULT_MAX_SEEK_TO_PREVIOUS_POSITION_MS = 3000L; // 0xbb8L
    field public static final long DEFAULT_SEEK_BACK_INCREMENT_MS = 5000L; // 0x1388L
    field public static final long DEFAULT_SEEK_FORWARD_INCREMENT_MS = 15000L; // 0x3a98L
    field public static final int FLAG_AUDIBILITY_ENFORCED = 1; // 0x1
    field public static final int INDEX_UNSET = -1; // 0xffffffff
    field public static final String LANGUAGE_UNDETERMINED = "und";
    field public static final int LENGTH_UNSET = -1; // 0xffffffff
    field public static final java.util.UUID PLAYREADY_UUID;
    field public static final float RATE_UNSET = -3.4028235E38f;
    field public static final int ROLE_FLAG_ALTERNATE = 2; // 0x2
    field public static final int ROLE_FLAG_CAPTION = 64; // 0x40
    field public static final int ROLE_FLAG_COMMENTARY = 8; // 0x8
    field public static final int ROLE_FLAG_DESCRIBES_MUSIC_AND_SOUND = 1024; // 0x400
    field public static final int ROLE_FLAG_DESCRIBES_VIDEO = 512; // 0x200
    field public static final int ROLE_FLAG_DUB = 16; // 0x10
    field public static final int ROLE_FLAG_EASY_TO_READ = 8192; // 0x2000
    field public static final int ROLE_FLAG_EMERGENCY = 32; // 0x20
    field public static final int ROLE_FLAG_ENHANCED_DIALOG_INTELLIGIBILITY = 2048; // 0x800
    field public static final int ROLE_FLAG_MAIN = 1; // 0x1
    field public static final int ROLE_FLAG_SIGN = 256; // 0x100
    field public static final int ROLE_FLAG_SUBTITLE = 128; // 0x80
    field public static final int ROLE_FLAG_SUPPLEMENTARY = 4; // 0x4
    field public static final int ROLE_FLAG_TRANSCRIBES_DIALOG = 4096; // 0x1000
    field public static final int ROLE_FLAG_TRICK_PLAY = 16384; // 0x4000
    field public static final int SELECTION_FLAG_AUTOSELECT = 4; // 0x4
    field public static final int SELECTION_FLAG_DEFAULT = 1; // 0x1
    field public static final int SELECTION_FLAG_FORCED = 2; // 0x2
    field public static final int SPATIALIZATION_BEHAVIOR_AUTO = 0; // 0x0
    field public static final int SPATIALIZATION_BEHAVIOR_NEVER = 1; // 0x1
    field public static final long TIME_END_OF_SOURCE = -9223372036854775808L; // 0x8000000000000000L
    field public static final long TIME_UNSET = -9223372036854775807L; // 0x8000000000000001L
    field public static final int TRACK_TYPE_AUDIO = 1; // 0x1
    field public static final int TRACK_TYPE_CAMERA_MOTION = 6; // 0x6
    field public static final int TRACK_TYPE_CUSTOM_BASE = 10000; // 0x2710
    field public static final int TRACK_TYPE_DEFAULT = 0; // 0x0
    field public static final int TRACK_TYPE_IMAGE = 4; // 0x4
    field public static final int TRACK_TYPE_METADATA = 5; // 0x5
    field public static final int TRACK_TYPE_NONE = -2; // 0xfffffffe
    field public static final int TRACK_TYPE_TEXT = 3; // 0x3
    field public static final int TRACK_TYPE_UNKNOWN = -1; // 0xffffffff
    field public static final int TRACK_TYPE_VIDEO = 2; // 0x2
    field public static final int USAGE_ALARM = 4; // 0x4
    field public static final int USAGE_ASSISTANCE_ACCESSIBILITY = 11; // 0xb
    field public static final int USAGE_ASSISTANCE_NAVIGATION_GUIDANCE = 12; // 0xc
    field public static final int USAGE_ASSISTANCE_SONIFICATION = 13; // 0xd
    field public static final int USAGE_ASSISTANT = 16; // 0x10
    field public static final int USAGE_GAME = 14; // 0xe
    field public static final int USAGE_MEDIA = 1; // 0x1
    field public static final int USAGE_NOTIFICATION = 5; // 0x5
    field public static final int USAGE_NOTIFICATION_COMMUNICATION_DELAYED = 9; // 0x9
    field public static final int USAGE_NOTIFICATION_COMMUNICATION_INSTANT = 8; // 0x8
    field public static final int USAGE_NOTIFICATION_COMMUNICATION_REQUEST = 7; // 0x7
    field public static final int USAGE_NOTIFICATION_EVENT = 10; // 0xa
    field public static final int USAGE_NOTIFICATION_RINGTONE = 6; // 0x6
    field public static final int USAGE_UNKNOWN = 0; // 0x0
    field public static final int USAGE_VOICE_COMMUNICATION = 2; // 0x2
    field public static final int USAGE_VOICE_COMMUNICATION_SIGNALLING = 3; // 0x3
    field public static final java.util.UUID UUID_NIL;
    field public static final int WAKE_MODE_LOCAL = 1; // 0x1
    field public static final int WAKE_MODE_NETWORK = 2; // 0x2
    field public static final int WAKE_MODE_NONE = 0; // 0x0
    field public static final java.util.UUID WIDEVINE_UUID;
  }

  @IntDef({androidx.media3.common.C.ALLOW_CAPTURE_BY_ALL, androidx.media3.common.C.ALLOW_CAPTURE_BY_NONE, androidx.media3.common.C.ALLOW_CAPTURE_BY_SYSTEM}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface C.AudioAllowedCapturePolicy {
  }

  @IntDef({androidx.media3.common.C.AUDIO_CONTENT_TYPE_MOVIE, androidx.media3.common.C.AUDIO_CONTENT_TYPE_MUSIC, androidx.media3.common.C.AUDIO_CONTENT_TYPE_SONIFICATION, androidx.media3.common.C.AUDIO_CONTENT_TYPE_SPEECH, androidx.media3.common.C.AUDIO_CONTENT_TYPE_UNKNOWN}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface C.AudioContentType {
  }

  @IntDef(flag=true, value={androidx.media3.common.C.FLAG_AUDIBILITY_ENFORCED}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface C.AudioFlags {
  }

  @IntDef({androidx.media3.common.C.USAGE_ALARM, androidx.media3.common.C.USAGE_ASSISTANCE_ACCESSIBILITY, androidx.media3.common.C.USAGE_ASSISTANCE_NAVIGATION_GUIDANCE, androidx.media3.common.C.USAGE_ASSISTANCE_SONIFICATION, androidx.media3.common.C.USAGE_ASSISTANT, androidx.media3.common.C.USAGE_GAME, androidx.media3.common.C.USAGE_MEDIA, androidx.media3.common.C.USAGE_NOTIFICATION, androidx.media3.common.C.USAGE_NOTIFICATION_COMMUNICATION_DELAYED, androidx.media3.common.C.USAGE_NOTIFICATION_COMMUNICATION_INSTANT, androidx.media3.common.C.USAGE_NOTIFICATION_COMMUNICATION_REQUEST, androidx.media3.common.C.USAGE_NOTIFICATION_EVENT, androidx.media3.common.C.USAGE_NOTIFICATION_RINGTONE, androidx.media3.common.C.USAGE_UNKNOWN, androidx.media3.common.C.USAGE_VOICE_COMMUNICATION, androidx.media3.common.C.USAGE_VOICE_COMMUNICATION_SIGNALLING}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface C.AudioUsage {
  }

  @IntDef({androidx.media3.common.C.CONTENT_TYPE_DASH, androidx.media3.common.C.CONTENT_TYPE_SS, androidx.media3.common.C.CONTENT_TYPE_HLS, androidx.media3.common.C.CONTENT_TYPE_RTSP, androidx.media3.common.C.CONTENT_TYPE_OTHER}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface C.ContentType {
  }

  @IntDef(open=true, value={androidx.media3.common.C.CRYPTO_TYPE_UNSUPPORTED, androidx.media3.common.C.CRYPTO_TYPE_NONE, androidx.media3.common.C.CRYPTO_TYPE_FRAMEWORK}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) public static @interface C.CryptoType {
  }

  @IntDef(flag=true, value={androidx.media3.common.C.ROLE_FLAG_MAIN, androidx.media3.common.C.ROLE_FLAG_ALTERNATE, androidx.media3.common.C.ROLE_FLAG_SUPPLEMENTARY, androidx.media3.common.C.ROLE_FLAG_COMMENTARY, androidx.media3.common.C.ROLE_FLAG_DUB, androidx.media3.common.C.ROLE_FLAG_EMERGENCY, androidx.media3.common.C.ROLE_FLAG_CAPTION, androidx.media3.common.C.ROLE_FLAG_SUBTITLE, androidx.media3.common.C.ROLE_FLAG_SIGN, androidx.media3.common.C.ROLE_FLAG_DESCRIBES_VIDEO, androidx.media3.common.C.ROLE_FLAG_DESCRIBES_MUSIC_AND_SOUND, androidx.media3.common.C.ROLE_FLAG_ENHANCED_DIALOG_INTELLIGIBILITY, androidx.media3.common.C.ROLE_FLAG_TRANSCRIBES_DIALOG, androidx.media3.common.C.ROLE_FLAG_EASY_TO_READ, androidx.media3.common.C.ROLE_FLAG_TRICK_PLAY}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface C.RoleFlags {
  }

  @IntDef(flag=true, value={androidx.media3.common.C.SELECTION_FLAG_DEFAULT, androidx.media3.common.C.SELECTION_FLAG_FORCED, androidx.media3.common.C.SELECTION_FLAG_AUTOSELECT}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface C.SelectionFlags {
  }

  @IntDef({androidx.media3.common.C.SPATIALIZATION_BEHAVIOR_AUTO, androidx.media3.common.C.SPATIALIZATION_BEHAVIOR_NEVER}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) public static @interface C.SpatializationBehavior {
  }

  @IntDef(open=true, value={androidx.media3.common.C.TRACK_TYPE_UNKNOWN, androidx.media3.common.C.TRACK_TYPE_DEFAULT, androidx.media3.common.C.TRACK_TYPE_AUDIO, androidx.media3.common.C.TRACK_TYPE_VIDEO, androidx.media3.common.C.TRACK_TYPE_TEXT, androidx.media3.common.C.TRACK_TYPE_IMAGE, androidx.media3.common.C.TRACK_TYPE_METADATA, androidx.media3.common.C.TRACK_TYPE_CAMERA_MOTION, androidx.media3.common.C.TRACK_TYPE_NONE}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) public static @interface C.TrackType {
  }

  @IntDef({androidx.media3.common.C.WAKE_MODE_NONE, androidx.media3.common.C.WAKE_MODE_LOCAL, androidx.media3.common.C.WAKE_MODE_NETWORK}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface C.WakeMode {
  }

  public final class DeviceInfo {
    field public static final int PLAYBACK_TYPE_LOCAL = 0; // 0x0
    field public static final int PLAYBACK_TYPE_REMOTE = 1; // 0x1
    field public static final androidx.media3.common.DeviceInfo UNKNOWN;
    field public final int maxVolume;
    field public final int minVolume;
    field @androidx.media3.common.DeviceInfo.PlaybackType public final int playbackType;
  }

  @IntDef({androidx.media3.common.DeviceInfo.PLAYBACK_TYPE_LOCAL, androidx.media3.common.DeviceInfo.PLAYBACK_TYPE_REMOTE}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) public static @interface DeviceInfo.PlaybackType {
  }

  public interface ErrorMessageProvider<T extends java.lang.Throwable> {
    method public android.util.Pair<java.lang.Integer,java.lang.String> getErrorMessage(T);
  }

  public final class Format {
    field public static final int NO_VALUE = -1; // 0xffffffff
    field public final int channelCount;
    field @Nullable public final String codecs;
    field @Nullable public final String containerMimeType;
    field public final float frameRate;
    field public final int height;
    field @Nullable public final String id;
    field @Nullable public final String label;
    field @Nullable public final String language;
    field public final float pixelWidthHeightRatio;
    field @androidx.media3.common.C.RoleFlags public final int roleFlags;
    field @Nullable public final String sampleMimeType;
    field public final int sampleRate;
    field @androidx.media3.common.C.SelectionFlags public final int selectionFlags;
    field public final int width;
  }

  public final class HeartRating extends androidx.media3.common.Rating {
    ctor public HeartRating();
    ctor public HeartRating(boolean);
    method public boolean isHeart();
    method public boolean isRated();
  }

  public final class MediaItem {
    method public androidx.media3.common.MediaItem.Builder buildUpon();
    method public static androidx.media3.common.MediaItem fromUri(String);
    method public static androidx.media3.common.MediaItem fromUri(android.net.Uri);
    field public static final String DEFAULT_MEDIA_ID = "";
    field public static final androidx.media3.common.MediaItem EMPTY;
    field public final androidx.media3.common.MediaItem.ClippingConfiguration clippingConfiguration;
    field public final androidx.media3.common.MediaItem.LiveConfiguration liveConfiguration;
    field @Nullable public final androidx.media3.common.MediaItem.LocalConfiguration localConfiguration;
    field public final String mediaId;
    field public final androidx.media3.common.MediaMetadata mediaMetadata;
    field public final androidx.media3.common.MediaItem.RequestMetadata requestMetadata;
  }

  public static final class MediaItem.AdsConfiguration {
    method public androidx.media3.common.MediaItem.AdsConfiguration.Builder buildUpon();
    field public final android.net.Uri adTagUri;
    field @Nullable public final Object adsId;
  }

  public static final class MediaItem.AdsConfiguration.Builder {
    ctor public MediaItem.AdsConfiguration.Builder(android.net.Uri);
    method public androidx.media3.common.MediaItem.AdsConfiguration build();
    method public androidx.media3.common.MediaItem.AdsConfiguration.Builder setAdTagUri(android.net.Uri);
    method public androidx.media3.common.MediaItem.AdsConfiguration.Builder setAdsId(@Nullable Object);
  }

  public static final class MediaItem.Builder {
    ctor public MediaItem.Builder();
    method public androidx.media3.common.MediaItem build();
    method public androidx.media3.common.MediaItem.Builder setAdsConfiguration(@Nullable androidx.media3.common.MediaItem.AdsConfiguration);
    method public androidx.media3.common.MediaItem.Builder setClippingConfiguration(androidx.media3.common.MediaItem.ClippingConfiguration);
    method public androidx.media3.common.MediaItem.Builder setDrmConfiguration(@Nullable androidx.media3.common.MediaItem.DrmConfiguration);
    method public androidx.media3.common.MediaItem.Builder setLiveConfiguration(androidx.media3.common.MediaItem.LiveConfiguration);
    method public androidx.media3.common.MediaItem.Builder setMediaId(String);
    method public androidx.media3.common.MediaItem.Builder setMediaMetadata(androidx.media3.common.MediaMetadata);
    method public androidx.media3.common.MediaItem.Builder setMimeType(@Nullable String);
    method public androidx.media3.common.MediaItem.Builder setRequestMetadata(androidx.media3.common.MediaItem.RequestMetadata);
    method public androidx.media3.common.MediaItem.Builder setSubtitleConfigurations(java.util.List<androidx.media3.common.MediaItem.SubtitleConfiguration>);
    method public androidx.media3.common.MediaItem.Builder setTag(@Nullable Object);
    method public androidx.media3.common.MediaItem.Builder setUri(@Nullable String);
    method public androidx.media3.common.MediaItem.Builder setUri(@Nullable android.net.Uri);
  }

  public static class MediaItem.ClippingConfiguration {
    method public androidx.media3.common.MediaItem.ClippingConfiguration.Builder buildUpon();
    field public static final androidx.media3.common.MediaItem.ClippingConfiguration UNSET;
    field public final long endPositionMs;
    field public final boolean relativeToDefaultPosition;
    field public final boolean relativeToLiveWindow;
    field @IntRange(from=0) public final long startPositionMs;
    field public final boolean startsAtKeyFrame;
  }

  public static final class MediaItem.ClippingConfiguration.Builder {
    ctor public MediaItem.ClippingConfiguration.Builder();
    method public androidx.media3.common.MediaItem.ClippingConfiguration build();
    method public androidx.media3.common.MediaItem.ClippingConfiguration.Builder setEndPositionMs(long);
    method public androidx.media3.common.MediaItem.ClippingConfiguration.Builder setRelativeToDefaultPosition(boolean);
    method public androidx.media3.common.MediaItem.ClippingConfiguration.Builder setRelativeToLiveWindow(boolean);
    method public androidx.media3.common.MediaItem.ClippingConfiguration.Builder setStartPositionMs(@IntRange(from=0) long);
    method public androidx.media3.common.MediaItem.ClippingConfiguration.Builder setStartsAtKeyFrame(boolean);
  }

  public static final class MediaItem.DrmConfiguration {
    method public androidx.media3.common.MediaItem.DrmConfiguration.Builder buildUpon();
    method @Nullable public byte[] getKeySetId();
    field public final boolean forceDefaultLicenseUri;
    field public final com.google.common.collect.ImmutableList<java.lang.Integer> forcedSessionTrackTypes;
    field public final com.google.common.collect.ImmutableMap<java.lang.String,java.lang.String> licenseRequestHeaders;
    field @Nullable public final android.net.Uri licenseUri;
    field public final boolean multiSession;
    field public final boolean playClearContentWithoutKey;
    field public final java.util.UUID scheme;
  }

  public static final class MediaItem.DrmConfiguration.Builder {
    ctor public MediaItem.DrmConfiguration.Builder(java.util.UUID);
    method public androidx.media3.common.MediaItem.DrmConfiguration build();
    method public androidx.media3.common.MediaItem.DrmConfiguration.Builder setForceDefaultLicenseUri(boolean);
    method public androidx.media3.common.MediaItem.DrmConfiguration.Builder setForceSessionsForAudioAndVideoTracks(boolean);
    method public androidx.media3.common.MediaItem.DrmConfiguration.Builder setForcedSessionTrackTypes(java.util.List<java.lang.Integer>);
    method public androidx.media3.common.MediaItem.DrmConfiguration.Builder setKeySetId(@Nullable byte[]);
    method public androidx.media3.common.MediaItem.DrmConfiguration.Builder setLicenseRequestHeaders(java.util.Map<java.lang.String,java.lang.String>);
    method public androidx.media3.common.MediaItem.DrmConfiguration.Builder setLicenseUri(@Nullable android.net.Uri);
    method public androidx.media3.common.MediaItem.DrmConfiguration.Builder setLicenseUri(@Nullable String);
    method public androidx.media3.common.MediaItem.DrmConfiguration.Builder setMultiSession(boolean);
    method public androidx.media3.common.MediaItem.DrmConfiguration.Builder setPlayClearContentWithoutKey(boolean);
    method public androidx.media3.common.MediaItem.DrmConfiguration.Builder setScheme(java.util.UUID);
  }

  public static final class MediaItem.LiveConfiguration {
    method public androidx.media3.common.MediaItem.LiveConfiguration.Builder buildUpon();
    field public static final androidx.media3.common.MediaItem.LiveConfiguration UNSET;
    field public final long maxOffsetMs;
    field public final float maxPlaybackSpeed;
    field public final long minOffsetMs;
    field public final float minPlaybackSpeed;
    field public final long targetOffsetMs;
  }

  public static final class MediaItem.LiveConfiguration.Builder {
    ctor public MediaItem.LiveConfiguration.Builder();
    method public androidx.media3.common.MediaItem.LiveConfiguration build();
    method public androidx.media3.common.MediaItem.LiveConfiguration.Builder setMaxOffsetMs(long);
    method public androidx.media3.common.MediaItem.LiveConfiguration.Builder setMaxPlaybackSpeed(float);
    method public androidx.media3.common.MediaItem.LiveConfiguration.Builder setMinOffsetMs(long);
    method public androidx.media3.common.MediaItem.LiveConfiguration.Builder setMinPlaybackSpeed(float);
    method public androidx.media3.common.MediaItem.LiveConfiguration.Builder setTargetOffsetMs(long);
  }

  public static class MediaItem.LocalConfiguration {
    field @Nullable public final androidx.media3.common.MediaItem.AdsConfiguration adsConfiguration;
    field @Nullable public final androidx.media3.common.MediaItem.DrmConfiguration drmConfiguration;
    field @Nullable public final String mimeType;
    field public final com.google.common.collect.ImmutableList<androidx.media3.common.MediaItem.SubtitleConfiguration> subtitleConfigurations;
    field @Nullable public final Object tag;
    field public final android.net.Uri uri;
  }

  public static final class MediaItem.RequestMetadata {
    method public androidx.media3.common.MediaItem.RequestMetadata.Builder buildUpon();
    field public static final androidx.media3.common.MediaItem.RequestMetadata EMPTY;
    field @Nullable public final android.os.Bundle extras;
    field @Nullable public final android.net.Uri mediaUri;
    field @Nullable public final String searchQuery;
  }

  public static final class MediaItem.RequestMetadata.Builder {
    ctor public MediaItem.RequestMetadata.Builder();
    method public androidx.media3.common.MediaItem.RequestMetadata build();
    method public androidx.media3.common.MediaItem.RequestMetadata.Builder setExtras(@Nullable android.os.Bundle);
    method public androidx.media3.common.MediaItem.RequestMetadata.Builder setMediaUri(@Nullable android.net.Uri);
    method public androidx.media3.common.MediaItem.RequestMetadata.Builder setSearchQuery(@Nullable String);
  }

  public static class MediaItem.SubtitleConfiguration {
    method public androidx.media3.common.MediaItem.SubtitleConfiguration.Builder buildUpon();
    field @Nullable public final String id;
    field @Nullable public final String label;
    field @Nullable public final String language;
    field @Nullable public final String mimeType;
    field @androidx.media3.common.C.RoleFlags public final int roleFlags;
    field @androidx.media3.common.C.SelectionFlags public final int selectionFlags;
    field public final android.net.Uri uri;
  }

  public static final class MediaItem.SubtitleConfiguration.Builder {
    ctor public MediaItem.SubtitleConfiguration.Builder(android.net.Uri);
    method public androidx.media3.common.MediaItem.SubtitleConfiguration build();
    method public androidx.media3.common.MediaItem.SubtitleConfiguration.Builder setId(@Nullable String);
    method public androidx.media3.common.MediaItem.SubtitleConfiguration.Builder setLabel(@Nullable String);
    method public androidx.media3.common.MediaItem.SubtitleConfiguration.Builder setLanguage(@Nullable String);
    method public androidx.media3.common.MediaItem.SubtitleConfiguration.Builder setMimeType(@Nullable String);
    method public androidx.media3.common.MediaItem.SubtitleConfiguration.Builder setRoleFlags(@androidx.media3.common.C.RoleFlags int);
    method public androidx.media3.common.MediaItem.SubtitleConfiguration.Builder setSelectionFlags(@androidx.media3.common.C.SelectionFlags int);
    method public androidx.media3.common.MediaItem.SubtitleConfiguration.Builder setUri(android.net.Uri);
  }

  public final class MediaMetadata {
    method public androidx.media3.common.MediaMetadata.Builder buildUpon();
    field public static final androidx.media3.common.MediaMetadata EMPTY;
    field public static final int FOLDER_TYPE_ALBUMS = 2; // 0x2
    field public static final int FOLDER_TYPE_ARTISTS = 3; // 0x3
    field public static final int FOLDER_TYPE_GENRES = 4; // 0x4
    field public static final int FOLDER_TYPE_MIXED = 0; // 0x0
    field public static final int FOLDER_TYPE_NONE = -1; // 0xffffffff
    field public static final int FOLDER_TYPE_PLAYLISTS = 5; // 0x5
    field public static final int FOLDER_TYPE_TITLES = 1; // 0x1
    field public static final int FOLDER_TYPE_YEARS = 6; // 0x6
    field public static final int PICTURE_TYPE_ARTIST_PERFORMER = 8; // 0x8
    field public static final int PICTURE_TYPE_A_BRIGHT_COLORED_FISH = 17; // 0x11
    field public static final int PICTURE_TYPE_BACK_COVER = 4; // 0x4
    field public static final int PICTURE_TYPE_BAND_ARTIST_LOGO = 19; // 0x13
    field public static final int PICTURE_TYPE_BAND_ORCHESTRA = 10; // 0xa
    field public static final int PICTURE_TYPE_COMPOSER = 11; // 0xb
    field public static final int PICTURE_TYPE_CONDUCTOR = 9; // 0x9
    field public static final int PICTURE_TYPE_DURING_PERFORMANCE = 15; // 0xf
    field public static final int PICTURE_TYPE_DURING_RECORDING = 14; // 0xe
    field public static final int PICTURE_TYPE_FILE_ICON = 1; // 0x1
    field public static final int PICTURE_TYPE_FILE_ICON_OTHER = 2; // 0x2
    field public static final int PICTURE_TYPE_FRONT_COVER = 3; // 0x3
    field public static final int PICTURE_TYPE_ILLUSTRATION = 18; // 0x12
    field public static final int PICTURE_TYPE_LEAD_ARTIST_PERFORMER = 7; // 0x7
    field public static final int PICTURE_TYPE_LEAFLET_PAGE = 5; // 0x5
    field public static final int PICTURE_TYPE_LYRICIST = 12; // 0xc
    field public static final int PICTURE_TYPE_MEDIA = 6; // 0x6
    field public static final int PICTURE_TYPE_MOVIE_VIDEO_SCREEN_CAPTURE = 16; // 0x10
    field public static final int PICTURE_TYPE_OTHER = 0; // 0x0
    field public static final int PICTURE_TYPE_PUBLISHER_STUDIO_LOGO = 20; // 0x14
    field public static final int PICTURE_TYPE_RECORDING_LOCATION = 13; // 0xd
    field @Nullable public final CharSequence albumArtist;
    field @Nullable public final CharSequence albumTitle;
    field @Nullable public final CharSequence artist;
    field @Nullable public final byte[] artworkData;
    field @Nullable @androidx.media3.common.MediaMetadata.PictureType public final Integer artworkDataType;
    field @Nullable public final android.net.Uri artworkUri;
    field @Nullable public final CharSequence compilation;
    field @Nullable public final CharSequence composer;
    field @Nullable public final CharSequence conductor;
    field @Nullable public final CharSequence description;
    field @Nullable public final Integer discNumber;
    field @Nullable public final CharSequence displayTitle;
    field @Nullable public final android.os.Bundle extras;
    field @Nullable @androidx.media3.common.MediaMetadata.FolderType public final Integer folderType;
    field @Nullable public final CharSequence genre;
    field @Nullable public final Boolean isPlayable;
    field @Nullable public final androidx.media3.common.Rating overallRating;
    field @Nullable public final Integer recordingDay;
    field @Nullable public final Integer recordingMonth;
    field @Nullable public final Integer recordingYear;
    field @Nullable public final Integer releaseDay;
    field @Nullable public final Integer releaseMonth;
    field @Nullable public final Integer releaseYear;
    field @Nullable public final CharSequence station;
    field @Nullable public final CharSequence subtitle;
    field @Nullable public final CharSequence title;
    field @Nullable public final Integer totalDiscCount;
    field @Nullable public final Integer totalTrackCount;
    field @Nullable public final Integer trackNumber;
    field @Nullable public final androidx.media3.common.Rating userRating;
    field @Nullable public final CharSequence writer;
  }

  public static final class MediaMetadata.Builder {
    ctor public MediaMetadata.Builder();
    method public androidx.media3.common.MediaMetadata build();
    method public androidx.media3.common.MediaMetadata.Builder maybeSetArtworkData(byte[], @androidx.media3.common.MediaMetadata.PictureType int);
    method public androidx.media3.common.MediaMetadata.Builder setAlbumArtist(@Nullable CharSequence);
    method public androidx.media3.common.MediaMetadata.Builder setAlbumTitle(@Nullable CharSequence);
    method public androidx.media3.common.MediaMetadata.Builder setArtist(@Nullable CharSequence);
    method public androidx.media3.common.MediaMetadata.Builder setArtworkData(@Nullable byte[], @Nullable @androidx.media3.common.MediaMetadata.PictureType Integer);
    method public androidx.media3.common.MediaMetadata.Builder setArtworkUri(@Nullable android.net.Uri);
    method public androidx.media3.common.MediaMetadata.Builder setCompilation(@Nullable CharSequence);
    method public androidx.media3.common.MediaMetadata.Builder setComposer(@Nullable CharSequence);
    method public androidx.media3.common.MediaMetadata.Builder setConductor(@Nullable CharSequence);
    method public androidx.media3.common.MediaMetadata.Builder setDescription(@Nullable CharSequence);
    method public androidx.media3.common.MediaMetadata.Builder setDiscNumber(@Nullable Integer);
    method public androidx.media3.common.MediaMetadata.Builder setDisplayTitle(@Nullable CharSequence);
    method public androidx.media3.common.MediaMetadata.Builder setExtras(@Nullable android.os.Bundle);
    method public androidx.media3.common.MediaMetadata.Builder setFolderType(@Nullable @androidx.media3.common.MediaMetadata.FolderType Integer);
    method public androidx.media3.common.MediaMetadata.Builder setGenre(@Nullable CharSequence);
    method public androidx.media3.common.MediaMetadata.Builder setIsPlayable(@Nullable Boolean);
    method public androidx.media3.common.MediaMetadata.Builder setOverallRating(@Nullable androidx.media3.common.Rating);
    method public androidx.media3.common.MediaMetadata.Builder setRecordingDay(@IntRange(from=1, to=31) @Nullable Integer);
    method public androidx.media3.common.MediaMetadata.Builder setRecordingMonth(@IntRange(from=1, to=12) @Nullable Integer);
    method public androidx.media3.common.MediaMetadata.Builder setRecordingYear(@Nullable Integer);
    method public androidx.media3.common.MediaMetadata.Builder setReleaseDay(@IntRange(from=1, to=31) @Nullable Integer);
    method public androidx.media3.common.MediaMetadata.Builder setReleaseMonth(@IntRange(from=1, to=12) @Nullable Integer);
    method public androidx.media3.common.MediaMetadata.Builder setReleaseYear(@Nullable Integer);
    method public androidx.media3.common.MediaMetadata.Builder setStation(@Nullable CharSequence);
    method public androidx.media3.common.MediaMetadata.Builder setSubtitle(@Nullable CharSequence);
    method public androidx.media3.common.MediaMetadata.Builder setTitle(@Nullable CharSequence);
    method public androidx.media3.common.MediaMetadata.Builder setTotalDiscCount(@Nullable Integer);
    method public androidx.media3.common.MediaMetadata.Builder setTotalTrackCount(@Nullable Integer);
    method public androidx.media3.common.MediaMetadata.Builder setTrackNumber(@Nullable Integer);
    method public androidx.media3.common.MediaMetadata.Builder setUserRating(@Nullable androidx.media3.common.Rating);
    method public androidx.media3.common.MediaMetadata.Builder setWriter(@Nullable CharSequence);
  }

  @IntDef({androidx.media3.common.MediaMetadata.FOLDER_TYPE_NONE, androidx.media3.common.MediaMetadata.FOLDER_TYPE_MIXED, androidx.media3.common.MediaMetadata.FOLDER_TYPE_TITLES, androidx.media3.common.MediaMetadata.FOLDER_TYPE_ALBUMS, androidx.media3.common.MediaMetadata.FOLDER_TYPE_ARTISTS, androidx.media3.common.MediaMetadata.FOLDER_TYPE_GENRES, androidx.media3.common.MediaMetadata.FOLDER_TYPE_PLAYLISTS, androidx.media3.common.MediaMetadata.FOLDER_TYPE_YEARS}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface MediaMetadata.FolderType {
  }

  @IntDef({androidx.media3.common.MediaMetadata.PICTURE_TYPE_OTHER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_FILE_ICON, androidx.media3.common.MediaMetadata.PICTURE_TYPE_FILE_ICON_OTHER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_FRONT_COVER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_BACK_COVER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_LEAFLET_PAGE, androidx.media3.common.MediaMetadata.PICTURE_TYPE_MEDIA, androidx.media3.common.MediaMetadata.PICTURE_TYPE_LEAD_ARTIST_PERFORMER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_ARTIST_PERFORMER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_CONDUCTOR, androidx.media3.common.MediaMetadata.PICTURE_TYPE_BAND_ORCHESTRA, androidx.media3.common.MediaMetadata.PICTURE_TYPE_COMPOSER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_LYRICIST, androidx.media3.common.MediaMetadata.PICTURE_TYPE_RECORDING_LOCATION, androidx.media3.common.MediaMetadata.PICTURE_TYPE_DURING_RECORDING, androidx.media3.common.MediaMetadata.PICTURE_TYPE_DURING_PERFORMANCE, androidx.media3.common.MediaMetadata.PICTURE_TYPE_MOVIE_VIDEO_SCREEN_CAPTURE, androidx.media3.common.MediaMetadata.PICTURE_TYPE_A_BRIGHT_COLORED_FISH, androidx.media3.common.MediaMetadata.PICTURE_TYPE_ILLUSTRATION, androidx.media3.common.MediaMetadata.PICTURE_TYPE_BAND_ARTIST_LOGO, androidx.media3.common.MediaMetadata.PICTURE_TYPE_PUBLISHER_STUDIO_LOGO}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface MediaMetadata.PictureType {
  }

  public final class MimeTypes {
    field public static final String APPLICATION_AIT = "application/vnd.dvb.ait";
    field public static final String APPLICATION_CEA608 = "application/cea-608";
    field public static final String APPLICATION_CEA708 = "application/cea-708";
    field public static final String APPLICATION_DVBSUBS = "application/dvbsubs";
    field public static final String APPLICATION_ID3 = "application/id3";
    field public static final String APPLICATION_M3U8 = "application/x-mpegURL";
    field public static final String APPLICATION_MATROSKA = "application/x-matroska";
    field public static final String APPLICATION_MP4 = "application/mp4";
    field public static final String APPLICATION_MP4CEA608 = "application/x-mp4-cea-608";
    field public static final String APPLICATION_MP4VTT = "application/x-mp4-vtt";
    field public static final String APPLICATION_MPD = "application/dash+xml";
    field public static final String APPLICATION_PGS = "application/pgs";
    field public static final String APPLICATION_RAWCC = "application/x-rawcc";
    field public static final String APPLICATION_RTSP = "application/x-rtsp";
    field public static final String APPLICATION_SS = "application/vnd.ms-sstr+xml";
    field public static final String APPLICATION_SUBRIP = "application/x-subrip";
    field public static final String APPLICATION_TTML = "application/ttml+xml";
    field public static final String APPLICATION_TX3G = "application/x-quicktime-tx3g";
    field public static final String APPLICATION_VOBSUB = "application/vobsub";
    field public static final String APPLICATION_WEBM = "application/webm";
    field public static final String AUDIO_AAC = "audio/mp4a-latm";
    field public static final String AUDIO_AC3 = "audio/ac3";
    field public static final String AUDIO_AC4 = "audio/ac4";
    field public static final String AUDIO_ALAC = "audio/alac";
    field public static final String AUDIO_ALAW = "audio/g711-alaw";
    field public static final String AUDIO_AMR = "audio/amr";
    field public static final String AUDIO_AMR_NB = "audio/3gpp";
    field public static final String AUDIO_AMR_WB = "audio/amr-wb";
    field public static final String AUDIO_DTS = "audio/vnd.dts";
    field public static final String AUDIO_DTS_EXPRESS = "audio/vnd.dts.hd;profile=lbr";
    field public static final String AUDIO_DTS_HD = "audio/vnd.dts.hd";
    field public static final String AUDIO_E_AC3 = "audio/eac3";
    field public static final String AUDIO_E_AC3_JOC = "audio/eac3-joc";
    field public static final String AUDIO_FLAC = "audio/flac";
    field public static final String AUDIO_MIDI = "audio/midi";
    field public static final String AUDIO_MLAW = "audio/g711-mlaw";
    field public static final String AUDIO_MP4 = "audio/mp4";
    field public static final String AUDIO_MPEG = "audio/mpeg";
    field public static final String AUDIO_MPEGH_MHA1 = "audio/mha1";
    field public static final String AUDIO_MPEGH_MHM1 = "audio/mhm1";
    field public static final String AUDIO_MPEG_L1 = "audio/mpeg-L1";
    field public static final String AUDIO_MPEG_L2 = "audio/mpeg-L2";
    field public static final String AUDIO_MSGSM = "audio/gsm";
    field public static final String AUDIO_OGG = "audio/ogg";
    field public static final String AUDIO_OPUS = "audio/opus";
    field public static final String AUDIO_RAW = "audio/raw";
    field public static final String AUDIO_TRUEHD = "audio/true-hd";
    field public static final String AUDIO_VORBIS = "audio/vorbis";
    field public static final String AUDIO_WAV = "audio/wav";
    field public static final String AUDIO_WEBM = "audio/webm";
    field public static final String IMAGE_JPEG = "image/jpeg";
    field public static final String TEXT_SSA = "text/x-ssa";
    field public static final String TEXT_VTT = "text/vtt";
    field public static final String VIDEO_AV1 = "video/av01";
    field public static final String VIDEO_AVI = "video/x-msvideo";
    field public static final String VIDEO_DIVX = "video/divx";
    field public static final String VIDEO_DOLBY_VISION = "video/dolby-vision";
    field public static final String VIDEO_H263 = "video/3gpp";
    field public static final String VIDEO_H264 = "video/avc";
    field public static final String VIDEO_H265 = "video/hevc";
    field public static final String VIDEO_MJPEG = "video/mjpeg";
    field public static final String VIDEO_MP2T = "video/mp2t";
    field public static final String VIDEO_MP4 = "video/mp4";
    field public static final String VIDEO_MP42 = "video/mp42";
    field public static final String VIDEO_MP43 = "video/mp43";
    field public static final String VIDEO_MP4V = "video/mp4v-es";
    field public static final String VIDEO_MPEG = "video/mpeg";
    field public static final String VIDEO_MPEG2 = "video/mpeg2";
    field public static final String VIDEO_OGG = "video/ogg";
    field public static final String VIDEO_PS = "video/mp2p";
    field public static final String VIDEO_VC1 = "video/wvc1";
    field public static final String VIDEO_WEBM = "video/webm";
  }

  public final class PercentageRating extends androidx.media3.common.Rating {
    ctor public PercentageRating();
    ctor public PercentageRating(@FloatRange(from=0, to=100) float);
    method public float getPercent();
    method public boolean isRated();
  }

  public class PlaybackException extends java.lang.Exception {
    method @CallSuper public boolean errorInfoEquals(@Nullable androidx.media3.common.PlaybackException);
    method public static String getErrorCodeName(@androidx.media3.common.PlaybackException.ErrorCode int);
    method public final String getErrorCodeName();
    field public static final int CUSTOM_ERROR_CODE_BASE = 1000000; // 0xf4240
    field public static final int ERROR_CODE_AUDIO_TRACK_INIT_FAILED = 5001; // 0x1389
    field public static final int ERROR_CODE_AUDIO_TRACK_WRITE_FAILED = 5002; // 0x138a
    field public static final int ERROR_CODE_BEHIND_LIVE_WINDOW = 1002; // 0x3ea
    field public static final int ERROR_CODE_DECODER_INIT_FAILED = 4001; // 0xfa1
    field public static final int ERROR_CODE_DECODER_QUERY_FAILED = 4002; // 0xfa2
    field public static final int ERROR_CODE_DECODING_FAILED = 4003; // 0xfa3
    field public static final int ERROR_CODE_DECODING_FORMAT_EXCEEDS_CAPABILITIES = 4004; // 0xfa4
    field public static final int ERROR_CODE_DECODING_FORMAT_UNSUPPORTED = 4005; // 0xfa5
    field public static final int ERROR_CODE_DRM_CONTENT_ERROR = 6003; // 0x1773
    field public static final int ERROR_CODE_DRM_DEVICE_REVOKED = 6007; // 0x1777
    field public static final int ERROR_CODE_DRM_DISALLOWED_OPERATION = 6005; // 0x1775
    field public static final int ERROR_CODE_DRM_LICENSE_ACQUISITION_FAILED = 6004; // 0x1774
    field public static final int ERROR_CODE_DRM_LICENSE_EXPIRED = 6008; // 0x1778
    field public static final int ERROR_CODE_DRM_PROVISIONING_FAILED = 6002; // 0x1772
    field public static final int ERROR_CODE_DRM_SCHEME_UNSUPPORTED = 6001; // 0x1771
    field public static final int ERROR_CODE_DRM_SYSTEM_ERROR = 6006; // 0x1776
    field public static final int ERROR_CODE_DRM_UNSPECIFIED = 6000; // 0x1770
    field public static final int ERROR_CODE_FAILED_RUNTIME_CHECK = 1004; // 0x3ec
    field public static final int ERROR_CODE_IO_BAD_HTTP_STATUS = 2004; // 0x7d4
    field public static final int ERROR_CODE_IO_CLEARTEXT_NOT_PERMITTED = 2007; // 0x7d7
    field public static final int ERROR_CODE_IO_FILE_NOT_FOUND = 2005; // 0x7d5
    field public static final int ERROR_CODE_IO_INVALID_HTTP_CONTENT_TYPE = 2003; // 0x7d3
    field public static final int ERROR_CODE_IO_NETWORK_CONNECTION_FAILED = 2001; // 0x7d1
    field public static final int ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT = 2002; // 0x7d2
    field public static final int ERROR_CODE_IO_NO_PERMISSION = 2006; // 0x7d6
    field public static final int ERROR_CODE_IO_READ_POSITION_OUT_OF_RANGE = 2008; // 0x7d8
    field public static final int ERROR_CODE_IO_UNSPECIFIED = 2000; // 0x7d0
    field public static final int ERROR_CODE_PARSING_CONTAINER_MALFORMED = 3001; // 0xbb9
    field public static final int ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED = 3003; // 0xbbb
    field public static final int ERROR_CODE_PARSING_MANIFEST_MALFORMED = 3002; // 0xbba
    field public static final int ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED = 3004; // 0xbbc
    field public static final int ERROR_CODE_REMOTE_ERROR = 1001; // 0x3e9
    field public static final int ERROR_CODE_TIMEOUT = 1003; // 0x3eb
    field public static final int ERROR_CODE_UNSPECIFIED = 1000; // 0x3e8
    field @androidx.media3.common.PlaybackException.ErrorCode public final int errorCode;
    field public final long timestampMs;
  }

  @IntDef(open=true, value={androidx.media3.common.PlaybackException.ERROR_CODE_UNSPECIFIED, androidx.media3.common.PlaybackException.ERROR_CODE_REMOTE_ERROR, androidx.media3.common.PlaybackException.ERROR_CODE_BEHIND_LIVE_WINDOW, androidx.media3.common.PlaybackException.ERROR_CODE_TIMEOUT, androidx.media3.common.PlaybackException.ERROR_CODE_FAILED_RUNTIME_CHECK, androidx.media3.common.PlaybackException.ERROR_CODE_IO_UNSPECIFIED, androidx.media3.common.PlaybackException.ERROR_CODE_IO_NETWORK_CONNECTION_FAILED, androidx.media3.common.PlaybackException.ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT, androidx.media3.common.PlaybackException.ERROR_CODE_IO_INVALID_HTTP_CONTENT_TYPE, androidx.media3.common.PlaybackException.ERROR_CODE_IO_BAD_HTTP_STATUS, androidx.media3.common.PlaybackException.ERROR_CODE_IO_FILE_NOT_FOUND, androidx.media3.common.PlaybackException.ERROR_CODE_IO_NO_PERMISSION, androidx.media3.common.PlaybackException.ERROR_CODE_IO_CLEARTEXT_NOT_PERMITTED, androidx.media3.common.PlaybackException.ERROR_CODE_IO_READ_POSITION_OUT_OF_RANGE, androidx.media3.common.PlaybackException.ERROR_CODE_PARSING_CONTAINER_MALFORMED, androidx.media3.common.PlaybackException.ERROR_CODE_PARSING_MANIFEST_MALFORMED, androidx.media3.common.PlaybackException.ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED, androidx.media3.common.PlaybackException.ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED, androidx.media3.common.PlaybackException.ERROR_CODE_DECODER_INIT_FAILED, androidx.media3.common.PlaybackException.ERROR_CODE_DECODER_QUERY_FAILED, androidx.media3.common.PlaybackException.ERROR_CODE_DECODING_FAILED, androidx.media3.common.PlaybackException.ERROR_CODE_DECODING_FORMAT_EXCEEDS_CAPABILITIES, androidx.media3.common.PlaybackException.ERROR_CODE_DECODING_FORMAT_UNSUPPORTED, androidx.media3.common.PlaybackException.ERROR_CODE_AUDIO_TRACK_INIT_FAILED, androidx.media3.common.PlaybackException.ERROR_CODE_AUDIO_TRACK_WRITE_FAILED, androidx.media3.common.PlaybackException.ERROR_CODE_DRM_UNSPECIFIED, androidx.media3.common.PlaybackException.ERROR_CODE_DRM_SCHEME_UNSUPPORTED, androidx.media3.common.PlaybackException.ERROR_CODE_DRM_PROVISIONING_FAILED, androidx.media3.common.PlaybackException.ERROR_CODE_DRM_CONTENT_ERROR, androidx.media3.common.PlaybackException.ERROR_CODE_DRM_LICENSE_ACQUISITION_FAILED, androidx.media3.common.PlaybackException.ERROR_CODE_DRM_DISALLOWED_OPERATION, androidx.media3.common.PlaybackException.ERROR_CODE_DRM_SYSTEM_ERROR, androidx.media3.common.PlaybackException.ERROR_CODE_DRM_DEVICE_REVOKED, androidx.media3.common.PlaybackException.ERROR_CODE_DRM_LICENSE_EXPIRED}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface PlaybackException.ErrorCode {
  }

  public final class PlaybackParameters {
    ctor public PlaybackParameters(float);
    ctor public PlaybackParameters(@FloatRange(from=0, fromInclusive=false) float, @FloatRange(from=0, fromInclusive=false) float);
    method @CheckResult public androidx.media3.common.PlaybackParameters withSpeed(@FloatRange(from=0, fromInclusive=false) float);
    field public static final androidx.media3.common.PlaybackParameters DEFAULT;
    field public final float pitch;
    field public final float speed;
  }

  public interface Player {
    method public void addListener(androidx.media3.common.Player.Listener);
    method public void addMediaItem(androidx.media3.common.MediaItem);
    method public void addMediaItem(int, androidx.media3.common.MediaItem);
    method public void addMediaItems(java.util.List<androidx.media3.common.MediaItem>);
    method public void addMediaItems(int, java.util.List<androidx.media3.common.MediaItem>);
    method public boolean canAdvertiseSession();
    method public void clearMediaItems();
    method public void clearVideoSurface();
    method public void clearVideoSurface(@Nullable android.view.Surface);
    method public void clearVideoSurfaceHolder(@Nullable android.view.SurfaceHolder);
    method public void clearVideoSurfaceView(@Nullable android.view.SurfaceView);
    method public void clearVideoTextureView(@Nullable android.view.TextureView);
    method public void decreaseDeviceVolume();
    method public android.os.Looper getApplicationLooper();
    method public androidx.media3.common.AudioAttributes getAudioAttributes();
    method public androidx.media3.common.Player.Commands getAvailableCommands();
    method @IntRange(from=0, to=100) public int getBufferedPercentage();
    method public long getBufferedPosition();
    method public long getContentBufferedPosition();
    method public long getContentDuration();
    method public long getContentPosition();
    method public int getCurrentAdGroupIndex();
    method public int getCurrentAdIndexInAdGroup();
    method public androidx.media3.common.text.CueGroup getCurrentCues();
    method public long getCurrentLiveOffset();
    method @Nullable public androidx.media3.common.MediaItem getCurrentMediaItem();
    method public int getCurrentMediaItemIndex();
    method public int getCurrentPeriodIndex();
    method public long getCurrentPosition();
    method public androidx.media3.common.Timeline getCurrentTimeline();
    method public androidx.media3.common.Tracks getCurrentTracks();
    method public androidx.media3.common.DeviceInfo getDeviceInfo();
    method @IntRange(from=0) public int getDeviceVolume();
    method public long getDuration();
    method public long getMaxSeekToPreviousPosition();
    method public androidx.media3.common.MediaItem getMediaItemAt(int);
    method public int getMediaItemCount();
    method public androidx.media3.common.MediaMetadata getMediaMetadata();
    method public int getNextMediaItemIndex();
    method public boolean getPlayWhenReady();
    method public androidx.media3.common.PlaybackParameters getPlaybackParameters();
    method @androidx.media3.common.Player.State public int getPlaybackState();
    method @androidx.media3.common.Player.PlaybackSuppressionReason public int getPlaybackSuppressionReason();
    method @Nullable public androidx.media3.common.PlaybackException getPlayerError();
    method public androidx.media3.common.MediaMetadata getPlaylistMetadata();
    method public int getPreviousMediaItemIndex();
    method @androidx.media3.common.Player.RepeatMode public int getRepeatMode();
    method public long getSeekBackIncrement();
    method public long getSeekForwardIncrement();
    method public boolean getShuffleModeEnabled();
    method public long getTotalBufferedDuration();
    method public androidx.media3.common.TrackSelectionParameters getTrackSelectionParameters();
    method public androidx.media3.common.VideoSize getVideoSize();
    method @FloatRange(from=0, to=1.0) public float getVolume();
    method public boolean hasNextMediaItem();
    method public boolean hasPreviousMediaItem();
    method public void increaseDeviceVolume();
    method public boolean isCommandAvailable(@androidx.media3.common.Player.Command int);
    method public boolean isCurrentMediaItemDynamic();
    method public boolean isCurrentMediaItemLive();
    method public boolean isCurrentMediaItemSeekable();
    method public boolean isDeviceMuted();
    method public boolean isLoading();
    method public boolean isPlaying();
    method public boolean isPlayingAd();
    method public void moveMediaItem(int, int);
    method public void moveMediaItems(int, int, int);
    method public void pause();
    method public void play();
    method public void prepare();
    method public void release();
    method public void removeListener(androidx.media3.common.Player.Listener);
    method public void removeMediaItem(int);
    method public void removeMediaItems(int, int);
    method public void seekBack();
    method public void seekForward();
    method public void seekTo(long);
    method public void seekTo(int, long);
    method public void seekToDefaultPosition();
    method public void seekToDefaultPosition(int);
    method public void seekToNext();
    method public void seekToNextMediaItem();
    method public void seekToPrevious();
    method public void seekToPreviousMediaItem();
    method public void setDeviceMuted(boolean);
    method public void setDeviceVolume(@IntRange(from=0) int);
    method public void setMediaItem(androidx.media3.common.MediaItem);
    method public void setMediaItem(androidx.media3.common.MediaItem, long);
    method public void setMediaItem(androidx.media3.common.MediaItem, boolean);
    method public void setMediaItems(java.util.List<androidx.media3.common.MediaItem>);
    method public void setMediaItems(java.util.List<androidx.media3.common.MediaItem>, boolean);
    method public void setMediaItems(java.util.List<androidx.media3.common.MediaItem>, int, long);
    method public void setPlayWhenReady(boolean);
    method public void setPlaybackParameters(androidx.media3.common.PlaybackParameters);
    method public void setPlaybackSpeed(@FloatRange(from=0, fromInclusive=false) float);
    method public void setPlaylistMetadata(androidx.media3.common.MediaMetadata);
    method public void setRepeatMode(@androidx.media3.common.Player.RepeatMode int);
    method public void setShuffleModeEnabled(boolean);
    method public void setTrackSelectionParameters(androidx.media3.common.TrackSelectionParameters);
    method public void setVideoSurface(@Nullable android.view.Surface);
    method public void setVideoSurfaceHolder(@Nullable android.view.SurfaceHolder);
    method public void setVideoSurfaceView(@Nullable android.view.SurfaceView);
    method public void setVideoTextureView(@Nullable android.view.TextureView);
    method public void setVolume(@FloatRange(from=0, to=1.0) float);
    method public void stop();
    field public static final int COMMAND_ADJUST_DEVICE_VOLUME = 26; // 0x1a
    field public static final int COMMAND_CHANGE_MEDIA_ITEMS = 20; // 0x14
    field public static final int COMMAND_GET_AUDIO_ATTRIBUTES = 21; // 0x15
    field public static final int COMMAND_GET_CURRENT_MEDIA_ITEM = 16; // 0x10
    field public static final int COMMAND_GET_DEVICE_VOLUME = 23; // 0x17
    field public static final int COMMAND_GET_MEDIA_ITEMS_METADATA = 18; // 0x12
    field public static final int COMMAND_GET_TEXT = 28; // 0x1c
    field public static final int COMMAND_GET_TIMELINE = 17; // 0x11
    field public static final int COMMAND_GET_TRACKS = 30; // 0x1e
    field public static final int COMMAND_GET_VOLUME = 22; // 0x16
    field public static final int COMMAND_INVALID = -1; // 0xffffffff
    field public static final int COMMAND_PLAY_PAUSE = 1; // 0x1
    field public static final int COMMAND_PREPARE = 2; // 0x2
    field public static final int COMMAND_SEEK_BACK = 11; // 0xb
    field public static final int COMMAND_SEEK_FORWARD = 12; // 0xc
    field public static final int COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM = 5; // 0x5
    field public static final int COMMAND_SEEK_TO_DEFAULT_POSITION = 4; // 0x4
    field public static final int COMMAND_SEEK_TO_MEDIA_ITEM = 10; // 0xa
    field public static final int COMMAND_SEEK_TO_NEXT = 9; // 0x9
    field public static final int COMMAND_SEEK_TO_NEXT_MEDIA_ITEM = 8; // 0x8
    field public static final int COMMAND_SEEK_TO_PREVIOUS = 7; // 0x7
    field public static final int COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM = 6; // 0x6
    field public static final int COMMAND_SET_DEVICE_VOLUME = 25; // 0x19
    field public static final int COMMAND_SET_MEDIA_ITEM = 31; // 0x1f
    field public static final int COMMAND_SET_MEDIA_ITEMS_METADATA = 19; // 0x13
    field public static final int COMMAND_SET_REPEAT_MODE = 15; // 0xf
    field public static final int COMMAND_SET_SHUFFLE_MODE = 14; // 0xe
    field public static final int COMMAND_SET_SPEED_AND_PITCH = 13; // 0xd
    field public static final int COMMAND_SET_TRACK_SELECTION_PARAMETERS = 29; // 0x1d
    field public static final int COMMAND_SET_VIDEO_SURFACE = 27; // 0x1b
    field public static final int COMMAND_SET_VOLUME = 24; // 0x18
    field public static final int COMMAND_STOP = 3; // 0x3
    field public static final int DISCONTINUITY_REASON_AUTO_TRANSITION = 0; // 0x0
    field public static final int DISCONTINUITY_REASON_INTERNAL = 5; // 0x5
    field public static final int DISCONTINUITY_REASON_REMOVE = 4; // 0x4
    field public static final int DISCONTINUITY_REASON_SEEK = 1; // 0x1
    field public static final int DISCONTINUITY_REASON_SEEK_ADJUSTMENT = 2; // 0x2
    field public static final int DISCONTINUITY_REASON_SKIP = 3; // 0x3
    field public static final int EVENT_AUDIO_ATTRIBUTES_CHANGED = 20; // 0x14
    field public static final int EVENT_AUDIO_SESSION_ID = 21; // 0x15
    field public static final int EVENT_AVAILABLE_COMMANDS_CHANGED = 13; // 0xd
    field public static final int EVENT_CUES = 27; // 0x1b
    field public static final int EVENT_DEVICE_INFO_CHANGED = 29; // 0x1d
    field public static final int EVENT_DEVICE_VOLUME_CHANGED = 30; // 0x1e
    field public static final int EVENT_IS_LOADING_CHANGED = 3; // 0x3
    field public static final int EVENT_IS_PLAYING_CHANGED = 7; // 0x7
    field public static final int EVENT_MAX_SEEK_TO_PREVIOUS_POSITION_CHANGED = 18; // 0x12
    field public static final int EVENT_MEDIA_ITEM_TRANSITION = 1; // 0x1
    field public static final int EVENT_MEDIA_METADATA_CHANGED = 14; // 0xe
    field public static final int EVENT_METADATA = 28; // 0x1c
    field public static final int EVENT_PLAYBACK_PARAMETERS_CHANGED = 12; // 0xc
    field public static final int EVENT_PLAYBACK_STATE_CHANGED = 4; // 0x4
    field public static final int EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED = 6; // 0x6
    field public static final int EVENT_PLAYER_ERROR = 10; // 0xa
    field public static final int EVENT_PLAYLIST_METADATA_CHANGED = 15; // 0xf
    field public static final int EVENT_PLAY_WHEN_READY_CHANGED = 5; // 0x5
    field public static final int EVENT_POSITION_DISCONTINUITY = 11; // 0xb
    field public static final int EVENT_RENDERED_FIRST_FRAME = 26; // 0x1a
    field public static final int EVENT_REPEAT_MODE_CHANGED = 8; // 0x8
    field public static final int EVENT_SEEK_BACK_INCREMENT_CHANGED = 16; // 0x10
    field public static final int EVENT_SEEK_FORWARD_INCREMENT_CHANGED = 17; // 0x11
    field public static final int EVENT_SHUFFLE_MODE_ENABLED_CHANGED = 9; // 0x9
    field public static final int EVENT_SKIP_SILENCE_ENABLED_CHANGED = 23; // 0x17
    field public static final int EVENT_SURFACE_SIZE_CHANGED = 24; // 0x18
    field public static final int EVENT_TIMELINE_CHANGED = 0; // 0x0
    field public static final int EVENT_TRACKS_CHANGED = 2; // 0x2
    field public static final int EVENT_TRACK_SELECTION_PARAMETERS_CHANGED = 19; // 0x13
    field public static final int EVENT_VIDEO_SIZE_CHANGED = 25; // 0x19
    field public static final int EVENT_VOLUME_CHANGED = 22; // 0x16
    field public static final int MEDIA_ITEM_TRANSITION_REASON_AUTO = 1; // 0x1
    field public static final int MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED = 3; // 0x3
    field public static final int MEDIA_ITEM_TRANSITION_REASON_REPEAT = 0; // 0x0
    field public static final int MEDIA_ITEM_TRANSITION_REASON_SEEK = 2; // 0x2
    field public static final int PLAYBACK_SUPPRESSION_REASON_NONE = 0; // 0x0
    field public static final int PLAYBACK_SUPPRESSION_REASON_TRANSIENT_AUDIO_FOCUS_LOSS = 1; // 0x1
    field public static final int PLAY_WHEN_READY_CHANGE_REASON_AUDIO_BECOMING_NOISY = 3; // 0x3
    field public static final int PLAY_WHEN_READY_CHANGE_REASON_AUDIO_FOCUS_LOSS = 2; // 0x2
    field public static final int PLAY_WHEN_READY_CHANGE_REASON_END_OF_MEDIA_ITEM = 5; // 0x5
    field public static final int PLAY_WHEN_READY_CHANGE_REASON_REMOTE = 4; // 0x4
    field public static final int PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST = 1; // 0x1
    field public static final int REPEAT_MODE_ALL = 2; // 0x2
    field public static final int REPEAT_MODE_OFF = 0; // 0x0
    field public static final int REPEAT_MODE_ONE = 1; // 0x1
    field public static final int STATE_BUFFERING = 2; // 0x2
    field public static final int STATE_ENDED = 4; // 0x4
    field public static final int STATE_IDLE = 1; // 0x1
    field public static final int STATE_READY = 3; // 0x3
    field public static final int TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED = 0; // 0x0
    field public static final int TIMELINE_CHANGE_REASON_SOURCE_UPDATE = 1; // 0x1
  }

  @IntDef({androidx.media3.common.Player.COMMAND_INVALID, androidx.media3.common.Player.COMMAND_PLAY_PAUSE, androidx.media3.common.Player.COMMAND_PREPARE, androidx.media3.common.Player.COMMAND_STOP, androidx.media3.common.Player.COMMAND_SEEK_TO_DEFAULT_POSITION, androidx.media3.common.Player.COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM, androidx.media3.common.Player.COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM, androidx.media3.common.Player.COMMAND_SEEK_TO_PREVIOUS, androidx.media3.common.Player.COMMAND_SEEK_TO_NEXT_MEDIA_ITEM, androidx.media3.common.Player.COMMAND_SEEK_TO_NEXT, androidx.media3.common.Player.COMMAND_SEEK_TO_MEDIA_ITEM, androidx.media3.common.Player.COMMAND_SEEK_BACK, androidx.media3.common.Player.COMMAND_SEEK_FORWARD, androidx.media3.common.Player.COMMAND_SET_SPEED_AND_PITCH, androidx.media3.common.Player.COMMAND_SET_SHUFFLE_MODE, androidx.media3.common.Player.COMMAND_SET_REPEAT_MODE, androidx.media3.common.Player.COMMAND_GET_CURRENT_MEDIA_ITEM, androidx.media3.common.Player.COMMAND_GET_TIMELINE, androidx.media3.common.Player.COMMAND_GET_MEDIA_ITEMS_METADATA, androidx.media3.common.Player.COMMAND_SET_MEDIA_ITEMS_METADATA, androidx.media3.common.Player.COMMAND_SET_MEDIA_ITEM, androidx.media3.common.Player.COMMAND_CHANGE_MEDIA_ITEMS, androidx.media3.common.Player.COMMAND_GET_AUDIO_ATTRIBUTES, androidx.media3.common.Player.COMMAND_GET_VOLUME, androidx.media3.common.Player.COMMAND_GET_DEVICE_VOLUME, androidx.media3.common.Player.COMMAND_SET_VOLUME, androidx.media3.common.Player.COMMAND_SET_DEVICE_VOLUME, androidx.media3.common.Player.COMMAND_ADJUST_DEVICE_VOLUME, androidx.media3.common.Player.COMMAND_SET_VIDEO_SURFACE, androidx.media3.common.Player.COMMAND_GET_TEXT, androidx.media3.common.Player.COMMAND_SET_TRACK_SELECTION_PARAMETERS, androidx.media3.common.Player.COMMAND_GET_TRACKS}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Player.Command {
  }

  public static final class Player.Commands {
    method public boolean contains(@androidx.media3.common.Player.Command int);
    method public boolean containsAny(@androidx.media3.common.Player.Command int...);
    method @androidx.media3.common.Player.Command public int get(int);
    method public int size();
    field public static final androidx.media3.common.Player.Commands EMPTY;
  }

  @IntDef({androidx.media3.common.Player.DISCONTINUITY_REASON_AUTO_TRANSITION, androidx.media3.common.Player.DISCONTINUITY_REASON_SEEK, androidx.media3.common.Player.DISCONTINUITY_REASON_SEEK_ADJUSTMENT, androidx.media3.common.Player.DISCONTINUITY_REASON_SKIP, androidx.media3.common.Player.DISCONTINUITY_REASON_REMOVE, androidx.media3.common.Player.DISCONTINUITY_REASON_INTERNAL}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Player.DiscontinuityReason {
  }

  @IntDef({androidx.media3.common.Player.EVENT_TIMELINE_CHANGED, androidx.media3.common.Player.EVENT_MEDIA_ITEM_TRANSITION, androidx.media3.common.Player.EVENT_TRACKS_CHANGED, androidx.media3.common.Player.EVENT_IS_LOADING_CHANGED, androidx.media3.common.Player.EVENT_PLAYBACK_STATE_CHANGED, androidx.media3.common.Player.EVENT_PLAY_WHEN_READY_CHANGED, androidx.media3.common.Player.EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED, androidx.media3.common.Player.EVENT_IS_PLAYING_CHANGED, androidx.media3.common.Player.EVENT_REPEAT_MODE_CHANGED, androidx.media3.common.Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED, androidx.media3.common.Player.EVENT_PLAYER_ERROR, androidx.media3.common.Player.EVENT_POSITION_DISCONTINUITY, androidx.media3.common.Player.EVENT_PLAYBACK_PARAMETERS_CHANGED, androidx.media3.common.Player.EVENT_AVAILABLE_COMMANDS_CHANGED, androidx.media3.common.Player.EVENT_MEDIA_METADATA_CHANGED, androidx.media3.common.Player.EVENT_PLAYLIST_METADATA_CHANGED, androidx.media3.common.Player.EVENT_SEEK_BACK_INCREMENT_CHANGED, androidx.media3.common.Player.EVENT_SEEK_FORWARD_INCREMENT_CHANGED, androidx.media3.common.Player.EVENT_MAX_SEEK_TO_PREVIOUS_POSITION_CHANGED, androidx.media3.common.Player.EVENT_TRACK_SELECTION_PARAMETERS_CHANGED, androidx.media3.common.Player.EVENT_AUDIO_ATTRIBUTES_CHANGED, androidx.media3.common.Player.EVENT_AUDIO_SESSION_ID, androidx.media3.common.Player.EVENT_VOLUME_CHANGED, androidx.media3.common.Player.EVENT_SKIP_SILENCE_ENABLED_CHANGED, androidx.media3.common.Player.EVENT_SURFACE_SIZE_CHANGED, androidx.media3.common.Player.EVENT_VIDEO_SIZE_CHANGED, androidx.media3.common.Player.EVENT_RENDERED_FIRST_FRAME, androidx.media3.common.Player.EVENT_CUES, androidx.media3.common.Player.EVENT_METADATA, androidx.media3.common.Player.EVENT_DEVICE_INFO_CHANGED, androidx.media3.common.Player.EVENT_DEVICE_VOLUME_CHANGED}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Player.Event {
  }

  public static final class Player.Events {
    method public boolean contains(@androidx.media3.common.Player.Event int);
    method public boolean containsAny(@androidx.media3.common.Player.Event int...);
    method @androidx.media3.common.Player.Event public int get(int);
    method public int size();
  }

  public static interface Player.Listener {
    method public default void onAudioAttributesChanged(androidx.media3.common.AudioAttributes);
    method public default void onAvailableCommandsChanged(androidx.media3.common.Player.Commands);
    method public default void onCues(androidx.media3.common.text.CueGroup);
    method public default void onDeviceInfoChanged(androidx.media3.common.DeviceInfo);
    method public default void onDeviceVolumeChanged(int, boolean);
    method public default void onEvents(androidx.media3.common.Player, androidx.media3.common.Player.Events);
    method public default void onIsLoadingChanged(boolean);
    method public default void onIsPlayingChanged(boolean);
    method public default void onMaxSeekToPreviousPositionChanged(long);
    method public default void onMediaItemTransition(@Nullable androidx.media3.common.MediaItem, @androidx.media3.common.Player.MediaItemTransitionReason int);
    method public default void onMediaMetadataChanged(androidx.media3.common.MediaMetadata);
    method public default void onPlayWhenReadyChanged(boolean, @androidx.media3.common.Player.PlayWhenReadyChangeReason int);
    method public default void onPlaybackParametersChanged(androidx.media3.common.PlaybackParameters);
    method public default void onPlaybackStateChanged(@androidx.media3.common.Player.State int);
    method public default void onPlaybackSuppressionReasonChanged(@androidx.media3.common.Player.PlaybackSuppressionReason int);
    method public default void onPlayerError(androidx.media3.common.PlaybackException);
    method public default void onPlayerErrorChanged(@Nullable androidx.media3.common.PlaybackException);
    method public default void onPlaylistMetadataChanged(androidx.media3.common.MediaMetadata);
    method public default void onPositionDiscontinuity(androidx.media3.common.Player.PositionInfo, androidx.media3.common.Player.PositionInfo, @androidx.media3.common.Player.DiscontinuityReason int);
    method public default void onRenderedFirstFrame();
    method public default void onRepeatModeChanged(@androidx.media3.common.Player.RepeatMode int);
    method public default void onSeekBackIncrementChanged(long);
    method public default void onSeekForwardIncrementChanged(long);
    method public default void onShuffleModeEnabledChanged(boolean);
    method public default void onSkipSilenceEnabledChanged(boolean);
    method public default void onSurfaceSizeChanged(int, int);
    method public default void onTimelineChanged(androidx.media3.common.Timeline, @androidx.media3.common.Player.TimelineChangeReason int);
    method public default void onTrackSelectionParametersChanged(androidx.media3.common.TrackSelectionParameters);
    method public default void onTracksChanged(androidx.media3.common.Tracks);
    method public default void onVideoSizeChanged(androidx.media3.common.VideoSize);
    method public default void onVolumeChanged(float);
  }

  @IntDef({androidx.media3.common.Player.MEDIA_ITEM_TRANSITION_REASON_REPEAT, androidx.media3.common.Player.MEDIA_ITEM_TRANSITION_REASON_AUTO, androidx.media3.common.Player.MEDIA_ITEM_TRANSITION_REASON_SEEK, androidx.media3.common.Player.MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Player.MediaItemTransitionReason {
  }

  @IntDef({androidx.media3.common.Player.PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST, androidx.media3.common.Player.PLAY_WHEN_READY_CHANGE_REASON_AUDIO_FOCUS_LOSS, androidx.media3.common.Player.PLAY_WHEN_READY_CHANGE_REASON_AUDIO_BECOMING_NOISY, androidx.media3.common.Player.PLAY_WHEN_READY_CHANGE_REASON_REMOTE, androidx.media3.common.Player.PLAY_WHEN_READY_CHANGE_REASON_END_OF_MEDIA_ITEM}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Player.PlayWhenReadyChangeReason {
  }

  @IntDef({androidx.media3.common.Player.PLAYBACK_SUPPRESSION_REASON_NONE, androidx.media3.common.Player.PLAYBACK_SUPPRESSION_REASON_TRANSIENT_AUDIO_FOCUS_LOSS}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Player.PlaybackSuppressionReason {
  }

  public static final class Player.PositionInfo {
    field public final int adGroupIndex;
    field public final int adIndexInAdGroup;
    field public final long contentPositionMs;
    field public final int mediaItemIndex;
    field public final int periodIndex;
    field @Nullable public final Object periodUid;
    field public final long positionMs;
    field @Nullable public final Object windowUid;
  }

  @IntDef({androidx.media3.common.Player.REPEAT_MODE_OFF, androidx.media3.common.Player.REPEAT_MODE_ONE, androidx.media3.common.Player.REPEAT_MODE_ALL}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Player.RepeatMode {
  }

  @IntDef({androidx.media3.common.Player.STATE_IDLE, androidx.media3.common.Player.STATE_BUFFERING, androidx.media3.common.Player.STATE_READY, androidx.media3.common.Player.STATE_ENDED}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Player.State {
  }

  @IntDef({androidx.media3.common.Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED, androidx.media3.common.Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Player.TimelineChangeReason {
  }

  public abstract class Rating {
    method public abstract boolean isRated();
  }

  public final class StarRating extends androidx.media3.common.Rating {
    ctor public StarRating(@IntRange(from=1) int);
    ctor public StarRating(@IntRange(from=1) int, @FloatRange(from=0.0) float);
    method @IntRange(from=1) public int getMaxStars();
    method public float getStarRating();
    method public boolean isRated();
  }

  public final class ThumbRating extends androidx.media3.common.Rating {
    ctor public ThumbRating();
    ctor public ThumbRating(boolean);
    method public boolean isRated();
    method public boolean isThumbsUp();
  }

  public abstract class Timeline {
    method public int getFirstWindowIndex(boolean);
    method public abstract int getIndexOfPeriod(Object);
    method public int getLastWindowIndex(boolean);
    method public final int getNextPeriodIndex(int, androidx.media3.common.Timeline.Period, androidx.media3.common.Timeline.Window, @androidx.media3.common.Player.RepeatMode int, boolean);
    method public int getNextWindowIndex(int, @androidx.media3.common.Player.RepeatMode int, boolean);
    method public final androidx.media3.common.Timeline.Period getPeriod(int, androidx.media3.common.Timeline.Period);
    method public abstract androidx.media3.common.Timeline.Period getPeriod(int, androidx.media3.common.Timeline.Period, boolean);
    method public androidx.media3.common.Timeline.Period getPeriodByUid(Object, androidx.media3.common.Timeline.Period);
    method public abstract int getPeriodCount();
    method public final android.util.Pair<java.lang.Object,java.lang.Long> getPeriodPositionUs(androidx.media3.common.Timeline.Window, androidx.media3.common.Timeline.Period, int, long);
    method @Nullable public final android.util.Pair<java.lang.Object,java.lang.Long> getPeriodPositionUs(androidx.media3.common.Timeline.Window, androidx.media3.common.Timeline.Period, int, long, long);
    method public int getPreviousWindowIndex(int, @androidx.media3.common.Player.RepeatMode int, boolean);
    method public abstract Object getUidOfPeriod(int);
    method public final androidx.media3.common.Timeline.Window getWindow(int, androidx.media3.common.Timeline.Window);
    method public abstract androidx.media3.common.Timeline.Window getWindow(int, androidx.media3.common.Timeline.Window, long);
    method public abstract int getWindowCount();
    method public final boolean isEmpty();
    method public final boolean isLastPeriod(int, androidx.media3.common.Timeline.Period, androidx.media3.common.Timeline.Window, @androidx.media3.common.Player.RepeatMode int, boolean);
    field public static final androidx.media3.common.Timeline EMPTY;
  }

  public static final class Timeline.Period {
    ctor public Timeline.Period();
    method public int getAdCountInAdGroup(int);
    method public long getAdDurationUs(int, int);
    method public int getAdGroupCount();
    method public int getAdGroupIndexAfterPositionUs(long);
    method public int getAdGroupIndexForPositionUs(long);
    method public long getAdGroupTimeUs(int);
    method public long getAdResumePositionUs();
    method @Nullable public Object getAdsId();
    method public long getDurationMs();
    method public long getDurationUs();
    method public int getFirstAdIndexToPlay(int);
    method public int getNextAdIndexToPlay(int, int);
    method public long getPositionInWindowMs();
    method public long getPositionInWindowUs();
    method public int getRemovedAdGroupCount();
    method public boolean hasPlayedAdGroup(int);
    field @Nullable public Object id;
    field public boolean isPlaceholder;
    field @Nullable public Object uid;
    field public int windowIndex;
  }

  public static final class Timeline.Window {
    ctor public Timeline.Window();
    method public long getCurrentUnixTimeMs();
    method public long getDefaultPositionMs();
    method public long getDefaultPositionUs();
    method public long getDurationMs();
    method public long getDurationUs();
    method public long getPositionInFirstPeriodMs();
    method public long getPositionInFirstPeriodUs();
    method public boolean isLive();
    field public static final Object SINGLE_WINDOW_UID;
    field public long elapsedRealtimeEpochOffsetMs;
    field public int firstPeriodIndex;
    field public boolean isDynamic;
    field public boolean isPlaceholder;
    field public boolean isSeekable;
    field public int lastPeriodIndex;
    field @Nullable public androidx.media3.common.MediaItem.LiveConfiguration liveConfiguration;
    field @Nullable public Object manifest;
    field public androidx.media3.common.MediaItem mediaItem;
    field public long presentationStartTimeMs;
    field public Object uid;
    field public long windowStartTimeMs;
  }

  public final class TrackGroup {
  }

  public final class TrackSelectionOverride {
    ctor public TrackSelectionOverride(androidx.media3.common.TrackGroup, int);
    ctor public TrackSelectionOverride(androidx.media3.common.TrackGroup, java.util.List<java.lang.Integer>);
    method @androidx.media3.common.C.TrackType public int getType();
    field public final androidx.media3.common.TrackGroup mediaTrackGroup;
    field public final com.google.common.collect.ImmutableList<java.lang.Integer> trackIndices;
  }

  public class TrackSelectionParameters {
    method public androidx.media3.common.TrackSelectionParameters.Builder buildUpon();
    method public static androidx.media3.common.TrackSelectionParameters fromBundle(android.os.Bundle);
    method public static androidx.media3.common.TrackSelectionParameters getDefaults(android.content.Context);
    method public android.os.Bundle toBundle();
    field public final com.google.common.collect.ImmutableSet<java.lang.Integer> disabledTrackTypes;
    field public final boolean forceHighestSupportedBitrate;
    field public final boolean forceLowestBitrate;
    field @androidx.media3.common.C.SelectionFlags public final int ignoredTextSelectionFlags;
    field public final int maxAudioBitrate;
    field public final int maxAudioChannelCount;
    field public final int maxVideoBitrate;
    field public final int maxVideoFrameRate;
    field public final int maxVideoHeight;
    field public final int maxVideoWidth;
    field public final int minVideoBitrate;
    field public final int minVideoFrameRate;
    field public final int minVideoHeight;
    field public final int minVideoWidth;
    field public final com.google.common.collect.ImmutableMap<androidx.media3.common.TrackGroup,androidx.media3.common.TrackSelectionOverride> overrides;
    field public final com.google.common.collect.ImmutableList<java.lang.String> preferredAudioLanguages;
    field public final com.google.common.collect.ImmutableList<java.lang.String> preferredAudioMimeTypes;
    field @androidx.media3.common.C.RoleFlags public final int preferredAudioRoleFlags;
    field public final com.google.common.collect.ImmutableList<java.lang.String> preferredTextLanguages;
    field @androidx.media3.common.C.RoleFlags public final int preferredTextRoleFlags;
    field public final com.google.common.collect.ImmutableList<java.lang.String> preferredVideoMimeTypes;
    field @androidx.media3.common.C.RoleFlags public final int preferredVideoRoleFlags;
    field public final boolean selectUndeterminedTextLanguage;
    field public final int viewportHeight;
    field public final boolean viewportOrientationMayChange;
    field public final int viewportWidth;
  }

  public static class TrackSelectionParameters.Builder {
    ctor public TrackSelectionParameters.Builder(android.content.Context);
    method public androidx.media3.common.TrackSelectionParameters.Builder addOverride(androidx.media3.common.TrackSelectionOverride);
    method public androidx.media3.common.TrackSelectionParameters build();
    method public androidx.media3.common.TrackSelectionParameters.Builder clearOverride(androidx.media3.common.TrackGroup);
    method public androidx.media3.common.TrackSelectionParameters.Builder clearOverrides();
    method public androidx.media3.common.TrackSelectionParameters.Builder clearOverridesOfType(@androidx.media3.common.C.TrackType int);
    method public androidx.media3.common.TrackSelectionParameters.Builder clearVideoSizeConstraints();
    method public androidx.media3.common.TrackSelectionParameters.Builder clearViewportSizeConstraints();
    method public androidx.media3.common.TrackSelectionParameters.Builder setForceHighestSupportedBitrate(boolean);
    method public androidx.media3.common.TrackSelectionParameters.Builder setForceLowestBitrate(boolean);
    method public androidx.media3.common.TrackSelectionParameters.Builder setIgnoredTextSelectionFlags(@androidx.media3.common.C.SelectionFlags int);
    method public androidx.media3.common.TrackSelectionParameters.Builder setMaxAudioBitrate(int);
    method public androidx.media3.common.TrackSelectionParameters.Builder setMaxAudioChannelCount(int);
    method public androidx.media3.common.TrackSelectionParameters.Builder setMaxVideoBitrate(int);
    method public androidx.media3.common.TrackSelectionParameters.Builder setMaxVideoFrameRate(int);
    method public androidx.media3.common.TrackSelectionParameters.Builder setMaxVideoSize(int, int);
    method public androidx.media3.common.TrackSelectionParameters.Builder setMaxVideoSizeSd();
    method public androidx.media3.common.TrackSelectionParameters.Builder setMinVideoBitrate(int);
    method public androidx.media3.common.TrackSelectionParameters.Builder setMinVideoFrameRate(int);
    method public androidx.media3.common.TrackSelectionParameters.Builder setMinVideoSize(int, int);
    method public androidx.media3.common.TrackSelectionParameters.Builder setOverrideForType(androidx.media3.common.TrackSelectionOverride);
    method public androidx.media3.common.TrackSelectionParameters.Builder setPreferredAudioLanguage(@Nullable String);
    method public androidx.media3.common.TrackSelectionParameters.Builder setPreferredAudioLanguages(java.lang.String...);
    method public androidx.media3.common.TrackSelectionParameters.Builder setPreferredAudioMimeType(@Nullable String);
    method public androidx.media3.common.TrackSelectionParameters.Builder setPreferredAudioMimeTypes(java.lang.String...);
    method public androidx.media3.common.TrackSelectionParameters.Builder setPreferredAudioRoleFlags(@androidx.media3.common.C.RoleFlags int);
    method public androidx.media3.common.TrackSelectionParameters.Builder setPreferredTextLanguage(@Nullable String);
    method public androidx.media3.common.TrackSelectionParameters.Builder setPreferredTextLanguageAndRoleFlagsToCaptioningManagerSettings(android.content.Context);
    method public androidx.media3.common.TrackSelectionParameters.Builder setPreferredTextLanguages(java.lang.String...);
    method public androidx.media3.common.TrackSelectionParameters.Builder setPreferredTextRoleFlags(@androidx.media3.common.C.RoleFlags int);
    method public androidx.media3.common.TrackSelectionParameters.Builder setPreferredVideoMimeType(@Nullable String);
    method public androidx.media3.common.TrackSelectionParameters.Builder setPreferredVideoMimeTypes(java.lang.String...);
    method public androidx.media3.common.TrackSelectionParameters.Builder setPreferredVideoRoleFlags(@androidx.media3.common.C.RoleFlags int);
    method public androidx.media3.common.TrackSelectionParameters.Builder setSelectUndeterminedTextLanguage(boolean);
    method public androidx.media3.common.TrackSelectionParameters.Builder setTrackTypeDisabled(@androidx.media3.common.C.TrackType int, boolean);
    method public androidx.media3.common.TrackSelectionParameters.Builder setViewportSize(int, int, boolean);
    method public androidx.media3.common.TrackSelectionParameters.Builder setViewportSizeToPhysicalDisplaySize(android.content.Context, boolean);
  }

  public final class Tracks {
    method public boolean containsType(@androidx.media3.common.C.TrackType int);
    method public com.google.common.collect.ImmutableList<androidx.media3.common.Tracks.Group> getGroups();
    method public boolean isEmpty();
    method public boolean isTypeSelected(@androidx.media3.common.C.TrackType int);
    method public boolean isTypeSupported(@androidx.media3.common.C.TrackType int);
    method public boolean isTypeSupported(@androidx.media3.common.C.TrackType int, boolean);
    field public static final androidx.media3.common.Tracks EMPTY;
  }

  public static final class Tracks.Group {
    method public androidx.media3.common.TrackGroup getMediaTrackGroup();
    method public androidx.media3.common.Format getTrackFormat(int);
    method @androidx.media3.common.C.TrackType public int getType();
    method public boolean isAdaptiveSupported();
    method public boolean isSelected();
    method public boolean isSupported();
    method public boolean isSupported(boolean);
    method public boolean isTrackSelected(int);
    method public boolean isTrackSupported(int);
    method public boolean isTrackSupported(int, boolean);
    method public android.os.Bundle toBundle();
    field public final int length;
  }

  public final class VideoSize {
    field public static final androidx.media3.common.VideoSize UNKNOWN;
    field @IntRange(from=0) public final int height;
    field @FloatRange(from=0, fromInclusive=false) public final float pixelWidthHeightRatio;
    field @IntRange(from=0, to=359) public final int unappliedRotationDegrees;
    field @IntRange(from=0) public final int width;
  }

}

package androidx.media3.common.text {

  public final class Cue {
    field public static final int ANCHOR_TYPE_END = 2; // 0x2
    field public static final int ANCHOR_TYPE_MIDDLE = 1; // 0x1
    field public static final int ANCHOR_TYPE_START = 0; // 0x0
    field public static final float DIMEN_UNSET = -3.4028235E38f;
    field public static final androidx.media3.common.text.Cue EMPTY;
    field public static final int LINE_TYPE_FRACTION = 0; // 0x0
    field public static final int LINE_TYPE_NUMBER = 1; // 0x1
    field public static final int TEXT_SIZE_TYPE_ABSOLUTE = 2; // 0x2
    field public static final int TEXT_SIZE_TYPE_FRACTIONAL = 0; // 0x0
    field public static final int TEXT_SIZE_TYPE_FRACTIONAL_IGNORE_PADDING = 1; // 0x1
    field public static final int TYPE_UNSET = -2147483648; // 0x80000000
    field public static final int VERTICAL_TYPE_LR = 2; // 0x2
    field public static final int VERTICAL_TYPE_RL = 1; // 0x1
    field @Nullable public final android.graphics.Bitmap bitmap;
    field public final float bitmapHeight;
    field public final float line;
    field @androidx.media3.common.text.Cue.AnchorType public final int lineAnchor;
    field @androidx.media3.common.text.Cue.LineType public final int lineType;
    field @Nullable public final android.text.Layout.Alignment multiRowAlignment;
    field public final float position;
    field @androidx.media3.common.text.Cue.AnchorType public final int positionAnchor;
    field public final float shearDegrees;
    field public final float size;
    field @Nullable public final CharSequence text;
    field @Nullable public final android.text.Layout.Alignment textAlignment;
    field public final float textSize;
    field @androidx.media3.common.text.Cue.TextSizeType public final int textSizeType;
    field @androidx.media3.common.text.Cue.VerticalType public final int verticalType;
    field public final int windowColor;
    field public final boolean windowColorSet;
  }

  @IntDef({androidx.media3.common.text.Cue.TYPE_UNSET, androidx.media3.common.text.Cue.ANCHOR_TYPE_START, androidx.media3.common.text.Cue.ANCHOR_TYPE_MIDDLE, androidx.media3.common.text.Cue.ANCHOR_TYPE_END}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Cue.AnchorType {
  }

  @IntDef({androidx.media3.common.text.Cue.TYPE_UNSET, androidx.media3.common.text.Cue.LINE_TYPE_FRACTION, androidx.media3.common.text.Cue.LINE_TYPE_NUMBER}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Cue.LineType {
  }

  @IntDef({androidx.media3.common.text.Cue.TYPE_UNSET, androidx.media3.common.text.Cue.TEXT_SIZE_TYPE_FRACTIONAL, androidx.media3.common.text.Cue.TEXT_SIZE_TYPE_FRACTIONAL_IGNORE_PADDING, androidx.media3.common.text.Cue.TEXT_SIZE_TYPE_ABSOLUTE}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Cue.TextSizeType {
  }

  @IntDef({androidx.media3.common.text.Cue.TYPE_UNSET, androidx.media3.common.text.Cue.VERTICAL_TYPE_RL, androidx.media3.common.text.Cue.VERTICAL_TYPE_LR}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface Cue.VerticalType {
  }

  public final class CueGroup {
    field public final com.google.common.collect.ImmutableList<androidx.media3.common.text.Cue> cues;
  }

}

package androidx.media3.common.util {

  public final class Util {
    method public static boolean checkCleartextTrafficPermitted(androidx.media3.common.MediaItem...);
    method @Nullable public static String getAdaptiveMimeTypeForContentType(@androidx.media3.common.C.ContentType int);
    method @Nullable public static java.util.UUID getDrmUuid(String);
    method @androidx.media3.common.C.ContentType public static int inferContentType(android.net.Uri);
    method @androidx.media3.common.C.ContentType public static int inferContentTypeForExtension(String);
    method @androidx.media3.common.C.ContentType public static int inferContentTypeForUriAndMimeType(android.net.Uri, @Nullable String);
    method public static boolean maybeRequestReadExternalStoragePermission(android.app.Activity, android.net.Uri...);
    method public static boolean maybeRequestReadExternalStoragePermission(android.app.Activity, androidx.media3.common.MediaItem...);
  }

}

package androidx.media3.datasource {

  public interface DataSource {
  }

  public static interface DataSource.Factory {
  }

  public class DataSourceException extends java.io.IOException {
    field @androidx.media3.common.PlaybackException.ErrorCode public final int reason;
  }

  public final class DefaultDataSource implements androidx.media3.datasource.DataSource {
  }

  public static final class DefaultDataSource.Factory implements androidx.media3.datasource.DataSource.Factory {
    ctor public DefaultDataSource.Factory(android.content.Context);
    ctor public DefaultDataSource.Factory(android.content.Context, androidx.media3.datasource.DataSource.Factory);
  }

  public class DefaultHttpDataSource implements androidx.media3.datasource.DataSource androidx.media3.datasource.HttpDataSource {
  }

  public static final class DefaultHttpDataSource.Factory implements androidx.media3.datasource.HttpDataSource.Factory {
    ctor public DefaultHttpDataSource.Factory();
  }

  public interface HttpDataSource extends androidx.media3.datasource.DataSource {
  }

  public static final class HttpDataSource.CleartextNotPermittedException extends androidx.media3.datasource.HttpDataSource.HttpDataSourceException {
  }

  public static interface HttpDataSource.Factory extends androidx.media3.datasource.DataSource.Factory {
  }

  public static class HttpDataSource.HttpDataSourceException extends androidx.media3.datasource.DataSourceException {
    field public static final int TYPE_CLOSE = 3; // 0x3
    field public static final int TYPE_OPEN = 1; // 0x1
    field public static final int TYPE_READ = 2; // 0x2
    field @androidx.media3.datasource.HttpDataSource.HttpDataSourceException.Type public final int type;
  }

  @IntDef({androidx.media3.datasource.HttpDataSource.HttpDataSourceException.TYPE_OPEN, androidx.media3.datasource.HttpDataSource.HttpDataSourceException.TYPE_READ, androidx.media3.datasource.HttpDataSource.HttpDataSourceException.TYPE_CLOSE}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) public static @interface HttpDataSource.HttpDataSourceException.Type {
  }

  public static final class HttpDataSource.InvalidContentTypeException extends androidx.media3.datasource.HttpDataSource.HttpDataSourceException {
    field public final String contentType;
  }

  public static final class HttpDataSource.InvalidResponseCodeException extends androidx.media3.datasource.HttpDataSource.HttpDataSourceException {
    field public final byte[] responseBody;
    field public final int responseCode;
    field @Nullable public final String responseMessage;
  }

}

package androidx.media3.datasource.cronet {

  public class CronetDataSource implements androidx.media3.datasource.DataSource androidx.media3.datasource.HttpDataSource {
  }

  public static final class CronetDataSource.Factory implements androidx.media3.datasource.HttpDataSource.Factory {
    ctor public CronetDataSource.Factory(org.chromium.net.CronetEngine, java.util.concurrent.Executor);
  }

  public final class CronetUtil {
    method @Nullable public static org.chromium.net.CronetEngine buildCronetEngine(android.content.Context);
  }

}

package androidx.media3.datasource.okhttp {

  public class OkHttpDataSource implements androidx.media3.datasource.DataSource androidx.media3.datasource.HttpDataSource {
  }

  public static final class OkHttpDataSource.Factory implements androidx.media3.datasource.HttpDataSource.Factory {
    ctor public OkHttpDataSource.Factory(okhttp3.Call.Factory);
  }

}

package androidx.media3.exoplayer {

  public final class ExoPlaybackException extends androidx.media3.common.PlaybackException {
  }

  public interface ExoPlayer extends androidx.media3.common.Player {
    method public void addAnalyticsListener(androidx.media3.exoplayer.analytics.AnalyticsListener);
    method @Nullable public androidx.media3.exoplayer.ExoPlaybackException getPlayerError();
    method public void removeAnalyticsListener(androidx.media3.exoplayer.analytics.AnalyticsListener);
    method public void setAudioAttributes(androidx.media3.common.AudioAttributes, boolean);
    method public void setHandleAudioBecomingNoisy(boolean);
    method public void setWakeMode(@androidx.media3.common.C.WakeMode int);
  }

  public static final class ExoPlayer.Builder {
    ctor public ExoPlayer.Builder(android.content.Context);
    method public androidx.media3.exoplayer.ExoPlayer build();
    method public androidx.media3.exoplayer.ExoPlayer.Builder setAudioAttributes(androidx.media3.common.AudioAttributes, boolean);
    method public androidx.media3.exoplayer.ExoPlayer.Builder setHandleAudioBecomingNoisy(boolean);
    method public androidx.media3.exoplayer.ExoPlayer.Builder setMediaSourceFactory(androidx.media3.exoplayer.source.MediaSource.Factory);
    method public androidx.media3.exoplayer.ExoPlayer.Builder setWakeMode(@androidx.media3.common.C.WakeMode int);
  }

}

package androidx.media3.exoplayer.analytics {

  public interface AnalyticsListener {
  }

}

package androidx.media3.exoplayer.drm {

  @RequiresApi(18) public final class FrameworkMediaDrm {
    method public static boolean isCryptoSchemeSupported(java.util.UUID);
  }

}

package androidx.media3.exoplayer.ima {

  public final class ImaAdsLoader implements androidx.media3.exoplayer.source.ads.AdsLoader {
    method public void release();
    method public void setPlayer(@Nullable androidx.media3.common.Player);
  }

  public static final class ImaAdsLoader.Builder {
    ctor public ImaAdsLoader.Builder(android.content.Context);
    method public androidx.media3.exoplayer.ima.ImaAdsLoader build();
  }

}

package androidx.media3.exoplayer.source {

  public final class DefaultMediaSourceFactory implements androidx.media3.exoplayer.source.MediaSource.Factory {
    ctor public DefaultMediaSourceFactory(android.content.Context);
    method public androidx.media3.exoplayer.source.DefaultMediaSourceFactory clearLocalAdInsertionComponents();
    method public androidx.media3.exoplayer.source.DefaultMediaSourceFactory setDataSourceFactory(androidx.media3.datasource.DataSource.Factory);
    method public androidx.media3.exoplayer.source.DefaultMediaSourceFactory setLocalAdInsertionComponents(androidx.media3.exoplayer.source.ads.AdsLoader.Provider, androidx.media3.common.AdViewProvider);
  }

  public interface MediaSource {
  }

  public static interface MediaSource.Factory {
  }

}

package androidx.media3.exoplayer.source.ads {

  public interface AdsLoader {
    method public void release();
    method public void setPlayer(@Nullable androidx.media3.common.Player);
  }

  public static interface AdsLoader.Provider {
    method @Nullable public androidx.media3.exoplayer.source.ads.AdsLoader getAdsLoader(androidx.media3.common.MediaItem.AdsConfiguration);
  }

}

package androidx.media3.exoplayer.util {

  public class DebugTextViewHelper {
    ctor public DebugTextViewHelper(androidx.media3.exoplayer.ExoPlayer, android.widget.TextView);
    method public final void start();
    method public final void stop();
  }

  public class EventLogger implements androidx.media3.exoplayer.analytics.AnalyticsListener {
    ctor public EventLogger();
    ctor public EventLogger(String);
  }

}

package androidx.media3.session {

  public final class CommandButton {
    field public final CharSequence displayName;
    field @DrawableRes public final int iconResId;
    field public final boolean isEnabled;
    field @androidx.media3.common.Player.Command public final int playerCommand;
    field @Nullable public final androidx.media3.session.SessionCommand sessionCommand;
  }

  public static final class CommandButton.Builder {
    ctor public CommandButton.Builder();
    method public androidx.media3.session.CommandButton build();
    method public androidx.media3.session.CommandButton.Builder setDisplayName(CharSequence);
    method public androidx.media3.session.CommandButton.Builder setEnabled(boolean);
    method public androidx.media3.session.CommandButton.Builder setExtras(android.os.Bundle);
    method public androidx.media3.session.CommandButton.Builder setIconResId(@DrawableRes int);
    method public androidx.media3.session.CommandButton.Builder setPlayerCommand(@androidx.media3.common.Player.Command int);
    method public androidx.media3.session.CommandButton.Builder setSessionCommand(androidx.media3.session.SessionCommand);
  }

  public final class LibraryResult<V> {
    method public static <V> androidx.media3.session.LibraryResult<V> ofError(@androidx.media3.session.LibraryResult.Code int);
    method public static <V> androidx.media3.session.LibraryResult<V> ofError(@androidx.media3.session.LibraryResult.Code int, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public static androidx.media3.session.LibraryResult<androidx.media3.common.MediaItem> ofItem(androidx.media3.common.MediaItem, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public static androidx.media3.session.LibraryResult<com.google.common.collect.ImmutableList<androidx.media3.common.MediaItem>> ofItemList(java.util.List<androidx.media3.common.MediaItem>, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public static androidx.media3.session.LibraryResult<java.lang.Void> ofVoid();
    method public static androidx.media3.session.LibraryResult<java.lang.Void> ofVoid(@Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    field public static final int RESULT_ERROR_BAD_VALUE = -3; // 0xfffffffd
    field public static final int RESULT_ERROR_INVALID_STATE = -2; // 0xfffffffe
    field public static final int RESULT_ERROR_IO = -5; // 0xfffffffb
    field public static final int RESULT_ERROR_NOT_SUPPORTED = -6; // 0xfffffffa
    field public static final int RESULT_ERROR_PERMISSION_DENIED = -4; // 0xfffffffc
    field public static final int RESULT_ERROR_SESSION_AUTHENTICATION_EXPIRED = -102; // 0xffffff9a
    field public static final int RESULT_ERROR_SESSION_CONCURRENT_STREAM_LIMIT = -104; // 0xffffff98
    field public static final int RESULT_ERROR_SESSION_DISCONNECTED = -100; // 0xffffff9c
    field public static final int RESULT_ERROR_SESSION_NOT_AVAILABLE_IN_REGION = -106; // 0xffffff96
    field public static final int RESULT_ERROR_SESSION_PARENTAL_CONTROL_RESTRICTED = -105; // 0xffffff97
    field public static final int RESULT_ERROR_SESSION_PREMIUM_ACCOUNT_REQUIRED = -103; // 0xffffff99
    field public static final int RESULT_ERROR_SESSION_SETUP_REQUIRED = -108; // 0xffffff94
    field public static final int RESULT_ERROR_SESSION_SKIP_LIMIT_REACHED = -107; // 0xffffff95
    field public static final int RESULT_ERROR_UNKNOWN = -1; // 0xffffffff
    field public static final int RESULT_INFO_SKIPPED = 1; // 0x1
    field public static final int RESULT_SUCCESS = 0; // 0x0
    field public final long completionTimeMs;
    field @Nullable public final androidx.media3.session.MediaLibraryService.LibraryParams params;
    field @androidx.media3.session.LibraryResult.Code public final int resultCode;
    field @Nullable public final V value;
  }

  @IntDef({androidx.media3.session.LibraryResult.RESULT_SUCCESS, androidx.media3.session.LibraryResult.RESULT_ERROR_UNKNOWN, androidx.media3.session.LibraryResult.RESULT_ERROR_INVALID_STATE, androidx.media3.session.LibraryResult.RESULT_ERROR_BAD_VALUE, androidx.media3.session.LibraryResult.RESULT_ERROR_PERMISSION_DENIED, androidx.media3.session.LibraryResult.RESULT_ERROR_IO, androidx.media3.session.LibraryResult.RESULT_INFO_SKIPPED, androidx.media3.session.LibraryResult.RESULT_ERROR_SESSION_DISCONNECTED, androidx.media3.session.LibraryResult.RESULT_ERROR_NOT_SUPPORTED, androidx.media3.session.LibraryResult.RESULT_ERROR_SESSION_AUTHENTICATION_EXPIRED, androidx.media3.session.LibraryResult.RESULT_ERROR_SESSION_PREMIUM_ACCOUNT_REQUIRED, androidx.media3.session.LibraryResult.RESULT_ERROR_SESSION_CONCURRENT_STREAM_LIMIT, androidx.media3.session.LibraryResult.RESULT_ERROR_SESSION_PARENTAL_CONTROL_RESTRICTED, androidx.media3.session.LibraryResult.RESULT_ERROR_SESSION_NOT_AVAILABLE_IN_REGION, androidx.media3.session.LibraryResult.RESULT_ERROR_SESSION_SKIP_LIMIT_REACHED, androidx.media3.session.LibraryResult.RESULT_ERROR_SESSION_SETUP_REQUIRED}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) public static @interface LibraryResult.Code {
  }

  public final class MediaBrowser extends androidx.media3.session.MediaController {
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<com.google.common.collect.ImmutableList<androidx.media3.common.MediaItem>>> getChildren(String, @IntRange(from=0) int, @IntRange(from=1) int, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<androidx.media3.common.MediaItem>> getItem(String);
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<androidx.media3.common.MediaItem>> getLibraryRoot(@Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<com.google.common.collect.ImmutableList<androidx.media3.common.MediaItem>>> getSearchResult(String, @IntRange(from=0) int, @IntRange(from=1) int, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<java.lang.Void>> search(String, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<java.lang.Void>> subscribe(String, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<java.lang.Void>> unsubscribe(String);
  }

  public static final class MediaBrowser.Builder {
    ctor public MediaBrowser.Builder(android.content.Context, androidx.media3.session.SessionToken);
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.MediaBrowser> buildAsync();
    method public androidx.media3.session.MediaBrowser.Builder setApplicationLooper(android.os.Looper);
    method public androidx.media3.session.MediaBrowser.Builder setConnectionHints(android.os.Bundle);
    method public androidx.media3.session.MediaBrowser.Builder setListener(androidx.media3.session.MediaBrowser.Listener);
  }

  public static interface MediaBrowser.Listener extends androidx.media3.session.MediaController.Listener {
    method public default void onChildrenChanged(androidx.media3.session.MediaBrowser, String, @IntRange(from=0) int, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public default void onSearchResultChanged(androidx.media3.session.MediaBrowser, String, @IntRange(from=0) int, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
  }

  public final class MediaConstants {
    field public static final int ERROR_CODE_AUTHENTICATION_EXPIRED_COMPAT = 3; // 0x3
    field public static final String EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT_COMPAT = "android.media.extras.ERROR_RESOLUTION_ACTION_INTENT";
    field public static final String EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL_COMPAT = "android.media.extras.ERROR_RESOLUTION_ACTION_LABEL";
    field public static final String EXTRAS_KEY_SLOT_RESERVATION_SEEK_TO_NEXT = "android.media.playback.ALWAYS_RESERVE_SPACE_FOR.ACTION_SKIP_TO_NEXT";
    field public static final String EXTRAS_KEY_SLOT_RESERVATION_SEEK_TO_PREV = "android.media.playback.ALWAYS_RESERVE_SPACE_FOR.ACTION_SKIP_TO_PREVIOUS";
  }

  public class MediaController implements androidx.media3.common.Player {
    method public void addListener(androidx.media3.common.Player.Listener);
    method public void addMediaItem(androidx.media3.common.MediaItem);
    method public void addMediaItem(int, androidx.media3.common.MediaItem);
    method public void addMediaItems(java.util.List<androidx.media3.common.MediaItem>);
    method public void addMediaItems(int, java.util.List<androidx.media3.common.MediaItem>);
    method public boolean canAdvertiseSession();
    method public void clearMediaItems();
    method public void clearVideoSurface();
    method public void clearVideoSurface(@Nullable android.view.Surface);
    method public void clearVideoSurfaceHolder(@Nullable android.view.SurfaceHolder);
    method public void clearVideoSurfaceView(@Nullable android.view.SurfaceView);
    method public void clearVideoTextureView(@Nullable android.view.TextureView);
    method public void decreaseDeviceVolume();
    method public android.os.Looper getApplicationLooper();
    method public androidx.media3.common.AudioAttributes getAudioAttributes();
    method public androidx.media3.common.Player.Commands getAvailableCommands();
    method public androidx.media3.session.SessionCommands getAvailableSessionCommands();
    method @IntRange(from=0, to=100) public int getBufferedPercentage();
    method public long getBufferedPosition();
    method @Nullable public androidx.media3.session.SessionToken getConnectedToken();
    method public long getContentBufferedPosition();
    method public long getContentDuration();
    method public long getContentPosition();
    method public int getCurrentAdGroupIndex();
    method public int getCurrentAdIndexInAdGroup();
    method public androidx.media3.common.text.CueGroup getCurrentCues();
    method public long getCurrentLiveOffset();
    method @Nullable public androidx.media3.common.MediaItem getCurrentMediaItem();
    method public int getCurrentMediaItemIndex();
    method public int getCurrentPeriodIndex();
    method public long getCurrentPosition();
    method public androidx.media3.common.Timeline getCurrentTimeline();
    method public androidx.media3.common.Tracks getCurrentTracks();
    method public androidx.media3.common.DeviceInfo getDeviceInfo();
    method @IntRange(from=0) public int getDeviceVolume();
    method public long getDuration();
    method public long getMaxSeekToPreviousPosition();
    method public androidx.media3.common.MediaItem getMediaItemAt(int);
    method public int getMediaItemCount();
    method public androidx.media3.common.MediaMetadata getMediaMetadata();
    method public int getNextMediaItemIndex();
    method public boolean getPlayWhenReady();
    method public androidx.media3.common.PlaybackParameters getPlaybackParameters();
    method @androidx.media3.common.Player.State public int getPlaybackState();
    method @androidx.media3.common.Player.PlaybackSuppressionReason public int getPlaybackSuppressionReason();
    method @Nullable public androidx.media3.common.PlaybackException getPlayerError();
    method public androidx.media3.common.MediaMetadata getPlaylistMetadata();
    method public int getPreviousMediaItemIndex();
    method @androidx.media3.common.Player.RepeatMode public int getRepeatMode();
    method public long getSeekBackIncrement();
    method public long getSeekForwardIncrement();
    method @Nullable public android.app.PendingIntent getSessionActivity();
    method public boolean getShuffleModeEnabled();
    method public long getTotalBufferedDuration();
    method public androidx.media3.common.TrackSelectionParameters getTrackSelectionParameters();
    method public androidx.media3.common.VideoSize getVideoSize();
    method @FloatRange(from=0, to=1) public float getVolume();
    method public boolean hasNextMediaItem();
    method public boolean hasPreviousMediaItem();
    method public void increaseDeviceVolume();
    method public boolean isCommandAvailable(@androidx.media3.common.Player.Command int);
    method public boolean isConnected();
    method public boolean isCurrentMediaItemDynamic();
    method public boolean isCurrentMediaItemLive();
    method public boolean isCurrentMediaItemSeekable();
    method public boolean isDeviceMuted();
    method public boolean isLoading();
    method public boolean isPlaying();
    method public boolean isPlayingAd();
    method public boolean isSessionCommandAvailable(@androidx.media3.session.SessionCommand.CommandCode int);
    method public boolean isSessionCommandAvailable(androidx.media3.session.SessionCommand);
    method public void moveMediaItem(int, int);
    method public void moveMediaItems(int, int, int);
    method public void pause();
    method public void play();
    method public void prepare();
    method public void release();
    method public static void releaseFuture(java.util.concurrent.Future<? extends androidx.media3.session.MediaController>);
    method public void removeListener(androidx.media3.common.Player.Listener);
    method public void removeMediaItem(int);
    method public void removeMediaItems(int, int);
    method public void seekBack();
    method public void seekForward();
    method public void seekTo(long);
    method public void seekTo(int, long);
    method public void seekToDefaultPosition();
    method public void seekToDefaultPosition(int);
    method public void seekToNext();
    method public void seekToNextMediaItem();
    method public void seekToPrevious();
    method public void seekToPreviousMediaItem();
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> sendCustomCommand(androidx.media3.session.SessionCommand, android.os.Bundle);
    method public void setDeviceMuted(boolean);
    method public void setDeviceVolume(@IntRange(from=0) int);
    method public void setMediaItem(androidx.media3.common.MediaItem);
    method public void setMediaItem(androidx.media3.common.MediaItem, long);
    method public void setMediaItem(androidx.media3.common.MediaItem, boolean);
    method public void setMediaItems(java.util.List<androidx.media3.common.MediaItem>);
    method public void setMediaItems(java.util.List<androidx.media3.common.MediaItem>, boolean);
    method public void setMediaItems(java.util.List<androidx.media3.common.MediaItem>, int, long);
    method public void setPlayWhenReady(boolean);
    method public void setPlaybackParameters(androidx.media3.common.PlaybackParameters);
    method public void setPlaybackSpeed(float);
    method public void setPlaylistMetadata(androidx.media3.common.MediaMetadata);
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> setRating(String, androidx.media3.common.Rating);
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> setRating(androidx.media3.common.Rating);
    method public void setRepeatMode(@androidx.media3.common.Player.RepeatMode int);
    method public void setShuffleModeEnabled(boolean);
    method public void setTrackSelectionParameters(androidx.media3.common.TrackSelectionParameters);
    method public void setVideoSurface(@Nullable android.view.Surface);
    method public void setVideoSurfaceHolder(@Nullable android.view.SurfaceHolder);
    method public void setVideoSurfaceView(@Nullable android.view.SurfaceView);
    method public void setVideoTextureView(@Nullable android.view.TextureView);
    method public void setVolume(@FloatRange(from=0, to=1) float);
    method public void stop();
  }

  public static final class MediaController.Builder {
    ctor public MediaController.Builder(android.content.Context, androidx.media3.session.SessionToken);
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.MediaController> buildAsync();
    method public androidx.media3.session.MediaController.Builder setApplicationLooper(android.os.Looper);
    method public androidx.media3.session.MediaController.Builder setConnectionHints(android.os.Bundle);
    method public androidx.media3.session.MediaController.Builder setListener(androidx.media3.session.MediaController.Listener);
  }

  public static interface MediaController.Listener {
    method public default void onAvailableSessionCommandsChanged(androidx.media3.session.MediaController, androidx.media3.session.SessionCommands);
    method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> onCustomCommand(androidx.media3.session.MediaController, androidx.media3.session.SessionCommand, android.os.Bundle);
    method public default void onDisconnected(androidx.media3.session.MediaController);
    method public default void onExtrasChanged(androidx.media3.session.MediaController, android.os.Bundle);
    method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> onSetCustomLayout(androidx.media3.session.MediaController, java.util.List<androidx.media3.session.CommandButton>);
  }

  public abstract class MediaLibraryService extends androidx.media3.session.MediaSessionService {
    ctor public MediaLibraryService();
    method @Nullable public abstract androidx.media3.session.MediaLibraryService.MediaLibrarySession onGetSession(androidx.media3.session.MediaSession.ControllerInfo);
    field public static final String SERVICE_INTERFACE = "androidx.media3.session.MediaLibraryService";
  }

  public static final class MediaLibraryService.LibraryParams {
    field public final boolean isOffline;
    field public final boolean isRecent;
    field public final boolean isSuggested;
  }

  public static final class MediaLibraryService.LibraryParams.Builder {
    ctor public MediaLibraryService.LibraryParams.Builder();
    method public androidx.media3.session.MediaLibraryService.LibraryParams build();
    method public androidx.media3.session.MediaLibraryService.LibraryParams.Builder setOffline(boolean);
    method public androidx.media3.session.MediaLibraryService.LibraryParams.Builder setRecent(boolean);
    method public androidx.media3.session.MediaLibraryService.LibraryParams.Builder setSuggested(boolean);
  }

  public static final class MediaLibraryService.MediaLibrarySession extends androidx.media3.session.MediaSession {
    method public void notifyChildrenChanged(androidx.media3.session.MediaSession.ControllerInfo, String, @IntRange(from=0) int, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public void notifyChildrenChanged(String, @IntRange(from=0) int, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public void notifySearchResultChanged(androidx.media3.session.MediaSession.ControllerInfo, String, @IntRange(from=0) int, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
  }

  public static final class MediaLibraryService.MediaLibrarySession.Builder {
    ctor public MediaLibraryService.MediaLibrarySession.Builder(androidx.media3.session.MediaLibraryService, androidx.media3.common.Player, androidx.media3.session.MediaLibraryService.MediaLibrarySession.Callback);
    method public androidx.media3.session.MediaLibraryService.MediaLibrarySession build();
    method public androidx.media3.session.MediaLibraryService.MediaLibrarySession.Builder setExtras(android.os.Bundle);
    method public androidx.media3.session.MediaLibraryService.MediaLibrarySession.Builder setId(String);
    method public androidx.media3.session.MediaLibraryService.MediaLibrarySession.Builder setSessionActivity(android.app.PendingIntent);
  }

  public static interface MediaLibraryService.MediaLibrarySession.Callback extends androidx.media3.session.MediaSession.Callback {
    method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<com.google.common.collect.ImmutableList<androidx.media3.common.MediaItem>>> onGetChildren(androidx.media3.session.MediaLibraryService.MediaLibrarySession, androidx.media3.session.MediaSession.ControllerInfo, String, @IntRange(from=0) int, @IntRange(from=1) int, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<androidx.media3.common.MediaItem>> onGetItem(androidx.media3.session.MediaLibraryService.MediaLibrarySession, androidx.media3.session.MediaSession.ControllerInfo, String);
    method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<androidx.media3.common.MediaItem>> onGetLibraryRoot(androidx.media3.session.MediaLibraryService.MediaLibrarySession, androidx.media3.session.MediaSession.ControllerInfo, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<com.google.common.collect.ImmutableList<androidx.media3.common.MediaItem>>> onGetSearchResult(androidx.media3.session.MediaLibraryService.MediaLibrarySession, androidx.media3.session.MediaSession.ControllerInfo, String, @IntRange(from=0) int, @IntRange(from=1) int, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<java.lang.Void>> onSearch(androidx.media3.session.MediaLibraryService.MediaLibrarySession, androidx.media3.session.MediaSession.ControllerInfo, String, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<java.lang.Void>> onSubscribe(androidx.media3.session.MediaLibraryService.MediaLibrarySession, androidx.media3.session.MediaSession.ControllerInfo, String, @Nullable androidx.media3.session.MediaLibraryService.LibraryParams);
    method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.LibraryResult<java.lang.Void>> onUnsubscribe(androidx.media3.session.MediaLibraryService.MediaLibrarySession, androidx.media3.session.MediaSession.ControllerInfo, String);
  }

  public final class MediaNotification {
    ctor public MediaNotification(@IntRange(from=1) int, android.app.Notification);
    field public final android.app.Notification notification;
    field @IntRange(from=1) public final int notificationId;
  }

  public class MediaSession {
    method public void broadcastCustomCommand(androidx.media3.session.SessionCommand, android.os.Bundle);
    method public java.util.List<androidx.media3.session.MediaSession.ControllerInfo> getConnectedControllers();
    method public String getId();
    method public androidx.media3.common.Player getPlayer();
    method @Nullable public android.app.PendingIntent getSessionActivity();
    method public androidx.media3.session.SessionToken getToken();
    method public void release();
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> sendCustomCommand(androidx.media3.session.MediaSession.ControllerInfo, androidx.media3.session.SessionCommand, android.os.Bundle);
    method public void setAvailableCommands(androidx.media3.session.MediaSession.ControllerInfo, androidx.media3.session.SessionCommands, androidx.media3.common.Player.Commands);
    method public com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> setCustomLayout(androidx.media3.session.MediaSession.ControllerInfo, java.util.List<androidx.media3.session.CommandButton>);
    method public void setCustomLayout(java.util.List<androidx.media3.session.CommandButton>);
    method public void setPlayer(androidx.media3.common.Player);
    method public void setSessionExtras(android.os.Bundle);
    method public void setSessionExtras(androidx.media3.session.MediaSession.ControllerInfo, android.os.Bundle);
  }

  public static final class MediaSession.Builder {
    ctor public MediaSession.Builder(android.content.Context, androidx.media3.common.Player);
    method public androidx.media3.session.MediaSession build();
    method public androidx.media3.session.MediaSession.Builder setCallback(androidx.media3.session.MediaSession.Callback);
    method public androidx.media3.session.MediaSession.Builder setExtras(android.os.Bundle);
    method public androidx.media3.session.MediaSession.Builder setId(String);
    method public androidx.media3.session.MediaSession.Builder setSessionActivity(android.app.PendingIntent);
  }

  public static interface MediaSession.Callback {
    method public default com.google.common.util.concurrent.ListenableFuture<java.util.List<androidx.media3.common.MediaItem>> onAddMediaItems(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo, java.util.List<androidx.media3.common.MediaItem>);
    method public default androidx.media3.session.MediaSession.ConnectionResult onConnect(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo);
    method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> onCustomCommand(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo, androidx.media3.session.SessionCommand, android.os.Bundle);
    method public default void onDisconnected(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo);
    method @androidx.media3.session.SessionResult.Code public default int onPlayerCommandRequest(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo, @androidx.media3.common.Player.Command int);
    method public default void onPostConnect(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo);
    method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> onSetRating(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo, String, androidx.media3.common.Rating);
    method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> onSetRating(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo, androidx.media3.common.Rating);
  }

  public static final class MediaSession.ConnectionResult {
    method public static androidx.media3.session.MediaSession.ConnectionResult accept(androidx.media3.session.SessionCommands, androidx.media3.common.Player.Commands);
    method public static androidx.media3.session.MediaSession.ConnectionResult reject();
    field public final androidx.media3.common.Player.Commands availablePlayerCommands;
    field public final androidx.media3.session.SessionCommands availableSessionCommands;
    field public final boolean isAccepted;
  }

  public static final class MediaSession.ControllerInfo {
    method public android.os.Bundle getConnectionHints();
    method public int getControllerVersion();
    method public String getPackageName();
    method public int getUid();
    field public static final int LEGACY_CONTROLLER_VERSION = 0; // 0x0
  }

  public abstract class MediaSessionService extends android.app.Service {
    ctor public MediaSessionService();
    method public final void addSession(androidx.media3.session.MediaSession);
    method public final java.util.List<androidx.media3.session.MediaSession> getSessions();
    method public final boolean isSessionAdded(androidx.media3.session.MediaSession);
    method @CallSuper @Nullable public android.os.IBinder onBind(@Nullable android.content.Intent);
    method @Nullable public abstract androidx.media3.session.MediaSession onGetSession(androidx.media3.session.MediaSession.ControllerInfo);
    method public void onUpdateNotification(androidx.media3.session.MediaSession);
    method public final void removeSession(androidx.media3.session.MediaSession);
    field public static final String SERVICE_INTERFACE = "androidx.media3.session.MediaSessionService";
  }

  public final class SessionCommand {
    ctor public SessionCommand(@androidx.media3.session.SessionCommand.CommandCode int);
    ctor public SessionCommand(String, android.os.Bundle);
    field public static final int COMMAND_CODE_CUSTOM = 0; // 0x0
    field public static final int COMMAND_CODE_LIBRARY_GET_CHILDREN = 50003; // 0xc353
    field public static final int COMMAND_CODE_LIBRARY_GET_ITEM = 50004; // 0xc354
    field public static final int COMMAND_CODE_LIBRARY_GET_LIBRARY_ROOT = 50000; // 0xc350
    field public static final int COMMAND_CODE_LIBRARY_GET_SEARCH_RESULT = 50006; // 0xc356
    field public static final int COMMAND_CODE_LIBRARY_SEARCH = 50005; // 0xc355
    field public static final int COMMAND_CODE_LIBRARY_SUBSCRIBE = 50001; // 0xc351
    field public static final int COMMAND_CODE_LIBRARY_UNSUBSCRIBE = 50002; // 0xc352
    field public static final int COMMAND_CODE_SESSION_SET_RATING = 40010; // 0x9c4a
    field @androidx.media3.session.SessionCommand.CommandCode public final int commandCode;
    field public final String customAction;
    field public final android.os.Bundle customExtras;
  }

  @IntDef({androidx.media3.session.SessionCommand.COMMAND_CODE_CUSTOM, androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_RATING, androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_GET_LIBRARY_ROOT, androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_SUBSCRIBE, androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_UNSUBSCRIBE, androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_GET_CHILDREN, androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_GET_ITEM, androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_SEARCH, androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_GET_SEARCH_RESULT}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) public static @interface SessionCommand.CommandCode {
  }

  public final class SessionCommands {
    method public androidx.media3.session.SessionCommands.Builder buildUpon();
    method public boolean contains(androidx.media3.session.SessionCommand);
    method public boolean contains(@androidx.media3.session.SessionCommand.CommandCode int);
    field public static final androidx.media3.session.SessionCommands EMPTY;
    field public final com.google.common.collect.ImmutableSet<androidx.media3.session.SessionCommand> commands;
  }

  public static final class SessionCommands.Builder {
    ctor public SessionCommands.Builder();
    method public androidx.media3.session.SessionCommands.Builder add(androidx.media3.session.SessionCommand);
    method public androidx.media3.session.SessionCommands.Builder add(@androidx.media3.session.SessionCommand.CommandCode int);
    method public androidx.media3.session.SessionCommands build();
    method public androidx.media3.session.SessionCommands.Builder remove(androidx.media3.session.SessionCommand);
    method public androidx.media3.session.SessionCommands.Builder remove(@androidx.media3.session.SessionCommand.CommandCode int);
  }

  public final class SessionResult {
    ctor public SessionResult(@androidx.media3.session.SessionResult.Code int);
    ctor public SessionResult(@androidx.media3.session.SessionResult.Code int, android.os.Bundle);
    field public static final int RESULT_ERROR_BAD_VALUE = -3; // 0xfffffffd
    field public static final int RESULT_ERROR_INVALID_STATE = -2; // 0xfffffffe
    field public static final int RESULT_ERROR_IO = -5; // 0xfffffffb
    field public static final int RESULT_ERROR_NOT_SUPPORTED = -6; // 0xfffffffa
    field public static final int RESULT_ERROR_PERMISSION_DENIED = -4; // 0xfffffffc
    field public static final int RESULT_ERROR_SESSION_AUTHENTICATION_EXPIRED = -102; // 0xffffff9a
    field public static final int RESULT_ERROR_SESSION_CONCURRENT_STREAM_LIMIT = -104; // 0xffffff98
    field public static final int RESULT_ERROR_SESSION_DISCONNECTED = -100; // 0xffffff9c
    field public static final int RESULT_ERROR_SESSION_NOT_AVAILABLE_IN_REGION = -106; // 0xffffff96
    field public static final int RESULT_ERROR_SESSION_PARENTAL_CONTROL_RESTRICTED = -105; // 0xffffff97
    field public static final int RESULT_ERROR_SESSION_PREMIUM_ACCOUNT_REQUIRED = -103; // 0xffffff99
    field public static final int RESULT_ERROR_SESSION_SETUP_REQUIRED = -108; // 0xffffff94
    field public static final int RESULT_ERROR_SESSION_SKIP_LIMIT_REACHED = -107; // 0xffffff95
    field public static final int RESULT_ERROR_UNKNOWN = -1; // 0xffffffff
    field public static final int RESULT_INFO_SKIPPED = 1; // 0x1
    field public static final int RESULT_SUCCESS = 0; // 0x0
    field public final long completionTimeMs;
    field public final android.os.Bundle extras;
    field @androidx.media3.session.SessionResult.Code public final int resultCode;
  }

  @IntDef({androidx.media3.session.SessionResult.RESULT_SUCCESS, androidx.media3.session.SessionResult.RESULT_ERROR_UNKNOWN, androidx.media3.session.SessionResult.RESULT_ERROR_INVALID_STATE, androidx.media3.session.SessionResult.RESULT_ERROR_BAD_VALUE, androidx.media3.session.SessionResult.RESULT_ERROR_PERMISSION_DENIED, androidx.media3.session.SessionResult.RESULT_ERROR_IO, androidx.media3.session.SessionResult.RESULT_INFO_SKIPPED, androidx.media3.session.SessionResult.RESULT_ERROR_SESSION_DISCONNECTED, androidx.media3.session.SessionResult.RESULT_ERROR_NOT_SUPPORTED, androidx.media3.session.SessionResult.RESULT_ERROR_SESSION_AUTHENTICATION_EXPIRED, androidx.media3.session.SessionResult.RESULT_ERROR_SESSION_PREMIUM_ACCOUNT_REQUIRED, androidx.media3.session.SessionResult.RESULT_ERROR_SESSION_CONCURRENT_STREAM_LIMIT, androidx.media3.session.SessionResult.RESULT_ERROR_SESSION_PARENTAL_CONTROL_RESTRICTED, androidx.media3.session.SessionResult.RESULT_ERROR_SESSION_NOT_AVAILABLE_IN_REGION, androidx.media3.session.SessionResult.RESULT_ERROR_SESSION_SKIP_LIMIT_REACHED, androidx.media3.session.SessionResult.RESULT_ERROR_SESSION_SETUP_REQUIRED}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) public static @interface SessionResult.Code {
  }

  public final class SessionToken {
    ctor public SessionToken(android.content.Context, android.content.ComponentName);
    method public static com.google.common.collect.ImmutableSet<androidx.media3.session.SessionToken> getAllServiceTokens(android.content.Context);
    method public android.os.Bundle getExtras();
    method public String getPackageName();
    method public String getServiceName();
    method public int getSessionVersion();
    method @androidx.media3.session.SessionToken.TokenType public int getType();
    method public int getUid();
    field public static final int TYPE_LIBRARY_SERVICE = 2; // 0x2
    field public static final int TYPE_SESSION = 0; // 0x0
    field public static final int TYPE_SESSION_SERVICE = 1; // 0x1
  }

  @IntDef({androidx.media3.session.SessionToken.TYPE_SESSION, androidx.media3.session.SessionToken.TYPE_SESSION_SERVICE, androidx.media3.session.SessionToken.TYPE_LIBRARY_SERVICE}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) public static @interface SessionToken.TokenType {
  }

}

package androidx.media3.ui {

  public class PlayerView extends android.widget.FrameLayout implements androidx.media3.common.AdViewProvider {
    ctor public PlayerView(android.content.Context);
    ctor public PlayerView(android.content.Context, @Nullable android.util.AttributeSet);
    ctor public PlayerView(android.content.Context, @Nullable android.util.AttributeSet, int);
    method public android.view.ViewGroup getAdViewGroup();
    method @Nullable public androidx.media3.common.Player getPlayer();
    method public boolean getUseController();
    method public void onPause();
    method public void onResume();
    method public void setControllerVisibilityListener(@Nullable androidx.media3.ui.PlayerView.ControllerVisibilityListener);
    method public void setErrorMessageProvider(@Nullable androidx.media3.common.ErrorMessageProvider<? super androidx.media3.common.PlaybackException>);
    method public void setFullscreenButtonClickListener(@Nullable androidx.media3.ui.PlayerView.FullscreenButtonClickListener);
    method public void setPlayer(@Nullable androidx.media3.common.Player);
    method public void setUseController(boolean);
  }

  public static interface PlayerView.ControllerVisibilityListener {
    method public void onVisibilityChanged(int);
  }

  public static interface PlayerView.FullscreenButtonClickListener {
    method public void onFullscreenButtonClick(boolean);
  }

}

