mirror of
https://github.com/androidx/media.git
synced 2025-05-10 00:59:51 +08:00
Add pattern information to ExoPlayer's CryptoInfo
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=152708351
This commit is contained in:
parent
0aee235e0a
commit
2a4df60b01
@ -49,11 +49,21 @@ public final class CryptoInfo {
|
|||||||
* @see android.media.MediaCodec.CryptoInfo#numSubSamples
|
* @see android.media.MediaCodec.CryptoInfo#numSubSamples
|
||||||
*/
|
*/
|
||||||
public int numSubSamples;
|
public int numSubSamples;
|
||||||
|
/**
|
||||||
|
* @see android.media.MediaCodec.CryptoInfo.Pattern
|
||||||
|
*/
|
||||||
|
public int patternBlocksToEncrypt;
|
||||||
|
/**
|
||||||
|
* @see android.media.MediaCodec.CryptoInfo.Pattern
|
||||||
|
*/
|
||||||
|
public int patternBlocksToSkip;
|
||||||
|
|
||||||
private final android.media.MediaCodec.CryptoInfo frameworkCryptoInfo;
|
private final android.media.MediaCodec.CryptoInfo frameworkCryptoInfo;
|
||||||
|
private final PatternHolderV24 patternHolder;
|
||||||
|
|
||||||
public CryptoInfo() {
|
public CryptoInfo() {
|
||||||
frameworkCryptoInfo = Util.SDK_INT >= 16 ? newFrameworkCryptoInfoV16() : null;
|
frameworkCryptoInfo = Util.SDK_INT >= 16 ? newFrameworkCryptoInfoV16() : null;
|
||||||
|
patternHolder = Util.SDK_INT >= 24 ? new PatternHolderV24(frameworkCryptoInfo) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,11 +77,21 @@ public final class CryptoInfo {
|
|||||||
this.key = key;
|
this.key = key;
|
||||||
this.iv = iv;
|
this.iv = iv;
|
||||||
this.mode = mode;
|
this.mode = mode;
|
||||||
|
patternBlocksToEncrypt = 0;
|
||||||
|
patternBlocksToSkip = 0;
|
||||||
if (Util.SDK_INT >= 16) {
|
if (Util.SDK_INT >= 16) {
|
||||||
updateFrameworkCryptoInfoV16();
|
updateFrameworkCryptoInfoV16();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPattern(int patternBlocksToEncrypt, int patternBlocksToSkip) {
|
||||||
|
this.patternBlocksToEncrypt = patternBlocksToEncrypt;
|
||||||
|
this.patternBlocksToSkip = patternBlocksToSkip;
|
||||||
|
if (Util.SDK_INT >= 24) {
|
||||||
|
patternHolder.set(patternBlocksToEncrypt, patternBlocksToSkip);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an equivalent {@link android.media.MediaCodec.CryptoInfo} instance.
|
* Returns an equivalent {@link android.media.MediaCodec.CryptoInfo} instance.
|
||||||
* <p>
|
* <p>
|
||||||
@ -93,8 +113,35 @@ public final class CryptoInfo {
|
|||||||
|
|
||||||
@TargetApi(16)
|
@TargetApi(16)
|
||||||
private void updateFrameworkCryptoInfoV16() {
|
private void updateFrameworkCryptoInfoV16() {
|
||||||
frameworkCryptoInfo.set(numSubSamples, numBytesOfClearData, numBytesOfEncryptedData, key, iv,
|
// Update fields directly because the framework's CryptoInfo.set performs an unnecessary object
|
||||||
mode);
|
// allocation on Android N.
|
||||||
|
frameworkCryptoInfo.numSubSamples = numSubSamples;
|
||||||
|
frameworkCryptoInfo.numBytesOfClearData = numBytesOfClearData;
|
||||||
|
frameworkCryptoInfo.numBytesOfEncryptedData = numBytesOfEncryptedData;
|
||||||
|
frameworkCryptoInfo.key = key;
|
||||||
|
frameworkCryptoInfo.iv = iv;
|
||||||
|
frameworkCryptoInfo.mode = mode;
|
||||||
|
if (Util.SDK_INT >= 24) {
|
||||||
|
patternHolder.set(patternBlocksToEncrypt, patternBlocksToSkip);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@TargetApi(24)
|
||||||
|
private static final class PatternHolderV24 {
|
||||||
|
|
||||||
|
private final android.media.MediaCodec.CryptoInfo frameworkCryptoInfo;
|
||||||
|
private final android.media.MediaCodec.CryptoInfo.Pattern pattern;
|
||||||
|
|
||||||
|
private PatternHolderV24(android.media.MediaCodec.CryptoInfo frameworkCryptoInfo) {
|
||||||
|
this.frameworkCryptoInfo = frameworkCryptoInfo;
|
||||||
|
pattern = new android.media.MediaCodec.CryptoInfo.Pattern(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void set(int blocksToEncrypt, int blocksToSkip) {
|
||||||
|
pattern.set(blocksToEncrypt, blocksToSkip);
|
||||||
|
frameworkCryptoInfo.setPattern(pattern);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user