Documentation ¶
Index ¶
- Constants
- func TrafficLoadToTrafficRate(trafficLoad *TrafficLoad) (packetRateIn float64, byteRateIn float64, packetRateOut float64, ...)
- type AddSubscriberParams
- type AddTrackParams
- type ChangeNotifier
- type ICECandidateExtended
- type ICEConnectionDetails
- func (d *ICEConnectionDetails) AddLocalCandidate(c *webrtc.ICECandidate, filtered bool)
- func (d *ICEConnectionDetails) AddRemoteCandidate(c webrtc.ICECandidateInit, filtered bool)
- func (d *ICEConnectionDetails) Clear()
- func (d *ICEConnectionDetails) Clone() *ICEConnectionDetails
- func (d *ICEConnectionDetails) HasCandidates() bool
- func (d *ICEConnectionDetails) SetSelectedPair(pair *webrtc.ICECandidatePair)
- type ICEConnectionType
- type LocalMediaTrack
- type LocalParticipant
- type MediaResolverResult
- type MediaTrack
- type MediaTrackResolver
- type MigrateState
- type OperationMonitor
- type OperationMonitorData
- type OperationMonitorEvent
- type Participant
- type ParticipantCloseReason
- type ProtocolVersion
- func (v ProtocolVersion) HandlesDataPackets() bool
- func (v ProtocolVersion) SubscriberAsPrimary() bool
- func (v ProtocolVersion) SupportFastStart() bool
- func (v ProtocolVersion) SupportHandlesDisconnectedUpdate() bool
- func (v ProtocolVersion) SupportSyncStreamID() bool
- func (v ProtocolVersion) SupportsAsyncRoomID() bool
- func (v ProtocolVersion) SupportsConnectionQuality() bool
- func (v ProtocolVersion) SupportsConnectionQualityLost() bool
- func (v ProtocolVersion) SupportsICELite() bool
- func (v ProtocolVersion) SupportsIdentityBasedReconnection() bool
- func (v ProtocolVersion) SupportsPackedStreamId() bool
- func (v ProtocolVersion) SupportsProtobuf() bool
- func (v ProtocolVersion) SupportsRegionsInLeaveRequest() bool
- func (v ProtocolVersion) SupportsSessionMigrate() bool
- func (v ProtocolVersion) SupportsSpeakerChanged() bool
- func (v ProtocolVersion) SupportsTransceiverReuse() bool
- func (v ProtocolVersion) SupportsUnpublish() bool
- type Room
- type SignallingCloseReason
- type SubscribedCodecQuality
- type SubscribedTrack
- type TrafficLoad
- type TrafficStats
- type TrafficTypeStats
- type WebsocketClient
Constants ¶
const CurrentProtocol = 13
Variables ¶
This section is empty.
Functions ¶
func TrafficLoadToTrafficRate ¶ added in v1.5.2
func TrafficLoadToTrafficRate(trafficLoad *TrafficLoad) ( packetRateIn float64, byteRateIn float64, packetRateOut float64, byteRateOut float64, )
Types ¶
type AddSubscriberParams ¶ added in v0.15.2
type AddTrackParams ¶ added in v1.2.5
type ChangeNotifier ¶ added in v1.3.4
type ICECandidateExtended ¶ added in v1.5.2
type ICEConnectionDetails ¶ added in v1.5.2
type ICEConnectionDetails struct { Local []*ICECandidateExtended Remote []*ICECandidateExtended Transport livekit.SignalTarget Type ICEConnectionType // contains filtered or unexported fields }
func NewICEConnectionDetails ¶ added in v1.5.2
func NewICEConnectionDetails(transport livekit.SignalTarget, l logger.Logger) *ICEConnectionDetails
func (*ICEConnectionDetails) AddLocalCandidate ¶ added in v1.5.2
func (d *ICEConnectionDetails) AddLocalCandidate(c *webrtc.ICECandidate, filtered bool)
func (*ICEConnectionDetails) AddRemoteCandidate ¶ added in v1.5.2
func (d *ICEConnectionDetails) AddRemoteCandidate(c webrtc.ICECandidateInit, filtered bool)
func (*ICEConnectionDetails) Clear ¶ added in v1.5.2
func (d *ICEConnectionDetails) Clear()
func (*ICEConnectionDetails) Clone ¶ added in v1.5.2
func (d *ICEConnectionDetails) Clone() *ICEConnectionDetails
Clone returns a copy of the ICEConnectionDetails, where fields can be read without locking
func (*ICEConnectionDetails) HasCandidates ¶ added in v1.5.2
func (d *ICEConnectionDetails) HasCandidates() bool
func (*ICEConnectionDetails) SetSelectedPair ¶ added in v1.5.2
func (d *ICEConnectionDetails) SetSelectedPair(pair *webrtc.ICECandidatePair)
type ICEConnectionType ¶ added in v1.2.1
type ICEConnectionType string
const ( ICEConnectionTypeUDP ICEConnectionType = "udp" ICEConnectionTypeTCP ICEConnectionType = "tcp" ICEConnectionTypeTURN ICEConnectionType = "turn" ICEConnectionTypeUnknown ICEConnectionType = "unknown" )
type LocalMediaTrack ¶ added in v0.15.3
type LocalMediaTrack interface { MediaTrack Restart() SignalCid() string HasSdpCid(cid string) bool GetConnectionScoreAndQuality() (float32, livekit.ConnectionQuality) GetTrackStats() *livekit.RTPStats SetRTT(rtt uint32) NotifySubscriberNodeMaxQuality(nodeID livekit.NodeID, qualities []SubscribedCodecQuality) NotifySubscriberNodeMediaLoss(nodeID livekit.NodeID, fractionalLoss uint8) }
type LocalParticipant ¶ added in v0.15.3
type LocalParticipant interface { Participant ToProtoWithVersion() (*livekit.ParticipantInfo, utils.TimedVersion) // getters GetTrailer() []byte GetLogger() logger.Logger GetAdaptiveStream() bool ProtocolVersion() ProtocolVersion SupportsSyncStreamID() bool SupportsTransceiverReuse() bool ConnectedAt() time.Time IsClosed() bool IsReady() bool IsDisconnected() bool IsIdle() bool SubscriberAsPrimary() bool GetClientInfo() *livekit.ClientInfo GetClientConfiguration() *livekit.ClientConfiguration GetBufferFactory() *buffer.Factory GetPlayoutDelayConfig() *livekit.PlayoutDelay GetPendingTrack(trackID livekit.TrackID) *livekit.TrackInfo GetICEConnectionDetails() []*ICEConnectionDetails HasConnected() bool SetResponseSink(sink routing.MessageSink) CloseSignalConnection(reason SignallingCloseReason) UpdateLastSeenSignal() SetSignalSourceValid(valid bool) HandleSignalSourceClose() // permissions ClaimGrants() *auth.ClaimGrants SetPermission(permission *livekit.ParticipantPermission) bool CanPublishSource(source livekit.TrackSource) bool CanSubscribe() bool CanPublishData() bool // PeerConnection AddICECandidate(candidate webrtc.ICECandidateInit, target livekit.SignalTarget) HandleOffer(sdp webrtc.SessionDescription) AddTrack(req *livekit.AddTrackRequest) SetTrackMuted(trackID livekit.TrackID, muted bool, fromAdmin bool) *livekit.TrackInfo HandleAnswer(sdp webrtc.SessionDescription) Negotiate(force bool) ICERestart(iceConfig *livekit.ICEConfig) AddTrackToSubscriber(trackLocal webrtc.TrackLocal, params AddTrackParams) (*webrtc.RTPSender, *webrtc.RTPTransceiver, error) AddTransceiverFromTrackToSubscriber(trackLocal webrtc.TrackLocal, params AddTrackParams) (*webrtc.RTPSender, *webrtc.RTPTransceiver, error) RemoveTrackFromSubscriber(sender *webrtc.RTPSender) error // subscriptions SubscribeToTrack(trackID livekit.TrackID) UnsubscribeFromTrack(trackID livekit.TrackID) UpdateSubscribedTrackSettings(trackID livekit.TrackID, settings *livekit.UpdateTrackSettings) GetSubscribedTracks() []SubscribedTrack VerifySubscribeParticipantInfo(pID livekit.ParticipantID, version uint32) // WaitUntilSubscribed waits until all subscriptions have been settled, or if the timeout // has been reached. If the timeout expires, it will return an error. WaitUntilSubscribed(timeout time.Duration) error // returns list of participant identities that the current participant is subscribed to GetSubscribedParticipants() []livekit.ParticipantID IsSubscribedTo(sid livekit.ParticipantID) bool GetConnectionQuality() *livekit.ConnectionQualityInfo // server sent messages SendJoinResponse(joinResponse *livekit.JoinResponse) error SendParticipantUpdate(participants []*livekit.ParticipantInfo) error SendSpeakerUpdate(speakers []*livekit.SpeakerInfo, force bool) error SendDataPacket(packet *livekit.DataPacket, data []byte) error SendRoomUpdate(room *livekit.Room) error SendConnectionQualityUpdate(update *livekit.ConnectionQualityUpdate) error SubscriptionPermissionUpdate(publisherID livekit.ParticipantID, trackID livekit.TrackID, allowed bool) SendRefreshToken(token string) error HandleReconnectAndSendResponse(reconnectReason livekit.ReconnectReason, reconnectResponse *livekit.ReconnectResponse) error IssueFullReconnect(reason ParticipantCloseReason) // callbacks OnStateChange(func(p LocalParticipant, state livekit.ParticipantInfo_State)) OnMigrateStateChange(func(p LocalParticipant, migrateState MigrateState)) // OnTrackPublished - remote added a track OnTrackPublished(func(LocalParticipant, MediaTrack)) // OnTrackUpdated - one of its publishedTracks changed in status OnTrackUpdated(callback func(LocalParticipant, MediaTrack)) // OnTrackUnpublished - a track was unpublished OnTrackUnpublished(callback func(LocalParticipant, MediaTrack)) // OnParticipantUpdate - metadata or permission is updated OnParticipantUpdate(callback func(LocalParticipant)) OnDataPacket(callback func(LocalParticipant, *livekit.DataPacket)) OnSubscribeStatusChanged(fn func(publisherID livekit.ParticipantID, subscribed bool)) OnClose(callback func(LocalParticipant)) OnClaimsChanged(callback func(LocalParticipant)) OnTrafficLoad(callback func(trafficLoad *TrafficLoad)) HandleReceiverReport(dt *sfu.DownTrack, report *rtcp.ReceiverReport) // session migration MaybeStartMigration(force bool, onStart func()) bool SetMigrateState(s MigrateState) MigrateState() MigrateState SetMigrateInfo(previousOffer, previousAnswer *webrtc.SessionDescription, mediaTracks []*livekit.TrackPublishedResponse, dataChannels []*livekit.DataChannelInfo) UpdateMediaRTT(rtt uint32) UpdateSignalingRTT(rtt uint32) CacheDownTrack(trackID livekit.TrackID, rtpTransceiver *webrtc.RTPTransceiver, downTrackState sfu.DownTrackState) UncacheDownTrack(rtpTransceiver *webrtc.RTPTransceiver) GetCachedDownTrack(trackID livekit.TrackID) (*webrtc.RTPTransceiver, sfu.DownTrackState) SetICEConfig(iceConfig *livekit.ICEConfig) OnICEConfigChanged(callback func(participant LocalParticipant, iceConfig *livekit.ICEConfig)) UpdateSubscribedQuality(nodeID livekit.NodeID, trackID livekit.TrackID, maxQualities []SubscribedCodecQuality) error UpdateMediaLoss(nodeID livekit.NodeID, trackID livekit.TrackID, fractionalLoss uint32) error // down stream bandwidth management SetSubscriberAllowPause(allowPause bool) SetSubscriberChannelCapacity(channelCapacity int64) GetPacer() pacer.Pacer GetTrafficLoad() *TrafficLoad }
type MediaResolverResult ¶ added in v1.3.4
type MediaResolverResult struct { TrackChangedNotifier ChangeNotifier TrackRemovedNotifier ChangeNotifier Track MediaTrack // is permission given to the requesting participant HasPermission bool PublisherID livekit.ParticipantID PublisherIdentity livekit.ParticipantIdentity }
type MediaTrack ¶ added in v0.15.0
type MediaTrack interface { ID() livekit.TrackID Kind() livekit.TrackType Name() string Source() livekit.TrackSource Stream() string UpdateTrackInfo(ti *livekit.TrackInfo) ToProto() *livekit.TrackInfo PublisherID() livekit.ParticipantID PublisherIdentity() livekit.ParticipantIdentity PublisherVersion() uint32 IsMuted() bool SetMuted(muted bool) UpdateVideoLayers(layers []*livekit.VideoLayer) IsSimulcast() bool GetAudioLevel() (level float64, active bool) Close(willBeResumed bool) IsOpen() bool // callbacks AddOnClose(func()) // subscribers AddSubscriber(participant LocalParticipant) (SubscribedTrack, error) RemoveSubscriber(participantID livekit.ParticipantID, willBeResumed bool) IsSubscriber(subID livekit.ParticipantID) bool RevokeDisallowedSubscribers(allowedSubscriberIdentities []livekit.ParticipantIdentity) []livekit.ParticipantIdentity GetAllSubscribers() []livekit.ParticipantID GetNumSubscribers() int // returns quality information that's appropriate for width & height GetQualityForDimension(width, height uint32) livekit.VideoQuality // returns temporal layer that's appropriate for fps GetTemporalLayerForSpatialFps(spatial int32, fps uint32, mime string) int32 Receivers() []sfu.TrackReceiver ClearAllReceivers(willBeResumed bool) IsEncrypted() bool }
MediaTrack represents a media track
type MediaTrackResolver ¶ added in v1.3.4
type MediaTrackResolver func(livekit.ParticipantIdentity, livekit.TrackID) MediaResolverResult
MediaTrackResolver locates a specific media track for a subscriber
type MigrateState ¶ added in v0.15.3
type MigrateState int32
const ( MigrateStateInit MigrateState = iota MigrateStateSync MigrateStateComplete )
func (MigrateState) String ¶ added in v0.15.3
func (m MigrateState) String() string
type OperationMonitor ¶ added in v1.2.2
type OperationMonitor interface { PostEvent(ome OperationMonitorEvent, omd OperationMonitorData) Check() error IsIdle() bool }
type OperationMonitorData ¶ added in v1.2.2
type OperationMonitorData interface{}
type OperationMonitorEvent ¶ added in v1.2.2
type OperationMonitorEvent int
Supervisor/operation monitor related definitions
const ( OperationMonitorEventPublisherPeerConnectionConnected OperationMonitorEvent = iota OperationMonitorEventAddPendingPublication OperationMonitorEventSetPublicationMute OperationMonitorEventSetPublishedTrack OperationMonitorEventClearPublishedTrack )
func (OperationMonitorEvent) String ¶ added in v1.2.2
func (o OperationMonitorEvent) String() string
type Participant ¶
type Participant interface { ID() livekit.ParticipantID Identity() livekit.ParticipantIdentity State() livekit.ParticipantInfo_State CloseReason() ParticipantCloseReason CanSkipBroadcast() bool ToProto() *livekit.ParticipantInfo SetName(name string) SetMetadata(metadata string) IsPublisher() bool GetPublishedTrack(trackID livekit.TrackID) MediaTrack GetPublishedTracks() []MediaTrack RemovePublishedTrack(track MediaTrack, willBeResumed bool, shouldClose bool) GetAudioLevel() (smoothedLevel float64, active bool) // HasPermission checks permission of the subscriber by identity. Returns true if subscriber is allowed to subscribe // to the track with trackID HasPermission(trackID livekit.TrackID, subIdentity livekit.ParticipantIdentity) bool // permissions Hidden() bool IsRecorder() bool IsAgent() bool Close(sendLeave bool, reason ParticipantCloseReason, isExpectedToResume bool) error SubscriptionPermission() (*livekit.SubscriptionPermission, utils.TimedVersion) // updates from remotes UpdateSubscriptionPermission( subscriptionPermission *livekit.SubscriptionPermission, timedVersion utils.TimedVersion, resolverByIdentity func(participantIdentity livekit.ParticipantIdentity) LocalParticipant, resolverBySid func(participantID livekit.ParticipantID) LocalParticipant, ) error UpdateVideoLayers(updateVideoLayers *livekit.UpdateVideoLayers) error DebugInfo() map[string]interface{} }
type ParticipantCloseReason ¶ added in v1.1.0
type ParticipantCloseReason int
const ( ParticipantCloseReasonNone ParticipantCloseReason = iota ParticipantCloseReasonClientRequestLeave ParticipantCloseReasonRoomManagerStop ParticipantCloseReasonVerifyFailed ParticipantCloseReasonJoinFailed ParticipantCloseReasonJoinTimeout ParticipantCloseReasonMessageBusFailed ParticipantCloseReasonPeerConnectionDisconnected ParticipantCloseReasonDuplicateIdentity ParticipantCloseReasonMigrationComplete ParticipantCloseReasonStale ParticipantCloseReasonServiceRequestRemoveParticipant ParticipantCloseReasonServiceRequestDeleteRoom ParticipantCloseReasonSimulateMigration ParticipantCloseReasonSimulateNodeFailure ParticipantCloseReasonSimulateServerLeave ParticipantCloseReasonNegotiateFailed ParticipantCloseReasonMigrationRequested ParticipantCloseReasonPublicationError ParticipantCloseReasonSubscriptionError ParticipantCloseReasonDataChannelError ParticipantCloseReasonMigrateCodecMismatch ParticipantCloseReasonSignalSourceClose )
func (ParticipantCloseReason) String ¶ added in v1.1.0
func (p ParticipantCloseReason) String() string
func (ParticipantCloseReason) ToDisconnectReason ¶ added in v1.1.1
func (p ParticipantCloseReason) ToDisconnectReason() livekit.DisconnectReason
type ProtocolVersion ¶
type ProtocolVersion int
func (ProtocolVersion) HandlesDataPackets ¶
func (v ProtocolVersion) HandlesDataPackets() bool
func (ProtocolVersion) SubscriberAsPrimary ¶ added in v0.13.0
func (v ProtocolVersion) SubscriberAsPrimary() bool
SubscriberAsPrimary indicates clients initiate subscriber connection as primary
func (ProtocolVersion) SupportFastStart ¶ added in v1.1.0
func (v ProtocolVersion) SupportFastStart() bool
SupportFastStart - if client supports fast start, server side will send media streams in the first offer
func (ProtocolVersion) SupportHandlesDisconnectedUpdate ¶ added in v1.4.0
func (v ProtocolVersion) SupportHandlesDisconnectedUpdate() bool
func (ProtocolVersion) SupportSyncStreamID ¶ added in v1.4.5
func (v ProtocolVersion) SupportSyncStreamID() bool
func (ProtocolVersion) SupportsAsyncRoomID ¶ added in v1.5.3
func (v ProtocolVersion) SupportsAsyncRoomID() bool
func (ProtocolVersion) SupportsConnectionQuality ¶ added in v0.14.0
func (v ProtocolVersion) SupportsConnectionQuality() bool
SupportsConnectionQuality - avoid sending frequent ConnectionQuality updates for lower protocol versions
func (ProtocolVersion) SupportsConnectionQualityLost ¶ added in v1.5.2
func (v ProtocolVersion) SupportsConnectionQualityLost() bool
func (ProtocolVersion) SupportsICELite ¶ added in v0.15.4
func (v ProtocolVersion) SupportsICELite() bool
func (ProtocolVersion) SupportsIdentityBasedReconnection ¶ added in v1.5.3
func (v ProtocolVersion) SupportsIdentityBasedReconnection() bool
func (ProtocolVersion) SupportsPackedStreamId ¶
func (v ProtocolVersion) SupportsPackedStreamId() bool
func (ProtocolVersion) SupportsProtobuf ¶ added in v0.11.0
func (v ProtocolVersion) SupportsProtobuf() bool
func (ProtocolVersion) SupportsRegionsInLeaveRequest ¶ added in v1.5.3
func (v ProtocolVersion) SupportsRegionsInLeaveRequest() bool
func (ProtocolVersion) SupportsSessionMigrate ¶ added in v0.15.3
func (v ProtocolVersion) SupportsSessionMigrate() bool
func (ProtocolVersion) SupportsSpeakerChanged ¶ added in v0.13.0
func (v ProtocolVersion) SupportsSpeakerChanged() bool
SupportsSpeakerChanged - if client handles speaker info deltas, instead of a comprehensive list
func (ProtocolVersion) SupportsTransceiverReuse ¶ added in v0.13.3
func (v ProtocolVersion) SupportsTransceiverReuse() bool
SupportsTransceiverReuse - if transceiver reuse is supported, optimizes SDP size
func (ProtocolVersion) SupportsUnpublish ¶ added in v0.15.6
func (v ProtocolVersion) SupportsUnpublish() bool
type Room ¶ added in v0.15.0
type Room interface { Name() livekit.RoomName ID() livekit.RoomID RemoveParticipant(identity livekit.ParticipantIdentity, pID livekit.ParticipantID, reason ParticipantCloseReason) UpdateSubscriptions(participant LocalParticipant, trackIDs []livekit.TrackID, participantTracks []*livekit.ParticipantTracks, subscribe bool) UpdateSubscriptionPermission(participant LocalParticipant, permissions *livekit.SubscriptionPermission) error SyncState(participant LocalParticipant, state *livekit.SyncState) error SimulateScenario(participant LocalParticipant, scenario *livekit.SimulateScenario) error UpdateVideoLayers(participant Participant, updateVideoLayers *livekit.UpdateVideoLayers) error ResolveMediaTrackForSubscriber(subIdentity livekit.ParticipantIdentity, trackID livekit.TrackID) MediaResolverResult GetLocalParticipants() []LocalParticipant UpdateParticipantMetadata(participant LocalParticipant, name string, metadata string) }
Room is a container of participants, and can provide room-level actions
type SignallingCloseReason ¶ added in v1.4.4
type SignallingCloseReason int
const ( SignallingCloseReasonUnknown SignallingCloseReason = iota SignallingCloseReasonMigration SignallingCloseReasonResume SignallingCloseReasonTransportFailure SignallingCloseReasonFullReconnectPublicationError SignallingCloseReasonFullReconnectSubscriptionError SignallingCloseReasonFullReconnectDataChannelError SignallingCloseReasonFullReconnectNegotiateFailed SignallingCloseReasonParticipantClose SignallingCloseReasonDisconnectOnResume SignallingCloseReasonDisconnectOnResumeNoMessages )
func (SignallingCloseReason) String ¶ added in v1.4.4
func (s SignallingCloseReason) String() string
type SubscribedCodecQuality ¶ added in v1.1.0
type SubscribedCodecQuality struct { CodecMime string Quality livekit.VideoQuality }
type SubscribedTrack ¶
type SubscribedTrack interface { AddOnBind(f func(error)) IsBound() bool Close(willBeResumed bool) OnClose(f func(willBeResumed bool)) ID() livekit.TrackID PublisherID() livekit.ParticipantID PublisherIdentity() livekit.ParticipantIdentity PublisherVersion() uint32 SubscriberID() livekit.ParticipantID SubscriberIdentity() livekit.ParticipantIdentity Subscriber() LocalParticipant DownTrack() *sfu.DownTrack MediaTrack() MediaTrack RTPSender() *webrtc.RTPSender IsMuted() bool SetPublisherMuted(muted bool) UpdateSubscriberSettings(settings *livekit.UpdateTrackSettings, isImmediate bool) // selects appropriate video layer according to subscriber preferences UpdateVideoLayer() NeedsNegotiation() bool }
type TrafficLoad ¶ added in v1.5.2
type TrafficLoad struct {
TrafficTypeStats []*TrafficTypeStats
}
type TrafficStats ¶ added in v1.5.2
type TrafficStats struct { StartTime time.Time EndTime time.Time Packets uint32 PacketsLost uint32 PacketsPadding uint32 PacketsOutOfOrder uint32 Bytes uint64 }
func AggregateTrafficStats ¶ added in v1.5.2
func AggregateTrafficStats(statsList ...*TrafficStats) *TrafficStats
func RTPStatsDiffToTrafficStats ¶ added in v1.5.2
func RTPStatsDiffToTrafficStats(before, after *livekit.RTPStats) *TrafficStats
type TrafficTypeStats ¶ added in v1.5.2
type TrafficTypeStats struct { TrackType livekit.TrackType StreamType livekit.StreamType TrafficStats *TrafficStats }