mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
75 lines
3.1 KiB
Java
75 lines
3.1 KiB
Java
package com.google.android.exoplayer2.video;
|
|
|
|
import com.google.android.exoplayer2.ParserException;
|
|
import com.google.android.exoplayer2.util.CodecSpecificDataUtil;
|
|
import com.google.android.exoplayer2.util.NalUnitUtil;
|
|
import com.google.android.exoplayer2.util.ParsableByteArray;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class AvcConfig {
|
|
public final String codecs;
|
|
public final int height;
|
|
public final List<byte[]> initializationData;
|
|
public final int nalUnitLengthFieldLength;
|
|
public final float pixelWidthHeightRatio;
|
|
public final int width;
|
|
|
|
public static AvcConfig parse(ParsableByteArray parsableByteArray) throws ParserException {
|
|
int i;
|
|
int i2;
|
|
float f;
|
|
String str;
|
|
try {
|
|
parsableByteArray.skipBytes(4);
|
|
int readUnsignedByte = (parsableByteArray.readUnsignedByte() & 3) + 1;
|
|
if (readUnsignedByte == 3) {
|
|
throw new IllegalStateException();
|
|
}
|
|
ArrayList arrayList = new ArrayList();
|
|
int readUnsignedByte2 = parsableByteArray.readUnsignedByte() & 31;
|
|
for (int i3 = 0; i3 < readUnsignedByte2; i3++) {
|
|
arrayList.add(buildNalUnitForChild(parsableByteArray));
|
|
}
|
|
int readUnsignedByte3 = parsableByteArray.readUnsignedByte();
|
|
for (int i4 = 0; i4 < readUnsignedByte3; i4++) {
|
|
arrayList.add(buildNalUnitForChild(parsableByteArray));
|
|
}
|
|
if (readUnsignedByte2 > 0) {
|
|
NalUnitUtil.SpsData parseSpsNalUnit = NalUnitUtil.parseSpsNalUnit((byte[]) arrayList.get(0), readUnsignedByte, ((byte[]) arrayList.get(0)).length);
|
|
int i5 = parseSpsNalUnit.width;
|
|
int i6 = parseSpsNalUnit.height;
|
|
float f2 = parseSpsNalUnit.pixelWidthHeightRatio;
|
|
str = CodecSpecificDataUtil.buildAvcCodecString(parseSpsNalUnit.profileIdc, parseSpsNalUnit.constraintsFlagsAndReservedZero2Bits, parseSpsNalUnit.levelIdc);
|
|
i = i5;
|
|
i2 = i6;
|
|
f = f2;
|
|
} else {
|
|
i = -1;
|
|
i2 = -1;
|
|
f = 1.0f;
|
|
str = null;
|
|
}
|
|
return new AvcConfig(arrayList, readUnsignedByte, i, i2, f, str);
|
|
} catch (ArrayIndexOutOfBoundsException e) {
|
|
throw ParserException.createForMalformedContainer("Error parsing AVC config", e);
|
|
}
|
|
}
|
|
|
|
private AvcConfig(List<byte[]> list, int i, int i2, int i3, float f, String str) {
|
|
this.initializationData = list;
|
|
this.nalUnitLengthFieldLength = i;
|
|
this.width = i2;
|
|
this.height = i3;
|
|
this.pixelWidthHeightRatio = f;
|
|
this.codecs = str;
|
|
}
|
|
|
|
private static byte[] buildNalUnitForChild(ParsableByteArray parsableByteArray) {
|
|
int readUnsignedShort = parsableByteArray.readUnsignedShort();
|
|
int position = parsableByteArray.getPosition();
|
|
parsableByteArray.skipBytes(readUnsignedShort);
|
|
return CodecSpecificDataUtil.buildNalUnit(parsableByteArray.getData(), position, readUnsignedShort);
|
|
}
|
|
}
|