mirror of
https://github.com/androidx/media.git
synced 2025-05-08 08:00:49 +08:00
Reset requiresSecureDecoder boolean on codec release
PiperOrigin-RevId: 229253065
This commit is contained in:
parent
1b62277a0b
commit
0bfbcea632
@ -296,7 +296,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
|||||||
@Nullable private DrmSession<FrameworkMediaCrypto> codecDrmSession;
|
@Nullable private DrmSession<FrameworkMediaCrypto> codecDrmSession;
|
||||||
@Nullable private DrmSession<FrameworkMediaCrypto> sourceDrmSession;
|
@Nullable private DrmSession<FrameworkMediaCrypto> sourceDrmSession;
|
||||||
@Nullable private MediaCrypto mediaCrypto;
|
@Nullable private MediaCrypto mediaCrypto;
|
||||||
private boolean drmSessionRequiresSecureDecoder;
|
private boolean mediaCryptoRequiresSecureDecoder;
|
||||||
private long renderTimeLimitMs;
|
private long renderTimeLimitMs;
|
||||||
private float rendererOperatingRate;
|
private float rendererOperatingRate;
|
||||||
@Nullable private MediaCodec codec;
|
@Nullable private MediaCodec codec;
|
||||||
@ -481,7 +481,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
|||||||
} catch (MediaCryptoException e) {
|
} catch (MediaCryptoException e) {
|
||||||
throw ExoPlaybackException.createForRenderer(e, getIndex());
|
throw ExoPlaybackException.createForRenderer(e, getIndex());
|
||||||
}
|
}
|
||||||
drmSessionRequiresSecureDecoder =
|
mediaCryptoRequiresSecureDecoder =
|
||||||
!sessionMediaCrypto.forceAllowInsecureDecoderComponents
|
!sessionMediaCrypto.forceAllowInsecureDecoderComponents
|
||||||
&& mediaCrypto.requiresSecureDecoderComponent(mimeType);
|
&& mediaCrypto.requiresSecureDecoderComponent(mimeType);
|
||||||
}
|
}
|
||||||
@ -498,7 +498,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
maybeInitCodecWithFallback(mediaCrypto, drmSessionRequiresSecureDecoder);
|
maybeInitCodecWithFallback(mediaCrypto, mediaCryptoRequiresSecureDecoder);
|
||||||
} catch (DecoderInitializationException e) {
|
} catch (DecoderInitializationException e) {
|
||||||
throw ExoPlaybackException.createForRenderer(e, getIndex());
|
throw ExoPlaybackException.createForRenderer(e, getIndex());
|
||||||
}
|
}
|
||||||
@ -606,6 +606,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
|||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
mediaCrypto = null;
|
mediaCrypto = null;
|
||||||
|
mediaCryptoRequiresSecureDecoder = false;
|
||||||
setCodecDrmSession(null);
|
setCodecDrmSession(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -727,18 +728,18 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void maybeInitCodecWithFallback(
|
private void maybeInitCodecWithFallback(
|
||||||
MediaCrypto crypto, boolean drmSessionRequiresSecureDecoder)
|
MediaCrypto crypto, boolean mediaCryptoRequiresSecureDecoder)
|
||||||
throws DecoderInitializationException {
|
throws DecoderInitializationException {
|
||||||
if (availableCodecInfos == null) {
|
if (availableCodecInfos == null) {
|
||||||
try {
|
try {
|
||||||
availableCodecInfos =
|
availableCodecInfos =
|
||||||
new ArrayDeque<>(getAvailableCodecInfos(drmSessionRequiresSecureDecoder));
|
new ArrayDeque<>(getAvailableCodecInfos(mediaCryptoRequiresSecureDecoder));
|
||||||
preferredDecoderInitializationException = null;
|
preferredDecoderInitializationException = null;
|
||||||
} catch (DecoderQueryException e) {
|
} catch (DecoderQueryException e) {
|
||||||
throw new DecoderInitializationException(
|
throw new DecoderInitializationException(
|
||||||
inputFormat,
|
inputFormat,
|
||||||
e,
|
e,
|
||||||
drmSessionRequiresSecureDecoder,
|
mediaCryptoRequiresSecureDecoder,
|
||||||
DecoderInitializationException.DECODER_QUERY_ERROR);
|
DecoderInitializationException.DECODER_QUERY_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -747,7 +748,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
|||||||
throw new DecoderInitializationException(
|
throw new DecoderInitializationException(
|
||||||
inputFormat,
|
inputFormat,
|
||||||
/* cause= */ null,
|
/* cause= */ null,
|
||||||
drmSessionRequiresSecureDecoder,
|
mediaCryptoRequiresSecureDecoder,
|
||||||
DecoderInitializationException.NO_SUITABLE_DECODER_ERROR);
|
DecoderInitializationException.NO_SUITABLE_DECODER_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -766,7 +767,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
|||||||
availableCodecInfos.removeFirst();
|
availableCodecInfos.removeFirst();
|
||||||
DecoderInitializationException exception =
|
DecoderInitializationException exception =
|
||||||
new DecoderInitializationException(
|
new DecoderInitializationException(
|
||||||
inputFormat, e, drmSessionRequiresSecureDecoder, codecInfo.name);
|
inputFormat, e, mediaCryptoRequiresSecureDecoder, codecInfo.name);
|
||||||
if (preferredDecoderInitializationException == null) {
|
if (preferredDecoderInitializationException == null) {
|
||||||
preferredDecoderInitializationException = exception;
|
preferredDecoderInitializationException = exception;
|
||||||
} else {
|
} else {
|
||||||
@ -782,11 +783,11 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
|||||||
availableCodecInfos = null;
|
availableCodecInfos = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<MediaCodecInfo> getAvailableCodecInfos(boolean drmSessionRequiresSecureDecoder)
|
private List<MediaCodecInfo> getAvailableCodecInfos(boolean mediaCryptoRequiresSecureDecoder)
|
||||||
throws DecoderQueryException {
|
throws DecoderQueryException {
|
||||||
List<MediaCodecInfo> codecInfos =
|
List<MediaCodecInfo> codecInfos =
|
||||||
getDecoderInfos(mediaCodecSelector, inputFormat, drmSessionRequiresSecureDecoder);
|
getDecoderInfos(mediaCodecSelector, inputFormat, mediaCryptoRequiresSecureDecoder);
|
||||||
if (codecInfos.isEmpty() && drmSessionRequiresSecureDecoder) {
|
if (codecInfos.isEmpty() && mediaCryptoRequiresSecureDecoder) {
|
||||||
// The drm session indicates that a secure decoder is required, but the device does not
|
// The drm session indicates that a secure decoder is required, but the device does not
|
||||||
// have one. Assuming that supportsFormat indicated support for the media being played, we
|
// have one. Assuming that supportsFormat indicated support for the media being played, we
|
||||||
// know that it does not require a secure output path. Most CDM implementations allow
|
// know that it does not require a secure output path. Most CDM implementations allow
|
||||||
|
Loading…
x
Reference in New Issue
Block a user