Add support for setting and getting the ogg muxing delay
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
parent
afe0cd7874
commit
4421c708d1
12
callbacks.c
12
callbacks.c
|
@ -85,6 +85,18 @@ bridge_encoder_get_sample_rate(OggOpusEnc *st, opus_int32 *sample_rate)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
bridge_encoder_set_muxing_delay(OggOpusEnc *st, opus_int32 delay)
|
||||||
|
{
|
||||||
|
return ope_encoder_ctl(st, OPE_SET_MUXING_DELAY(delay));
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
bridge_encoder_get_muxing_delay(OggOpusEnc *st, opus_int32 *delay)
|
||||||
|
{
|
||||||
|
return ope_encoder_ctl(st, OPE_GET_MUXING_DELAY(delay));
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
bridge_encoder_set_bitrate(OggOpusEnc *st, opus_int32 bitrate)
|
bridge_encoder_set_bitrate(OggOpusEnc *st, opus_int32 bitrate)
|
||||||
{
|
{
|
||||||
|
|
29
encoder.go
29
encoder.go
|
@ -5,9 +5,11 @@
|
||||||
package opus
|
package opus
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"runtime/cgo"
|
"runtime/cgo"
|
||||||
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -25,6 +27,11 @@ bridge_encoder_get_dtx(OggOpusEnc *st, opus_int32 *dtx);
|
||||||
int
|
int
|
||||||
bridge_encoder_get_sample_rate(OggOpusEnc *st, opus_int32 *sample_rate);
|
bridge_encoder_get_sample_rate(OggOpusEnc *st, opus_int32 *sample_rate);
|
||||||
|
|
||||||
|
int
|
||||||
|
bridge_encoder_set_muxing_delay(OggOpusEnc *st, opus_int32 delay);
|
||||||
|
|
||||||
|
int
|
||||||
|
bridge_encoder_get_muxing_delay(OggOpusEnc *st, opus_int32 *delay);
|
||||||
|
|
||||||
int
|
int
|
||||||
bridge_encoder_set_bitrate(OggOpusEnc *st, opus_int32 bitrate);
|
bridge_encoder_set_bitrate(OggOpusEnc *st, opus_int32 bitrate);
|
||||||
|
@ -285,6 +292,28 @@ func (enc *Encoder) Bitrate() (int, error) {
|
||||||
return int(bitrate), nil
|
return int(bitrate), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetMuxingDelay sets maximum container delay
|
||||||
|
func (enc *Encoder) SetMuxingDelay(delay time.Duration) error {
|
||||||
|
if delay < 0 || delay > time.Millisecond*1000 {
|
||||||
|
return errors.New("value must be between 0 to 1000 milliseconds")
|
||||||
|
}
|
||||||
|
res := C.bridge_encoder_set_muxing_delay(enc.p, C.opus_int32(delay.Milliseconds()*48))
|
||||||
|
if res != C.OPUS_OK {
|
||||||
|
return Error(res)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// MuxingDelay returns the maximum container delay
|
||||||
|
func (enc *Encoder) MuxingDelay() (time.Duration, error) {
|
||||||
|
var delay C.opus_int32
|
||||||
|
res := C.bridge_encoder_get_muxing_delay(enc.p, &delay)
|
||||||
|
if res != C.OPUS_OK {
|
||||||
|
return 0, Error(res)
|
||||||
|
}
|
||||||
|
return time.Millisecond * time.Duration(int(delay)/48), nil
|
||||||
|
}
|
||||||
|
|
||||||
// SetComplexity sets the encoder's computational complexity
|
// SetComplexity sets the encoder's computational complexity
|
||||||
func (enc *Encoder) SetComplexity(complexity int) error {
|
func (enc *Encoder) SetComplexity(complexity int) error {
|
||||||
res := C.bridge_encoder_set_complexity(enc.p, C.opus_int32(complexity))
|
res := C.bridge_encoder_set_complexity(enc.p, C.opus_int32(complexity))
|
||||||
|
|
Loading…
Reference in a new issue