From 8be9afb592c0ad416c2374a3f48af40d86d94734 Mon Sep 17 00:00:00 2001 From: subochev Date: Thu, 1 Oct 2026 12:18:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B0=D1=83=D0=B4=D0=B8=D0=BE:=20=D1=83=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D1=82=D1=8C=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B5?= =?UTF-8?q?=D0=B2=20=D0=BA=D0=BE=D0=B4=D0=B5=D1=80=D0=B0=20=E2=80=94=20Con?= =?UTF-8?q?centus=20=D0=B4=D0=B5=D0=B3=D1=80=D0=B0=D0=B4=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BB=20=D0=B2=20~30x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Прогрев 30 кадров тишины на старте переводил Concentus в патологическое состояние: enc_us вырастал с ~2.6мс до ~88мс на кадр (113% CPU), кодер не успевал, терялось ~85% кадров -> «полная жопа» в звуке. Подтверждено A/B: без прогрева enc_us~2.6мс, dropped единицы, пробник принимает ровно 100/с. --- .../src/main/kotlin/pw/binom/rayneovm/glasses/VmService.kt | 7 ------- 1 file changed, 7 deletions(-) diff --git a/app-glasses-vm/src/main/kotlin/pw/binom/rayneovm/glasses/VmService.kt b/app-glasses-vm/src/main/kotlin/pw/binom/rayneovm/glasses/VmService.kt index 32bcfd7..70237a9 100644 --- a/app-glasses-vm/src/main/kotlin/pw/binom/rayneovm/glasses/VmService.kt +++ b/app-glasses-vm/src/main/kotlin/pw/binom/rayneovm/glasses/VmService.kt @@ -326,13 +326,6 @@ class VmService : LifecycleService() { private fun startAudioPump() { lifecycleScope.launch(kotlinx.coroutines.Dispatchers.IO) { val packet = ByteArray(AudioConfig.MAX_DATAGRAM) - // Прогреваем JIT и состояние кодера тишиной: без этого первые кадры кодировались - // в разы дольше 10 мс (Concentus — JVM, холодный профиль), очередь успевала - // переполниться, и стартовые ~секунды звука терялись («хрип при включении»). - runCatching { - val silence = ShortArray(AudioConfig.FRAME_SHORTS) - repeat(30) { audioEncoder.encode(silence, 0, AudioConfig.FRAME_SAMPLES) } - } var encNanos = 0L var sndNanos = 0L for (pcm in audioFrames) {