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 free = new ArrayBlockingQueue<>(4); private final ArrayBlockingQueue ready = new ArrayBlockingQueue<>(4); private final Object signal = new Object(); private final List 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; } }