diff --git a/app/src/main/java/ru/ua1zbe/svxremote/audio/OpusEngine.kt b/app/src/main/java/ru/ua1zbe/svxremote/audio/OpusEngine.kt index f99cb31..3465bc9 100644 --- a/app/src/main/java/ru/ua1zbe/svxremote/audio/OpusEngine.kt +++ b/app/src/main/java/ru/ua1zbe/svxremote/audio/OpusEngine.kt @@ -58,6 +58,7 @@ class OpusEngine( private var dbgOut = 0 private var playStarted = false private var gateStart = 0L + private var lastRealPacketTime = 0L // Настраивается из скрытых настроек звука (AudioSettingsActivity) @Volatile var rxBufferMs = 417 // буфер AudioTrack, мс (40000 байт ≈ 417 мс при 48 кГц) @@ -208,7 +209,10 @@ class OpusEngine( } } player?.write(pcm, 0, pcm.size) - onLevel(SRC_SPEAKER, pcmLevel(pcm)) + // Уровень показываем только для реальных пакетов: во время + // скрытия потерь (conceal) шкала должна быть в нуле + val real = System.currentTimeMillis() - lastRealPacketTime < 400 + onLevel(SRC_SPEAKER, if (real) pcmLevel(pcm) else 0f) if (dbgOut < 5) { Log.d(TAG, "out ${pcm.size}B") dbgOut++ @@ -278,6 +282,7 @@ class OpusEngine( /** Подача одного Opus-пакета на декодер (с UDP-потока). */ fun onAudioPacket(packet: ByteArray) { + lastRealPacketTime = System.currentTimeMillis() rxQueue.add(packet) receivedAny = true if (gateStart == 0L) gateStart = System.currentTimeMillis() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 033b58a..9d0e346 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -52,7 +52,7 @@ RX MIC --- - -%1$d dB + +%1$d dB TG%1$d ▾ Последний: — Подключение…