CrackMe.apk
Download file
package com.google.android.exoplayer2.audio;
import com.google.android.exoplayer2.audio.AudioProcessor;
import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Util;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.ShortBuffer;
public final class SonicAudioProcessor implements AudioProcessor {
private static final float CLOSE_THRESHOLD = 1.0E-4f;
private static final int MIN_BYTES_FOR_DURATION_SCALING_CALCULATION = 1024;
public static final int SAMPLE_RATE_NO_CHANGE = -1;
private ByteBuffer buffer;
private AudioProcessor.AudioFormat inputAudioFormat = AudioProcessor.AudioFormat.NOT_SET;
private long inputBytes;
private boolean inputEnded;
private AudioProcessor.AudioFormat outputAudioFormat = AudioProcessor.AudioFormat.NOT_SET;
private ByteBuffer outputBuffer;
private long outputBytes;
private AudioProcessor.AudioFormat pendingInputAudioFormat = AudioProcessor.AudioFormat.NOT_SET;
private AudioProcessor.AudioFormat pendingOutputAudioFormat = AudioProcessor.AudioFormat.NOT_SET;
private int pendingOutputSampleRate;
private boolean pendingSonicRecreation;
private float pitch = 1.0f;
private ShortBuffer shortBuffer;
private Sonic sonic;
private float speed = 1.0f;
public SonicAudioProcessor() {
ByteBuffer byteBuffer = EMPTY_BUFFER;
this.buffer = byteBuffer;
this.shortBuffer = byteBuffer.asShortBuffer();
this.outputBuffer = EMPTY_BUFFER;
this.pendingOutputSampleRate = -1;
}
public void setSpeed(float f) {
if (this.speed != f) {
this.speed = f;
this.pendingSonicRecreation = true;
}
}
public void setPitch(float f) {
if (this.pitch != f) {
this.pitch = f;
this.pendingSonicRecreation = true;
}
}
public void setOutputSampleRateHz(int i) {
this.pendingOutputSampleRate = i;
}
public long getMediaDuration(long j) {
if (this.outputBytes < 1024) {
return (long) (((double) this.speed) * ((double) j));
}
long pendingInputBytes = this.inputBytes - ((long) ((Sonic) Assertions.checkNotNull(this.sonic)).getPendingInputBytes());
if (this.outputAudioFormat.sampleRate == this.inputAudioFormat.sampleRate) {
return Util.scaleLargeTimestamp(j, pendingInputBytes, this.outputBytes);
}
return Util.scaleLargeTimestamp(j, pendingInputBytes * ((long) this.outputAudioFormat.sampleRate), this.outputBytes * ((long) this.inputAudioFormat.sampleRate));
}
public AudioProcessor.AudioFormat configure(AudioProcessor.AudioFormat audioFormat) throws AudioProcessor.UnhandledAudioFormatException {
if (audioFormat.encoding == 2) {
int i = this.pendingOutputSampleRate;
if (i == -1) {
i = audioFormat.sampleRate;
}
this.pendingInputAudioFormat = audioFormat;
AudioProcessor.AudioFormat audioFormat2 = new AudioProcessor.AudioFormat(i, audioFormat.channelCount, 2);
this.pendingOutputAudioFormat = audioFormat2;
this.pendingSonicRecreation = true;
return audioFormat2;
}
throw new AudioProcessor.UnhandledAudioFormatException(audioFormat);
}
public boolean isActive() {
return this.pendingOutputAudioFormat.sampleRate != -1 && (Math.abs(this.speed - 1.0f) >= 1.0E-4f || Math.abs(this.pitch - 1.0f) >= 1.0E-4f || this.pendingOutputAudioFormat.sampleRate != this.pendingInputAudioFormat.sampleRate);
}
public void queueInput(ByteBuffer byteBuffer) {
if (byteBuffer.hasRemaining()) {
ShortBuffer asShortBuffer = byteBuffer.asShortBuffer();
int remaining = byteBuffer.remaining();
this.inputBytes += (long) remaining;
((Sonic) Assertions.checkNotNull(this.sonic)).queueInput(asShortBuffer);
byteBuffer.position(byteBuffer.position() + remaining);
}
}
public void queueEndOfStream() {
Sonic sonic2 = this.sonic;
if (sonic2 != null) {
sonic2.queueEndOfStream();
}
this.inputEnded = true;
}
public ByteBuffer getOutput() {
int outputSize;
Sonic sonic2 = this.sonic;
if (sonic2 != null && (outputSize = sonic2.getOutputSize()) > 0) {
if (this.buffer.capacity() < outputSize) {
ByteBuffer order = ByteBuffer.allocateDirect(outputSize).order(ByteOrder.nativeOrder());
this.buffer = order;
this.shortBuffer = order.asShortBuffer();
} else {
this.buffer.clear();
this.shortBuffer.clear();
}
sonic2.getOutput(this.shortBuffer);
this.outputBytes += (long) outputSize;
this.buffer.limit(outputSize);
this.outputBuffer = this.buffer;
}
ByteBuffer byteBuffer = this.outputBuffer;
this.outputBuffer = EMPTY_BUFFER;
return byteBuffer;
}
/* JADX WARNING: Code restructure failed: missing block: B:2:0x0004, code lost:
r0 = r1.sonic;
*/
/* Code decompiled incorrectly, please refer to instructions dump. */
public boolean isEnded() {
/*
r1 = this;
boolean r0 = r1.inputEnded
if (r0 == 0) goto L_0x0010
com.google.android.exoplayer2.audio.Sonic r0 = r1.sonic
if (r0 == 0) goto L_0x000e
int r0 = r0.getOutputSize()
if (r0 != 0) goto L_0x0010
L_0x000e:
r0 = 1
goto L_0x0011
L_0x0010:
r0 = 0
L_0x0011:
return r0
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.android.exoplayer2.audio.SonicAudioProcessor.isEnded():boolean");
}
public void flush() {
if (isActive()) {
AudioProcessor.AudioFormat audioFormat = this.pendingInputAudioFormat;
this.inputAudioFormat = audioFormat;
this.outputAudioFormat = this.pendingOutputAudioFormat;
if (this.pendingSonicRecreation) {
this.sonic = new Sonic(audioFormat.sampleRate, this.inputAudioFormat.channelCount, this.speed, this.pitch, this.outputAudioFormat.sampleRate);
} else {
Sonic sonic2 = this.sonic;
if (sonic2 != null) {
sonic2.flush();
}
}
}
this.outputBuffer = EMPTY_BUFFER;
this.inputBytes = 0;
this.outputBytes = 0;
this.inputEnded = false;
}
public void reset() {
this.speed = 1.0f;
this.pitch = 1.0f;
this.pendingInputAudioFormat = AudioProcessor.AudioFormat.NOT_SET;
this.pendingOutputAudioFormat = AudioProcessor.AudioFormat.NOT_SET;
this.inputAudioFormat = AudioProcessor.AudioFormat.NOT_SET;
this.outputAudioFormat = AudioProcessor.AudioFormat.NOT_SET;
ByteBuffer byteBuffer = EMPTY_BUFFER;
this.buffer = byteBuffer;
this.shortBuffer = byteBuffer.asShortBuffer();
this.outputBuffer = EMPTY_BUFFER;
this.pendingOutputSampleRate = -1;
this.pendingSonicRecreation = false;
this.sonic = null;
this.inputBytes = 0;
this.outputBytes = 0;
this.inputEnded = false;
}
}
Download file