CrackMe.apk
Download file
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;
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 {
String str;
float f;
int i;
try {
parsableByteArray.skipBytes(4);
int readUnsignedByte = (parsableByteArray.readUnsignedByte() & 3) + 1;
if (readUnsignedByte != 3) {
ArrayList arrayList = new ArrayList();
int readUnsignedByte2 = parsableByteArray.readUnsignedByte() & 31;
for (int i2 = 0; i2 < readUnsignedByte2; i2++) {
arrayList.add(buildNalUnitForChild(parsableByteArray));
}
int readUnsignedByte3 = parsableByteArray.readUnsignedByte();
for (int i3 = 0; i3 < readUnsignedByte3; i3++) {
arrayList.add(buildNalUnitForChild(parsableByteArray));
}
int i4 = -1;
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);
i4 = i5;
i = i6;
f = f2;
} else {
str = null;
i = -1;
f = 1.0f;
}
return new AvcConfig(arrayList, readUnsignedByte, i4, i, f, str);
}
throw new IllegalStateException();
} 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);
}
}
Download file