forked from 2009Scape/Server
96 lines
3.1 KiB
Java
96 lines
3.1 KiB
Java
package org.runite.client;
|
|
import java.awt.Component;
|
|
import javax.sound.sampled.AudioFormat;
|
|
import javax.sound.sampled.AudioSystem;
|
|
import javax.sound.sampled.LineUnavailableException;
|
|
import javax.sound.sampled.SourceDataLine;
|
|
import javax.sound.sampled.Mixer.Info;
|
|
|
|
final class JavaAudioChannel extends AudioChannel {
|
|
|
|
private int anInt2971;
|
|
private SourceDataLine aSourceDataLine2972;
|
|
private boolean aBoolean2973 = false;
|
|
private AudioFormat anAudioFormat2974;
|
|
private byte[] aByteArray2975;
|
|
|
|
|
|
final void close() {
|
|
if(null != this.aSourceDataLine2972) {
|
|
this.aSourceDataLine2972.close();
|
|
this.aSourceDataLine2972 = null;
|
|
}
|
|
|
|
}
|
|
|
|
final void init(Component var1) {
|
|
Info[] var2 = AudioSystem.getMixerInfo();
|
|
if(null != var2) {
|
|
|
|
for (Info var5 : var2) {
|
|
if (null != var5) {
|
|
String var6 = var5.getName();
|
|
if (null != var6 && var6.toLowerCase().contains("soundmax")) {
|
|
this.aBoolean2973 = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
this.anAudioFormat2974 = new AudioFormat((float)Class21.sampleRate, 16, !AudioChannel.stereo ? 1 : 2, true, false);
|
|
this.aByteArray2975 = new byte[256 << (AudioChannel.stereo ? 2 : 1 )];
|
|
}
|
|
|
|
final void open(int var1) throws LineUnavailableException {
|
|
try {
|
|
javax.sound.sampled.DataLine.Info var2 = new javax.sound.sampled.DataLine.Info(SourceDataLine.class, this.anAudioFormat2974, var1 << (!AudioChannel.stereo ? 1 : 2 ));
|
|
this.aSourceDataLine2972 = (SourceDataLine)AudioSystem.getLine(var2);
|
|
this.aSourceDataLine2972.open();
|
|
this.aSourceDataLine2972.start();
|
|
this.anInt2971 = var1;
|
|
} catch (LineUnavailableException var3) {
|
|
if(Class146.method2080(var1) == 1) {
|
|
this.aSourceDataLine2972 = null;
|
|
throw var3;
|
|
} else {
|
|
this.open(Class95.method1585((byte)76, var1));
|
|
}
|
|
}
|
|
}
|
|
|
|
final void flush() throws LineUnavailableException {
|
|
this.aSourceDataLine2972.flush();
|
|
if(this.aBoolean2973) {
|
|
this.aSourceDataLine2972.close();
|
|
this.aSourceDataLine2972 = null;
|
|
javax.sound.sampled.DataLine.Info var1 = new javax.sound.sampled.DataLine.Info(SourceDataLine.class, this.anAudioFormat2974, this.anInt2971 << (!AudioChannel.stereo ?1:2));
|
|
this.aSourceDataLine2972 = (SourceDataLine)AudioSystem.getLine(var1);
|
|
this.aSourceDataLine2972.open();
|
|
this.aSourceDataLine2972.start();
|
|
}
|
|
|
|
}
|
|
|
|
final int method2157() {
|
|
return this.anInt2971 - (this.aSourceDataLine2972.available() >> (!AudioChannel.stereo ?1:2));
|
|
}
|
|
|
|
final void write() {
|
|
int var1 = 256;
|
|
if(AudioChannel.stereo) {
|
|
var1 <<= 1;
|
|
}
|
|
|
|
for(int var2 = 0; var2 < var1; ++var2) {
|
|
int var3 = this.samples[var2];
|
|
if((var3 + 8388608 & -16777216) != 0) {
|
|
var3 = 8388607 ^ var3 >> 31;
|
|
}
|
|
|
|
this.aByteArray2975[var2 * 2] = (byte)(var3 >> 8);
|
|
this.aByteArray2975[var2 * 2 + 1] = (byte)(var3 >> 16);
|
|
}
|
|
|
|
this.aSourceDataLine2972.write(this.aByteArray2975, 0, var1 << 1);
|
|
}
|
|
}
|