From: Hraban Luyat Date: Tue, 30 Aug 2016 16:47:52 +0000 (+0100) Subject: Encoder.SampleRate() method reports sample rate X-Git-Tag: v2.0.0~61 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=a0163af4393753b3dcd75e2f616822e75772c6c5;p=go-opus.git Encoder.SampleRate() method reports sample rate --- diff --git a/encoder.go b/encoder.go index 3690bc1..21696da 100644 --- a/encoder.go +++ b/encoder.go @@ -13,15 +13,27 @@ 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)); +void +bridge_encoder_set_dtx(OpusEncoder *st, opus_int32 use_dtx) +{ + opus_encoder_ctl(st, OPUS_SET_DTX(use_dtx)); } -int bridge_get_dtx(OpusEncoder *st) { - int dtx = 0; +opus_int32 +bridge_encoder_get_dtx(OpusEncoder *st) +{ + opus_int32 dtx = 0; opus_encoder_ctl(st, OPUS_GET_DTX(&dtx)); return dtx; } + +opus_int32 +bridge_encoder_get_sample_rate(OpusEncoder *st) +{ + opus_int32 sample_rate = 0; + opus_encoder_ctl(st, OPUS_GET_SAMPLE_RATE(&sample_rate)); + return sample_rate; +} */ import "C" @@ -124,10 +136,14 @@ func (enc *Encoder) UseDTX(use bool) { if use { dtx = 1 } - C.bridge_set_dtx(enc.p, C.int(dtx)) + C.bridge_encoder_set_dtx(enc.p, C.opus_int32(dtx)) } func (enc *Encoder) DTX() bool { - dtx := C.bridge_get_dtx(enc.p) + dtx := C.bridge_encoder_get_dtx(enc.p) return dtx != 0 } + +func (enc *Encoder) SampleRate() int { + return int(C.bridge_encoder_get_sample_rate(enc.p)) +} diff --git a/encoder_test.go b/encoder_test.go index 69aa5e1..b37489f 100644 --- a/encoder_test.go +++ b/encoder_test.go @@ -6,7 +6,7 @@ package opus import "testing" -func TestUseDTX(t *testing.T) { +func TestEncoderDTX(t *testing.T) { enc, err := NewEncoder(8000, 1, APPLICATION_VOIP) if err != nil || enc == nil { t.Errorf("Error creating new encoder: %v", err) @@ -20,3 +20,17 @@ func TestUseDTX(t *testing.T) { } } } + +func TestEncoderSampleRate(t *testing.T) { + sample_rates := []int{8000, 12000, 16000, 24000, 48000} + for _, f := range sample_rates { + enc, err := NewEncoder(f, 1, APPLICATION_VOIP) + if err != nil || enc == nil { + t.Fatalf("Error creating new encoder with sample_rate %d Hz: %v", f, err) + } + f2 := enc.SampleRate() + if f != f2 { + t.Errorf("Unexpected sample rate reported by %d Hz encoder: %d", f, f2) + } + } +}