Documentation ¶
Index ¶
- Constants
- Variables
- func IsRedCodec(mime string) bool
- func IsSvcCodec(mime string) bool
- type AudioLevelHandle
- type Bitrates
- type DownTrack
- func (d *DownTrack) AddReceiverReportListener(listener ReceiverReportListener)
- func (d *DownTrack) AllocateNextHigher(availableChannelCapacity int64, allowOvershoot bool) (VideoAllocation, bool)
- func (d *DownTrack) AllocateOptimal(allowOvershoot bool) VideoAllocation
- func (d *DownTrack) BandwidthRequested() int64
- func (d *DownTrack) Bind(t webrtc.TrackLocalContext) (webrtc.RTPCodecParameters, error)
- func (d *DownTrack) ClearStreamAllocatorReportInterval()
- func (d *DownTrack) Close()
- func (d *DownTrack) CloseWithFlush(flush bool)
- func (d *DownTrack) Codec() webrtc.RTPCodecCapability
- func (d *DownTrack) CreateSenderReport() *rtcp.SenderReport
- func (d *DownTrack) CreateSourceDescriptionChunks() []rtcp.SourceDescriptionChunk
- func (d *DownTrack) DebugInfo() map[string]interface{}
- func (d *DownTrack) DistanceToDesired() float64
- func (d *DownTrack) GetConnectionScoreAndQuality() (float32, livekit.ConnectionQuality)
- func (d *DownTrack) GetDeltaStatsSender() map[uint32]*buffer.StreamStatsWithLayers
- func (d *DownTrack) GetLastReceiverReportTime() time.Time
- func (d *DownTrack) GetNackStats() (totalPackets uint32, totalRepeatedNACKs uint32)
- func (d *DownTrack) GetNextHigherTransition(allowOvershoot bool) (VideoTransition, bool)
- func (d *DownTrack) GetState() DownTrackState
- func (d *DownTrack) GetTotalPacketsSent() uint64
- func (d *DownTrack) GetTrackStats() *livekit.RTPStats
- func (d *DownTrack) GetTransceiver() *webrtc.RTPTransceiver
- func (d *DownTrack) HandleRTCPSenderReportData(_payloadType webrtc.PayloadType, isSVC bool, layer int32, ...) error
- func (d *DownTrack) ID() string
- func (d *DownTrack) IsClosed() bool
- func (d *DownTrack) IsDeficient() bool
- func (d *DownTrack) Kind() webrtc.RTPCodecType
- func (d *DownTrack) MaxLayer() buffer.VideoLayer
- func (d *DownTrack) Mute(muted bool)
- func (d *DownTrack) OnBinding(fn func(error))
- func (d *DownTrack) OnCloseHandler(fn func(willBeResumed bool))
- func (d *DownTrack) OnMaxLayerChanged(fn func(dt *DownTrack, layer int32))
- func (d *DownTrack) OnRttUpdate(fn func(dt *DownTrack, rtt uint32))
- func (d *DownTrack) OnStatsUpdate(fn func(dt *DownTrack, stat *livekit.AnalyticsStat))
- func (d *DownTrack) Pause() VideoAllocation
- func (d *DownTrack) ProvisionalAllocate(availableChannelCapacity int64, layers buffer.VideoLayer, allowPause bool, ...) (bool, int64)
- func (d *DownTrack) ProvisionalAllocateCommit() VideoAllocation
- func (d *DownTrack) ProvisionalAllocateGetBestWeightedTransition() VideoTransition
- func (d *DownTrack) ProvisionalAllocateGetCooperativeTransition(allowOvershoot bool) VideoTransition
- func (d *DownTrack) ProvisionalAllocatePrepare()
- func (d *DownTrack) ProvisionalAllocateReset()
- func (d *DownTrack) PubMute(pubMuted bool)
- func (d *DownTrack) RID() string
- func (d *DownTrack) Resync()
- func (d *DownTrack) SSRC() uint32
- func (d *DownTrack) SeedState(state DownTrackState)
- func (d *DownTrack) SetActivePaddingOnMuteUpTrack()
- func (d *DownTrack) SetConnected()
- func (d *DownTrack) SetMaxSpatialLayer(spatialLayer int32)
- func (d *DownTrack) SetMaxTemporalLayer(temporalLayer int32)
- func (d *DownTrack) SetRTPHeaderExtensions(rtpHeaderExtensions []webrtc.RTPHeaderExtensionParameter)
- func (d *DownTrack) SetStreamAllocatorListener(listener DownTrackStreamAllocatorListener)
- func (d *DownTrack) SetStreamAllocatorReportInterval(interval time.Duration)
- func (d *DownTrack) SetTransceiver(transceiver *webrtc.RTPTransceiver)
- func (d *DownTrack) Stop() error
- func (d *DownTrack) StreamID() string
- func (d *DownTrack) SubscriberID() livekit.ParticipantID
- func (d *DownTrack) TrackInfoAvailable()
- func (d *DownTrack) Unbind(_ webrtc.TrackLocalContext) error
- func (d *DownTrack) UpTrackBitrateAvailabilityChange()
- func (d *DownTrack) UpTrackBitrateReport(availableLayers []int32, bitrates Bitrates)
- func (d *DownTrack) UpTrackLayersChange()
- func (d *DownTrack) UpTrackMaxPublishedLayerChange(maxPublishedLayer int32)
- func (d *DownTrack) UpTrackMaxTemporalLayerSeenChange(maxTemporalLayerSeen int32)
- func (d *DownTrack) WritePaddingRTP(bytesToSend int, paddingOnMute bool, forceMarker bool) int
- func (d *DownTrack) WriteRTP(extPkt *buffer.ExtPacket, layer int32) error
- type DownTrackSpreader
- func (d *DownTrackSpreader) Broadcast(writer func(TrackSender))
- func (d *DownTrackSpreader) DownTrackCount() int
- func (d *DownTrackSpreader) Free(subscriberID livekit.ParticipantID)
- func (d *DownTrackSpreader) GetDownTracks() []TrackSender
- func (d *DownTrackSpreader) HasDownTrack(subscriberID livekit.ParticipantID) bool
- func (d *DownTrackSpreader) ResetAndGetDownTracks() []TrackSender
- func (d *DownTrackSpreader) Store(ts TrackSender)
- type DownTrackSpreaderParams
- type DownTrackState
- type DownTrackStreamAllocatorListener
- type DowntrackParams
- type Forwarder
- func (f *Forwarder) AllocateNextHigher(availableChannelCapacity int64, availableLayers []int32, brs Bitrates, ...) (VideoAllocation, bool)
- func (f *Forwarder) AllocateOptimal(availableLayers []int32, brs Bitrates, allowOvershoot bool) VideoAllocation
- func (f *Forwarder) BandwidthRequested(brs Bitrates) int64
- func (f *Forwarder) CheckSync() (bool, int32)
- func (f *Forwarder) CurrentLayer() buffer.VideoLayer
- func (f *Forwarder) DetermineCodec(codec webrtc.RTPCodecCapability, ...)
- func (f *Forwarder) DistanceToDesired(availableLayers []int32, brs Bitrates) float64
- func (f *Forwarder) FilterRTX(nacks []uint16) (filtered []uint16, disallowedLayers [buffer.DefaultMaxLayerSpatial + 1]bool)
- func (f *Forwarder) GetMaxSubscribedSpatial() int32
- func (f *Forwarder) GetNextHigherTransition(brs Bitrates, allowOvershoot bool) (VideoTransition, bool)
- func (f *Forwarder) GetOptimalBandwidthNeeded(brs Bitrates) int64
- func (f *Forwarder) GetPadding(frameEndNeeded bool, outputBuffer []byte) (int, error)
- func (f *Forwarder) GetSenderReportParams() (int32, uint64, *buffer.RTCPSenderReportData)
- func (f *Forwarder) GetSnTsForBlankFrames(frameRate uint32, numPackets int) ([]SnTs, bool, error)
- func (f *Forwarder) GetSnTsForPadding(num int, forceMarker bool) ([]SnTs, error)
- func (f *Forwarder) GetState() ForwarderState
- func (f *Forwarder) GetTranslationParams(extPkt *buffer.ExtPacket, layer int32) (TranslationParams, error)
- func (f *Forwarder) IsAnyMuted() bool
- func (f *Forwarder) IsDeficient() bool
- func (f *Forwarder) IsMuted() bool
- func (f *Forwarder) IsPubMuted() bool
- func (f *Forwarder) MaxLayer() buffer.VideoLayer
- func (f *Forwarder) Mute(muted bool, isSubscribeMutable bool) bool
- func (f *Forwarder) Pause(availableLayers []int32, brs Bitrates) VideoAllocation
- func (f *Forwarder) PauseReason() VideoPauseReason
- func (f *Forwarder) ProvisionalAllocate(availableChannelCapacity int64, layer buffer.VideoLayer, allowPause bool, ...) (bool, int64)
- func (f *Forwarder) ProvisionalAllocateCommit() VideoAllocation
- func (f *Forwarder) ProvisionalAllocateGetBestWeightedTransition() (VideoTransition, []int32, Bitrates)
- func (f *Forwarder) ProvisionalAllocateGetCooperativeTransition(allowOvershoot bool) (VideoTransition, []int32, Bitrates)
- func (f *Forwarder) ProvisionalAllocatePrepare(availableLayers []int32, bitrates Bitrates)
- func (f *Forwarder) ProvisionalAllocateReset()
- func (f *Forwarder) PubMute(pubMuted bool) bool
- func (f *Forwarder) RTPMungerDebugInfo() map[string]interface{}
- func (f *Forwarder) Resync()
- func (f *Forwarder) SeedState(state ForwarderState)
- func (f *Forwarder) SetMaxPublishedLayer(maxPublishedLayer int32) bool
- func (f *Forwarder) SetMaxSpatialLayer(spatialLayer int32) (bool, buffer.VideoLayer)
- func (f *Forwarder) SetMaxTemporalLayer(temporalLayer int32) (bool, buffer.VideoLayer)
- func (f *Forwarder) SetMaxTemporalLayerSeen(maxTemporalLayerSeen int32) bool
- func (f *Forwarder) SetRefSenderReport(isSVC bool, layer int32, srData *buffer.RTCPSenderReportData)
- func (f *Forwarder) TargetLayer() buffer.VideoLayer
- func (f *Forwarder) TranslateCodecHeader(extPkt *buffer.ExtPacket, tpr *TranslationParamsRTP, outputBuffer []byte) (bool, int, int, error)
- type ForwarderState
- type PlayoutDelayController
- type PlayoutDelayState
- type RTPMunger
- func (r *RTPMunger) DebugInfo() map[string]interface{}
- func (r *RTPMunger) FilterRTX(nacks []uint16) []uint16
- func (r *RTPMunger) GetLast() RTPMungerState
- func (r *RTPMunger) GetPinnedTSOffset() uint64
- func (r *RTPMunger) IsOnFrameBoundary() bool
- func (r *RTPMunger) PacketDropped(extPkt *buffer.ExtPacket)
- func (r *RTPMunger) SeedLast(state RTPMungerState)
- func (r *RTPMunger) SetLastSnTs(extPkt *buffer.ExtPacket)
- func (r *RTPMunger) UpdateAndGetPaddingSnTs(num int, clockRate uint32, frameRate uint32, forceMarker bool, ...) ([]SnTs, error)
- func (r *RTPMunger) UpdateAndGetSnTs(extPkt *buffer.ExtPacket, marker bool) (TranslationParamsRTP, error)
- func (r *RTPMunger) UpdateSnTsOffsets(extPkt *buffer.ExtPacket, snAdjust uint64, tsAdjust uint64)
- type RTPMungerState
- type ReceiverOpts
- type ReceiverReportListener
- type RedPrimaryReceiver
- func (r *RedPrimaryReceiver) AddDownTrack(track TrackSender) error
- func (r *RedPrimaryReceiver) CanClose() bool
- func (r *RedPrimaryReceiver) Close()
- func (r *RedPrimaryReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID)
- func (r *RedPrimaryReceiver) ForwardRTP(pkt *buffer.ExtPacket, spatialLayer int32)
- func (r *RedPrimaryReceiver) IsClosed() bool
- func (r *RedPrimaryReceiver) ReadRTP(buf []byte, layer uint8, sn uint16) (int, error)
- type RedReceiver
- func (r *RedReceiver) AddDownTrack(track TrackSender) error
- func (r *RedReceiver) CanClose() bool
- func (r *RedReceiver) Close()
- func (r *RedReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID)
- func (r *RedReceiver) ForwardRTP(pkt *buffer.ExtPacket, spatialLayer int32)
- func (r *RedReceiver) IsClosed() bool
- func (r *RedReceiver) ReadRTP(buf []byte, layer uint8, sn uint16) (int, error)
- type SequenceNumberOrdering
- type SnTs
- type StreamTrackerManager
- func (s *StreamTrackerManager) AddDependencyDescriptorTrackers()
- func (s *StreamTrackerManager) AddTracker(layer int32) streamtracker.StreamTrackerWorker
- func (s *StreamTrackerManager) Close()
- func (s *StreamTrackerManager) DistanceToDesired() float64
- func (s *StreamTrackerManager) GetLayeredBitrate() ([]int32, Bitrates)
- func (s *StreamTrackerManager) GetMaxPublishedLayer() int32
- func (s *StreamTrackerManager) GetMaxTemporalLayerSeen() int32
- func (s *StreamTrackerManager) GetTracker(layer int32) streamtracker.StreamTrackerWorker
- func (s *StreamTrackerManager) IsPaused() bool
- func (s *StreamTrackerManager) RemoveAllTrackers()
- func (s *StreamTrackerManager) RemoveTracker(layer int32)
- func (s *StreamTrackerManager) SetListener(listener StreamTrackerManagerListener)
- func (s *StreamTrackerManager) SetMaxExpectedSpatialLayer(layer int32) int32
- func (s *StreamTrackerManager) SetPaused(paused bool)
- func (s *StreamTrackerManager) UpdateTrackInfo(ti *livekit.TrackInfo)
- type StreamTrackerManagerListener
- type TrackReceiver
- type TrackSender
- type TranslationParams
- type TranslationParamsRTP
- type VideoAllocation
- type VideoAllocationProvisional
- type VideoPauseReason
- type VideoTransition
- type WebRTCReceiver
- func (w *WebRTCReceiver) AddDownTrack(track TrackSender) error
- func (w *WebRTCReceiver) AddUpTrack(track *webrtc.TrackRemote, buff *buffer.Buffer) error
- func (w *WebRTCReceiver) Codec() webrtc.RTPCodecParameters
- func (w *WebRTCReceiver) DebugInfo() map[string]interface{}
- func (w *WebRTCReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID)
- func (w *WebRTCReceiver) GetAudioLevel() (float64, bool)
- func (w *WebRTCReceiver) GetConnectionScoreAndQuality() (float32, livekit.ConnectionQuality)
- func (w *WebRTCReceiver) GetDeltaStats() map[uint32]*buffer.StreamStatsWithLayers
- func (w *WebRTCReceiver) GetLayeredBitrate() ([]int32, Bitrates)
- func (w *WebRTCReceiver) GetPrimaryReceiverForRed() TrackReceiver
- func (w *WebRTCReceiver) GetRedReceiver() TrackReceiver
- func (w *WebRTCReceiver) GetTemporalLayerFpsForSpatial(layer int32) []float32
- func (w *WebRTCReceiver) GetTrackStats() *livekit.RTPStats
- func (w *WebRTCReceiver) HeaderExtensions() []webrtc.RTPHeaderExtensionParameter
- func (w *WebRTCReceiver) IsClosed() bool
- func (w *WebRTCReceiver) Kind() webrtc.RTPCodecType
- func (w *WebRTCReceiver) OnAvailableLayersChanged()
- func (w *WebRTCReceiver) OnBitrateAvailabilityChanged()
- func (w *WebRTCReceiver) OnBitrateReport(availableLayers []int32, bitrates Bitrates)
- func (w *WebRTCReceiver) OnCloseHandler(fn func())
- func (w *WebRTCReceiver) OnMaxAvailableLayerChanged(maxAvailableLayer int32)
- func (w *WebRTCReceiver) OnMaxLayerChange(fn func(maxLayer int32))
- func (w *WebRTCReceiver) OnMaxPublishedLayerChanged(maxPublishedLayer int32)
- func (w *WebRTCReceiver) OnMaxTemporalLayerSeenChanged(maxTemporalLayerSeen int32)
- func (w *WebRTCReceiver) OnStatsUpdate(fn func(w *WebRTCReceiver, stat *livekit.AnalyticsStat))
- func (w *WebRTCReceiver) ReadRTP(buf []byte, layer uint8, sn uint16) (int, error)
- func (w *WebRTCReceiver) SendPLI(layer int32, force bool)
- func (w *WebRTCReceiver) SetMaxExpectedSpatialLayer(layer int32)
- func (w *WebRTCReceiver) SetRTT(rtt uint32)
- func (w *WebRTCReceiver) SetUpTrackPaused(paused bool)
- func (w *WebRTCReceiver) StreamID() string
- func (w *WebRTCReceiver) TrackID() livekit.TrackID
- func (w *WebRTCReceiver) TrackInfo() *livekit.TrackInfo
- func (w *WebRTCReceiver) UpdateTrackInfo(ti *livekit.TrackInfo)
Constants ¶
const ( RTPPaddingMaxPayloadSize = 255 RTPPaddingEstimatedHeaderSize = 20 RTPBlankFramesMuteSeconds = float32(1.0) RTPBlankFramesCloseSeconds = float32(0.2) FlagStopRTXOnPLI = true )
const ( FlagPauseOnDowngrade = true FlagFilterRTX = false FlagFilterRTXLayers = true TransitionCostSpatial = 10 ResumeBehindThresholdSeconds = float64(0.2) // 200ms ResumeBehindHighThresholdSeconds = float64(2.0) // 2 seconds LayerSwitchBehindThresholdSeconds = float64(0.05) // 50ms SwitchAheadThresholdSeconds = float64(0.025) // 25ms )
Forwarder
const (
MimeTypeAudioRed = "audio/red"
)
const (
RtxGateWindow = 2000
)
Variables ¶
var ( ErrUnknownKind = errors.New("unknown kind of codec") ErrOutOfOrderSequenceNumberCacheMiss = errors.New("out-of-order sequence number not found in cache") ErrPaddingOnlyPacket = errors.New("padding only packet that need not be forwarded") ErrDuplicatePacket = errors.New("duplicate packet") ErrPaddingNotOnFrameBoundary = errors.New("padding cannot send on non-frame boundary") ErrDownTrackAlreadyBound = errors.New("already bound") ErrPayloadOverflow = errors.New("payload overflow") )
var ( VP8KeyFrame8x8 = []byte{ 0x10, 0x02, 0x00, 0x9d, 0x01, 0x2a, 0x08, 0x00, 0x08, 0x00, 0x00, 0x47, 0x08, 0x85, 0x85, 0x88, 0x85, 0x84, 0x88, 0x02, 0x02, 0x00, 0x0c, 0x0d, 0x60, 0x00, 0xfe, 0xff, 0xab, 0x50, 0x80, } H264KeyFrame2x2SPS = []byte{ 0x67, 0x42, 0xc0, 0x1f, 0x0f, 0xd9, 0x1f, 0x88, 0x88, 0x84, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0xc8, 0x3c, 0x60, 0xc9, 0x20, } H264KeyFrame2x2PPS = []byte{ 0x68, 0x87, 0xcb, 0x83, 0xcb, 0x20, } H264KeyFrame2x2IDR = []byte{ 0x65, 0x88, 0x84, 0x0a, 0xf2, 0x62, 0x80, 0x00, 0xa7, 0xbe, } H264KeyFrame2x2 = [][]byte{H264KeyFrame2x2SPS, H264KeyFrame2x2PPS, H264KeyFrame2x2IDR} OpusSilenceFrame = []byte{ 0xf8, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, } )
var ( ErrReceiverClosed = errors.New("receiver closed") ErrDownTrackAlreadyExist = errors.New("DownTrack already exist") ErrBufferNotFound = errors.New("buffer not found") ErrDuplicateLayer = errors.New("duplicate layer") )
var ( ErrIncompleteRedHeader = errors.New("incomplete red block header") ErrIncompleteRedBlock = errors.New("incomplete red block payload") )
var (
PacketFactory *sync.Pool
)
var ( VideoAllocationDefault = VideoAllocation{ PauseReason: VideoPauseReasonFeedDry, TargetLayer: buffer.InvalidLayer, RequestLayerSpatial: buffer.InvalidLayerSpatial, MaxLayer: buffer.InvalidLayer, } )
Functions ¶
func IsRedCodec ¶ added in v1.2.0
func IsSvcCodec ¶ added in v1.1.0
SVC-TODO: Have to use more conditions to differentiate between SVC-TODO: SVC and non-SVC (could be single layer or simulcast). SVC-TODO: May only need to differentiate between simulcast and non-simulcast SVC-TODO: i. e. may be possible to treat single layer as SVC to get proper/intended functionality.
Types ¶
type AudioLevelHandle ¶ added in v0.15.3
type Bitrates ¶ added in v0.15.0
type Bitrates [buffer.DefaultMaxLayerSpatial + 1][buffer.DefaultMaxLayerTemporal + 1]int64
type DownTrack ¶
type DownTrack struct {
// contains filtered or unexported fields
}
DownTrack implements TrackLocal, is the track used to write packets to SFU Subscriber, the track handle the packets for simple, simulcast and SVC Publisher. A DownTrack has the following lifecycle - new - bound / unbound - closed once closed, a DownTrack cannot be re-used.
func NewDownTrack ¶
func NewDownTrack(params DowntrackParams) (*DownTrack, error)
NewDownTrack returns a DownTrack.
func (*DownTrack) AddReceiverReportListener ¶
func (d *DownTrack) AddReceiverReportListener(listener ReceiverReportListener)
func (*DownTrack) AllocateNextHigher ¶ added in v0.15.0
func (d *DownTrack) AllocateNextHigher(availableChannelCapacity int64, allowOvershoot bool) (VideoAllocation, bool)
func (*DownTrack) AllocateOptimal ¶ added in v0.15.6
func (d *DownTrack) AllocateOptimal(allowOvershoot bool) VideoAllocation
func (*DownTrack) BandwidthRequested ¶ added in v0.15.0
func (*DownTrack) Bind ¶
Bind is called by the PeerConnection after negotiation is complete This asserts that the code requested is supported by the remote peer. If so it sets up all the state (SSRC and PayloadType) to have a call
func (*DownTrack) ClearStreamAllocatorReportInterval ¶ added in v1.4.0
func (d *DownTrack) ClearStreamAllocatorReportInterval()
func (*DownTrack) CloseWithFlush ¶ added in v0.15.3
CloseWithFlush - flush used to indicate whether send blank frame to flush decoder of client.
- When transceiver is reused by other participant's video track, set flush=true to avoid previous video shows before new stream is displayed.
- in case of session migration, participant migrate from other node, video track should be resumed with same participant, set flush=false since we don't need to flush decoder.
func (*DownTrack) Codec ¶
func (d *DownTrack) Codec() webrtc.RTPCodecCapability
Codec returns current track codec capability
func (*DownTrack) CreateSenderReport ¶
func (d *DownTrack) CreateSenderReport() *rtcp.SenderReport
func (*DownTrack) CreateSourceDescriptionChunks ¶
func (d *DownTrack) CreateSourceDescriptionChunks() []rtcp.SourceDescriptionChunk
func (*DownTrack) DistanceToDesired ¶ added in v0.15.0
func (*DownTrack) GetConnectionScoreAndQuality ¶ added in v1.4.0
func (d *DownTrack) GetConnectionScoreAndQuality() (float32, livekit.ConnectionQuality)
func (*DownTrack) GetDeltaStatsSender ¶ added in v1.5.0
func (d *DownTrack) GetDeltaStatsSender() map[uint32]*buffer.StreamStatsWithLayers
func (*DownTrack) GetLastReceiverReportTime ¶ added in v1.5.0
func (*DownTrack) GetNackStats ¶ added in v0.15.5
func (*DownTrack) GetNextHigherTransition ¶ added in v0.15.5
func (d *DownTrack) GetNextHigherTransition(allowOvershoot bool) (VideoTransition, bool)
func (*DownTrack) GetState ¶ added in v1.2.4
func (d *DownTrack) GetState() DownTrackState
func (*DownTrack) GetTotalPacketsSent ¶ added in v1.5.0
func (*DownTrack) GetTrackStats ¶ added in v0.15.6
func (*DownTrack) GetTransceiver ¶ added in v1.1.1
func (d *DownTrack) GetTransceiver() *webrtc.RTPTransceiver
func (*DownTrack) HandleRTCPSenderReportData ¶ added in v1.3.3
func (*DownTrack) ID ¶
ID is the unique identifier for this Track. This should be unique for the stream, but doesn't have to globally unique. A common example would be 'audio' or 'video' and StreamID would be 'desktop' or 'webcam'
func (*DownTrack) IsDeficient ¶ added in v0.15.0
func (*DownTrack) Kind ¶
func (d *DownTrack) Kind() webrtc.RTPCodecType
Kind controls if this TrackLocal is audio or video
func (*DownTrack) MaxLayer ¶ added in v1.4.2
func (d *DownTrack) MaxLayer() buffer.VideoLayer
func (*DownTrack) OnCloseHandler ¶
OnCloseHandler method to be called on remote tracked removed
func (*DownTrack) OnMaxLayerChanged ¶ added in v0.15.4
func (*DownTrack) OnRttUpdate ¶ added in v0.15.4
func (*DownTrack) OnStatsUpdate ¶ added in v0.15.3
func (d *DownTrack) OnStatsUpdate(fn func(dt *DownTrack, stat *livekit.AnalyticsStat))
func (*DownTrack) Pause ¶ added in v0.15.0
func (d *DownTrack) Pause() VideoAllocation
func (*DownTrack) ProvisionalAllocate ¶ added in v0.15.0
func (*DownTrack) ProvisionalAllocateCommit ¶ added in v0.15.0
func (d *DownTrack) ProvisionalAllocateCommit() VideoAllocation
func (*DownTrack) ProvisionalAllocateGetBestWeightedTransition ¶ added in v0.15.0
func (d *DownTrack) ProvisionalAllocateGetBestWeightedTransition() VideoTransition
func (*DownTrack) ProvisionalAllocateGetCooperativeTransition ¶ added in v0.15.0
func (d *DownTrack) ProvisionalAllocateGetCooperativeTransition(allowOvershoot bool) VideoTransition
func (*DownTrack) ProvisionalAllocatePrepare ¶ added in v0.15.0
func (d *DownTrack) ProvisionalAllocatePrepare()
func (*DownTrack) ProvisionalAllocateReset ¶ added in v1.4.5
func (d *DownTrack) ProvisionalAllocateReset()
func (*DownTrack) PubMute ¶ added in v1.3.4
PubMute enables or disables media forwarding - publisher side
func (*DownTrack) SeedState ¶ added in v1.2.4
func (d *DownTrack) SeedState(state DownTrackState)
func (*DownTrack) SetActivePaddingOnMuteUpTrack ¶ added in v1.3.3
func (d *DownTrack) SetActivePaddingOnMuteUpTrack()
SetActivePaddingOnMuteUpTrack will enable padding on the track when its uptrack is muted. Pion will not fire OnTrack event until it receives packet for the track, so we send padding packets to help pion client (go-sdk) to fire the event.
func (*DownTrack) SetConnected ¶ added in v1.1.0
func (d *DownTrack) SetConnected()
func (*DownTrack) SetMaxSpatialLayer ¶ added in v0.15.0
func (*DownTrack) SetMaxTemporalLayer ¶ added in v0.15.0
func (*DownTrack) SetRTPHeaderExtensions ¶
func (d *DownTrack) SetRTPHeaderExtensions(rtpHeaderExtensions []webrtc.RTPHeaderExtensionParameter)
Sets RTP header extensions for this track
func (*DownTrack) SetStreamAllocatorListener ¶ added in v1.4.0
func (d *DownTrack) SetStreamAllocatorListener(listener DownTrackStreamAllocatorListener)
func (*DownTrack) SetStreamAllocatorReportInterval ¶ added in v1.4.0
func (*DownTrack) SetTransceiver ¶
func (d *DownTrack) SetTransceiver(transceiver *webrtc.RTPTransceiver)
func (*DownTrack) SubscriberID ¶ added in v1.1.0
func (d *DownTrack) SubscriberID() livekit.ParticipantID
func (*DownTrack) TrackInfoAvailable ¶ added in v1.2.0
func (d *DownTrack) TrackInfoAvailable()
func (*DownTrack) Unbind ¶
Unbind implements the teardown logic when the track is no longer needed. This happens because a track has been stopped.
func (*DownTrack) UpTrackBitrateAvailabilityChange ¶ added in v0.15.6
func (d *DownTrack) UpTrackBitrateAvailabilityChange()
func (*DownTrack) UpTrackBitrateReport ¶ added in v1.4.0
func (*DownTrack) UpTrackLayersChange ¶ added in v0.15.3
func (d *DownTrack) UpTrackLayersChange()
func (*DownTrack) UpTrackMaxPublishedLayerChange ¶ added in v1.3.5
func (*DownTrack) UpTrackMaxTemporalLayerSeenChange ¶ added in v1.4.0
func (*DownTrack) WritePaddingRTP ¶
WritePaddingRTP tries to write as many padding only RTP packets as necessary to satisfy given size to the DownTrack
type DownTrackSpreader ¶ added in v0.15.7
type DownTrackSpreader struct {
// contains filtered or unexported fields
}
func NewDownTrackSpreader ¶ added in v0.15.7
func NewDownTrackSpreader(params DownTrackSpreaderParams) *DownTrackSpreader
func (*DownTrackSpreader) Broadcast ¶ added in v0.15.7
func (d *DownTrackSpreader) Broadcast(writer func(TrackSender))
func (*DownTrackSpreader) DownTrackCount ¶ added in v1.1.0
func (d *DownTrackSpreader) DownTrackCount() int
func (*DownTrackSpreader) Free ¶ added in v0.15.7
func (d *DownTrackSpreader) Free(subscriberID livekit.ParticipantID)
func (*DownTrackSpreader) GetDownTracks ¶ added in v0.15.7
func (d *DownTrackSpreader) GetDownTracks() []TrackSender
func (*DownTrackSpreader) HasDownTrack ¶ added in v0.15.7
func (d *DownTrackSpreader) HasDownTrack(subscriberID livekit.ParticipantID) bool
func (*DownTrackSpreader) ResetAndGetDownTracks ¶ added in v0.15.7
func (d *DownTrackSpreader) ResetAndGetDownTracks() []TrackSender
func (*DownTrackSpreader) Store ¶ added in v0.15.7
func (d *DownTrackSpreader) Store(ts TrackSender)
type DownTrackSpreaderParams ¶ added in v0.15.7
type DownTrackState ¶ added in v1.2.4
type DownTrackState struct { RTPStats *buffer.RTPStatsSender DeltaStatsSenderSnapshotId uint32 ForwarderState ForwarderState }
func (DownTrackState) String ¶ added in v1.2.4
func (d DownTrackState) String() string
type DownTrackStreamAllocatorListener ¶ added in v1.4.0
type DownTrackStreamAllocatorListener interface { // RTCP received OnREMB(dt *DownTrack, remb *rtcp.ReceiverEstimatedMaximumBitrate) OnTransportCCFeedback(dt *DownTrack, cc *rtcp.TransportLayerCC) // video layer availability changed OnAvailableLayersChanged(dt *DownTrack) // video layer bitrate availability changed OnBitrateAvailabilityChanged(dt *DownTrack) // max published spatial layer changed OnMaxPublishedSpatialChanged(dt *DownTrack) // max published temporal layer changed OnMaxPublishedTemporalChanged(dt *DownTrack) // subscription changed - mute/unmute OnSubscriptionChanged(dt *DownTrack) // subscribed max video layer changed OnSubscribedLayerChanged(dt *DownTrack, layers buffer.VideoLayer) // stream resumed OnResume(dt *DownTrack) // packet(s) sent OnPacketsSent(dt *DownTrack, size int) // check if track should participate in BWE IsBWEEnabled(dt *DownTrack) bool // check if subscription mute can be applied IsSubscribeMutable(dt *DownTrack) bool }
type DowntrackParams ¶ added in v1.4.5
type DowntrackParams struct { Codecs []webrtc.RTPCodecParameters Receiver TrackReceiver BufferFactory *buffer.Factory SubID livekit.ParticipantID StreamID string MaxTrack int PlayoutDelayLimit *livekit.PlayoutDelay Pacer pacer.Pacer Logger logger.Logger Trailer []byte RTCPWriter func([]rtcp.Packet) error }
type Forwarder ¶ added in v0.15.0
type Forwarder struct {
// contains filtered or unexported fields
}
func NewForwarder ¶ added in v0.15.0
func (*Forwarder) AllocateNextHigher ¶ added in v0.15.0
func (*Forwarder) AllocateOptimal ¶ added in v0.15.6
func (f *Forwarder) AllocateOptimal(availableLayers []int32, brs Bitrates, allowOvershoot bool) VideoAllocation
func (*Forwarder) BandwidthRequested ¶ added in v0.15.0
func (*Forwarder) CurrentLayer ¶ added in v1.4.2
func (f *Forwarder) CurrentLayer() buffer.VideoLayer
func (*Forwarder) DetermineCodec ¶ added in v1.1.0
func (f *Forwarder) DetermineCodec(codec webrtc.RTPCodecCapability, extensions []webrtc.RTPHeaderExtensionParameter)
func (*Forwarder) DistanceToDesired ¶ added in v0.15.0
func (*Forwarder) GetMaxSubscribedSpatial ¶ added in v1.4.5
func (*Forwarder) GetNextHigherTransition ¶ added in v0.15.5
func (f *Forwarder) GetNextHigherTransition(brs Bitrates, allowOvershoot bool) (VideoTransition, bool)
func (*Forwarder) GetOptimalBandwidthNeeded ¶ added in v1.4.0
func (*Forwarder) GetPadding ¶ added in v1.4.2
func (*Forwarder) GetSenderReportParams ¶ added in v1.6.0
func (f *Forwarder) GetSenderReportParams() (int32, uint64, *buffer.RTCPSenderReportData)
func (*Forwarder) GetSnTsForBlankFrames ¶ added in v0.15.0
func (*Forwarder) GetSnTsForPadding ¶ added in v0.15.0
func (*Forwarder) GetState ¶ added in v1.1.1
func (f *Forwarder) GetState() ForwarderState
func (*Forwarder) GetTranslationParams ¶ added in v0.15.0
func (*Forwarder) IsAnyMuted ¶ added in v1.3.5
func (*Forwarder) IsDeficient ¶ added in v0.15.0
func (*Forwarder) IsPubMuted ¶ added in v1.3.4
func (*Forwarder) MaxLayer ¶ added in v1.4.2
func (f *Forwarder) MaxLayer() buffer.VideoLayer
func (*Forwarder) Pause ¶ added in v0.15.0
func (f *Forwarder) Pause(availableLayers []int32, brs Bitrates) VideoAllocation
func (*Forwarder) PauseReason ¶ added in v1.4.5
func (f *Forwarder) PauseReason() VideoPauseReason
func (*Forwarder) ProvisionalAllocate ¶ added in v0.15.0
func (*Forwarder) ProvisionalAllocateCommit ¶ added in v0.15.0
func (f *Forwarder) ProvisionalAllocateCommit() VideoAllocation
func (*Forwarder) ProvisionalAllocateGetBestWeightedTransition ¶ added in v0.15.0
func (f *Forwarder) ProvisionalAllocateGetBestWeightedTransition() (VideoTransition, []int32, Bitrates)
func (*Forwarder) ProvisionalAllocateGetCooperativeTransition ¶ added in v0.15.0
func (f *Forwarder) ProvisionalAllocateGetCooperativeTransition(allowOvershoot bool) (VideoTransition, []int32, Bitrates)
func (*Forwarder) ProvisionalAllocatePrepare ¶ added in v0.15.0
func (*Forwarder) ProvisionalAllocateReset ¶ added in v1.4.5
func (f *Forwarder) ProvisionalAllocateReset()
func (*Forwarder) RTPMungerDebugInfo ¶ added in v1.5.0
func (*Forwarder) SeedState ¶ added in v1.1.1
func (f *Forwarder) SeedState(state ForwarderState)
func (*Forwarder) SetMaxPublishedLayer ¶ added in v1.3.5
func (*Forwarder) SetMaxSpatialLayer ¶ added in v0.15.0
func (f *Forwarder) SetMaxSpatialLayer(spatialLayer int32) (bool, buffer.VideoLayer)
func (*Forwarder) SetMaxTemporalLayer ¶ added in v0.15.0
func (f *Forwarder) SetMaxTemporalLayer(temporalLayer int32) (bool, buffer.VideoLayer)
func (*Forwarder) SetMaxTemporalLayerSeen ¶ added in v1.4.0
func (*Forwarder) SetRefSenderReport ¶ added in v1.6.0
func (f *Forwarder) SetRefSenderReport(isSVC bool, layer int32, srData *buffer.RTCPSenderReportData)
func (*Forwarder) TargetLayer ¶ added in v1.4.2
func (f *Forwarder) TargetLayer() buffer.VideoLayer
type ForwarderState ¶ added in v1.1.1
type ForwarderState struct { Started bool ReferenceLayerSpatial int32 PreStartTime time.Time ExtFirstTS uint64 RefTSOffset uint64 RTP RTPMungerState Codec interface{} }
func (ForwarderState) String ¶ added in v1.2.4
func (f ForwarderState) String() string
type PlayoutDelayController ¶ added in v1.5.3
type PlayoutDelayController struct {
// contains filtered or unexported fields
}
func NewPlayoutDelayController ¶ added in v1.5.3
func NewPlayoutDelayController(minDelay, maxDelay uint32, logger logger.Logger, rtpStats *buffer.RTPStatsSender) (*PlayoutDelayController, error)
func (*PlayoutDelayController) GetDelayExtension ¶ added in v1.5.3
func (c *PlayoutDelayController) GetDelayExtension(seq uint16) []byte
func (*PlayoutDelayController) OnSeqAcked ¶ added in v1.5.3
func (c *PlayoutDelayController) OnSeqAcked(seq uint16)
func (*PlayoutDelayController) SetJitter ¶ added in v1.5.3
func (c *PlayoutDelayController) SetJitter(jitter uint32)
type PlayoutDelayState ¶ added in v1.5.3
type PlayoutDelayState int32
const ( PlayoutDelayStateChanged PlayoutDelayState = iota PlayoutDelaySending PlayoutDelayAcked )
func (PlayoutDelayState) String ¶ added in v1.5.3
func (s PlayoutDelayState) String() string
type RTPMunger ¶ added in v0.15.0
type RTPMunger struct {
// contains filtered or unexported fields
}
func NewRTPMunger ¶ added in v0.15.0
func (*RTPMunger) GetLast ¶ added in v1.1.1
func (r *RTPMunger) GetLast() RTPMungerState
func (*RTPMunger) GetPinnedTSOffset ¶ added in v1.6.0
func (*RTPMunger) IsOnFrameBoundary ¶ added in v0.15.0
func (*RTPMunger) PacketDropped ¶ added in v0.15.0
func (*RTPMunger) SeedLast ¶ added in v1.1.1
func (r *RTPMunger) SeedLast(state RTPMungerState)
func (*RTPMunger) SetLastSnTs ¶ added in v0.15.0
func (*RTPMunger) UpdateAndGetPaddingSnTs ¶ added in v0.15.0
func (*RTPMunger) UpdateAndGetSnTs ¶ added in v0.15.0
type RTPMungerState ¶ added in v1.1.1
type RTPMungerState struct { ExtLastSN uint64 ExtSecondLastSN uint64 ExtLastTS uint64 ExtSecondLastTS uint64 LastMarker bool SecondLastMarker bool }
func (RTPMungerState) String ¶ added in v1.2.4
func (r RTPMungerState) String() string
type ReceiverOpts ¶
type ReceiverOpts func(w *WebRTCReceiver) *WebRTCReceiver
func WithAudioConfig ¶ added in v0.15.7
func WithAudioConfig(audioConfig config.AudioConfig) ReceiverOpts
WithAudioConfig sets up parameters for active speaker detection
func WithLoadBalanceThreshold ¶
func WithLoadBalanceThreshold(downTracks int) ReceiverOpts
WithLoadBalanceThreshold enables parallelization of packet writes when downTracks exceeds threshold Value should be between 3 and 150. For a server handling a few large rooms, use a smaller value (required to handle very large (250+ participant) rooms). For a server handling many small rooms, use a larger value or disable. Set to 0 (disabled) by default.
func WithPliThrottleConfig ¶ added in v0.15.7
func WithPliThrottleConfig(pliThrottleConfig config.PLIThrottleConfig) ReceiverOpts
WithPliThrottleConfig indicates minimum time(ms) between sending PLIs
func WithStreamTrackers ¶
func WithStreamTrackers() ReceiverOpts
WithStreamTrackers enables StreamTracker use for simulcast
type ReceiverReportListener ¶
type ReceiverReportListener func(dt *DownTrack, report *rtcp.ReceiverReport)
type RedPrimaryReceiver ¶ added in v1.2.0
type RedPrimaryReceiver struct { TrackReceiver // contains filtered or unexported fields }
func NewRedPrimaryReceiver ¶ added in v1.2.0
func NewRedPrimaryReceiver(receiver TrackReceiver, dsp DownTrackSpreaderParams) *RedPrimaryReceiver
func (*RedPrimaryReceiver) AddDownTrack ¶ added in v1.2.0
func (r *RedPrimaryReceiver) AddDownTrack(track TrackSender) error
func (*RedPrimaryReceiver) CanClose ¶ added in v1.2.0
func (r *RedPrimaryReceiver) CanClose() bool
func (*RedPrimaryReceiver) Close ¶ added in v1.2.0
func (r *RedPrimaryReceiver) Close()
func (*RedPrimaryReceiver) DeleteDownTrack ¶ added in v1.2.0
func (r *RedPrimaryReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID)
func (*RedPrimaryReceiver) ForwardRTP ¶ added in v1.2.0
func (r *RedPrimaryReceiver) ForwardRTP(pkt *buffer.ExtPacket, spatialLayer int32)
func (*RedPrimaryReceiver) IsClosed ¶ added in v1.3.5
func (r *RedPrimaryReceiver) IsClosed() bool
type RedReceiver ¶ added in v1.3.0
type RedReceiver struct { TrackReceiver // contains filtered or unexported fields }
func NewRedReceiver ¶ added in v1.3.0
func NewRedReceiver(receiver TrackReceiver, dsp DownTrackSpreaderParams) *RedReceiver
func (*RedReceiver) AddDownTrack ¶ added in v1.3.0
func (r *RedReceiver) AddDownTrack(track TrackSender) error
func (*RedReceiver) CanClose ¶ added in v1.3.0
func (r *RedReceiver) CanClose() bool
func (*RedReceiver) Close ¶ added in v1.3.0
func (r *RedReceiver) Close()
func (*RedReceiver) DeleteDownTrack ¶ added in v1.3.0
func (r *RedReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID)
func (*RedReceiver) ForwardRTP ¶ added in v1.3.0
func (r *RedReceiver) ForwardRTP(pkt *buffer.ExtPacket, spatialLayer int32)
func (*RedReceiver) IsClosed ¶ added in v1.3.5
func (r *RedReceiver) IsClosed() bool
type SequenceNumberOrdering ¶
type SequenceNumberOrdering int
RTPMunger
const ( SequenceNumberOrderingContiguous SequenceNumberOrdering = iota SequenceNumberOrderingOutOfOrder SequenceNumberOrderingGap SequenceNumberOrderingDuplicate )
type StreamTrackerManager ¶ added in v0.15.4
type StreamTrackerManager struct {
// contains filtered or unexported fields
}
func NewStreamTrackerManager ¶ added in v0.15.4
func NewStreamTrackerManager( logger logger.Logger, trackInfo *livekit.TrackInfo, isSVC bool, clockRate uint32, trackersConfig config.StreamTrackersConfig, ) *StreamTrackerManager
func (*StreamTrackerManager) AddDependencyDescriptorTrackers ¶ added in v1.4.4
func (s *StreamTrackerManager) AddDependencyDescriptorTrackers()
func (*StreamTrackerManager) AddTracker ¶ added in v0.15.4
func (s *StreamTrackerManager) AddTracker(layer int32) streamtracker.StreamTrackerWorker
func (*StreamTrackerManager) Close ¶ added in v1.4.0
func (s *StreamTrackerManager) Close()
func (*StreamTrackerManager) DistanceToDesired ¶ added in v1.2.0
func (s *StreamTrackerManager) DistanceToDesired() float64
func (*StreamTrackerManager) GetLayeredBitrate ¶ added in v1.2.4
func (s *StreamTrackerManager) GetLayeredBitrate() ([]int32, Bitrates)
func (*StreamTrackerManager) GetMaxPublishedLayer ¶ added in v1.3.5
func (s *StreamTrackerManager) GetMaxPublishedLayer() int32
func (*StreamTrackerManager) GetMaxTemporalLayerSeen ¶ added in v1.4.0
func (s *StreamTrackerManager) GetMaxTemporalLayerSeen() int32
func (*StreamTrackerManager) GetTracker ¶ added in v0.15.4
func (s *StreamTrackerManager) GetTracker(layer int32) streamtracker.StreamTrackerWorker
func (*StreamTrackerManager) IsPaused ¶ added in v1.3.3
func (s *StreamTrackerManager) IsPaused() bool
func (*StreamTrackerManager) RemoveAllTrackers ¶ added in v0.15.4
func (s *StreamTrackerManager) RemoveAllTrackers()
func (*StreamTrackerManager) RemoveTracker ¶ added in v0.15.4
func (s *StreamTrackerManager) RemoveTracker(layer int32)
func (*StreamTrackerManager) SetListener ¶ added in v1.4.0
func (s *StreamTrackerManager) SetListener(listener StreamTrackerManagerListener)
func (*StreamTrackerManager) SetMaxExpectedSpatialLayer ¶ added in v0.15.4
func (s *StreamTrackerManager) SetMaxExpectedSpatialLayer(layer int32) int32
func (*StreamTrackerManager) SetPaused ¶ added in v0.15.4
func (s *StreamTrackerManager) SetPaused(paused bool)
func (*StreamTrackerManager) UpdateTrackInfo ¶ added in v1.5.2
func (s *StreamTrackerManager) UpdateTrackInfo(ti *livekit.TrackInfo)
type StreamTrackerManagerListener ¶ added in v1.4.0
type StreamTrackerManagerListener interface { OnAvailableLayersChanged() OnBitrateAvailabilityChanged() OnMaxPublishedLayerChanged(maxPublishedLayer int32) OnMaxTemporalLayerSeenChanged(maxTemporalLayerSeen int32) OnMaxAvailableLayerChanged(maxAvailableLayer int32) OnBitrateReport(availableLayers []int32, bitrates Bitrates) }
type TrackReceiver ¶ added in v0.15.0
type TrackReceiver interface { TrackID() livekit.TrackID StreamID() string Codec() webrtc.RTPCodecParameters HeaderExtensions() []webrtc.RTPHeaderExtensionParameter IsClosed() bool ReadRTP(buf []byte, layer uint8, sn uint16) (int, error) GetLayeredBitrate() ([]int32, Bitrates) GetAudioLevel() (float64, bool) SendPLI(layer int32, force bool) SetUpTrackPaused(paused bool) SetMaxExpectedSpatialLayer(layer int32) AddDownTrack(track TrackSender) error DeleteDownTrack(participantID livekit.ParticipantID) DebugInfo() map[string]interface{} TrackInfo() *livekit.TrackInfo UpdateTrackInfo(ti *livekit.TrackInfo) // Get primary receiver if this receiver represents a RED codec; otherwise it will return itself GetPrimaryReceiverForRed() TrackReceiver // Get red receiver for primary codec, used by forward red encodings for opus only codec GetRedReceiver() TrackReceiver GetTemporalLayerFpsForSpatial(layer int32) []float32 GetTrackStats() *livekit.RTPStats }
TrackReceiver defines an interface receive media from remote peer
type TrackSender ¶ added in v0.15.0
type TrackSender interface { UpTrackLayersChange() UpTrackBitrateAvailabilityChange() UpTrackMaxPublishedLayerChange(maxPublishedLayer int32) UpTrackMaxTemporalLayerSeenChange(maxTemporalLayerSeen int32) UpTrackBitrateReport(availableLayers []int32, bitrates Bitrates) WriteRTP(p *buffer.ExtPacket, layer int32) error Close() IsClosed() bool // ID is the globally unique identifier for this Track. ID() string SubscriberID() livekit.ParticipantID TrackInfoAvailable() HandleRTCPSenderReportData( payloadType webrtc.PayloadType, isSVC bool, layer int32, publisherSRData *buffer.RTCPSenderReportData, ) error }
TrackSender defines an interface send media to remote peer
type TranslationParams ¶ added in v0.15.0
type TranslationParams struct {
// contains filtered or unexported fields
}
type TranslationParamsRTP ¶ added in v0.15.0
type TranslationParamsRTP struct {
// contains filtered or unexported fields
}
type VideoAllocation ¶ added in v0.15.0
type VideoAllocation struct { PauseReason VideoPauseReason IsDeficient bool BandwidthRequested int64 BandwidthDelta int64 BandwidthNeeded int64 Bitrates Bitrates TargetLayer buffer.VideoLayer RequestLayerSpatial int32 MaxLayer buffer.VideoLayer DistanceToDesired float64 }
func (*VideoAllocation) MarshalLogObject ¶ added in v1.6.0
func (v *VideoAllocation) MarshalLogObject(e zapcore.ObjectEncoder) error
func (*VideoAllocation) String ¶ added in v0.15.0
func (v *VideoAllocation) String() string
type VideoAllocationProvisional ¶ added in v0.15.0
type VideoAllocationProvisional struct {
// contains filtered or unexported fields
}
type VideoPauseReason ¶ added in v1.3.4
type VideoPauseReason int
const ( VideoPauseReasonNone VideoPauseReason = iota VideoPauseReasonMuted VideoPauseReasonPubMuted VideoPauseReasonFeedDry VideoPauseReasonBandwidth )
func (VideoPauseReason) String ¶ added in v1.3.4
func (v VideoPauseReason) String() string
type VideoTransition ¶ added in v0.15.0
type VideoTransition struct { From buffer.VideoLayer To buffer.VideoLayer BandwidthDelta int64 }
func (*VideoTransition) MarshalLogObject ¶ added in v1.6.0
func (v *VideoTransition) MarshalLogObject(e zapcore.ObjectEncoder) error
func (*VideoTransition) String ¶ added in v1.2.4
func (v *VideoTransition) String() string
type WebRTCReceiver ¶
type WebRTCReceiver struct {
// contains filtered or unexported fields
}
WebRTCReceiver receives a media track
func NewWebRTCReceiver ¶
func NewWebRTCReceiver( receiver *webrtc.RTPReceiver, track *webrtc.TrackRemote, trackInfo *livekit.TrackInfo, logger logger.Logger, onRTCP func([]rtcp.Packet), trackersConfig config.StreamTrackersConfig, opts ...ReceiverOpts, ) *WebRTCReceiver
NewWebRTCReceiver creates a new webrtc track receiver
func (*WebRTCReceiver) AddDownTrack ¶
func (w *WebRTCReceiver) AddDownTrack(track TrackSender) error
func (*WebRTCReceiver) AddUpTrack ¶
func (w *WebRTCReceiver) AddUpTrack(track *webrtc.TrackRemote, buff *buffer.Buffer) error
func (*WebRTCReceiver) Codec ¶
func (w *WebRTCReceiver) Codec() webrtc.RTPCodecParameters
func (*WebRTCReceiver) DebugInfo ¶
func (w *WebRTCReceiver) DebugInfo() map[string]interface{}
func (*WebRTCReceiver) DeleteDownTrack ¶
func (w *WebRTCReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID)
DeleteDownTrack removes a DownTrack from a Receiver
func (*WebRTCReceiver) GetAudioLevel ¶ added in v0.15.7
func (w *WebRTCReceiver) GetAudioLevel() (float64, bool)
func (*WebRTCReceiver) GetConnectionScoreAndQuality ¶ added in v1.4.0
func (w *WebRTCReceiver) GetConnectionScoreAndQuality() (float32, livekit.ConnectionQuality)
func (*WebRTCReceiver) GetDeltaStats ¶ added in v1.5.0
func (w *WebRTCReceiver) GetDeltaStats() map[uint32]*buffer.StreamStatsWithLayers
func (*WebRTCReceiver) GetLayeredBitrate ¶ added in v1.2.4
func (w *WebRTCReceiver) GetLayeredBitrate() ([]int32, Bitrates)
func (*WebRTCReceiver) GetPrimaryReceiverForRed ¶ added in v1.2.0
func (w *WebRTCReceiver) GetPrimaryReceiverForRed() TrackReceiver
func (*WebRTCReceiver) GetRedReceiver ¶ added in v1.3.0
func (w *WebRTCReceiver) GetRedReceiver() TrackReceiver
func (*WebRTCReceiver) GetTemporalLayerFpsForSpatial ¶ added in v1.3.0
func (w *WebRTCReceiver) GetTemporalLayerFpsForSpatial(layer int32) []float32
func (*WebRTCReceiver) GetTrackStats ¶ added in v0.15.6
func (w *WebRTCReceiver) GetTrackStats() *livekit.RTPStats
func (*WebRTCReceiver) HeaderExtensions ¶ added in v1.1.0
func (w *WebRTCReceiver) HeaderExtensions() []webrtc.RTPHeaderExtensionParameter
func (*WebRTCReceiver) IsClosed ¶ added in v1.3.5
func (w *WebRTCReceiver) IsClosed() bool
func (*WebRTCReceiver) Kind ¶
func (w *WebRTCReceiver) Kind() webrtc.RTPCodecType
func (*WebRTCReceiver) OnAvailableLayersChanged ¶ added in v1.4.0
func (w *WebRTCReceiver) OnAvailableLayersChanged()
StreamTrackerManagerListener.OnAvailableLayersChanged
func (*WebRTCReceiver) OnBitrateAvailabilityChanged ¶ added in v1.4.0
func (w *WebRTCReceiver) OnBitrateAvailabilityChanged()
StreamTrackerManagerListener.OnBitrateAvailabilityChanged
func (*WebRTCReceiver) OnBitrateReport ¶ added in v1.4.0
func (w *WebRTCReceiver) OnBitrateReport(availableLayers []int32, bitrates Bitrates)
StreamTrackerManagerListener.OnBitrateReport
func (*WebRTCReceiver) OnCloseHandler ¶
func (w *WebRTCReceiver) OnCloseHandler(fn func())
OnCloseHandler method to be called on remote tracked removed
func (*WebRTCReceiver) OnMaxAvailableLayerChanged ¶ added in v1.4.0
func (w *WebRTCReceiver) OnMaxAvailableLayerChanged(maxAvailableLayer int32)
StreamTrackerManagerListener.OnMaxAvailableLayerChanged
func (*WebRTCReceiver) OnMaxLayerChange ¶ added in v1.1.0
func (w *WebRTCReceiver) OnMaxLayerChange(fn func(maxLayer int32))
func (*WebRTCReceiver) OnMaxPublishedLayerChanged ¶ added in v1.4.0
func (w *WebRTCReceiver) OnMaxPublishedLayerChanged(maxPublishedLayer int32)
StreamTrackerManagerListener.OnMaxPublishedLayerChanged
func (*WebRTCReceiver) OnMaxTemporalLayerSeenChanged ¶ added in v1.4.0
func (w *WebRTCReceiver) OnMaxTemporalLayerSeenChanged(maxTemporalLayerSeen int32)
StreamTrackerManagerListener.OnMaxTemporalLayerSeenChanged
func (*WebRTCReceiver) OnStatsUpdate ¶ added in v0.15.4
func (w *WebRTCReceiver) OnStatsUpdate(fn func(w *WebRTCReceiver, stat *livekit.AnalyticsStat))
func (*WebRTCReceiver) SendPLI ¶ added in v0.15.0
func (w *WebRTCReceiver) SendPLI(layer int32, force bool)
func (*WebRTCReceiver) SetMaxExpectedSpatialLayer ¶ added in v0.15.2
func (w *WebRTCReceiver) SetMaxExpectedSpatialLayer(layer int32)
func (*WebRTCReceiver) SetRTT ¶ added in v0.15.4
func (w *WebRTCReceiver) SetRTT(rtt uint32)
func (*WebRTCReceiver) SetUpTrackPaused ¶
func (w *WebRTCReceiver) SetUpTrackPaused(paused bool)
SetUpTrackPaused indicates upstream will not be sending any data. this will reflect the "muted" status and will pause streamtracker to ensure we don't turn off the layer
func (*WebRTCReceiver) StreamID ¶
func (w *WebRTCReceiver) StreamID() string
func (*WebRTCReceiver) TrackID ¶
func (w *WebRTCReceiver) TrackID() livekit.TrackID
func (*WebRTCReceiver) TrackInfo ¶ added in v1.2.0
func (w *WebRTCReceiver) TrackInfo() *livekit.TrackInfo
func (*WebRTCReceiver) UpdateTrackInfo ¶ added in v1.5.2
func (w *WebRTCReceiver) UpdateTrackInfo(ti *livekit.TrackInfo)