diff --git a/library/core/src/main/java/com/google/android/exoplayer2/BaseRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/BaseRenderer.java index 6c323deca4..3cdab8baf1 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/BaseRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/BaseRenderer.java @@ -321,7 +321,7 @@ public abstract class BaseRenderer implements Renderer, RendererCapabilities { Assertions.checkNotNull(Looper.myLooper()), newFormat.drmInitData); } if (existingSourceSession != null) { - existingSourceSession.releaseReference(); + existingSourceSession.release(); } return newSourceDrmSession; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/SimpleDecoderAudioRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/SimpleDecoderAudioRenderer.java index 32516e7dcd..76abfd6e0f 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/SimpleDecoderAudioRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/SimpleDecoderAudioRenderer.java @@ -657,12 +657,12 @@ public abstract class SimpleDecoderAudioRenderer extends BaseRenderer implements } private void setSourceDrmSession(@Nullable DrmSession session) { - DrmSession.replaceSessionReferences(sourceDrmSession, session); + DrmSession.replaceSession(sourceDrmSession, session); sourceDrmSession = session; } private void setDecoderDrmSession(@Nullable DrmSession session) { - DrmSession.replaceSessionReferences(decoderDrmSession, session); + DrmSession.replaceSession(decoderDrmSession, session); decoderDrmSession = session; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSession.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSession.java index d962efd96b..25a08c9058 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSession.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSession.java @@ -251,7 +251,8 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; } @Override - public void acquireReference() { + public void acquire() { + Assertions.checkState(referenceCount >= 0); if (++referenceCount == 1) { Assertions.checkState(state == STATE_OPENING); requestHandlerThread = new HandlerThread("DrmRequestHandler"); @@ -264,7 +265,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; } @Override - public void releaseReference() { + public void release() { if (--referenceCount == 0) { // Assigning null to various non-null variables for clean-up. state = STATE_RELEASED; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java index 15f87318f0..a65f45309a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java @@ -480,7 +480,7 @@ public class DefaultDrmSessionManager implements DrmSe sessions.add(placeholderDrmSession); this.placeholderDrmSession = placeholderDrmSession; } - placeholderDrmSession.acquireReference(); + placeholderDrmSession.acquire(); return placeholderDrmSession; } @@ -521,7 +521,7 @@ public class DefaultDrmSessionManager implements DrmSe } sessions.add(session); } - session.acquireReference(); + session.acquire(); return session; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSession.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSession.java index 722ab946f0..13e29e141a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSession.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSession.java @@ -30,21 +30,21 @@ import java.util.Map; public interface DrmSession { /** - * Invokes {@code newSession's} {@link #acquireReference()} and {@code previousSession's} {@link - * #releaseReference()} in that order. Null arguments are ignored. Does nothing if {@code - * previousSession} and {@code newSession} are the same session. + * Invokes {@code newSession's} {@link #acquire()} and {@code previousSession's} {@link + * #release()} in that order. Null arguments are ignored. Does nothing if {@code previousSession} + * and {@code newSession} are the same session. */ - static void replaceSessionReferences( + static void replaceSession( @Nullable DrmSession previousSession, @Nullable DrmSession newSession) { if (previousSession == newSession) { // Do nothing. return; } if (newSession != null) { - newSession.acquireReference(); + newSession.acquire(); } if (previousSession != null) { - previousSession.releaseReference(); + previousSession.release(); } } @@ -130,16 +130,14 @@ public interface DrmSession { byte[] getOfflineLicenseKeySetId(); /** - * Increments the reference count for this session. A non-zero reference count session will keep - * any acquired resources. + * Increments the reference count. When the caller no longer needs to use the instance, it must + * call {@link #release()} to decrement the reference count. */ - void acquireReference(); + void acquire(); /** - * Decreases by one the reference count for this session. A session that reaches a zero reference - * count will release any resources it holds. - * - *

The session must not be used after its reference count has been reduced to 0. + * Decrements the reference count. If the reference count drops to 0 underlying resources are + * released, and the instance cannot be re-used. */ - void releaseReference(); + void release(); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSessionManager.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSessionManager.java index 1a9e01441f..c92d68ed17 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSessionManager.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSessionManager.java @@ -105,8 +105,9 @@ public interface DrmSessionManager { boolean canAcquireSession(DrmInitData drmInitData); /** - * Returns a {@link DrmSession} with an acquired reference that does not execute key requests. - * Returns null if placeholder sessions are not supported by this DRM session manager. + * Returns a {@link DrmSession} that does not execute key requests, with an incremented reference + * count. When the caller no longer needs to use the instance, it must call {@link + * DrmSession#release()} to decrement the reference count. * *

Placeholder {@link DrmSession DrmSessions} may be used to configure secure decoders for * playback of clear samples, which reduces the costs of transitioning between clear and encrypted @@ -124,10 +125,9 @@ public interface DrmSessionManager { } /** - * Returns a {@link DrmSession} with an acquired reference for the specified {@link DrmInitData}. - * - *

The caller must call {@link DrmSession#releaseReference} to decrement the session's - * reference count when the session is no longer required. + * Returns a {@link DrmSession} for the specified {@link DrmInitData}, with an incremented + * reference count. When the caller no longer needs to use the instance, it must call {@link + * DrmSession#release()} to decrement the reference count. * * @param playbackLooper The looper associated with the media playback thread. * @param drmInitData DRM initialization data. All contained {@link SchemeData}s must contain diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/ErrorStateDrmSession.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/ErrorStateDrmSession.java index d40cf60906..aa15c82900 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/ErrorStateDrmSession.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/ErrorStateDrmSession.java @@ -58,12 +58,12 @@ public final class ErrorStateDrmSession implements Drm } @Override - public void acquireReference() { + public void acquire() { // Do nothing. } @Override - public void releaseReference() { + public void release() { // Do nothing. } } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java index 9ed2fe3f27..31211d7b2a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java @@ -210,7 +210,7 @@ public final class OfflineLicenseHelper { DrmSessionException error = drmSession.getError(); Pair licenseDurationRemainingSec = WidevineUtil.getLicenseDurationRemainingSec(drmSession); - drmSession.releaseReference(); + drmSession.release(); drmSessionManager.release(); if (error != null) { if (error.getCause() instanceof KeysExpiredException) { @@ -236,7 +236,7 @@ public final class OfflineLicenseHelper { drmInitData); DrmSessionException error = drmSession.getError(); byte[] keySetId = drmSession.getOfflineLicenseKeySetId(); - drmSession.releaseReference(); + drmSession.release(); drmSessionManager.release(); if (error != null) { throw error; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java index 8f8d600f93..80d2625a3e 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java @@ -1011,12 +1011,12 @@ public abstract class MediaCodecRenderer extends BaseRenderer { } private void setSourceDrmSession(@Nullable DrmSession session) { - DrmSession.replaceSessionReferences(sourceDrmSession, session); + DrmSession.replaceSession(sourceDrmSession, session); sourceDrmSession = session; } private void setCodecDrmSession(@Nullable DrmSession session) { - DrmSession.replaceSessionReferences(codecDrmSession, session); + DrmSession.replaceSession(codecDrmSession, session); codecDrmSession = session; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/SampleMetadataQueue.java b/library/core/src/main/java/com/google/android/exoplayer2/source/SampleMetadataQueue.java index 891f36f47c..0cc576a145 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/SampleMetadataQueue.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/SampleMetadataQueue.java @@ -171,7 +171,7 @@ import java.io.IOException; /** Releases any owned {@link DrmSession} references. */ public void releaseDrmSessionReferences() { if (currentDrmSession != null) { - currentDrmSession.releaseReference(); + currentDrmSession.release(); currentDrmSession = null; // Clear downstream format to avoid violating the assumption that downstreamFormat.drmInitData // != null implies currentSession != null @@ -629,7 +629,7 @@ import java.io.IOException; outputFormatHolder.drmSession = currentDrmSession; if (previousSession != null) { - previousSession.releaseReference(); + previousSession.release(); } } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/SimpleDecoderVideoRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/video/SimpleDecoderVideoRenderer.java index c7dc056823..cd3823b342 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/video/SimpleDecoderVideoRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/video/SimpleDecoderVideoRenderer.java @@ -635,12 +635,12 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer { // Internal methods. private void setSourceDrmSession(@Nullable DrmSession session) { - DrmSession.replaceSessionReferences(sourceDrmSession, session); + DrmSession.replaceSession(sourceDrmSession, session); sourceDrmSession = session; } private void setDecoderDrmSession(@Nullable DrmSession session) { - DrmSession.replaceSessionReferences(decoderDrmSession, session); + DrmSession.replaceSession(decoderDrmSession, session); decoderDrmSession = session; }