cmd/client/main.go | 4 ++++ cmd/client/sound.go => cmd/client/audio.go | 4 ++++ doc/proto.texi | 3 ++- diff --git a/cmd/client/main.go b/cmd/client/main.go index bd7fba6963122a32a4995bcf10b6f41b6af7ae82c99f40cd039934f416af11c6..ceb8563d6900b8893d9346053880dbfe11b74156cc793f585bd0bef589795ef1 100644 --- a/cmd/client/main.go +++ b/cmd/client/main.go @@ -533,6 +533,10 @@ n, err = opusEnc.Encode(pcm, buf[4:]) if err != nil { log.Fatal(err) } + if n <= 2 { + // DTX + continue + } incr(nonce[len(nonce)-3:]) copy(buf, nonce[len(nonce)-4:]) diff --git a/cmd/client/sound.go b/cmd/client/audio.go rename from cmd/client/sound.go rename to cmd/client/audio.go index d8c8bee3a77c99247c3a5a9d2ca19ffbedc1838260121f50ff823f848b999654..0b41d029eb18932a8270dd6040e0cab2ec8d33d3d3f7715577bd67754c989c4d 100644 --- a/cmd/client/sound.go +++ b/cmd/client/audio.go @@ -31,6 +31,10 @@ err = enc.SetComplexity(10) if err != nil { log.Fatal(err) } + err = enc.SetDTX(true) + if err != nil { + log.Fatal(err) + } err = enc.SetBitrate(vors.Bitrate) if err != nil { log.Fatal(err) diff --git a/doc/proto.texi b/doc/proto.texi index f3c1209edf6ca8d0370b38d3cbc33917f2e40f7164326ab22bf9fc6172c1a4d6..ead9defe774257d82ee8bf191e9c75d169ffc8181a70aa0ec57bd0892a464b81 100644 --- a/doc/proto.texi +++ b/doc/proto.texi @@ -3,7 +3,8 @@ @unnumbered Protocol VoRS uses Opus codec with 20ms frames with 48kHz 1ch 16-bit S-LE sound. It uses native @code{libopus}'es Packet Loss Concealment (PLC) feature -if number of lost frame does not exceed 32 count. +if number of lost frame does not exceed 32 count. DTX (discontinuous +transmission) is also on. Each frame has single byte stream identifier (unique identifier of the participant) and 24-bit big-endian packet counter. Reordered packets are