forked from jshiffer/matterbridge
Implement a workaround to signal Opus support (mumble) (#1764)
* Mumble: Implement a workaround to signal Opus support without pulling in the CGO gopus dependency. * mumble: lowercase error messages * mumble: Add link to #1750 in bridge/mumble/codec.go
This commit is contained in:
parent
c51753cab1
commit
663850a2b8
70
bridge/mumble/codec.go
Normal file
70
bridge/mumble/codec.go
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
package bmumble
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"layeh.com/gumble/gumble"
|
||||||
|
)
|
||||||
|
|
||||||
|
// This is a dummy implementation of a Gumble audio codec which claims
|
||||||
|
// to implement Opus, but does not actually do anything. This serves
|
||||||
|
// as a workaround until https://github.com/layeh/gumble/pull/61 is
|
||||||
|
// merged.
|
||||||
|
// See https://github.com/42wim/matterbridge/issues/1750 for details.
|
||||||
|
|
||||||
|
const (
|
||||||
|
audioCodecIDOpus = 4
|
||||||
|
)
|
||||||
|
|
||||||
|
func registerNullCodecAsOpus() {
|
||||||
|
codec := &NullCodec{
|
||||||
|
encoder: &NullAudioEncoder{},
|
||||||
|
decoder: &NullAudioDecoder{},
|
||||||
|
}
|
||||||
|
gumble.RegisterAudioCodec(audioCodecIDOpus, codec)
|
||||||
|
}
|
||||||
|
|
||||||
|
type NullCodec struct {
|
||||||
|
encoder *NullAudioEncoder
|
||||||
|
decoder *NullAudioDecoder
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *NullCodec) ID() int {
|
||||||
|
return audioCodecIDOpus
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *NullCodec) NewEncoder() gumble.AudioEncoder {
|
||||||
|
e := &NullAudioEncoder{}
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *NullCodec) NewDecoder() gumble.AudioDecoder {
|
||||||
|
d := &NullAudioDecoder{}
|
||||||
|
return d
|
||||||
|
}
|
||||||
|
|
||||||
|
type NullAudioEncoder struct{}
|
||||||
|
|
||||||
|
func (e *NullAudioEncoder) ID() int {
|
||||||
|
return audioCodecIDOpus
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *NullAudioEncoder) Encode(pcm []int16, mframeSize, maxDataBytes int) ([]byte, error) {
|
||||||
|
return nil, fmt.Errorf("not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *NullAudioEncoder) Reset() {
|
||||||
|
}
|
||||||
|
|
||||||
|
type NullAudioDecoder struct{}
|
||||||
|
|
||||||
|
func (d *NullAudioDecoder) ID() int {
|
||||||
|
return audioCodecIDOpus
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *NullAudioDecoder) Decode(data []byte, frameSize int) ([]int16, error) {
|
||||||
|
return nil, fmt.Errorf("not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *NullAudioDecoder) Reset() {
|
||||||
|
}
|
@ -185,6 +185,7 @@ func (b *Bmumble) doConnect() error {
|
|||||||
gumbleConfig.Password = password
|
gumbleConfig.Password = password
|
||||||
}
|
}
|
||||||
|
|
||||||
|
registerNullCodecAsOpus()
|
||||||
client, err := gumble.DialWithDialer(new(net.Dialer), b.GetString("Server"), gumbleConfig, &b.tlsConfig)
|
client, err := gumble.DialWithDialer(new(net.Dialer), b.GetString("Server"), gumbleConfig, &b.tlsConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
Reference in New Issue
Block a user