evo/src/main/java/defpackage/aod.java

1378 lines
43 KiB
Java

package defpackage;
import com.mojang.blaze3d.platform.NativeImage;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.DataLine.Info;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.DynamicTexture;
import net.minecraft.resources.Identifier;
import net.sourceforge.jaad.aac.Decoder;
import net.sourceforge.jaad.aac.SampleBuffer;
import org.jcodec.common.model.ColorSpace;
import org.jcodec.common.model.Picture;
import org.jcodec.common.model.Rect;
import org.jcodec.scale.ColorUtil;
import org.jcodec.scale.Transform;
public final class aod {
private static final String TEXTURE_PREFIX = "watch_";
private static final String VIDEO_THREAD = "EvoWatchVideo-";
private static final String AUDIO_THREAD = "EvoWatchAudio-";
private static final String REAPER_THREAD = "EvoWatchReaper-";
private static final String RESOLVE_FAILURE = "watch resolve failed for {}";
private static final String VIDEO_FAILURE = "watch video decode failed for {}";
private static final String AUDIO_FAILURE = "watch audio failed for {}";
private static final String AUDIO_FRAME_FAILURE = "watch audio frame skipped for {}";
private static final String DECODER_STUCK = "watch decoder for {} did not stop, frame pool leaked";
private static final int POOL_SIZE = 4;
private static final long MILLIS_PER_SECOND = 1000L;
private static final long NANOS_PER_MILLI = 1000000L;
private static final long LATE_FRAME_MS = 60L;
private static final long EARLY_FRAME_MS = 8L;
private static final long POOL_WAIT_MS = 20L;
private static final long IDLE_WAIT_MS = 15L;
private static final long JOIN_MS = 2000L;
private static final int SAMPLE_BITS = 16;
private static final int BYTES_PER_SAMPLE = 2;
private static final int LINE_BUFFER_MS = 250;
private static final int BYTE_MASK = 255;
private static final int BYTE_SHIFT = 8;
private static final float UNITY_GAIN = 1.0F;
private static final AtomicInteger SERIAL = new AtomicInteger();
private final String videoId;
private final int serial = SERIAL.incrementAndGet();
private final Identifier textureId = bz.id("watch_" + this.serial);
private final AtomicInteger generation = new AtomicInteger();
private final ArrayBlockingQueue<aob> free = new ArrayBlockingQueue<>(4);
private final ArrayBlockingQueue<aob> ready = new ArrayBlockingQueue<>(4);
private final Object signal = new Object();
private final List<aob> slots = new CopyOnWriteArrayList<>();
private volatile aoc status = aoc.LOADING;
private volatile String failure;
private volatile aoj video;
private volatile anv videoSource;
private volatile anv audioSource;
private volatile boolean running = (boolean)(((1)) != 0);
private volatile boolean paused;
private volatile long seekTargetMs;
private volatile float gain = 1.0F;
private volatile aoa anchor;
private volatile SourceDataLine line;
private volatile int sampleRate;
private volatile boolean videoEnded;
private volatile boolean audioEnded;
private volatile boolean hasAudio;
private volatile int frameWidth;
private volatile int frameHeight;
private Thread videoThread;
private Thread audioThread;
private NativeImage display;
private DynamicTexture texture;
private boolean hasFrame;
private boolean closed;
public aod(String var1, long var2, boolean var4) {
this.videoId = var1;
this.seekTargetMs = Math.max((5925869321369282789L ^ -5925869321369282789L) + ((5925869321369282789L & -5925869321369282789L) << 1), var2);
this.paused = var4;
}
public void start() {
aok.resolve(this.videoId)
.whenComplete(
(var1, var2) -> {
if (var2 != null) {
this.fail(
"watch resolve failed for {}",
rootMessage(var2),
var2
);
} else if (this.running) {
this.video = var1;
this.videoSource = new anv(var1.videoUrl());
this.audioSource = var1.progressive() ? this.videoSource : new anv(var1.audioUrl());
this.videoThread = daemon(this::runVideo, "EvoWatchVideo-" + this.serial);
this.audioThread = daemon(this::runAudio, "EvoWatchAudio-" + this.serial);
}
}
);
}
public String videoId() {
return this.videoId;
}
public String title() {
aoj var1 = null;
String var3 = null;
int var2 = 1930177096;
while (true) {
switch (var2) {
case -882499708:
var3 = null;
var2 = 1119471736;
break;
case -328335424:
var3 = var1.title();
var2 = 1119471736;
break;
case 1119471736:
return var3;
case 1930177096:
default:
var1 = this.video;
if (var1 == null) {
var2 = -882499708;
} else {
var2 = -328335424;
}
}
}
}
public long durationMs() {
aoj var1 = null;
long var3 = (-3465570995287832169L | 3465570995287832169L) + (-3465570995287832169L & 3465570995287832169L);
int var2 = 980559435;
while (true) {
switch (var2) {
case -2077771018:
var3 = var1.durationMs();
var2 = 1499397695;
break;
case 515342224:
var3 = (-3837591716632270436L | 3837591716632270436L) + (-3837591716632270436L & 3837591716632270436L);
var2 = 1499397695;
break;
case 980559435:
default:
var1 = this.video;
if (var1 == null) {
var2 = 515342224;
} else {
var2 = -2077771018;
}
break;
case 1499397695:
return var3;
}
}
}
public aoc status() {
return this.status;
}
public String failure() {
return this.failure;
}
public boolean isPaused() {
return this.paused;
}
public boolean hasFrame() {
return this.hasFrame;
}
public Identifier textureId() {
return this.textureId;
}
public int frameWidth() {
return this.frameWidth;
}
public int frameHeight() {
return this.frameHeight;
}
public void setGain(float var1) {
this.gain = Math.clamp(var1, 0.0F, 1.0F);
}
public long positionMs() {
aoa var1 = null;
SourceDataLine var2 = null;
long var3 = (6188183043137750143L | -6188183043137750143L) + (6188183043137750143L & -6188183043137750143L);
int var5 = -2048136986;
while (true) {
switch (var5) {
case -2048136986:
default:
var1 = this.anchor;
if (var1 != null) {
var5 = 1172244823;
} else {
var5 = -192661999;
}
break;
case -1945001601:
if (var2 != null) {
var5 = -849433870;
} else {
var5 = -633070380;
}
break;
case -849433870:
if (this.sampleRate > 0) {
var5 = -411790632;
} else {
var5 = -633070380;
}
break;
case -633070380:
if (this.paused) {
var5 = 1677629783;
} else {
var5 = 196173470;
}
break;
case -411790632:
var3 = Math.max(
(8947316226511673836L | -8947316226511673836L) + (8947316226511673836L & -8947316226511673836L), var2.getLongFramePosition() - var1.frame()
);
return var1.mediaMs()
+ var3 * ((-3968573025936777621L | 3968573025936778621L) + (-3968573025936777621L & 3968573025936778621L)) / this.sampleRate;
case -192661999:
return this.seekTargetMs;
case 196173470:
return var1.mediaMs()
+ (System.nanoTime() - var1.wallNanos()) / ((-8632156204395909199L | 8632156204396909199L) + (-8632156204395909199L & 8632156204396909199L));
case 1172244823:
if (var1.generation() != this.generation.get()) {
var5 = -192661999;
} else {
var5 = 1455614000;
}
break;
case 1455614000:
var2 = this.line;
if (var1.audio()) {
var5 = -1945001601;
} else {
var5 = -633070380;
}
break;
case 1677629783:
return var1.mediaMs();
}
}
}
public void seek(long var1) {
SourceDataLine var3 = null;
int var4 = -1009208034;
while (true) {
switch (var4) {
case -1009208034:
default:
this.seekTargetMs = Math.max((-7485496828872182385L ^ 7485496828872182385L) + ((-7485496828872182385L & 7485496828872182385L) << 1), var1);
this.anchor = null;
this.videoEnded = (boolean)(((0)) != 0);
this.audioEnded = (boolean)(((0)) != 0);
if (this.status == aoc.ENDED) {
var4 = 1151701130;
} else {
var4 = 1913897812;
}
break;
case -226363033:
this.wake();
return;
case 1151701130:
this.status = aoc.PLAYING;
var4 = 1913897812;
break;
case 1913897812:
this.generation.incrementAndGet();
var3 = this.line;
if (var3 != null) {
var4 = 1992949470;
} else {
var4 = -226363033;
}
break;
case 1992949470:
var3.flush();
var4 = -226363033;
}
}
}
public void setPaused(boolean var1) {
long var2 = (2398624077890781551L | -2398624077890781551L) + (2398624077890781551L & -2398624077890781551L);
SourceDataLine var4 = null;
aoa var5 = null;
int var6 = -1461985418;
while (true) {
switch (var6) {
case -1914059453:
if (var4 != null) {
var6 = -203083125;
} else {
var6 = 1499214018;
}
break;
case -1608669614:
if (!var5.audio()) {
var6 = 236721753;
} else {
var6 = -1914059453;
}
break;
case -1598130700:
if (var1) {
var6 = -832116401;
} else {
var6 = 1664883649;
}
break;
case -1536254337:
if (var5.audio()) {
var6 = -1598130700;
} else {
var6 = 1499214018;
}
break;
case -1461985418:
default:
if (this.paused == var1) {
var6 = 471459757;
} else {
var6 = 1290510745;
}
break;
case -832116401:
var4.stop();
var6 = 1499214018;
break;
case -203083125:
if (var5 != null) {
var6 = -1536254337;
} else {
var6 = 1499214018;
}
break;
case 236721753:
this.anchor = new aoa(
var5.generation(),
var2,
(1647966063517872319L | -1647966063517872319L) + (1647966063517872319L & -1647966063517872319L),
System.nanoTime(),
(boolean)((((661120138 | -661120138) + (661120138 & -661120138))
) != 0));
var6 = -1914059453;
break;
case 471459757:
return;
case 1290510745:
var2 = this.positionMs();
this.paused = var1;
var4 = this.line;
var5 = this.anchor;
if (var5 != null) {
var6 = -1608669614;
} else {
var6 = -1914059453;
}
break;
case 1499214018:
this.wake();
return;
case 1664883649:
var4.start();
var6 = 1499214018;
}
}
}
public void sync(long var1, boolean var3, long var4) {
int var6 = 355962576;
while (true) {
switch (var6) {
case -2002493382:
return;
case -1985243038:
this.seek(var1);
var6 = -1694953781;
break;
case -1694953781:
return;
case 76743947:
if (Math.abs(this.positionMs() - var1) > var4) {
var6 = -1985243038;
} else {
var6 = -1694953781;
}
break;
case 355962576:
default:
this.setPaused(var3);
if (this.status == aoc.FAILED) {
var6 = -2002493382;
} else {
var6 = 76743947;
}
}
}
}
public void update() {
int var1 = 0;
long var2 = (-3969580860454588637L | 3969580860454588637L) + (-3969580860454588637L & 3969580860454588637L);
aob var4 = null;
aob var5 = null;
int var6 = -752572579;
while (true) {
switch (var6) {
case -2126754425:
if (this.status == aoc.PLAYING) {
var6 = -981053301;
} else {
var6 = 1127402712;
}
break;
case -1901376885:
var4 = var5;
var6 = 1485889846;
break;
case -1864099931:
var1 = this.generation.get();
var2 = this.positionMs();
var4 = null;
var6 = 1485889846;
break;
case -1663137892:
return;
case -1407030507:
var6 = -375101689;
break;
case -1315074128:
return;
case -1271253763:
return;
case -1098767342:
if (var4 != null) {
var6 = -1407030507;
} else {
var6 = -960248404;
}
break;
case -981053301:
this.status = aoc.ENDED;
var6 = 1127402712;
break;
case -960248404:
this.ready.poll();
if (var4 != null) {
var6 = 609539202;
} else {
var6 = -1901376885;
}
break;
case -752572579:
default:
if (this.closed) {
var6 = -1663137892;
} else {
var6 = -535362722;
}
break;
case -721448017:
return;
case -535362722:
if (this.videoEnded) {
var6 = 917437613;
} else {
var6 = 1127402712;
}
break;
case -375101689:
if (var4 == null) {
var6 = -721448017;
} else {
var6 = 2044556909;
}
break;
case 72077994:
if (this.texture == null) {
var6 = 1933863246;
} else {
var6 = -1864099931;
}
break;
case 560600058:
if (var5.generation != var1) {
var6 = 1032830805;
} else {
var6 = 2108152569;
}
break;
case 609539202:
this.free.offer(var4);
var6 = -1901376885;
break;
case 917437613:
if (this.ready.isEmpty()) {
var6 = 1892961121;
} else {
var6 = 1127402712;
}
break;
case 1032830805:
this.ready.poll();
this.free.offer(var5);
var6 = 1485889846;
break;
case 1127402712:
if (this.frameWidth > 0) {
var6 = 1867881247;
} else {
var6 = -1315074128;
}
break;
case 1485889846:
if ((var5 = this.ready.peek()) != null) {
var6 = 560600058;
} else {
var6 = -375101689;
}
break;
case 1692696971:
this.status = aoc.PLAYING;
var6 = -1271253763;
break;
case 1788744897:
if (this.audioEnded) {
var6 = -2126754425;
} else {
var6 = 1127402712;
}
break;
case 1867881247:
if (this.frameHeight <= 0) {
var6 = -1315074128;
} else {
var6 = 72077994;
}
break;
case 1892961121:
if (this.hasAudio) {
var6 = 1788744897;
} else {
var6 = -2126754425;
}
break;
case 1933863246:
this.display = new NativeImage(this.frameWidth, this.frameHeight, (boolean)((((1783312687 ^ -1783312687) + ((1783312687 & -1783312687) << 1))) != 0));
this.texture = new aux(() -> "watch_" + this.serial, this.display);
Minecraft.getInstance().getTextureManager().register(this.textureId, this.texture);
var6 = -1864099931;
break;
case 2001248760:
if (!this.hasFrame) {
var6 = -1098767342;
} else {
var6 = -375101689;
}
break;
case 2044556909:
this.display.copyFrom(var4.image);
this.texture.upload();
this.free.offer(var4);
this.hasFrame = (boolean)(((1)) != 0);
if (this.status == aoc.LOADING) {
var6 = 1692696971;
} else {
var6 = -1271253763;
}
break;
case 2108152569:
if (var5.ptsMs > var2 + (-3313457125592816791L ^ 3313457125592816799L) + ((-3313457125592816791L & 3313457125592816799L) << 1)) {
var6 = 2001248760;
} else {
var6 = -960248404;
}
}
}
}
public void close() {
anv var1 = null;
anv var2 = null;
SourceDataLine var3 = null;
Thread var4 = null;
Thread var5 = null;
int var6 = 0;
int var8 = 0;
int var7 = -1411372672;
while (true) {
switch (var7) {
case -1779714249:
var4.interrupt();
var7 = -1726867405;
break;
case -1740562571:
var2.close();
var7 = 194648971;
break;
case -1726867405:
if (var5 != null) {
var7 = -1571841568;
} else {
var7 = 578793991;
}
break;
case -1662654531:
var8 = 1;
var7 = 1864995576;
break;
case -1571841568:
var5.interrupt();
var7 = 578793991;
break;
case -1411372672:
default:
if (this.closed) {
var7 = 721294398;
} else {
var7 = 1491442795;
}
break;
case -996860562:
var8 = 0;
var7 = 1864995576;
break;
case -263116799:
var3.stop();
var3.flush();
var7 = 859523974;
break;
case 194648971:
var3 = this.line;
if (var3 != null) {
var7 = -263116799;
} else {
var7 = 859523974;
}
break;
case 578793991:
if (this.texture != null) {
var7 = -1662654531;
} else {
var7 = -996860562;
}
break;
case 721294398:
return;
case 859523974:
var4 = this.videoThread;
var5 = this.audioThread;
if (var4 != null) {
var7 = -1779714249;
} else {
var7 = -1726867405;
}
break;
case 902932460:
if (var2 != var1) {
var7 = -1740562571;
} else {
var7 = 194648971;
}
break;
case 1366325954:
var1.close();
var7 = 1373380486;
break;
case 1373380486:
if (var2 != null) {
var7 = 902932460;
} else {
var7 = 194648971;
}
break;
case 1491442795:
this.closed = (boolean)(((1)) != 0);
this.running = (boolean)(((0)) != 0);
this.generation.incrementAndGet();
this.wake();
var1 = this.videoSource;
var2 = this.audioSource;
if (var1 != null) {
var7 = 1366325954;
} else {
var7 = 1373380486;
}
break;
case 1864995576:
var6 = var8;
this.texture = null;
this.display = null;
daemon(() -> this.reap(var4, var5, var3, var6 != 0), "EvoWatchReaper-" + this.serial);
return;
}
}
}
private void reap(Thread var1, Thread var2, SourceDataLine var3, boolean var4) {
int var5 = 0;
Minecraft var6 = null;
int var8 = 0;
int var7 = 1643149100;
while (true) {
switch (var7) {
case -1591431770:
if (var1 != null) {
var7 = -1387704189;
} else {
var7 = 170795492;
}
break;
case -1522287563:
var6 = Minecraft.getInstance();
var6.execute(() -> {
Iterator var4x = null;
Object var5x = null;
int var6x = -633768204;
while (true) {
switch (var6x) {
case -1943492598:
this.slots.clear();
return;
case -641230427:
var6.getTextureManager().release(this.textureId);
var6x = 1840619191;
break;
case -633768204:
default:
if (var4) {
var6x = -641230427;
} else {
var6x = 1840619191;
}
break;
case -339008966:
this.ready.clear();
this.free.clear();
var4x = this.slots.iterator();
var6x = 1263308280;
break;
case 194298177:
var5x = (aob)var4x.next();
((aob)var5x).image.close();
var6x = 1263308280;
break;
case 578258790:
return;
case 1263308280:
if (var4x.hasNext()) {
var6x = 194298177;
} else {
var6x = -1943492598;
}
break;
case 1840619191:
if (var5 == 0) {
var6x = 578258790;
} else {
var6x = -339008966;
}
}
}
});
return;
case -1427956397:
var5 = var8;
if (var5 == 0) {
var7 = 1082650333;
} else {
var7 = -1522287563;
}
break;
case -1387704189:
if (!var1.isAlive()) {
var7 = 170795492;
} else {
var7 = 619095419;
}
break;
case 170795492:
var8 = 1;
var7 = -1427956397;
break;
case 619095419:
var8 = 0;
var7 = -1427956397;
break;
case 635060958:
var3.close();
var7 = -1591431770;
break;
case 1082650333:
id.warn(
Cif.MEDIA,
"watch decoder for {} did not stop, frame pool leaked",
this.videoId
);
var7 = -1522287563;
break;
case 1643149100:
default:
join(var1);
join(var2);
if (var3 != null) {
var7 = 635060958;
} else {
var7 = -1591431770;
}
}
}
}
private void runVideo() {
ant var1 = new ant(this.videoSource);
try {
anz var2 = this.video.progressive() ? anz.progressive(var1) : anz.dash(var1);
Picture var3 = null;
Transform var4 = null;
int var5 = -1;
int var6 = 1;
while (this.running) {
int var7 = this.generation.get();
if (var7 != var5) {
var5 = var7;
var2.seek(this.seekTargetMs);
this.videoEnded = (boolean)(((0)) != 0);
var6 = 1;
}
if (!this.videoEnded && (!this.paused || var6 != 0)) {
Picture var8 = var2.next();
if (var8 == null) {
this.videoEnded = (boolean)(((1)) != 0);
} else {
long var9 = var2.ptsMs();
if ((
var6 != 0
|| var9 + (6613228650515278989L ^ -6613228650515278929L) + ((6613228650515278989L & -6613228650515278929L) << 1)
>= this.positionMs()
)
&& (
var6 == 0
|| var9 + (9089449731720463528L | -9089449731720463468L) + (9089449731720463528L & -9089449731720463468L) >= this.seekTargetMs
)) {
if (var3 == null) {
var3 = Picture.create(var8.getWidth(), var8.getHeight(), ColorSpace.RGB);
var4 = ColorUtil.getTransform(var8.getColor(), ColorSpace.RGB);
this.allocatePool(var8);
}
aob var11 = null;
while (this.running && this.generation.get() == var5 && var11 == null) {
var11 = this.free
.poll((4247939024060348306L | -4247939024060348286L) + (4247939024060348306L & -4247939024060348286L), TimeUnit.MILLISECONDS);
}
if (var11 != null) {
var4.transform(var8, var3);
Rect var12 = var8.getCrop();
int var13 = var12 == null ? 0: var12.getX();
int var14 = var12 == null ? 0: var12.getY();
auy.fill(
var11.image,
var3.getPlaneData((505770354 ^ -505770354) + ((505770354 & -505770354) << 1)),
var8.getWidth(),
var13,
var14,
this.frameWidth,
this.frameHeight
);
var11.ptsMs = var9;
var11.generation = var5;
if (!this.ready.offer(var11)) {
this.free.offer(var11);
}
var6 = 0;
}
}
}
} else {
this.idle();
}
}
} catch (InterruptedException var19) {
Thread.currentThread().interrupt();
} catch (Throwable var20) {
if (this.running) {
this.fail(
"watch video decode failed for {}",
rootMessage(var20),
var20
);
}
} finally {
var1.close();
}
}
private void allocatePool(Picture var1) {
int var2 = 0;
Object var3 = null;
int var4 = 775671031;
while (true) {
switch (var4) {
case -1891044429:
var3 = new aob(new NativeImage(this.frameWidth, this.frameHeight, (boolean)((((-413256955 ^ 413256955) + ((-413256955 & 413256955) << 1))) != 0)));
this.slots.add((aob)var3);
this.free.offer((aob)var3);
var2++;
var4 = -27662252;
break;
case -27662252:
if (var2 < (83033972 ^ -83033968) + ((83033972 & -83033968) << 1)) {
var4 = -1891044429;
} else {
var4 = 303871564;
}
break;
case 303871564:
return;
case 775671031:
default:
this.frameWidth = var1.getCroppedWidth();
this.frameHeight = var1.getCroppedHeight();
var2 = 0;
var4 = -27662252;
}
}
}
private void runAudio() {
ant var1 = new ant(this.audioSource);
SourceDataLine var2 = null;
try {
try {
ano var3 = this.video.progressive() ? ano.progressive(var1) : ano.dash(var1);
if (var3 == null) {
this.runWallClock();
return;
}
Decoder var4 = new Decoder(var3.decoderConfig());
SampleBuffer var5 = new SampleBuffer();
var5.setBigEndian((boolean)((((911190697 ^ -911190697) + ((911190697 & -911190697) << 1))) != 0));
this.hasAudio = (boolean)(((1)) != 0);
int var6 = -1;
int var7 = 1;
while (this.running) {
int var8 = this.generation.get();
if (var8 != var6) {
var6 = var8;
var3.seek(this.seekTargetMs);
this.audioEnded = (boolean)(((0)) != 0);
var7 = 1;
if (var2 != null) {
var2.flush();
}
}
if (!this.audioEnded && (!this.paused || var7 != 0)) {
byte[] var9 = var3.next();
if (var9 == null) {
this.audioEnded = (boolean)(((1)) != 0);
} else {
long var10 = var3.ptsMs();
if (var7 == 0
|| var10 + (-7014539346689104363L | 7014539346689104423L) + (-7014539346689104363L & 7014539346689104423L) >= this.seekTargetMs) {
try {
var4.decodeFrame(var9, var5);
} catch (Exception var20) {
id.debug(
Cif.MEDIA,
"watch audio frame skipped for {}",
this.videoId
);
continue;
}
if (var2 == null) {
var2 = this.openLine(var5);
if (var2 == null) {
this.hasAudio = (boolean)(((0)) != 0);
this.runWallClock();
return;
}
}
if (var7 != 0) {
this.anchor = new aoa(
var6,
var10,
var2.getLongFramePosition(),
(5245124628838790411L | -5245124628838790411L) + (5245124628838790411L & -5245124628838790411L),
(boolean)((((387152273 | -387152272) + (387152273 & -387152272))
) != 0));
if (!this.paused) {
var2.start();
}
var7 = 0;
}
this.applyGain(var5.getData());
this.write(var2, var5.getData(), var6);
}
}
} else {
this.idle();
}
}
return;
} catch (InterruptedException var21) {
Thread.currentThread().interrupt();
} catch (Throwable var22) {
if (this.running) {
id.warn(
Cif.MEDIA,
"watch audio failed for {}",
this.videoId,
var22
);
this.hasAudio = (boolean)(((0)) != 0);
try {
this.runWallClock();
} catch (InterruptedException var19) {
Thread.currentThread().interrupt();
}
return;
}
}
} finally {
var1.close();
}
}
private SourceDataLine openLine(SampleBuffer var1) {
try {
this.sampleRate = var1.getSampleRate();
int var2 = var1.getChannels();
AudioFormat var3 = new AudioFormat(
this.sampleRate,
16,
var2,
(boolean)(((1)) != 0),
(boolean)((((197806775 ^ -197806775) + ((197806775 & -197806775) << 1))
) != 0));
SourceDataLine var4 = (SourceDataLine)AudioSystem.getLine(new Info(SourceDataLine.class, var3));
int var5 = this.sampleRate
* var2
* 0;
var4.open(var3, var5);
this.line = var4;
return var4;
} catch (Exception var6) {
id.warn(Cif.MEDIA, "watch audio failed for {}", this.videoId, var6);
return null;
}
}
private void runWallClock() throws InterruptedException {
int var1 = 0;
int var2 = 0;
int var3 = -1440282229;
while (true) {
switch (var3) {
case -1629105286:
this.idle();
var3 = -144622501;
break;
case -1440282229:
default:
var1 = -1;
var3 = -144622501;
break;
case -144622501:
if (this.running) {
var3 = -78861644;
} else {
var3 = 570229110;
}
break;
case -78861644:
var2 = this.generation.get();
if (var2 != var1) {
var3 = 6253493;
} else {
var3 = -1629105286;
}
break;
case 6253493:
var1 = var2;
this.anchor = new aoa(
var1,
this.seekTargetMs,
(2462414229238202591L | -2462414229238202591L) + (2462414229238202591L & -2462414229238202591L),
System.nanoTime(),
(boolean)((((740950868 | -740950868) + (740950868 & -740950868))
) != 0));
var3 = -1629105286;
break;
case 570229110:
return;
}
}
}
private void applyGain(byte[] var1) {
float var2 = 0.0F;
int var3 = 0;
int var4 = 0;
int var5 = 0;
int var6 = 1810032689;
while (true) {
switch (var6) {
case -1592175680:
return;
case -1471389680:
return;
case -540701304:
var3 = 0;
var6 = 1147473160;
break;
case 480460036:
short var7 = (short)(
var1[var3] & (-179493795 | 179494050) + (-179493795 & 179494050)
| var1[var3 + 1] << (952552855 ^ -952552847) + ((952552855 & -952552847) << 1)
);
var5 = Math.round(var7 * var2);
var1[var3] = (byte)var5;
var1[var3 + 1] = (byte)(
var5 >> (1484816448 | -1484816440) + (1484816448 & -1484816440)
);
var3 += 2;
var6 = 1147473160;
break;
case 1147473160:
if (var3 + (-1698612459 | 1698612460) + (-1698612459 & 1698612460) < var1.length) {
var6 = 480460036;
} else {
var6 = -1592175680;
}
break;
case 1810032689:
default:
var2 = this.gain;
if (var2 >= 1.0F) {
var6 = -1471389680;
} else {
var6 = -540701304;
}
}
}
}
private void write(SourceDataLine var1, byte[] var2, int var3) throws InterruptedException {
int var4 = 0;
int var5 = 0;
int var6 = 0;
int var7 = 487937445;
while (true) {
switch (var7) {
case -1264169874:
var6 = Math.min(var5 - var5 % (2), var2.length - var4);
if (var6 <= 0) {
var7 = 920317829;
} else {
var7 = 1549668451;
}
break;
case -1072432159:
if (this.running) {
var7 = -843267287;
} else {
var7 = -388951056;
}
break;
case -843267287:
if (this.generation.get() == var3) {
var7 = -372130276;
} else {
var7 = -388951056;
}
break;
case -388951056:
return;
case -372130276:
if (this.paused) {
var7 = 1553743448;
} else {
var7 = 1855328423;
}
break;
case 487937445:
default:
var4 = 0;
var7 = 670406460;
break;
case 670406460:
if (var4 < var2.length) {
var7 = -1072432159;
} else {
var7 = -388951056;
}
break;
case 920317829:
this.idle();
var7 = 670406460;
break;
case 1516046836:
this.idle();
var7 = 670406460;
break;
case 1549668451:
var4 += var1.write(var2, var4, var6);
var7 = 670406460;
break;
case 1553743448:
this.idle();
var7 = 670406460;
break;
case 1855328423:
var5 = var1.available();
if (var5 <= 0) {
var7 = 1516046836;
} else {
var7 = -1264169874;
}
}
}
}
private void idle() throws InterruptedException {
synchronized (this.signal) {
this.signal.wait((-2153559731047113104L | 2153559731047113119L) + (-2153559731047113104L & 2153559731047113119L));
}
}
private void wake() {
synchronized (this.signal) {
this.signal.notifyAll();
}
}
private void fail(String var1, String var2, Throwable var3) {
this.failure = var2;
this.status = aoc.FAILED;
id.warn(Cif.MEDIA, var1, this.videoId, var3);
aok.invalidate(this.videoId);
}
private static String rootMessage(Throwable var0) {
Throwable var1 = null;
String var2 = null;
String var4 = null;
int var3 = 587458511;
while (true) {
switch (var3) {
case -2038972880:
var4 = var2;
var3 = 1462012311;
break;
case -1915563698:
var2 = var1.getMessage();
if (var2 != null) {
var3 = -839323581;
} else {
var3 = 2040846282;
}
break;
case -875007707:
var1 = var1.getCause();
var3 = -712152883;
break;
case -839323581:
if (var2.isBlank()) {
var3 = 2040846282;
} else {
var3 = -2038972880;
}
break;
case -826511951:
if (var1.getCause() != var1) {
var3 = -875007707;
} else {
var3 = -1915563698;
}
break;
case -712152883:
if (var1.getCause() != null) {
var3 = -826511951;
} else {
var3 = -1915563698;
}
break;
case 587458511:
default:
var1 = var0;
var3 = -712152883;
break;
case 1462012311:
return var4;
case 2040846282:
var4 = var1.getClass().getSimpleName();
var3 = 1462012311;
}
}
}
private static void join(Thread var0) {
if (var0 != null) {
try {
var0.join((-8205084524883839502L | 8205084524883841502L) + (-8205084524883839502L & 8205084524883841502L));
} catch (InterruptedException var2) {
Thread.currentThread().interrupt();
}
}
}
private static Thread daemon(Runnable var0, String var1) {
Thread var2 = new Thread(var0, var1);
var2.setDaemon((boolean)((((-1589261313 | 1589261314) + (-1589261313 & 1589261314))) != 0));
var2.start();
return var2;
}
}