аудио: убрать прогрев кодера — Concentus деградировал в ~30x

Прогрев 30 кадров тишины на старте переводил Concentus в патологическое
состояние: enc_us вырастал с ~2.6мс до ~88мс на кадр (113% CPU), кодер не
успевал, терялось ~85% кадров -> «полная жопа» в звуке. Подтверждено A/B:
без прогрева enc_us~2.6мс, dropped единицы, пробник принимает ровно 100/с.
This commit is contained in:
2026-10-01 12:18:40 +03:00
parent 20d0d05fb4
commit 8be9afb592
@@ -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) {