Documentation
¶
Index ¶
- type Buffer
- func (b *Buffer) GetLostRateBandwidth(cycle uint64) (float64, uint64)
- func (b *Buffer) GetNackPair(buffer [65536]*rtp.Packet, begin, end uint16) (rtcp.NackPair, int)
- func (b *Buffer) GetPacket(sn uint16) *rtp.Packet
- func (b *Buffer) GetPayloadType() uint8
- func (b *Buffer) GetRTCPChan() chan rtcp.Packet
- func (b *Buffer) GetSSRC() uint32
- func (b *Buffer) Push(p *rtp.Packet)
- func (b *Buffer) Stop()
- type BufferOptions
- type Config
- type ICEServerConfig
- type MediaEngine
- type Receiver
- type Router
- type RouterConfig
- type SFU
- type Sender
- type Session
- type Transport
- type WebRTCConfig
- type WebRTCReceiver
- func (w *WebRTCReceiver) Close()
- func (w *WebRTCReceiver) GetPacket(sn uint16) *rtp.Packet
- func (w *WebRTCReceiver) OnCloseHandler(fn func())
- func (w *WebRTCReceiver) ReadRTCP() chan rtcp.Packet
- func (w *WebRTCReceiver) ReadRTP() chan *rtp.Packet
- func (w *WebRTCReceiver) Track() *webrtc.Track
- func (w *WebRTCReceiver) WriteRTCP(pkt rtcp.Packet) error
- type WebRTCSender
- type WebRTCTransport
- func (p *WebRTCTransport) AddICECandidate(candidate webrtc.ICECandidateInit) error
- func (p *WebRTCTransport) AddTransceiverFromKind(kind webrtc.RTPCodecType, init ...webrtc.RtpTransceiverInit) (*webrtc.RTPTransceiver, error)
- func (p *WebRTCTransport) Close() error
- func (p *WebRTCTransport) CreateAnswer() (webrtc.SessionDescription, error)
- func (p *WebRTCTransport) CreateOffer() (webrtc.SessionDescription, error)
- func (p *WebRTCTransport) GetRouter(ssrc uint32) *Router
- func (p *WebRTCTransport) ID() string
- func (p *WebRTCTransport) LocalDescription() *webrtc.SessionDescription
- func (p *WebRTCTransport) NewSender(intrack *webrtc.Track) (Sender, error)
- func (p *WebRTCTransport) OnConnectionStateChange(f func(webrtc.PeerConnectionState))
- func (p *WebRTCTransport) OnDataChannel(f func(*webrtc.DataChannel))
- func (p *WebRTCTransport) OnICECandidate(f func(c *webrtc.ICECandidate))
- func (p *WebRTCTransport) OnNegotiationNeeded(f func())
- func (p *WebRTCTransport) OnTrack(f func(*webrtc.Track, *webrtc.RTPReceiver))
- func (p *WebRTCTransport) Routers() map[uint32]*Router
- func (p *WebRTCTransport) SetLocalDescription(desc webrtc.SessionDescription) error
- func (p *WebRTCTransport) SetRemoteDescription(desc webrtc.SessionDescription) error
- type WebRTCTransportConfig
- type WebRTCVideoReceiverConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Buffer ¶
type Buffer struct {
// contains filtered or unexported fields
}
Buffer contains all packets
func NewBuffer ¶
func NewBuffer(ssrc uint32, pt uint8, o BufferOptions) *Buffer
NewBuffer constructs a new Buffer
func (*Buffer) GetLostRateBandwidth ¶
GetLostRateBandwidth calc lostRate and bandwidth by cycle
func (*Buffer) GetNackPair ¶
GetNackPair calc nackpair
func (*Buffer) GetPayloadType ¶
GetPayloadType get payloadtype
func (*Buffer) GetRTCPChan ¶
GetRTCPChan return rtcp channel
type BufferOptions ¶
type BufferOptions struct {
BufferTime int
}
BufferOptions provides configuration options for the buffer
type Config ¶
type Config struct { WebRTC WebRTCConfig `mapstructure:"webrtc"` Log log.Config `mapstructure:"log"` Router RouterConfig `mapstructure:"router"` }
Config for base SFU
type ICEServerConfig ¶
type ICEServerConfig struct { URLs []string `mapstructure:"urls"` Username string `mapstructure:"username"` Credential string `mapstructure:"credential"` }
ICEServerConfig defines parameters for ice servers
type MediaEngine ¶
type MediaEngine struct {
webrtc.MediaEngine
}
MediaEngine handles stream codecs
func (*MediaEngine) PopulateFromSDP ¶
func (e *MediaEngine) PopulateFromSDP(sd webrtc.SessionDescription) error
PopulateFromSDP finds all codecs in sd and adds them to m, using the dynamic payload types and parameters from sd. PopulateFromSDP is intended for use when answering a request. The offerer sets the PayloadTypes for the connection. PopulateFromSDP allows an answerer to properly match the PayloadTypes from the offerer. A MediaEngine populated by PopulateFromSDP should be used only for a single session.
type Receiver ¶
type Receiver interface { Track() *webrtc.Track GetPacket(sn uint16) *rtp.Packet ReadRTP() chan *rtp.Packet ReadRTCP() chan rtcp.Packet WriteRTCP(rtcp.Packet) error OnCloseHandler(fn func()) Close() // contains filtered or unexported methods }
Receiver defines a interface for a track receiver
func NewWebRTCReceiver ¶ added in v1.0.16
NewWebRTCReceiver creates a new webrtc track receiver
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
Router defines a track rtp/rtcp router
type RouterConfig ¶ added in v1.0.15
type RouterConfig struct { REMBFeedback bool `mapstructure:"subrembfeedback"` MaxBandwidth uint64 `mapstructure:"maxbandwidth"` MaxNackTime int64 `mapstructure:"maxnacktime"` Video WebRTCVideoReceiverConfig `mapstructure:"video"` }
RouterConfig defines router configurations
type SFU ¶
type SFU struct {
// contains filtered or unexported fields
}
SFU represents an sfu instance
func (*SFU) NewWebRTCTransport ¶
func (s *SFU) NewWebRTCTransport(sid string, me MediaEngine) (*WebRTCTransport, error)
NewWebRTCTransport creates a new WebRTCTransport that is a member of a session
type Sender ¶
type Sender interface { ReadRTCP() chan rtcp.Packet WriteRTP(*rtp.Packet) Close() OnCloseHandler(fn func()) // contains filtered or unexported methods }
Sender defines a interface for a track receiver
func NewWebRTCSender ¶
NewWebRTCSender creates a new track sender instance
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
Session represents a set of transports. Transports inside a session are automatically subscribed to each other.
func (*Session) AddTransport ¶
AddTransport adds a transport to the session
func (*Session) RemoveTransport ¶
RemoveTransport removes a transport for the session
func (*Session) Transports ¶
Transports returns transports in this session
type Transport ¶
type Transport interface { ID() string GetRouter(uint32) *Router Routers() map[uint32]*Router NewSender(*webrtc.Track) (Sender, error) // contains filtered or unexported methods }
Transport represents a transport that media can be sent over
type WebRTCConfig ¶
type WebRTCConfig struct { ICEPortRange []uint16 `mapstructure:"portrange"` ICEServers []ICEServerConfig `mapstructure:"iceserver"` NAT1To1IPs []string `mapstructure:"nat1to1"` }
WebRTCConfig defines parameters for ice
type WebRTCReceiver ¶ added in v1.0.16
type WebRTCReceiver struct {
// contains filtered or unexported fields
}
WebRTCReceiver receives a video track
func (*WebRTCReceiver) Close ¶ added in v1.0.16
func (w *WebRTCReceiver) Close()
Close gracefully close the track
func (*WebRTCReceiver) GetPacket ¶ added in v1.0.16
func (w *WebRTCReceiver) GetPacket(sn uint16) *rtp.Packet
GetPacket get a buffered packet if we have one
func (*WebRTCReceiver) OnCloseHandler ¶ added in v1.0.16
func (w *WebRTCReceiver) OnCloseHandler(fn func())
OnCloseHandler method to be called on remote tracked removed
func (*WebRTCReceiver) ReadRTCP ¶ added in v1.0.16
func (w *WebRTCReceiver) ReadRTCP() chan rtcp.Packet
ReadRTCP read rtcp packets
func (*WebRTCReceiver) ReadRTP ¶ added in v1.0.16
func (w *WebRTCReceiver) ReadRTP() chan *rtp.Packet
ReadRTP read rtp packets
func (*WebRTCReceiver) Track ¶ added in v1.0.16
func (w *WebRTCReceiver) Track() *webrtc.Track
Track returns receiver track
type WebRTCSender ¶
type WebRTCSender struct {
// contains filtered or unexported fields
}
WebRTCSender represents a Sender which writes RTP to a webrtc track
func (*WebRTCSender) OnClose ¶ added in v1.0.5
func (s *WebRTCSender) OnClose(f func())
OnClose is called when the sender is closed
func (*WebRTCSender) OnCloseHandler ¶ added in v1.0.16
func (s *WebRTCSender) OnCloseHandler(fn func())
OnCloseHandler method to be called on remote tracked removed
func (*WebRTCSender) ReadRTCP ¶
func (s *WebRTCSender) ReadRTCP() chan rtcp.Packet
ReadRTCP read rtp packet
func (*WebRTCSender) WriteRTP ¶
func (s *WebRTCSender) WriteRTP(pkt *rtp.Packet)
WriteRTP to the track
type WebRTCTransport ¶
type WebRTCTransport struct {
// contains filtered or unexported fields
}
WebRTCTransport represents a sfu peer connection
func NewWebRTCTransport ¶
func NewWebRTCTransport(ctx context.Context, session *Session, me MediaEngine, cfg WebRTCTransportConfig) (*WebRTCTransport, error)
NewWebRTCTransport creates a new WebRTCTransport
func (*WebRTCTransport) AddICECandidate ¶
func (p *WebRTCTransport) AddICECandidate(candidate webrtc.ICECandidateInit) error
AddICECandidate to peer connection
func (*WebRTCTransport) AddTransceiverFromKind ¶ added in v1.0.5
func (p *WebRTCTransport) AddTransceiverFromKind(kind webrtc.RTPCodecType, init ...webrtc.RtpTransceiverInit) (*webrtc.RTPTransceiver, error)
AddTransceiverFromKind adds RtpTransceiver on WebRTC Transport
func (*WebRTCTransport) CreateAnswer ¶
func (p *WebRTCTransport) CreateAnswer() (webrtc.SessionDescription, error)
CreateAnswer generates the localDescription
func (*WebRTCTransport) CreateOffer ¶
func (p *WebRTCTransport) CreateOffer() (webrtc.SessionDescription, error)
CreateOffer generates the localDescription
func (*WebRTCTransport) GetRouter ¶
func (p *WebRTCTransport) GetRouter(ssrc uint32) *Router
GetRouter returns router with ssrc
func (*WebRTCTransport) LocalDescription ¶ added in v1.0.7
func (p *WebRTCTransport) LocalDescription() *webrtc.SessionDescription
LocalDescription returns the peer connection LocalDescription
func (*WebRTCTransport) NewSender ¶
func (p *WebRTCTransport) NewSender(intrack *webrtc.Track) (Sender, error)
NewSender for peer
func (*WebRTCTransport) OnConnectionStateChange ¶
func (p *WebRTCTransport) OnConnectionStateChange(f func(webrtc.PeerConnectionState))
OnConnectionStateChange handler
func (*WebRTCTransport) OnDataChannel ¶ added in v1.0.4
func (p *WebRTCTransport) OnDataChannel(f func(*webrtc.DataChannel))
OnDataChannel handler
func (*WebRTCTransport) OnICECandidate ¶
func (p *WebRTCTransport) OnICECandidate(f func(c *webrtc.ICECandidate))
OnICECandidate handler
func (*WebRTCTransport) OnNegotiationNeeded ¶
func (p *WebRTCTransport) OnNegotiationNeeded(f func())
OnNegotiationNeeded handler
func (*WebRTCTransport) OnTrack ¶
func (p *WebRTCTransport) OnTrack(f func(*webrtc.Track, *webrtc.RTPReceiver))
OnTrack handler
func (*WebRTCTransport) Routers ¶
func (p *WebRTCTransport) Routers() map[uint32]*Router
Routers returns routers for this peer
func (*WebRTCTransport) SetLocalDescription ¶
func (p *WebRTCTransport) SetLocalDescription(desc webrtc.SessionDescription) error
SetLocalDescription sets the SessionDescription of the remote peer
func (*WebRTCTransport) SetRemoteDescription ¶
func (p *WebRTCTransport) SetRemoteDescription(desc webrtc.SessionDescription) error
SetRemoteDescription sets the SessionDescription of the remote peer
type WebRTCTransportConfig ¶ added in v1.0.3
type WebRTCTransportConfig struct {
// contains filtered or unexported fields
}
WebRTCTransportConfig represents configuration options
type WebRTCVideoReceiverConfig ¶
type WebRTCVideoReceiverConfig struct { REMBCycle int `mapstructure:"rembcycle"` PLICycle int `mapstructure:"plicycle"` TCCCycle int `mapstructure:"tcccycle"` MaxBufferTime int `mapstructure:"maxbuffertime"` ReceiveRTPCycle int `mapstructure:"rtpcycle"` }
WebRTCVideoReceiverConfig .