From c598ce91376163e55698bcc1f5b4f832f0c6f661 Mon Sep 17 00:00:00 2001 From: Dejian Xu Date: Mon, 29 Aug 2016 20:53:18 +0800 Subject: [PATCH] Setter and getter API for DTX on encoders Go-style DTX setter and getter api on the encoder. PR hraban/opus#4 --- encoder.go | 24 ++++++++++++++++++++++++ encoder_test.go | 22 ++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 encoder_test.go 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) + } + } +} -- 2.48.1