TrackEncryptionBox.java 源代码
package com.mbridge.msdk.playercommon.exoplayer2.extractor.mp4;
import android.util.Log;
import com.mbridge.msdk.playercommon.exoplayer2.C;
import com.mbridge.msdk.playercommon.exoplayer2.extractor.TrackOutput;
import com.mbridge.msdk.playercommon.exoplayer2.util.Assertions;
public final class TrackEncryptionBox {
private static final String TAG = "TrackEncryptionBox";
public final TrackOutput.CryptoData cryptoData;
public final byte[] defaultInitializationVector;
public final int initializationVectorSize;
public final boolean isEncrypted;
public final String schemeType;
public TrackEncryptionBox(boolean z6, String str, int i6, byte[] bArr, int i7, int i8, byte[] bArr2) {
boolean z7;
if (i6 == 0) {
z7 = true;
} else {
z7 = false;
}
Assertions.checkArgument((bArr2 == null) ^ z7);
this.isEncrypted = z6;
this.schemeType = str;
this.initializationVectorSize = i6;
this.defaultInitializationVector = bArr2;
this.cryptoData = new TrackOutput.CryptoData(schemeToCryptoMode(str), bArr, i7, i8);
}
private static int schemeToCryptoMode(String str) {
if (str == null) {
return 1;
}
char c6 = 65535;
switch (str.hashCode()) {
case 3046605:
if (str.equals(C.CENC_TYPE_cbc1)) {
c6 = 0;
break;
}
break;
case 3046671:
if (str.equals(C.CENC_TYPE_cbcs)) {
c6 = 1;
break;
}
break;
case 3049879:
if (str.equals(C.CENC_TYPE_cenc)) {
c6 = 2;
break;
}
break;
case 3049895:
if (str.equals(C.CENC_TYPE_cens)) {
c6 = 3;
break;
}
break;
}
switch (c6) {
case 0:
case 1:
return 2;
default:
Log.w(TAG, "Unsupported protection scheme type '" + str + "'. Assuming AES-CTR crypto mode.");
case 2:
case 3:
return 1;
}
}
}