mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-27 01:22:33 -06:00
515 lines
21 KiB
Java
515 lines
21 KiB
Java
package com.google.android.exoplayer2.util;
|
|
|
|
import com.google.common.base.Ascii;
|
|
import java.nio.ByteBuffer;
|
|
import java.util.Arrays;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class NalUnitUtil {
|
|
public static final int EXTENDED_SAR = 255;
|
|
private static final int H264_NAL_UNIT_TYPE_SEI = 6;
|
|
private static final int H264_NAL_UNIT_TYPE_SPS = 7;
|
|
private static final int H265_NAL_UNIT_TYPE_PREFIX_SEI = 39;
|
|
public static final int NAL_UNIT_TYPE_AUD = 9;
|
|
public static final int NAL_UNIT_TYPE_IDR = 5;
|
|
public static final int NAL_UNIT_TYPE_NON_IDR = 1;
|
|
public static final int NAL_UNIT_TYPE_PARTITION_A = 2;
|
|
public static final int NAL_UNIT_TYPE_PPS = 8;
|
|
public static final int NAL_UNIT_TYPE_SEI = 6;
|
|
public static final int NAL_UNIT_TYPE_SPS = 7;
|
|
private static final String TAG = "NalUnitUtil";
|
|
public static final byte[] NAL_START_CODE = {0, 0, 0, 1};
|
|
public static final float[] ASPECT_RATIO_IDC_VALUES = {1.0f, 1.0f, 1.0909091f, 0.90909094f, 1.4545455f, 1.2121212f, 2.1818182f, 1.8181819f, 2.909091f, 2.4242425f, 1.6363636f, 1.3636364f, 1.939394f, 1.6161616f, 1.3333334f, 1.5f, 2.0f};
|
|
private static final Object scratchEscapePositionsLock = new Object();
|
|
private static int[] scratchEscapePositions = new int[10];
|
|
|
|
/* loaded from: classes2.dex */
|
|
public static final class SpsData {
|
|
public final int constraintsFlagsAndReservedZero2Bits;
|
|
public final boolean deltaPicOrderAlwaysZeroFlag;
|
|
public final boolean frameMbsOnlyFlag;
|
|
public final int frameNumLength;
|
|
public final int height;
|
|
public final int levelIdc;
|
|
public final int maxNumRefFrames;
|
|
public final int picOrderCntLsbLength;
|
|
public final int picOrderCountType;
|
|
public final float pixelWidthHeightRatio;
|
|
public final int profileIdc;
|
|
public final boolean separateColorPlaneFlag;
|
|
public final int seqParameterSetId;
|
|
public final int width;
|
|
|
|
public SpsData(int i, int i2, int i3, int i4, int i5, int i6, int i7, float f, boolean z, boolean z2, int i8, int i9, int i10, boolean z3) {
|
|
this.profileIdc = i;
|
|
this.constraintsFlagsAndReservedZero2Bits = i2;
|
|
this.levelIdc = i3;
|
|
this.seqParameterSetId = i4;
|
|
this.maxNumRefFrames = i5;
|
|
this.width = i6;
|
|
this.height = i7;
|
|
this.pixelWidthHeightRatio = f;
|
|
this.separateColorPlaneFlag = z;
|
|
this.frameMbsOnlyFlag = z2;
|
|
this.frameNumLength = i8;
|
|
this.picOrderCountType = i9;
|
|
this.picOrderCntLsbLength = i10;
|
|
this.deltaPicOrderAlwaysZeroFlag = z3;
|
|
}
|
|
}
|
|
|
|
/* loaded from: classes2.dex */
|
|
public static final class H265SpsData {
|
|
public final int colorRange;
|
|
public final int colorSpace;
|
|
public final int colorTransfer;
|
|
public final int[] constraintBytes;
|
|
public final int generalLevelIdc;
|
|
public final int generalProfileCompatibilityFlags;
|
|
public final int generalProfileIdc;
|
|
public final int generalProfileSpace;
|
|
public final boolean generalTierFlag;
|
|
public final int height;
|
|
public final float pixelWidthHeightRatio;
|
|
public final int seqParameterSetId;
|
|
public final int width;
|
|
|
|
public H265SpsData(int i, boolean z, int i2, int i3, int[] iArr, int i4, int i5, int i6, int i7, float f, int i8, int i9, int i10) {
|
|
this.generalProfileSpace = i;
|
|
this.generalTierFlag = z;
|
|
this.generalProfileIdc = i2;
|
|
this.generalProfileCompatibilityFlags = i3;
|
|
this.constraintBytes = iArr;
|
|
this.generalLevelIdc = i4;
|
|
this.seqParameterSetId = i5;
|
|
this.width = i6;
|
|
this.height = i7;
|
|
this.pixelWidthHeightRatio = f;
|
|
this.colorSpace = i8;
|
|
this.colorRange = i9;
|
|
this.colorTransfer = i10;
|
|
}
|
|
}
|
|
|
|
/* loaded from: classes2.dex */
|
|
public static final class PpsData {
|
|
public final boolean bottomFieldPicOrderInFramePresentFlag;
|
|
public final int picParameterSetId;
|
|
public final int seqParameterSetId;
|
|
|
|
public PpsData(int i, int i2, boolean z) {
|
|
this.picParameterSetId = i;
|
|
this.seqParameterSetId = i2;
|
|
this.bottomFieldPicOrderInFramePresentFlag = z;
|
|
}
|
|
}
|
|
|
|
public static int unescapeStream(byte[] bArr, int i) {
|
|
int i2;
|
|
synchronized (scratchEscapePositionsLock) {
|
|
int i3 = 0;
|
|
int i4 = 0;
|
|
while (i3 < i) {
|
|
try {
|
|
i3 = findNextUnescapeIndex(bArr, i3, i);
|
|
if (i3 < i) {
|
|
int[] iArr = scratchEscapePositions;
|
|
if (iArr.length <= i4) {
|
|
scratchEscapePositions = Arrays.copyOf(iArr, iArr.length * 2);
|
|
}
|
|
scratchEscapePositions[i4] = i3;
|
|
i3 += 3;
|
|
i4++;
|
|
}
|
|
} catch (Throwable th) {
|
|
throw th;
|
|
}
|
|
}
|
|
i2 = i - i4;
|
|
int i5 = 0;
|
|
int i6 = 0;
|
|
for (int i7 = 0; i7 < i4; i7++) {
|
|
int i8 = scratchEscapePositions[i7] - i6;
|
|
System.arraycopy(bArr, i6, bArr, i5, i8);
|
|
int i9 = i5 + i8;
|
|
int i10 = i9 + 1;
|
|
bArr[i9] = 0;
|
|
i5 = i9 + 2;
|
|
bArr[i10] = 0;
|
|
i6 += i8 + 3;
|
|
}
|
|
System.arraycopy(bArr, i6, bArr, i5, i2 - i5);
|
|
}
|
|
return i2;
|
|
}
|
|
|
|
public static void discardToSps(ByteBuffer byteBuffer) {
|
|
int position = byteBuffer.position();
|
|
int i = 0;
|
|
int i2 = 0;
|
|
while (true) {
|
|
int i3 = i + 1;
|
|
if (i3 < position) {
|
|
int i4 = byteBuffer.get(i) & 255;
|
|
if (i2 == 3) {
|
|
if (i4 == 1 && (byteBuffer.get(i3) & Ascii.US) == 7) {
|
|
ByteBuffer duplicate = byteBuffer.duplicate();
|
|
duplicate.position(i - 3);
|
|
duplicate.limit(position);
|
|
byteBuffer.position(0);
|
|
byteBuffer.put(duplicate);
|
|
return;
|
|
}
|
|
} else if (i4 == 0) {
|
|
i2++;
|
|
}
|
|
if (i4 != 0) {
|
|
i2 = 0;
|
|
}
|
|
i = i3;
|
|
} else {
|
|
byteBuffer.clear();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static boolean isNalUnitSei(String str, byte b) {
|
|
if ("video/avc".equals(str) && (b & Ascii.US) == 6) {
|
|
return true;
|
|
}
|
|
return "video/hevc".equals(str) && ((b & 126) >> 1) == 39;
|
|
}
|
|
|
|
public static int getNalUnitType(byte[] bArr, int i) {
|
|
return bArr[i + 3] & Ascii.US;
|
|
}
|
|
|
|
public static int getH265NalUnitType(byte[] bArr, int i) {
|
|
return (bArr[i + 3] & 126) >> 1;
|
|
}
|
|
|
|
public static SpsData parseSpsNalUnit(byte[] bArr, int i, int i2) {
|
|
return parseSpsNalUnitPayload(bArr, i + 1, i2);
|
|
}
|
|
|
|
public static SpsData parseSpsNalUnitPayload(byte[] bArr, int i, int i2) {
|
|
int readUnsignedExpGolombCodedInt;
|
|
boolean readBit;
|
|
int i3;
|
|
boolean z;
|
|
boolean z2;
|
|
int i4;
|
|
float f;
|
|
int i5;
|
|
ParsableNalUnitBitArray parsableNalUnitBitArray = new ParsableNalUnitBitArray(bArr, i, i2);
|
|
int readBits = parsableNalUnitBitArray.readBits(8);
|
|
int readBits2 = parsableNalUnitBitArray.readBits(8);
|
|
int readBits3 = parsableNalUnitBitArray.readBits(8);
|
|
int readUnsignedExpGolombCodedInt2 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
if (readBits == 100 || readBits == 110 || readBits == 122 || readBits == 244 || readBits == 44 || readBits == 83 || readBits == 86 || readBits == 118 || readBits == 128 || readBits == 138) {
|
|
readUnsignedExpGolombCodedInt = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
readBit = readUnsignedExpGolombCodedInt == 3 ? parsableNalUnitBitArray.readBit() : false;
|
|
parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
parsableNalUnitBitArray.skipBit();
|
|
if (parsableNalUnitBitArray.readBit()) {
|
|
int i6 = readUnsignedExpGolombCodedInt != 3 ? 8 : 12;
|
|
int i7 = 0;
|
|
while (i7 < i6) {
|
|
if (parsableNalUnitBitArray.readBit()) {
|
|
skipScalingList(parsableNalUnitBitArray, i7 < 6 ? 16 : 64);
|
|
}
|
|
i7++;
|
|
}
|
|
}
|
|
} else {
|
|
readUnsignedExpGolombCodedInt = 1;
|
|
readBit = false;
|
|
}
|
|
int readUnsignedExpGolombCodedInt3 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt() + 4;
|
|
int readUnsignedExpGolombCodedInt4 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
if (readUnsignedExpGolombCodedInt4 == 0) {
|
|
i3 = readUnsignedExpGolombCodedInt;
|
|
z = readBit;
|
|
i4 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt() + 4;
|
|
z2 = false;
|
|
} else {
|
|
if (readUnsignedExpGolombCodedInt4 == 1) {
|
|
boolean readBit2 = parsableNalUnitBitArray.readBit();
|
|
parsableNalUnitBitArray.readSignedExpGolombCodedInt();
|
|
parsableNalUnitBitArray.readSignedExpGolombCodedInt();
|
|
z = readBit;
|
|
long readUnsignedExpGolombCodedInt5 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
i3 = readUnsignedExpGolombCodedInt;
|
|
for (int i8 = 0; i8 < readUnsignedExpGolombCodedInt5; i8++) {
|
|
parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
}
|
|
z2 = readBit2;
|
|
} else {
|
|
i3 = readUnsignedExpGolombCodedInt;
|
|
z = readBit;
|
|
z2 = false;
|
|
}
|
|
i4 = 0;
|
|
}
|
|
int readUnsignedExpGolombCodedInt6 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
parsableNalUnitBitArray.skipBit();
|
|
int readUnsignedExpGolombCodedInt7 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt() + 1;
|
|
int readUnsignedExpGolombCodedInt8 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt() + 1;
|
|
boolean readBit3 = parsableNalUnitBitArray.readBit();
|
|
int i9 = (2 - (readBit3 ? 1 : 0)) * readUnsignedExpGolombCodedInt8;
|
|
if (!readBit3) {
|
|
parsableNalUnitBitArray.skipBit();
|
|
}
|
|
parsableNalUnitBitArray.skipBit();
|
|
int i10 = readUnsignedExpGolombCodedInt7 * 16;
|
|
int i11 = i9 * 16;
|
|
if (parsableNalUnitBitArray.readBit()) {
|
|
int readUnsignedExpGolombCodedInt9 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
int readUnsignedExpGolombCodedInt10 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
int readUnsignedExpGolombCodedInt11 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
int readUnsignedExpGolombCodedInt12 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
if (i3 == 0) {
|
|
i5 = 2 - (readBit3 ? 1 : 0);
|
|
} else {
|
|
int i12 = i3;
|
|
r9 = i12 == 3 ? 1 : 2;
|
|
i5 = (2 - (readBit3 ? 1 : 0)) * (i12 == 1 ? 2 : 1);
|
|
}
|
|
i10 -= (readUnsignedExpGolombCodedInt9 + readUnsignedExpGolombCodedInt10) * r9;
|
|
i11 -= (readUnsignedExpGolombCodedInt11 + readUnsignedExpGolombCodedInt12) * i5;
|
|
}
|
|
int i13 = i10;
|
|
int i14 = i11;
|
|
float f2 = 1.0f;
|
|
if (parsableNalUnitBitArray.readBit() && parsableNalUnitBitArray.readBit()) {
|
|
int readBits4 = parsableNalUnitBitArray.readBits(8);
|
|
if (readBits4 == 255) {
|
|
int readBits5 = parsableNalUnitBitArray.readBits(16);
|
|
int readBits6 = parsableNalUnitBitArray.readBits(16);
|
|
if (readBits5 != 0 && readBits6 != 0) {
|
|
f2 = readBits5 / readBits6;
|
|
}
|
|
} else {
|
|
float[] fArr = ASPECT_RATIO_IDC_VALUES;
|
|
if (readBits4 < fArr.length) {
|
|
f = fArr[readBits4];
|
|
return new SpsData(readBits, readBits2, readBits3, readUnsignedExpGolombCodedInt2, readUnsignedExpGolombCodedInt6, i13, i14, f, z, readBit3, readUnsignedExpGolombCodedInt3, readUnsignedExpGolombCodedInt4, i4, z2);
|
|
}
|
|
Log.w(TAG, "Unexpected aspect_ratio_idc value: " + readBits4);
|
|
}
|
|
}
|
|
f = f2;
|
|
return new SpsData(readBits, readBits2, readBits3, readUnsignedExpGolombCodedInt2, readUnsignedExpGolombCodedInt6, i13, i14, f, z, readBit3, readUnsignedExpGolombCodedInt3, readUnsignedExpGolombCodedInt4, i4, z2);
|
|
}
|
|
|
|
public static H265SpsData parseH265SpsNalUnit(byte[] bArr, int i, int i2) {
|
|
return parseH265SpsNalUnitPayload(bArr, i + 2, i2);
|
|
}
|
|
|
|
/* JADX WARN: Removed duplicated region for block: B:94:0x01ac */
|
|
/* JADX WARN: Removed duplicated region for block: B:97:0x01bb */
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
public static com.google.android.exoplayer2.util.NalUnitUtil.H265SpsData parseH265SpsNalUnitPayload(byte[] r23, int r24, int r25) {
|
|
/*
|
|
Method dump skipped, instructions count: 471
|
|
To view this dump add '--comments-level debug' option
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: com.google.android.exoplayer2.util.NalUnitUtil.parseH265SpsNalUnitPayload(byte[], int, int):com.google.android.exoplayer2.util.NalUnitUtil$H265SpsData");
|
|
}
|
|
|
|
public static PpsData parsePpsNalUnit(byte[] bArr, int i, int i2) {
|
|
return parsePpsNalUnitPayload(bArr, i + 1, i2);
|
|
}
|
|
|
|
public static PpsData parsePpsNalUnitPayload(byte[] bArr, int i, int i2) {
|
|
ParsableNalUnitBitArray parsableNalUnitBitArray = new ParsableNalUnitBitArray(bArr, i, i2);
|
|
int readUnsignedExpGolombCodedInt = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
int readUnsignedExpGolombCodedInt2 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
parsableNalUnitBitArray.skipBit();
|
|
return new PpsData(readUnsignedExpGolombCodedInt, readUnsignedExpGolombCodedInt2, parsableNalUnitBitArray.readBit());
|
|
}
|
|
|
|
public static int findNalUnit(byte[] bArr, int i, int i2, boolean[] zArr) {
|
|
int i3 = i2 - i;
|
|
Assertions.checkState(i3 >= 0);
|
|
if (i3 == 0) {
|
|
return i2;
|
|
}
|
|
if (zArr[0]) {
|
|
clearPrefixFlags(zArr);
|
|
return i - 3;
|
|
}
|
|
if (i3 > 1 && zArr[1] && bArr[i] == 1) {
|
|
clearPrefixFlags(zArr);
|
|
return i - 2;
|
|
}
|
|
if (i3 > 2 && zArr[2] && bArr[i] == 0 && bArr[i + 1] == 1) {
|
|
clearPrefixFlags(zArr);
|
|
return i - 1;
|
|
}
|
|
int i4 = i2 - 1;
|
|
int i5 = i + 2;
|
|
while (i5 < i4) {
|
|
byte b = bArr[i5];
|
|
if ((b & 254) == 0) {
|
|
int i6 = i5 - 2;
|
|
if (bArr[i6] == 0 && bArr[i5 - 1] == 0 && b == 1) {
|
|
clearPrefixFlags(zArr);
|
|
return i6;
|
|
}
|
|
i5 -= 2;
|
|
}
|
|
i5 += 3;
|
|
}
|
|
zArr[0] = i3 <= 2 ? !(i3 != 2 ? !(zArr[1] && bArr[i4] == 1) : !(zArr[2] && bArr[i2 + (-2)] == 0 && bArr[i4] == 1)) : bArr[i2 + (-3)] == 0 && bArr[i2 + (-2)] == 0 && bArr[i4] == 1;
|
|
zArr[1] = i3 <= 1 ? zArr[2] && bArr[i4] == 0 : bArr[i2 + (-2)] == 0 && bArr[i4] == 0;
|
|
zArr[2] = bArr[i4] == 0;
|
|
return i2;
|
|
}
|
|
|
|
public static void clearPrefixFlags(boolean[] zArr) {
|
|
zArr[0] = false;
|
|
zArr[1] = false;
|
|
zArr[2] = false;
|
|
}
|
|
|
|
private static int findNextUnescapeIndex(byte[] bArr, int i, int i2) {
|
|
while (i < i2 - 2) {
|
|
if (bArr[i] == 0 && bArr[i + 1] == 0 && bArr[i + 2] == 3) {
|
|
return i;
|
|
}
|
|
i++;
|
|
}
|
|
return i2;
|
|
}
|
|
|
|
private static void skipScalingList(ParsableNalUnitBitArray parsableNalUnitBitArray, int i) {
|
|
int i2 = 8;
|
|
int i3 = 8;
|
|
for (int i4 = 0; i4 < i; i4++) {
|
|
if (i2 != 0) {
|
|
i2 = ((parsableNalUnitBitArray.readSignedExpGolombCodedInt() + i3) + 256) % 256;
|
|
}
|
|
if (i2 != 0) {
|
|
i3 = i2;
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void skipH265ScalingList(ParsableNalUnitBitArray parsableNalUnitBitArray) {
|
|
for (int i = 0; i < 4; i++) {
|
|
int i2 = 0;
|
|
while (i2 < 6) {
|
|
int i3 = 1;
|
|
if (!parsableNalUnitBitArray.readBit()) {
|
|
parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
} else {
|
|
int min = Math.min(64, 1 << ((i << 1) + 4));
|
|
if (i > 1) {
|
|
parsableNalUnitBitArray.readSignedExpGolombCodedInt();
|
|
}
|
|
for (int i4 = 0; i4 < min; i4++) {
|
|
parsableNalUnitBitArray.readSignedExpGolombCodedInt();
|
|
}
|
|
}
|
|
if (i == 3) {
|
|
i3 = 3;
|
|
}
|
|
i2 += i3;
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void skipShortTermReferencePictureSets(ParsableNalUnitBitArray parsableNalUnitBitArray) {
|
|
int readUnsignedExpGolombCodedInt = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
int[] iArr = new int[0];
|
|
int[] iArr2 = new int[0];
|
|
int i = -1;
|
|
int i2 = -1;
|
|
for (int i3 = 0; i3 < readUnsignedExpGolombCodedInt; i3++) {
|
|
if (i3 != 0 && parsableNalUnitBitArray.readBit()) {
|
|
int i4 = i + i2;
|
|
int readUnsignedExpGolombCodedInt2 = (1 - ((parsableNalUnitBitArray.readBit() ? 1 : 0) * 2)) * (parsableNalUnitBitArray.readUnsignedExpGolombCodedInt() + 1);
|
|
int i5 = i4 + 1;
|
|
boolean[] zArr = new boolean[i5];
|
|
for (int i6 = 0; i6 <= i4; i6++) {
|
|
if (!parsableNalUnitBitArray.readBit()) {
|
|
zArr[i6] = parsableNalUnitBitArray.readBit();
|
|
} else {
|
|
zArr[i6] = true;
|
|
}
|
|
}
|
|
int[] iArr3 = new int[i5];
|
|
int[] iArr4 = new int[i5];
|
|
int i7 = 0;
|
|
for (int i8 = i2 - 1; i8 >= 0; i8--) {
|
|
int i9 = iArr2[i8] + readUnsignedExpGolombCodedInt2;
|
|
if (i9 < 0 && zArr[i + i8]) {
|
|
iArr3[i7] = i9;
|
|
i7++;
|
|
}
|
|
}
|
|
if (readUnsignedExpGolombCodedInt2 < 0 && zArr[i4]) {
|
|
iArr3[i7] = readUnsignedExpGolombCodedInt2;
|
|
i7++;
|
|
}
|
|
for (int i10 = 0; i10 < i; i10++) {
|
|
int i11 = iArr[i10] + readUnsignedExpGolombCodedInt2;
|
|
if (i11 < 0 && zArr[i10]) {
|
|
iArr3[i7] = i11;
|
|
i7++;
|
|
}
|
|
}
|
|
int[] copyOf = Arrays.copyOf(iArr3, i7);
|
|
int i12 = 0;
|
|
for (int i13 = i - 1; i13 >= 0; i13--) {
|
|
int i14 = iArr[i13] + readUnsignedExpGolombCodedInt2;
|
|
if (i14 > 0 && zArr[i13]) {
|
|
iArr4[i12] = i14;
|
|
i12++;
|
|
}
|
|
}
|
|
if (readUnsignedExpGolombCodedInt2 > 0 && zArr[i4]) {
|
|
iArr4[i12] = readUnsignedExpGolombCodedInt2;
|
|
i12++;
|
|
}
|
|
for (int i15 = 0; i15 < i2; i15++) {
|
|
int i16 = iArr2[i15] + readUnsignedExpGolombCodedInt2;
|
|
if (i16 > 0 && zArr[i + i15]) {
|
|
iArr4[i12] = i16;
|
|
i12++;
|
|
}
|
|
}
|
|
iArr2 = Arrays.copyOf(iArr4, i12);
|
|
iArr = copyOf;
|
|
i = i7;
|
|
i2 = i12;
|
|
} else {
|
|
int readUnsignedExpGolombCodedInt3 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
int readUnsignedExpGolombCodedInt4 = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt();
|
|
int[] iArr5 = new int[readUnsignedExpGolombCodedInt3];
|
|
for (int i17 = 0; i17 < readUnsignedExpGolombCodedInt3; i17++) {
|
|
iArr5[i17] = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt() + 1;
|
|
parsableNalUnitBitArray.skipBit();
|
|
}
|
|
int[] iArr6 = new int[readUnsignedExpGolombCodedInt4];
|
|
for (int i18 = 0; i18 < readUnsignedExpGolombCodedInt4; i18++) {
|
|
iArr6[i18] = parsableNalUnitBitArray.readUnsignedExpGolombCodedInt() + 1;
|
|
parsableNalUnitBitArray.skipBit();
|
|
}
|
|
i = readUnsignedExpGolombCodedInt3;
|
|
iArr = iArr5;
|
|
i2 = readUnsignedExpGolombCodedInt4;
|
|
iArr2 = iArr6;
|
|
}
|
|
}
|
|
}
|
|
|
|
private NalUnitUtil() {
|
|
}
|
|
}
|