Documentation
¶
Index ¶
- func NewOpusProvider(encoder *opus.Encoder, pcmProvider FrameProvider) (voice.OpusFrameProvider, error)
- func NewPCMOpusReceiver(decoderCreateFunc func() (*opus.Decoder, error), ...) voice.OpusFrameReceiver
- type CombinedFrameReceiver
- type CombinedPacket
- type FrameProvider
- func NewBufferPCMProvider(provider FrameProvider) FrameProvider
- func NewCustomReader(r io.Reader, rate int, channels int) FrameProvider
- func NewPCMFrameChannelConverterProvider(Provider FrameProvider, rate int, inputChannels int, outputChannels int) FrameProvider
- func NewPCMVolumeFrameProvider(pcmFrameProvider FrameProvider, volumeProvider func() float32) FrameProvider
- func NewPauseablePCMFrameProvider(provider FrameProvider, pauseProvider func() bool) FrameProvider
- func NewReader(r io.Reader) FrameProvider
- func NewVariablePCMFrameProvider(providerFunc func() FrameProvider) FrameProvider
- type FrameReceiver
- func NewPCMCombinerReceiver(logger log.Logger, pcmCombinedFrameReceiver CombinedFrameReceiver) FrameReceiver
- func NewPCMFrameChannelConverterReceiver(receiver FrameReceiver, rate int, inputChannels int, outputChannels int) FrameReceiver
- func NewWriter(w io.Writer, userFilter voice.UserFilterFunc) FrameReceiver
- type Packet
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewOpusProvider ¶
func NewOpusProvider(encoder *opus.Encoder, pcmProvider FrameProvider) (voice.OpusFrameProvider, error)
NewOpusProvider creates a new voice.OpusFrameProvider which gets PCM frames from the given FrameProvider and encodes the PCM frames into Opus frames. You can pass your own *opus.Encoder or nil to use the default Opus encoder(48000hz sample rate, 2 channels, opus.ApplicationAudio & 64kbps bitrate).
func NewPCMOpusReceiver ¶
func NewPCMOpusReceiver(decoderCreateFunc func() (*opus.Decoder, error), pcmFrameReceiver FrameReceiver, userFilter voice.UserFilterFunc) voice.OpusFrameReceiver
NewPCMOpusReceiver creates a new voice.OpusFrameReceiver which receives Opus frames and decodes them into PCM frames. A new decoder is created for each user. You can pass your own *opus.Decoder by passing a decoderCreateFunc or nil to use the default Opus decoder(48000hz sample rate, 2 channels). You can filter users by passing a voice.ShouldReceiveUserFunc or nil to receive all users.
Types ¶
type CombinedFrameReceiver ¶
type CombinedFrameReceiver interface { // ReceiveCombinedPCMFrame is called when a new CombinedPacket is received. ReceiveCombinedPCMFrame(userIDs []snowflake.ID, packet *CombinedPacket) error // Close is called when the CombinedFrameReceiver is no longer needed. It should close any open resources. Close() }
CombinedFrameReceiver is an interface for receiving Packet(s) from multiple users as one CombinedPacket.
func NewCombinedWriter ¶
func NewCombinedWriter(w io.Writer) CombinedFrameReceiver
NewCombinedWriter creates a new CombinedFrameReceiver which writes the CombinedPacket to the given io.Writer.
func NewFrameChannelConverterCombinedReceiver ¶
func NewFrameChannelConverterCombinedReceiver(receiver CombinedFrameReceiver, rate int, inputChannels int, outputChannels int) CombinedFrameReceiver
type CombinedPacket ¶
CombinedPacket is a Packet which got created by combining multiple Packet(s).
type FrameProvider ¶
type FrameProvider interface { // ProvidePCMFrame is called to get a PCM frame. ProvidePCMFrame() ([]int16, error) // Close is called when the provider is no longer needed. It should close any open resources. Close() }
FrameProvider is an interface for providing PCM frames.
func NewBufferPCMProvider ¶
func NewBufferPCMProvider(provider FrameProvider) FrameProvider
func NewCustomReader ¶
func NewCustomReader(r io.Reader, rate int, channels int) FrameProvider
NewCustomReader creates a new FrameProvider which reads PCM frames from the given io.Reader. You can specify the sample rate and number of channels.
func NewPCMFrameChannelConverterProvider ¶
func NewPCMFrameChannelConverterProvider(Provider FrameProvider, rate int, inputChannels int, outputChannels int) FrameProvider
func NewPCMVolumeFrameProvider ¶
func NewPCMVolumeFrameProvider(pcmFrameProvider FrameProvider, volumeProvider func() float32) FrameProvider
func NewPauseablePCMFrameProvider ¶
func NewPauseablePCMFrameProvider(provider FrameProvider, pauseProvider func() bool) FrameProvider
func NewReader ¶
func NewReader(r io.Reader) FrameProvider
NewReader creates a new FrameProvider which reads PCM frames from the given io.Reader.
func NewVariablePCMFrameProvider ¶
func NewVariablePCMFrameProvider(providerFunc func() FrameProvider) FrameProvider
type FrameReceiver ¶
type FrameReceiver interface { // ReceivePCMFrame is called when a PCM frame is received. ReceivePCMFrame(userID snowflake.ID, packet *Packet) error // CleanupUser is called when a user is disconnected. This should close any resources associated with the user. CleanupUser(userID snowflake.ID) // Close is called when the receiver is no longer needed. It should close any open resources. Close() }
FrameReceiver is an interface for receiving PCM frames.
func NewPCMCombinerReceiver ¶
func NewPCMCombinerReceiver(logger log.Logger, pcmCombinedFrameReceiver CombinedFrameReceiver) FrameReceiver
NewPCMCombinerReceiver creates a new FrameReceiver which combines multiple Packet(s) into a single CombinedPacket. You can process the CombinedPacket by passing a CombinedFrameReceiver.
func NewPCMFrameChannelConverterReceiver ¶
func NewPCMFrameChannelConverterReceiver(receiver FrameReceiver, rate int, inputChannels int, outputChannels int) FrameReceiver
func NewWriter ¶
func NewWriter(w io.Writer, userFilter voice.UserFilterFunc) FrameReceiver
NewWriter creates a new FrameReceiver which writes PCM frames to the given io.Writer. You can filter which users should be written by passing a voice.ShouldReceiveUserFunc.
Source Files
¶
- buffer_provider.go
- combined_receiver.go
- frame_channel_converter_combined_receiver.go
- frame_channel_converter_provider.go
- frame_channel_converter_receiver.go
- frame_provider.go
- frame_receiver.go
- opus_provider.go
- opus_receiver.go
- pausable_frame_provider.go
- variable_frame_provider.go
- volume_frame_provider.go