Documentation
¶
Index ¶
- Constants
- Variables
- func CodecByPayloadType(typ byte) media.Codec
- func EncodePCM(w *Stream, c media.AudioCodec) media.PCM16Writer
- func HandleLoop(r Reader, h HandlerCloser) error
- func ListenUDPPortRange(portMin, portMax int, ip netip.Addr) (*net.UDPConn, error)
- func ListenUDPPortRangeWithConfig(portMin, portMax int, ip netip.Addr, lc *net.ListenConfig) (*net.UDPConn, error)
- func WriteAudio[S BytesFrame](w *Stream, c media.AudioFrameCodec[S]) media.WriteCloser[S]
- type Buffer
- type BytesFrame
- type Event
- type Handler
- type HandlerCloser
- func DecodePCM(w media.PCM16Writer, c media.AudioCodec, typ byte) HandlerCloser
- func HandleAudio[S BytesFrame](w media.WriteCloser[S], c media.AudioFrameCodec[S], typ byte) HandlerCloser
- func HandleJitter(h HandlerCloser, opts ...jitter.Option) HandlerCloser
- func HandlePayload(w media.BytesWriter, typ byte) HandlerCloser
- func NewNopCloser(h Handler) HandlerCloser
- type HandlerFunc
- type Header
- type MediaStreamIn
- type MediaStreamOut
- type Mux
- type Packet
- type ReadStream
- type Reader
- type SeqWriter
- type Session
- type Stream
- func (s *Stream) Close() error
- func (s *Stream) Delay(dur uint32)
- func (s *Stream) DelayN(n int)
- func (s *Stream) GetCurrentTimestamp() uint32
- func (s *Stream) ResetTimestamp(ts uint32)
- func (s *Stream) String() string
- func (s *Stream) WritePayload(data []byte, marker bool) error
- func (s *Stream) WritePayloadAtCurrent(data []byte, marker bool) error
- func (s *Stream) WriteRaw(data []byte) error
- 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 EncodePCM ¶
func EncodePCM(w *Stream, c media.AudioCodec) media.PCM16Writer
func HandleLoop ¶
func HandleLoop(r Reader, h HandlerCloser) error
func ListenUDPPortRange ¶
func WriteAudio ¶
func WriteAudio[S BytesFrame](w *Stream, c media.AudioFrameCodec[S]) media.WriteCloser[S]
Types ¶
type Buffer ¶
type Buffer []*Packet
Buffer is a Writer that clones and appends RTP packets into a slice.
type BytesFrame ¶
type BytesFrame interface {
media.BytesFrame
}
type HandlerCloser ¶
type HandlerCloser interface {
Handler
Close()
}
func DecodePCM ¶
func DecodePCM(w media.PCM16Writer, c media.AudioCodec, typ byte) HandlerCloser
func HandleAudio ¶
func HandleAudio[S BytesFrame](w media.WriteCloser[S], c media.AudioFrameCodec[S], typ byte) HandlerCloser
func HandleJitter ¶
func HandleJitter(h HandlerCloser, opts ...jitter.Option) HandlerCloser
func HandlePayload ¶
func HandlePayload(w media.BytesWriter, typ byte) 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.