diff --git a/jitsi-media-transform/src/main/kotlin/org/jitsi/nlj/transform/node/incoming/AudioLevelReader.kt b/jitsi-media-transform/src/main/kotlin/org/jitsi/nlj/transform/node/incoming/AudioLevelReader.kt index d57957e3f2..4f7a2557da 100644 --- a/jitsi-media-transform/src/main/kotlin/org/jitsi/nlj/transform/node/incoming/AudioLevelReader.kt +++ b/jitsi-media-transform/src/main/kotlin/org/jitsi/nlj/transform/node/incoming/AudioLevelReader.kt @@ -73,7 +73,7 @@ class AudioLevelReader( val silence = level == MUTED_LEVEL if (!silence) stats.nonSilence(AudioLevelHeaderExtension.getVad(ext)) - if (silence && forwardedSilencePackets > forwardedSilencePacketsLimit) { + if (silence && discardSilence && forwardedSilencePackets > forwardedSilencePacketsLimit) { packetInfo.shouldDiscard = true stats.discardedSilence() } else if (this@AudioLevelReader.forceMute) { @@ -111,6 +111,9 @@ class AudioLevelReader( private val forwardedSilencePacketsLimit: Int by config { "jmt.audio.level.forwarded-silence-packets-limit".from(JitsiConfig.newConfig) } + private val discardSilence: Boolean by config { + "jmt.audio.level.discard-silence".from(JitsiConfig.newConfig) + } } } diff --git a/jitsi-media-transform/src/main/resources/reference.conf b/jitsi-media-transform/src/main/resources/reference.conf index 9fc672b7a0..663266774b 100644 --- a/jitsi-media-transform/src/main/resources/reference.conf +++ b/jitsi-media-transform/src/main/resources/reference.conf @@ -95,6 +95,9 @@ jmt { // Number of RTP packets with 0 audio level to forward before start discarding (to avoid CNG noise in muted state // if DTX is enabled). forwarded-silence-packets-limit = 3 + + // Whether to discard packets marked with silence (audio level 0) in the receive pipeline. + discard-silence = true } }