аудио: убрать прогрев кодера — 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:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user