Commit abbd7652 by ibaker Committed by Ian Baker

Add more UI symbols (and some others) to the stable API

These are used by the main demo app and would be reasonably used by
other relatively simple media playback apps.

PiperOrigin-RevId: 445371266
parent 0789e278
...@@ -16,10 +16,8 @@ ...@@ -16,10 +16,8 @@
package androidx.media3.common; package androidx.media3.common;
import android.util.Pair; import android.util.Pair;
import androidx.media3.common.util.UnstableApi;
/** Converts throwables into error codes and user readable error messages. */ /** Converts throwables into error codes and user readable error messages. */
@UnstableApi
public interface ErrorMessageProvider<T extends Throwable> { public interface ErrorMessageProvider<T extends Throwable> {
/** /**
......
...@@ -274,7 +274,7 @@ public final class Tracks implements Bundleable { ...@@ -274,7 +274,7 @@ public final class Tracks implements Bundleable {
} }
/** Empty tracks. */ /** Empty tracks. */
@UnstableApi public static final Tracks EMPTY = new Tracks(ImmutableList.of()); public static final Tracks EMPTY = new Tracks(ImmutableList.of());
private final ImmutableList<Group> groups; private final ImmutableList<Group> groups;
......
...@@ -94,12 +94,15 @@ public interface ExoMediaDrm { ...@@ -94,12 +94,15 @@ public interface ExoMediaDrm {
} }
/** Event indicating that keys need to be requested from the license server. */ /** Event indicating that keys need to be requested from the license server. */
@UnstableApi
@SuppressWarnings("InlinedApi") @SuppressWarnings("InlinedApi")
int EVENT_KEY_REQUIRED = MediaDrm.EVENT_KEY_REQUIRED; int EVENT_KEY_REQUIRED = MediaDrm.EVENT_KEY_REQUIRED;
/** Event indicating that keys have expired, and are no longer usable. */ /** Event indicating that keys have expired, and are no longer usable. */
@UnstableApi
@SuppressWarnings("InlinedApi") @SuppressWarnings("InlinedApi")
int EVENT_KEY_EXPIRED = MediaDrm.EVENT_KEY_EXPIRED; int EVENT_KEY_EXPIRED = MediaDrm.EVENT_KEY_EXPIRED;
/** Event indicating that a certificate needs to be requested from the provisioning server. */ /** Event indicating that a certificate needs to be requested from the provisioning server. */
@UnstableApi
@SuppressWarnings("InlinedApi") @SuppressWarnings("InlinedApi")
int EVENT_PROVISION_REQUIRED = MediaDrm.EVENT_PROVISION_REQUIRED; int EVENT_PROVISION_REQUIRED = MediaDrm.EVENT_PROVISION_REQUIRED;
...@@ -107,15 +110,18 @@ public interface ExoMediaDrm { ...@@ -107,15 +110,18 @@ public interface ExoMediaDrm {
* Key request type for keys that will be used for online use. Streaming keys will not be saved to * Key request type for keys that will be used for online use. Streaming keys will not be saved to
* the device for subsequent use when the device is not connected to a network. * the device for subsequent use when the device is not connected to a network.
*/ */
@UnstableApi
@SuppressWarnings("InlinedApi") @SuppressWarnings("InlinedApi")
int KEY_TYPE_STREAMING = MediaDrm.KEY_TYPE_STREAMING; int KEY_TYPE_STREAMING = MediaDrm.KEY_TYPE_STREAMING;
/** /**
* Key request type for keys that will be used for offline use. They will be saved to the device * Key request type for keys that will be used for offline use. They will be saved to the device
* for subsequent use when the device is not connected to a network. * for subsequent use when the device is not connected to a network.
*/ */
@UnstableApi
@SuppressWarnings("InlinedApi") @SuppressWarnings("InlinedApi")
int KEY_TYPE_OFFLINE = MediaDrm.KEY_TYPE_OFFLINE; int KEY_TYPE_OFFLINE = MediaDrm.KEY_TYPE_OFFLINE;
/** Key request type indicating that saved offline keys should be released. */ /** Key request type indicating that saved offline keys should be released. */
@UnstableApi
@SuppressWarnings("InlinedApi") @SuppressWarnings("InlinedApi")
int KEY_TYPE_RELEASE = MediaDrm.KEY_TYPE_RELEASE; int KEY_TYPE_RELEASE = MediaDrm.KEY_TYPE_RELEASE;
......
...@@ -53,7 +53,6 @@ import java.util.UUID; ...@@ -53,7 +53,6 @@ import java.util.UUID;
/** An {@link ExoMediaDrm} implementation that wraps the framework {@link MediaDrm}. */ /** An {@link ExoMediaDrm} implementation that wraps the framework {@link MediaDrm}. */
@RequiresApi(18) @RequiresApi(18)
@UnstableApi
public final class FrameworkMediaDrm implements ExoMediaDrm { public final class FrameworkMediaDrm implements ExoMediaDrm {
private static final String TAG = "FrameworkMediaDrm"; private static final String TAG = "FrameworkMediaDrm";
...@@ -63,6 +62,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -63,6 +62,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
* UUID. Returns a {@link DummyExoMediaDrm} if the protection scheme identified by the given UUID * UUID. Returns a {@link DummyExoMediaDrm} if the protection scheme identified by the given UUID
* is not supported by the device. * is not supported by the device.
*/ */
@UnstableApi
public static final Provider DEFAULT_PROVIDER = public static final Provider DEFAULT_PROVIDER =
uuid -> { uuid -> {
try { try {
...@@ -99,6 +99,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -99,6 +99,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
* @return The created instance. * @return The created instance.
* @throws UnsupportedDrmException If the DRM scheme is unsupported or cannot be instantiated. * @throws UnsupportedDrmException If the DRM scheme is unsupported or cannot be instantiated.
*/ */
@UnstableApi
public static FrameworkMediaDrm newInstance(UUID uuid) throws UnsupportedDrmException { public static FrameworkMediaDrm newInstance(UUID uuid) throws UnsupportedDrmException {
try { try {
return new FrameworkMediaDrm(uuid); return new FrameworkMediaDrm(uuid);
...@@ -121,6 +122,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -121,6 +122,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
} }
} }
@UnstableApi
@Override @Override
public void setOnEventListener(@Nullable ExoMediaDrm.OnEventListener listener) { public void setOnEventListener(@Nullable ExoMediaDrm.OnEventListener listener) {
mediaDrm.setOnEventListener( mediaDrm.setOnEventListener(
...@@ -136,6 +138,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -136,6 +138,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
* @param listener The listener to receive events, or {@code null} to stop receiving events. * @param listener The listener to receive events, or {@code null} to stop receiving events.
* @throws UnsupportedOperationException on API levels lower than 23. * @throws UnsupportedOperationException on API levels lower than 23.
*/ */
@UnstableApi
@Override @Override
@RequiresApi(23) @RequiresApi(23)
public void setOnKeyStatusChangeListener( public void setOnKeyStatusChangeListener(
...@@ -164,6 +167,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -164,6 +167,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
* @param listener The listener to receive events, or {@code null} to stop receiving events. * @param listener The listener to receive events, or {@code null} to stop receiving events.
* @throws UnsupportedOperationException on API levels lower than 23. * @throws UnsupportedOperationException on API levels lower than 23.
*/ */
@UnstableApi
@Override @Override
@RequiresApi(23) @RequiresApi(23)
public void setOnExpirationUpdateListener(@Nullable OnExpirationUpdateListener listener) { public void setOnExpirationUpdateListener(@Nullable OnExpirationUpdateListener listener) {
...@@ -179,16 +183,19 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -179,16 +183,19 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
/* handler= */ null); /* handler= */ null);
} }
@UnstableApi
@Override @Override
public byte[] openSession() throws MediaDrmException { public byte[] openSession() throws MediaDrmException {
return mediaDrm.openSession(); return mediaDrm.openSession();
} }
@UnstableApi
@Override @Override
public void closeSession(byte[] sessionId) { public void closeSession(byte[] sessionId) {
mediaDrm.closeSession(sessionId); mediaDrm.closeSession(sessionId);
} }
@UnstableApi
@Override @Override
public void setPlayerIdForSession(byte[] sessionId, PlayerId playerId) { public void setPlayerIdForSession(byte[] sessionId, PlayerId playerId) {
if (Util.SDK_INT >= 31) { if (Util.SDK_INT >= 31) {
...@@ -202,6 +209,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -202,6 +209,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
// Return values of MediaDrm.KeyRequest.getRequestType are equal to KeyRequest.RequestType. // Return values of MediaDrm.KeyRequest.getRequestType are equal to KeyRequest.RequestType.
@SuppressLint("WrongConstant") @SuppressLint("WrongConstant")
@UnstableApi
@Override @Override
public KeyRequest getKeyRequest( public KeyRequest getKeyRequest(
byte[] scope, byte[] scope,
...@@ -239,6 +247,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -239,6 +247,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
return new KeyRequest(requestData, licenseServerUrl, requestType); return new KeyRequest(requestData, licenseServerUrl, requestType);
} }
@UnstableApi
@Override @Override
@Nullable @Nullable
public byte[] provideKeyResponse(byte[] scope, byte[] response) public byte[] provideKeyResponse(byte[] scope, byte[] response)
...@@ -250,22 +259,26 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -250,22 +259,26 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
return mediaDrm.provideKeyResponse(scope, response); return mediaDrm.provideKeyResponse(scope, response);
} }
@UnstableApi
@Override @Override
public ProvisionRequest getProvisionRequest() { public ProvisionRequest getProvisionRequest() {
final MediaDrm.ProvisionRequest request = mediaDrm.getProvisionRequest(); final MediaDrm.ProvisionRequest request = mediaDrm.getProvisionRequest();
return new ProvisionRequest(request.getData(), request.getDefaultUrl()); return new ProvisionRequest(request.getData(), request.getDefaultUrl());
} }
@UnstableApi
@Override @Override
public void provideProvisionResponse(byte[] response) throws DeniedByServerException { public void provideProvisionResponse(byte[] response) throws DeniedByServerException {
mediaDrm.provideProvisionResponse(response); mediaDrm.provideProvisionResponse(response);
} }
@UnstableApi
@Override @Override
public Map<String, String> queryKeyStatus(byte[] sessionId) { public Map<String, String> queryKeyStatus(byte[] sessionId) {
return mediaDrm.queryKeyStatus(sessionId); return mediaDrm.queryKeyStatus(sessionId);
} }
@UnstableApi
@Override @Override
public boolean requiresSecureDecoder(byte[] sessionId, String mimeType) { public boolean requiresSecureDecoder(byte[] sessionId, String mimeType) {
if (Util.SDK_INT >= 31) { if (Util.SDK_INT >= 31) {
...@@ -286,12 +299,14 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -286,12 +299,14 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
} }
} }
@UnstableApi
@Override @Override
public synchronized void acquire() { public synchronized void acquire() {
Assertions.checkState(referenceCount > 0); Assertions.checkState(referenceCount > 0);
referenceCount++; referenceCount++;
} }
@UnstableApi
@Override @Override
public synchronized void release() { public synchronized void release() {
if (--referenceCount == 0) { if (--referenceCount == 0) {
...@@ -299,11 +314,13 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -299,11 +314,13 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
} }
} }
@UnstableApi
@Override @Override
public void restoreKeys(byte[] sessionId, byte[] keySetId) { public void restoreKeys(byte[] sessionId, byte[] keySetId) {
mediaDrm.restoreKeys(sessionId, keySetId); mediaDrm.restoreKeys(sessionId, keySetId);
} }
@UnstableApi
@Override @Override
@Nullable @Nullable
public PersistableBundle getMetrics() { public PersistableBundle getMetrics() {
...@@ -313,26 +330,31 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -313,26 +330,31 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
return mediaDrm.getMetrics(); return mediaDrm.getMetrics();
} }
@UnstableApi
@Override @Override
public String getPropertyString(String propertyName) { public String getPropertyString(String propertyName) {
return mediaDrm.getPropertyString(propertyName); return mediaDrm.getPropertyString(propertyName);
} }
@UnstableApi
@Override @Override
public byte[] getPropertyByteArray(String propertyName) { public byte[] getPropertyByteArray(String propertyName) {
return mediaDrm.getPropertyByteArray(propertyName); return mediaDrm.getPropertyByteArray(propertyName);
} }
@UnstableApi
@Override @Override
public void setPropertyString(String propertyName, String value) { public void setPropertyString(String propertyName, String value) {
mediaDrm.setPropertyString(propertyName, value); mediaDrm.setPropertyString(propertyName, value);
} }
@UnstableApi
@Override @Override
public void setPropertyByteArray(String propertyName, byte[] value) { public void setPropertyByteArray(String propertyName, byte[] value) {
mediaDrm.setPropertyByteArray(propertyName, value); mediaDrm.setPropertyByteArray(propertyName, value);
} }
@UnstableApi
@Override @Override
public FrameworkCryptoConfig createCryptoConfig(byte[] sessionId) throws MediaCryptoException { public FrameworkCryptoConfig createCryptoConfig(byte[] sessionId) throws MediaCryptoException {
// Work around a bug prior to Lollipop where L1 Widevine forced into L3 mode would still // Work around a bug prior to Lollipop where L1 Widevine forced into L3 mode would still
...@@ -345,6 +367,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { ...@@ -345,6 +367,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm {
adjustUuid(uuid), sessionId, forceAllowInsecureDecoderComponents); adjustUuid(uuid), sessionId, forceAllowInsecureDecoderComponents);
} }
@UnstableApi
@Override @Override
public @C.CryptoType int getCryptoType() { public @C.CryptoType int getCryptoType() {
return C.CRYPTO_TYPE_FRAMEWORK; return C.CRYPTO_TYPE_FRAMEWORK;
......
...@@ -633,7 +633,6 @@ public class PlayerView extends FrameLayout implements AdViewProvider { ...@@ -633,7 +633,6 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
} }
/** Returns whether the playback controls can be shown. */ /** Returns whether the playback controls can be shown. */
@UnstableApi
public boolean getUseController() { public boolean getUseController() {
return useController; return useController;
} }
...@@ -647,7 +646,6 @@ public class PlayerView extends FrameLayout implements AdViewProvider { ...@@ -647,7 +646,6 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
* *
* @param useController Whether the playback controls can be shown. * @param useController Whether the playback controls can be shown.
*/ */
@UnstableApi
public void setUseController(boolean useController) { public void setUseController(boolean useController) {
Assertions.checkState(!useController || controller != null); Assertions.checkState(!useController || controller != null);
setClickable(useController || hasOnClickListeners()); setClickable(useController || hasOnClickListeners());
...@@ -724,7 +722,6 @@ public class PlayerView extends FrameLayout implements AdViewProvider { ...@@ -724,7 +722,6 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
* *
* @param errorMessageProvider The error message provider. * @param errorMessageProvider The error message provider.
*/ */
@UnstableApi
public void setErrorMessageProvider( public void setErrorMessageProvider(
@Nullable ErrorMessageProvider<? super PlaybackException> errorMessageProvider) { @Nullable ErrorMessageProvider<? super PlaybackException> errorMessageProvider) {
if (this.errorMessageProvider != errorMessageProvider) { if (this.errorMessageProvider != errorMessageProvider) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment