return opus_encoder_ctl(st, OPUS_GET_PACKET_LOSS_PERC(loss_perc));
}
+int
+bridge_encoder_reset_state(OpusEncoder *st)
+{
+ return opus_encoder_ctl(st, OPUS_RESET_STATE);
+}
+
*/
import "C"
}
return int(lossPerc), nil
}
+
+// Reset resets the codec state to be equivalent to a freshly initialized state.
+func (enc *Encoder) Reset() error {
+ res := C.bridge_encoder_reset_state(enc.p)
+ if res != C.OPUS_OK {
+ return Error(res)
+ }
+ return nil
+}
}
}
}
+
+func TestEncoder_Reset(t *testing.T) {
+ enc, err := NewEncoder(48000, 1, AppVoIP)
+ if err != nil || enc == nil {
+ t.Errorf("Error creating new encoder: %v", err)
+ }
+ RunTestCodec(t, enc)
+ if err := enc.Reset(); err != nil {
+ t.Errorf("Error reset encoder: %v", err)
+ }
+ RunTestCodec(t, enc)
+}
}
func TestCodec(t *testing.T) {
+ const SAMPLE_RATE = 48000
+ enc, err := NewEncoder(SAMPLE_RATE, 1, AppVoIP)
+ if err != nil || enc == nil {
+ t.Fatalf("Error creating new encoder: %v", err)
+ }
+ RunTestCodec(t, enc)
+}
+
+func RunTestCodec(t *testing.T, enc *Encoder) {
// Create bogus input sound
const G4 = 391.995
const SAMPLE_RATE = 48000
const FRAME_SIZE_MS = 60
const FRAME_SIZE = SAMPLE_RATE * FRAME_SIZE_MS / 1000
pcm := make([]int16, FRAME_SIZE)
- enc, err := NewEncoder(SAMPLE_RATE, 1, AppVoIP)
- if err != nil || enc == nil {
- t.Fatalf("Error creating new encoder: %v", err)
- }
addSine(pcm, SAMPLE_RATE, G4)
data := make([]byte, 1000)
n, err := enc.Encode(pcm, data)