Show RX/MIC meters as +dB; zero RX meter during conceal
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<string name="meter_rx">RX</string>
|
||||
<string name="meter_mic">MIC</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="talker_last_none">Последний: —</string>
|
||||
<string name="status_connecting">Подключение…</string>
|
||||
|
||||
Reference in New Issue
Block a user