diff --git a/src/Client.kt b/src/Client.kt index 8167e47..b6c0f84 100644 --- a/src/Client.kt +++ b/src/Client.kt @@ -8,28 +8,16 @@ import java.io.ObjectOutputStream import java.io.Serializable import java.net.InetSocketAddress import java.net.Socket -import javax.sound.sampled.AudioFormat import javax.sound.sampled.AudioSystem import kotlin.system.measureTimeMillis -val SERVER_PORT = 7890 +val SERVER_PORT = 7860 val ECHO_CANCELLATION = true val PACKET_SAMPLES = 2880 val SAMPLE_RATE = 48000 val CHANNELS = 1 val BUFFER_SIZE = PACKET_SAMPLES * CHANNELS - -val bufferOut = ByteArray(BUFFER_SIZE * 2) -val bufferIn = ByteArray(BUFFER_SIZE * 2) -val format = AudioConvert.getAudioFormat(SAMPLE_RATE, CHANNELS) - -val decoder = OpusDecoder(SAMPLE_RATE, CHANNELS) -val encoder = OpusEncoder(SAMPLE_RATE, CHANNELS, OpusApplication.OPUS_APPLICATION_AUDIO).also { - it.bitrate = 96000 - it.forceMode = OpusMode.MODE_CELT_ONLY - it.signalType = OpusSignal.OPUS_SIGNAL_MUSIC - it.complexity = 0 -} +val AUDIO_FORMAT = AudioConvert.getAudioFormat(SAMPLE_RATE, CHANNELS) object Client { @JvmStatic @@ -47,22 +35,32 @@ fun mainClient() = runBlocking { val socket = Socket() val t = measureTimeMillis { -// socket.connect(InetSocketAddress("zedo.top", SERVER_PORT)) - socket.connect(InetSocketAddress("127.0.0.1", SERVER_PORT)) + socket.connect(InetSocketAddress("zedo.top", SERVER_PORT)) +// socket.connect(InetSocketAddress("127.0.0.1", SERVER_PORT)) } println("connect time $t") val out = ObjectOutputStream(socket.getOutputStream()) val inp = ObjectInputStream(socket.getInputStream()) - val targetDataLine = AudioSystem.getTargetDataLine(format) - targetDataLine.open(format, bufferIn.size) + val bufferOut = ByteArray(BUFFER_SIZE * 2) + val targetDataLine = AudioSystem.getTargetDataLine(AUDIO_FORMAT) + targetDataLine.open(AUDIO_FORMAT, bufferOut.size) targetDataLine.start() - val sourceDataLine = AudioSystem.getSourceDataLine(format) - sourceDataLine.open(format, bufferIn.size) + val bufferIn = ByteArray(BUFFER_SIZE * 2) + val sourceDataLine = AudioSystem.getSourceDataLine(AUDIO_FORMAT) + sourceDataLine.open(AUDIO_FORMAT, bufferIn.size) sourceDataLine.start() + val decoder = OpusDecoder(SAMPLE_RATE, CHANNELS) + val encoder = OpusEncoder(SAMPLE_RATE, CHANNELS, OpusApplication.OPUS_APPLICATION_AUDIO).also { + it.bitrate = 96000 + it.forceMode = OpusMode.MODE_CELT_ONLY + it.signalType = OpusSignal.OPUS_SIGNAL_MUSIC + it.complexity = 0 + } + launch(Dispatchers.IO) { while (true) { targetDataLine.read(bufferOut, 0, bufferOut.size)