mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Make DefaultDrmSession package private
PiperOrigin-RevId: 278639779
This commit is contained in:
parent
02a83a5377
commit
efc7f55616
2 changed files with 36 additions and 36 deletions
|
|
@ -48,7 +48,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
|
||||||
|
|
||||||
/** A {@link DrmSession} that supports playbacks using {@link ExoMediaDrm}. */
|
/** A {@link DrmSession} that supports playbacks using {@link ExoMediaDrm}. */
|
||||||
@TargetApi(18)
|
@TargetApi(18)
|
||||||
public class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T> {
|
/* package */ class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T> {
|
||||||
|
|
||||||
/** Thrown when an unexpected exception or error is thrown during provisioning or key requests. */
|
/** Thrown when an unexpected exception or error is thrown during provisioning or key requests. */
|
||||||
public static final class UnexpectedDrmSessionException extends IOException {
|
public static final class UnexpectedDrmSessionException extends IOException {
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ import android.os.Message;
|
||||||
import androidx.annotation.IntDef;
|
import androidx.annotation.IntDef;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import com.google.android.exoplayer2.C;
|
import com.google.android.exoplayer2.C;
|
||||||
import com.google.android.exoplayer2.drm.DefaultDrmSession.ProvisioningManager;
|
|
||||||
import com.google.android.exoplayer2.drm.DrmInitData.SchemeData;
|
import com.google.android.exoplayer2.drm.DrmInitData.SchemeData;
|
||||||
import com.google.android.exoplayer2.drm.DrmSession.DrmSessionException;
|
import com.google.android.exoplayer2.drm.DrmSession.DrmSessionException;
|
||||||
import com.google.android.exoplayer2.drm.ExoMediaDrm.OnEventListener;
|
import com.google.android.exoplayer2.drm.ExoMediaDrm.OnEventListener;
|
||||||
|
|
@ -45,8 +44,7 @@ import java.util.UUID;
|
||||||
|
|
||||||
/** A {@link DrmSessionManager} that supports playbacks using {@link ExoMediaDrm}. */
|
/** A {@link DrmSessionManager} that supports playbacks using {@link ExoMediaDrm}. */
|
||||||
@TargetApi(18)
|
@TargetApi(18)
|
||||||
public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
|
public class DefaultDrmSessionManager<T extends ExoMediaCrypto> implements DrmSessionManager<T> {
|
||||||
implements DrmSessionManager<T>, ProvisioningManager<T> {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builder for {@link DefaultDrmSessionManager} instances.
|
* Builder for {@link DefaultDrmSessionManager} instances.
|
||||||
|
|
@ -230,6 +228,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
|
||||||
private final boolean multiSession;
|
private final boolean multiSession;
|
||||||
private final boolean preferSecureDecoders;
|
private final boolean preferSecureDecoders;
|
||||||
@Flags private final int flags;
|
@Flags private final int flags;
|
||||||
|
private final ProvisioningManagerImpl provisioningManagerImpl;
|
||||||
private final LoadErrorHandlingPolicy loadErrorHandlingPolicy;
|
private final LoadErrorHandlingPolicy loadErrorHandlingPolicy;
|
||||||
|
|
||||||
private final List<DefaultDrmSession<T>> sessions;
|
private final List<DefaultDrmSession<T>> sessions;
|
||||||
|
|
@ -348,6 +347,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
|
||||||
this.preferSecureDecoders = preferSecureDecoders;
|
this.preferSecureDecoders = preferSecureDecoders;
|
||||||
this.flags = flags;
|
this.flags = flags;
|
||||||
this.loadErrorHandlingPolicy = loadErrorHandlingPolicy;
|
this.loadErrorHandlingPolicy = loadErrorHandlingPolicy;
|
||||||
|
provisioningManagerImpl = new ProvisioningManagerImpl();
|
||||||
mode = MODE_PLAYBACK;
|
mode = MODE_PLAYBACK;
|
||||||
sessions = new ArrayList<>();
|
sessions = new ArrayList<>();
|
||||||
provisioningSessions = new ArrayList<>();
|
provisioningSessions = new ArrayList<>();
|
||||||
|
|
@ -536,37 +536,6 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
|
||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProvisioningManager implementation.
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void provisionRequired(DefaultDrmSession<T> session) {
|
|
||||||
if (provisioningSessions.contains(session)) {
|
|
||||||
// The session has already requested provisioning.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
provisioningSessions.add(session);
|
|
||||||
if (provisioningSessions.size() == 1) {
|
|
||||||
// This is the first session requesting provisioning, so have it perform the operation.
|
|
||||||
session.provision();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onProvisionCompleted() {
|
|
||||||
for (DefaultDrmSession<T> session : provisioningSessions) {
|
|
||||||
session.onProvisionCompleted();
|
|
||||||
}
|
|
||||||
provisioningSessions.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onProvisionError(Exception error) {
|
|
||||||
for (DefaultDrmSession<T> session : provisioningSessions) {
|
|
||||||
session.onProvisionError(error);
|
|
||||||
}
|
|
||||||
provisioningSessions.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Internal methods.
|
// Internal methods.
|
||||||
|
|
||||||
private void assertExpectedPlaybackLooper(Looper playbackLooper) {
|
private void assertExpectedPlaybackLooper(Looper playbackLooper) {
|
||||||
|
|
@ -586,7 +555,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
|
||||||
return new DefaultDrmSession<>(
|
return new DefaultDrmSession<>(
|
||||||
uuid,
|
uuid,
|
||||||
exoMediaDrm,
|
exoMediaDrm,
|
||||||
/* provisioningManager= */ this,
|
/* provisioningManager= */ provisioningManagerImpl,
|
||||||
/* releaseCallback= */ this::onSessionReleased,
|
/* releaseCallback= */ this::onSessionReleased,
|
||||||
schemeDatas,
|
schemeDatas,
|
||||||
mode,
|
mode,
|
||||||
|
|
@ -664,6 +633,37 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class ProvisioningManagerImpl implements DefaultDrmSession.ProvisioningManager<T> {
|
||||||
|
@Override
|
||||||
|
public void provisionRequired(DefaultDrmSession<T> session) {
|
||||||
|
if (provisioningSessions.contains(session)) {
|
||||||
|
// The session has already requested provisioning.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
provisioningSessions.add(session);
|
||||||
|
if (provisioningSessions.size() == 1) {
|
||||||
|
// This is the first session requesting provisioning, so have it perform the operation.
|
||||||
|
session.provision();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProvisionCompleted() {
|
||||||
|
for (DefaultDrmSession<T> session : provisioningSessions) {
|
||||||
|
session.onProvisionCompleted();
|
||||||
|
}
|
||||||
|
provisioningSessions.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProvisionError(Exception error) {
|
||||||
|
for (DefaultDrmSession<T> session : provisioningSessions) {
|
||||||
|
session.onProvisionError(error);
|
||||||
|
}
|
||||||
|
provisioningSessions.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class MediaDrmEventListener implements OnEventListener<T> {
|
private class MediaDrmEventListener implements OnEventListener<T> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue