CrackMe.apk
Download file
package com.google.android.exoplayer2.decoder;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.decoder.DecoderOutputBuffer;
import java.nio.ByteBuffer;
public class VideoDecoderOutputBuffer extends DecoderOutputBuffer {
public static final int COLORSPACE_BT2020 = 3;
public static final int COLORSPACE_BT601 = 1;
public static final int COLORSPACE_BT709 = 2;
public static final int COLORSPACE_UNKNOWN = 0;
public int colorspace;
public ByteBuffer data;
public int decoderPrivate;
public Format format;
public int height;
public int mode;
private final DecoderOutputBuffer.Owner<VideoDecoderOutputBuffer> owner;
public ByteBuffer supplementalData;
public int width;
public ByteBuffer[] yuvPlanes;
public int[] yuvStrides;
public VideoDecoderOutputBuffer(DecoderOutputBuffer.Owner<VideoDecoderOutputBuffer> owner2) {
this.owner = owner2;
}
public void release() {
this.owner.releaseOutputBuffer(this);
}
public void init(long j, int i, ByteBuffer byteBuffer) {
this.timeUs = j;
this.mode = i;
if (byteBuffer == null || !byteBuffer.hasRemaining()) {
this.supplementalData = null;
return;
}
addFlag(268435456);
int limit = byteBuffer.limit();
ByteBuffer byteBuffer2 = this.supplementalData;
if (byteBuffer2 == null || byteBuffer2.capacity() < limit) {
this.supplementalData = ByteBuffer.allocate(limit);
} else {
this.supplementalData.clear();
}
this.supplementalData.put(byteBuffer);
this.supplementalData.flip();
byteBuffer.position(0);
}
public boolean initForYuvFrame(int i, int i2, int i3, int i4, int i5) {
this.width = i;
this.height = i2;
this.colorspace = i5;
int i6 = (int) ((((long) i2) + 1) / 2);
if (isSafeToMultiply(i3, i2) && isSafeToMultiply(i4, i6)) {
int i7 = i2 * i3;
int i8 = i6 * i4;
int i9 = (i8 * 2) + i7;
if (isSafeToMultiply(i8, 2) && i9 >= i7) {
ByteBuffer byteBuffer = this.data;
if (byteBuffer == null || byteBuffer.capacity() < i9) {
this.data = ByteBuffer.allocateDirect(i9);
} else {
this.data.position(0);
this.data.limit(i9);
}
if (this.yuvPlanes == null) {
this.yuvPlanes = new ByteBuffer[3];
}
ByteBuffer byteBuffer2 = this.data;
ByteBuffer[] byteBufferArr = this.yuvPlanes;
byteBufferArr[0] = byteBuffer2.slice();
byteBufferArr[0].limit(i7);
byteBuffer2.position(i7);
byteBufferArr[1] = byteBuffer2.slice();
byteBufferArr[1].limit(i8);
byteBuffer2.position(i7 + i8);
byteBufferArr[2] = byteBuffer2.slice();
byteBufferArr[2].limit(i8);
if (this.yuvStrides == null) {
this.yuvStrides = new int[3];
}
int[] iArr = this.yuvStrides;
iArr[0] = i3;
iArr[1] = i4;
iArr[2] = i4;
return true;
}
}
return false;
}
public void initForPrivateFrame(int i, int i2) {
this.width = i;
this.height = i2;
}
private static boolean isSafeToMultiply(int i, int i2) {
return i >= 0 && i2 >= 0 && (i2 <= 0 || i < Integer.MAX_VALUE / i2);
}
}
Download file