package com.mbridge.msdk.playercommon.exoplayer2.audio; import com.mbridge.msdk.playercommon.exoplayer2.Format; import com.mbridge.msdk.playercommon.exoplayer2.drm.DrmInitData; import com.mbridge.msdk.playercommon.exoplayer2.extractor.ts.PsExtractor; import com.mbridge.msdk.playercommon.exoplayer2.util.MimeTypes; import com.mbridge.msdk.playercommon.exoplayer2.util.ParsableBitArray; import com.mbridge.msdk.playercommon.exoplayer2.util.ParsableByteArray; import com.vungle.ads.internal.protos.Sdk; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.nio.ByteBuffer; import org.apache.http.HttpStatus; /* loaded from: classes4.dex */ public final class Ac3Util { private static final int AC3_SYNCFRAME_AUDIO_SAMPLE_COUNT = 1536; private static final int AUDIO_SAMPLES_PER_AUDIO_BLOCK = 256; public static final int TRUEHD_RECHUNK_SAMPLE_COUNT = 16; public static final int TRUEHD_SYNCFRAME_PREFIX_LENGTH = 10; private static final int[] BLOCKS_PER_SYNCFRAME_BY_NUMBLKSCOD = {1, 2, 3, 6}; private static final int[] SAMPLE_RATE_BY_FSCOD = {48000, 44100, 32000}; private static final int[] SAMPLE_RATE_BY_FSCOD2 = {24000, 22050, 16000}; private static final int[] CHANNEL_COUNT_BY_ACMOD = {2, 1, 2, 3, 3, 4, 4, 5}; private static final int[] BITRATE_BY_HALF_FRMSIZECOD = {32, 40, 48, 56, 64, 80, 96, 112, 128, 160, PsExtractor.AUDIO_STREAM, 224, 256, Sdk.SDKError.Reason.WEBVIEW_ERROR_VALUE, 384, 448, 512, 576, 640}; private static final int[] SYNCFRAME_SIZE_WORDS_BY_HALF_FRMSIZECOD_44_1 = {69, 87, 104, 121, 139, 174, 208, 243, 278, 348, HttpStatus.SC_EXPECTATION_FAILED, 487, 557, 696, 835, 975, 1114, 1253, 1393}; private Ac3Util() { } public static int getAc3SyncframeAudioSampleCount() { return AC3_SYNCFRAME_AUDIO_SAMPLE_COUNT; } public static final class SyncFrameInfo { public static final int STREAM_TYPE_TYPE0 = 0; public static final int STREAM_TYPE_TYPE1 = 1; public static final int STREAM_TYPE_TYPE2 = 2; public static final int STREAM_TYPE_UNDEFINED = -1; public final int channelCount; public final int frameSize; public final String mimeType; public final int sampleCount; public final int sampleRate; public final int streamType; @Retention(RetentionPolicy.SOURCE) public @interface StreamType { } private SyncFrameInfo(String str, int i, int i2, int i3, int i4, int i5) { this.mimeType = str; this.streamType = i; this.channelCount = i2; this.sampleRate = i3; this.frameSize = i4; this.sampleCount = i5; } } public static Format parseAc3AnnexFFormat(ParsableByteArray parsableByteArray, String str, String str2, DrmInitData drmInitData) { int i = SAMPLE_RATE_BY_FSCOD[(parsableByteArray.readUnsignedByte() & PsExtractor.AUDIO_STREAM) >> 6]; int readUnsignedByte = parsableByteArray.readUnsignedByte(); int i2 = CHANNEL_COUNT_BY_ACMOD[(readUnsignedByte & 56) >> 3]; if ((readUnsignedByte & 4) != 0) { i2++; } return Format.createAudioSampleFormat(str, MimeTypes.AUDIO_AC3, null, -1, -1, i2, i, null, drmInitData, 0, str2); } public static Format parseEAc3AnnexFFormat(ParsableByteArray parsableByteArray, String str, String str2, DrmInitData drmInitData) { parsableByteArray.skipBytes(2); int i = SAMPLE_RATE_BY_FSCOD[(parsableByteArray.readUnsignedByte() & PsExtractor.AUDIO_STREAM) >> 6]; int readUnsignedByte = parsableByteArray.readUnsignedByte(); int i2 = CHANNEL_COUNT_BY_ACMOD[(readUnsignedByte & 14) >> 1]; if ((readUnsignedByte & 1) != 0) { i2++; } if (((parsableByteArray.readUnsignedByte() & 30) >> 1) > 0 && (2 & parsableByteArray.readUnsignedByte()) != 0) { i2 += 2; } return Format.createAudioSampleFormat(str, (parsableByteArray.bytesLeft() <= 0 || (parsableByteArray.readUnsignedByte() & 1) == 0) ? MimeTypes.AUDIO_E_AC3 : MimeTypes.AUDIO_E_AC3_JOC, null, -1, -1, i2, i, null, drmInitData, 0, str2); } public static SyncFrameInfo parseAc3SyncframeInfo(ParsableBitArray parsableBitArray) { int ac3SyncframeSize; int i; int i2; String str; int i3; int readBits; int i4; int i5; int position = parsableBitArray.getPosition(); parsableBitArray.skipBits(40); boolean z = parsableBitArray.readBits(5) == 16; parsableBitArray.setPosition(position); int i6 = -1; if (z) { parsableBitArray.skipBits(16); int readBits2 = parsableBitArray.readBits(2); if (readBits2 == 0) { i6 = 0; } else if (readBits2 == 1) { i6 = 1; } else if (readBits2 == 2) { i6 = 2; } parsableBitArray.skipBits(3); ac3SyncframeSize = (parsableBitArray.readBits(11) + 1) * 2; int readBits3 = parsableBitArray.readBits(2); if (readBits3 == 3) { i4 = 6; i = SAMPLE_RATE_BY_FSCOD2[parsableBitArray.readBits(2)]; readBits = 3; } else { readBits = parsableBitArray.readBits(2); i4 = BLOCKS_PER_SYNCFRAME_BY_NUMBLKSCOD[readBits]; i = SAMPLE_RATE_BY_FSCOD[readBits3]; } i3 = i4 * 256; int readBits4 = parsableBitArray.readBits(3); boolean readBit = parsableBitArray.readBit(); i2 = CHANNEL_COUNT_BY_ACMOD[readBits4] + (readBit ? 1 : 0); parsableBitArray.skipBits(10); if (parsableBitArray.readBit()) { parsableBitArray.skipBits(8); } if (readBits4 == 0) { parsableBitArray.skipBits(5); if (parsableBitArray.readBit()) { parsableBitArray.skipBits(8); } } if (i6 == 1 && parsableBitArray.readBit()) { parsableBitArray.skipBits(16); } if (parsableBitArray.readBit()) { if (readBits4 > 2) { parsableBitArray.skipBits(2); } if ((readBits4 & 1) != 0 && readBits4 > 2) { parsableBitArray.skipBits(6); } if ((readBits4 & 4) != 0) { parsableBitArray.skipBits(6); } if (readBit && parsableBitArray.readBit()) { parsableBitArray.skipBits(5); } if (i6 == 0) { if (parsableBitArray.readBit()) { parsableBitArray.skipBits(6); } if (readBits4 == 0 && parsableBitArray.readBit()) { parsableBitArray.skipBits(6); } if (parsableBitArray.readBit()) { parsableBitArray.skipBits(6); } int readBits5 = parsableBitArray.readBits(2); if (readBits5 == 1) { parsableBitArray.skipBits(5); } else if (readBits5 == 2) { parsableBitArray.skipBits(12); } else if (readBits5 == 3) { int readBits6 = parsableBitArray.readBits(5); if (parsableBitArray.readBit()) { parsableBitArray.skipBits(5); if (parsableBitArray.readBit()) { parsableBitArray.skipBits(4); } if (parsableBitArray.readBit()) { parsableBitArray.skipBits(4); } if (parsableBitArray.readBit()) { parsableBitArray.skipBits(4); } if (parsableBitArray.readBit()) { parsableBitArray.skipBits(4); } if (parsableBitArray.readBit()) { parsableBitArray.skipBits(4); } if (parsableBitArray.readBit()) { parsableBitArray.skipBits(4); } if (parsableBitArray.readBit()) { parsableBitArray.skipBits(4); } if (parsableBitArray.readBit()) { if (parsableBitArray.readBit()) { parsableBitArray.skipBits(4); } if (parsableBitArray.readBit()) { parsableBitArray.skipBits(4); } } } if (parsableBitArray.readBit()) { parsableBitArray.skipBits(5); if (parsableBitArray.readBit()) { parsableBitArray.skipBits(7); if (parsableBitArray.readBit()) { parsableBitArray.skipBits(8); } } } parsableBitArray.skipBits((readBits6 + 2) * 8); parsableBitArray.byteAlign(); } if (readBits4 < 2) { if (parsableBitArray.readBit()) { parsableBitArray.skipBits(14); } if (readBits4 == 0 && parsableBitArray.readBit()) { parsableBitArray.skipBits(14); } } if (parsableBitArray.readBit()) { if (readBits == 0) { parsableBitArray.skipBits(5); } else { for (int i7 = 0; i7 < i4; i7++) { if (parsableBitArray.readBit()) { parsableBitArray.skipBits(5); } } } } } } if (parsableBitArray.readBit()) { parsableBitArray.skipBits(5); if (readBits4 == 2) { parsableBitArray.skipBits(4); } if (readBits4 >= 6) { parsableBitArray.skipBits(2); } if (parsableBitArray.readBit()) { parsableBitArray.skipBits(8); } if (readBits4 == 0 && parsableBitArray.readBit()) { parsableBitArray.skipBits(8); } i5 = 3; if (readBits3 < 3) { parsableBitArray.skipBit(); } } else { i5 = 3; } if (i6 == 0 && readBits != i5) { parsableBitArray.skipBit(); } if (i6 == 2 && (readBits == i5 || parsableBitArray.readBit())) { parsableBitArray.skipBits(6); } str = (parsableBitArray.readBit() && parsableBitArray.readBits(6) == 1 && parsableBitArray.readBits(8) == 1) ? MimeTypes.AUDIO_E_AC3_JOC : MimeTypes.AUDIO_E_AC3; } else { parsableBitArray.skipBits(32); int readBits7 = parsableBitArray.readBits(2); ac3SyncframeSize = getAc3SyncframeSize(readBits7, parsableBitArray.readBits(6)); parsableBitArray.skipBits(8); int readBits8 = parsableBitArray.readBits(3); if ((readBits8 & 1) != 0 && readBits8 != 1) { parsableBitArray.skipBits(2); } if ((readBits8 & 4) != 0) { parsableBitArray.skipBits(2); } if (readBits8 == 2) { parsableBitArray.skipBits(2); } i = SAMPLE_RATE_BY_FSCOD[readBits7]; i2 = CHANNEL_COUNT_BY_ACMOD[readBits8] + (parsableBitArray.readBit() ? 1 : 0); str = MimeTypes.AUDIO_AC3; i3 = AC3_SYNCFRAME_AUDIO_SAMPLE_COUNT; } return new SyncFrameInfo(str, i6, i2, i, ac3SyncframeSize, i3); } public static int parseAc3SyncframeSize(byte[] bArr) { if (bArr.length < 5) { return -1; } byte b = bArr[4]; return getAc3SyncframeSize((b & 192) >> 6, b & 63); } public static int parseEAc3SyncframeAudioSampleCount(ByteBuffer byteBuffer) { return (((byteBuffer.get(byteBuffer.position() + 4) & 192) >> 6) != 3 ? BLOCKS_PER_SYNCFRAME_BY_NUMBLKSCOD[(byteBuffer.get(byteBuffer.position() + 4) & 48) >> 4] : 6) * 256; } public static int findTrueHdSyncframeOffset(ByteBuffer byteBuffer) { int position = byteBuffer.position(); int limit = byteBuffer.limit() - 10; for (int i = position; i <= limit; i++) { if ((byteBuffer.getInt(i + 4) & (-16777217)) == -1167101192) { return i - position; } } return -1; } public static int parseTrueHdSyncframeAudioSampleCount(byte[] bArr) { if (bArr[4] == -8 && bArr[5] == 114 && bArr[6] == 111) { byte b = bArr[7]; if ((b & 254) == 186) { return 40 << ((bArr[(b & 255) == 187 ? '\t' : '\b'] >> 4) & 7); } } return 0; } public static int parseTrueHdSyncframeAudioSampleCount(ByteBuffer byteBuffer, int i) { return 40 << ((byteBuffer.get((byteBuffer.position() + i) + ((byteBuffer.get((byteBuffer.position() + i) + 7) & 255) == 187 ? 9 : 8)) >> 4) & 7); } private static int getAc3SyncframeSize(int i, int i2) { int i3 = i2 / 2; if (i < 0) { return -1; } int[] iArr = SAMPLE_RATE_BY_FSCOD; if (i >= iArr.length || i2 < 0) { return -1; } int[] iArr2 = SYNCFRAME_SIZE_WORDS_BY_HALF_FRMSIZECOD_44_1; if (i3 >= iArr2.length) { return -1; } int i4 = iArr[i]; if (i4 == 44100) { return (iArr2[i3] + (i2 % 2)) * 2; } int i5 = BITRATE_BY_HALF_FRMSIZECOD[i3]; return i4 == 32000 ? i5 * 6 : i5 * 4; } }