Show RX/MIC meters as +dB; zero RX meter during conceal

This commit is contained in:
ua1zbe
2026-08-18 13:26:05 +03:00
parent 3de296b5d2
commit 516fb7b932
2 changed files with 7 additions and 2 deletions

View File

@@ -58,6 +58,7 @@ class OpusEngine(
private var dbgOut = 0 private var dbgOut = 0
private var playStarted = false private var playStarted = false
private var gateStart = 0L private var gateStart = 0L
private var lastRealPacketTime = 0L
// Настраивается из скрытых настроек звука (AudioSettingsActivity) // Настраивается из скрытых настроек звука (AudioSettingsActivity)
@Volatile @Volatile
var rxBufferMs = 417 // буфер AudioTrack, мс (40000 байт ≈ 417 мс при 48 кГц) var rxBufferMs = 417 // буфер AudioTrack, мс (40000 байт ≈ 417 мс при 48 кГц)
@@ -208,7 +209,10 @@ class OpusEngine(
} }
} }
player?.write(pcm, 0, pcm.size) 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) { if (dbgOut < 5) {
Log.d(TAG, "out ${pcm.size}B") Log.d(TAG, "out ${pcm.size}B")
dbgOut++ dbgOut++
@@ -278,6 +282,7 @@ class OpusEngine(
/** Подача одного Opus-пакета на декодер (с UDP-потока). */ /** Подача одного Opus-пакета на декодер (с UDP-потока). */
fun onAudioPacket(packet: ByteArray) { fun onAudioPacket(packet: ByteArray) {
lastRealPacketTime = System.currentTimeMillis()
rxQueue.add(packet) rxQueue.add(packet)
receivedAny = true receivedAny = true
if (gateStart == 0L) gateStart = System.currentTimeMillis() if (gateStart == 0L) gateStart = System.currentTimeMillis()

View File

@@ -52,7 +52,7 @@
<string name="meter_rx">RX</string> <string name="meter_rx">RX</string>
<string name="meter_mic">MIC</string> <string name="meter_mic">MIC</string>
<string name="meter_idle">---</string> <string name="meter_idle">---</string>
<string name="meter_db">-%1$d dB</string> <string name="meter_db">+%1$d dB</string>
<string name="tg_badge">TG%1$d ▾</string> <string name="tg_badge">TG%1$d ▾</string>
<string name="talker_last_none">Последний: —</string> <string name="talker_last_none">Последний: —</string>
<string name="status_connecting">Подключение…</string> <string name="status_connecting">Подключение…</string>