Documentation
¶
Index ¶
- Constants
- Variables
- func CodecByPayloadType(typ byte) media.Codec
- func HandleLoop(r Reader, h HandlerCloser) error
- func ListenUDPPortRange(portMin, portMax int, ip netip.Addr) (*net.UDPConn, error)
- type AudioCodec
- type AudioEncoder
- type Buffer
- type BytesFrame
- type Event
- type Handler
- type HandlerCloser
- type HandlerFunc
- type Header
- type MediaStreamIn
- type MediaStreamOut
- type Mux
- type Packet
- type ReadStream
- type Reader
- type SeqWriter
- type Session
- type Stream
- type WriteStream
- type Writer
Constants ¶
const ( // DefClockRate is a default clock rate at which RTP timestamps increment. DefClockRate = 8000 // DefFrameDur is a default duration of an audio frame. DefFrameDur = media.DefFrameDur // DefFramesPerSec is a default number of audio frames per second. DefFramesPerSec = media.DefFramesPerSec )
const (
MTUSize = 1500
)
Variables ¶
var ErrListenFailed = errors.New("failed to listen on udp port")
Functions ¶
func CodecByPayloadType ¶
func HandleLoop ¶
func HandleLoop(r Reader, h HandlerCloser) error
Types ¶
type AudioCodec ¶
type AudioCodec interface {
media.Codec
EncodeRTP(w *Stream) media.PCM16Writer
DecodeRTP(w media.Writer[media.PCM16Sample], typ byte) Handler
}
func NewAudioCodec ¶
func NewAudioCodec[S BytesFrame]( info media.CodecInfo, decode func(writer media.PCM16Writer) media.WriteCloser[S], encode func(writer media.WriteCloser[S]) media.PCM16Writer, ) AudioCodec
type AudioEncoder ¶
type AudioEncoder[S BytesFrame] interface { AudioCodec Decode(writer media.PCM16Writer) media.WriteCloser[S] Encode(writer media.WriteCloser[S]) media.PCM16Writer }
type Buffer ¶
type Buffer []*Packet
Buffer is a Writer that clones and appends RTP packets into a slice.
type BytesFrame ¶
type HandlerCloser ¶
type HandlerCloser interface {
Handler
Close()
}
func HandleJitter ¶
func HandleJitter(h HandlerCloser, opts ...jitter.Option) HandlerCloser
func NewNopCloser ¶
func NewNopCloser(h Handler) HandlerCloser
type HandlerFunc ¶
func (HandlerFunc) HandleRTP ¶
func (fnc HandlerFunc) HandleRTP(h *rtp.Header, payload []byte) error
func (HandlerFunc) String ¶
func (fnc HandlerFunc) String() string
type MediaStreamIn ¶
type MediaStreamIn[T BytesFrame] struct { Writer media.Writer[T] }
func NewMediaStreamIn ¶
func NewMediaStreamIn[T BytesFrame](w media.Writer[T]) *MediaStreamIn[T]
func (*MediaStreamIn[T]) HandleRTP ¶
func (s *MediaStreamIn[T]) HandleRTP(_ *rtp.Header, payload []byte) error
func (*MediaStreamIn[T]) String ¶
func (s *MediaStreamIn[T]) String() string
type MediaStreamOut ¶
type MediaStreamOut[T BytesFrame] struct { // contains filtered or unexported fields }
func NewMediaStreamOut ¶
func NewMediaStreamOut[T BytesFrame](s *Stream, sampleRate int) *MediaStreamOut[T]
func (*MediaStreamOut[T]) Close ¶
func (s *MediaStreamOut[T]) Close() error
func (*MediaStreamOut[T]) SampleRate ¶
func (s *MediaStreamOut[T]) SampleRate() int
func (*MediaStreamOut[T]) String ¶
func (s *MediaStreamOut[T]) String() string
func (*MediaStreamOut[T]) WriteSample ¶
func (s *MediaStreamOut[T]) WriteSample(sample T) error
type Mux ¶
type Mux struct {
// contains filtered or unexported fields
}
func NewMux ¶
NewMux creates an RTP handler mux that selects a Handler based on RTP payload type. See Mux.HandleRTP for details.
func (*Mux) HandleRTP ¶
HandleRTP selects a Handler based on payload type. Types can be registered with Register. If no handler is set, a default one will be used.
func (*Mux) SetDefault ¶
SetDefault sets a default RTP handler. Setting nil will drop packets with unregistered type.
type ReadStream ¶
type Reader ¶
type Reader interface {
ReadRTP() (*rtp.Packet, interceptor.Attributes, error)
}
type SeqWriter ¶
type SeqWriter struct {
// contains filtered or unexported fields
}
func NewSeqWriter ¶
NewSeqWriter creates an RTP writer that automatically increments the sequence number.
func (*SeqWriter) CurTS ¶
CurTS requests a timestamp from the stream, using ts as a reference. The function may return timestamp as-is or may adjust it to catch up with other active streams.
func (*SeqWriter) NewStream ¶
NewStream creates a new media stream in RTP and tracks timestamps associated with it.
func (*SeqWriter) NewStreamWithDur ¶
func (*SeqWriter) WriteEvent ¶
type Session ¶
type Session interface {
OpenWriteStream() (WriteStream, error)
AcceptStream() (ReadStream, uint32, error)
Close() error
}
type Stream ¶
type Stream struct {
// contains filtered or unexported fields
}
func (*Stream) Delay ¶
Delay advances the timestamp of the next frame. Typically used in combination with WritePayloadAtCurrent.
func (*Stream) DelayN ¶
DelayN is similar to Delay, but it increments time in multiples of the frame durations.
func (*Stream) GetCurrentTimestamp ¶
func (*Stream) ResetTimestamp ¶
func (*Stream) WritePayload ¶
WritePayload writes the payload to RTP and increments the timestamp.
func (*Stream) WritePayloadAtCurrent ¶
WritePayloadAtCurrent writes the payload to RTP at the current timestamp. This allows to emit multiple different payloads with the same timestamp in this stream (e.g. DTMF). The caller is expected to call Delay or DelayN at some point to advances the timestamp.