encoder.go | 24 ++++++++++++++++++++++++ encoder_test.go | 22 ++++++++++++++++++++++ diff --git a/encoder.go b/encoder.go index ce27a06c9d2f59f746db28b6cdbe820485f5abe2..6b79c26640f01c7fb3a72405f95fd452076e71c3 100644 --- a/encoder.go +++ b/encoder.go @@ -12,6 +12,16 @@ /* #cgo pkg-config: opus #include + +int bridge_set_dtx(OpusEncoder *st, int use_dtx) { + return opus_encoder_ctl(st, OPUS_SET_DTX(use_dtx)); +} + +int bridge_get_dtx(OpusEncoder *st) { + int dtx = 0; + opus_encoder_ctl(st, OPUS_GET_DTX(&dtx)); + return dtx; +} */ import "C" @@ -107,3 +117,17 @@ return 0, opuserr(n) } return n, nil } + +// Configures the encoder's use of discontinuous transmission (DTX). +func (enc *Encoder) UseDTX(use bool) { + dtx := 0 + if use { + dtx = 1 + } + C.bridge_set_dtx(enc.p, C.int(dtx)) +} + +func (enc *Encoder) GetDTX() bool { + dtx := C.bridge_get_dtx(enc.p) + return dtx != 0 +} diff --git a/encoder_test.go b/encoder_test.go new file mode 100644 index 0000000000000000000000000000000000000000..015a7149a91c98fcff158ed1d528cf0f5e5343af --- /dev/null +++ b/encoder_test.go @@ -0,0 +1,22 @@ +// Copyright © 2015, 2016 Hraban Luyat +// +// License for use of this code is detailed in the LICENSE file + +package opus + +import "testing" + +func TestUseDTX(t *testing.T) { + enc, err := NewEncoder(8000, 1, APPLICATION_VOIP) + if err != nil || enc == nil { + t.Errorf("Error creating new encoder: %v", err) + } + vals := []bool{true, false} + for _, dtx := range vals { + enc.UseDTX(dtx) + gotv := enc.GetDTX() + if gotv != dtx { + t.Errorf("Error set dtx: expect dtx=%v, got dtx=%v", dtx, gotv) + } + } +}