From: Dejian Xu Date: Mon, 29 Aug 2016 12:53:18 +0000 (+0800) Subject: Setter and getter API for DTX on encoders X-Git-Tag: v2.0.0~67 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=c598ce91376163e55698bcc1f5b4f832f0c6f661;p=go-opus.git Setter and getter API for DTX on encoders Go-style DTX setter and getter api on the encoder. PR hraban/opus#4 --- diff --git a/encoder.go b/encoder.go index ce27a06..6b79c26 100644 --- a/encoder.go +++ b/encoder.go @@ -12,6 +12,16 @@ import ( /* #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 @@ func (enc *Encoder) EncodeFloat32(pcm []float32, data []byte) (int, error) { } 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 0000000..015a714 --- /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) + } + } +}