Documentation
¶
Index ¶
- Constants
- func IsCandidateMDNS(candidate webrtc.ICECandidateInit) bool
- func IsICECandidateMDNS(candidate ice.Candidate) bool
- func TrafficLoadToTrafficRate(trafficLoad *TrafficLoad) (packetRateIn float64, byteRateIn float64, packetRateOut float64, ...)
- type AddSubscriberParams
- type AddTrackParams
- type ChangeNotifier
- type DataDownTrack
- type DataMessageCache
- type DataResolverResult
- type DataTrack
- type DataTrackResolver
- type DataTrackSender
- type DataTrackTransport
- type ICECandidateExtended
- type ICEConnectionDetails
- func (d *ICEConnectionDetails) AddLocalCandidate(c *webrtc.ICECandidate, filtered, trickle bool)
- func (d *ICEConnectionDetails) AddLocalICECandidate(c ice.Candidate, filtered, trickle bool)
- func (d *ICEConnectionDetails) AddRemoteCandidate(c webrtc.ICECandidateInit, filtered, trickle, canUpdate bool)
- func (d *ICEConnectionDetails) AddRemoteICECandidate(candidate ice.Candidate, filtered, trickle, canUpdate bool)
- func (d *ICEConnectionDetails) Clear()
- func (d *ICEConnectionDetails) GetConnectionType() ICEConnectionType
- func (d *ICEConnectionDetails) GetInfo() *ICEConnectionInfo
- func (d *ICEConnectionDetails) SetSelectedPair(pair *webrtc.ICECandidatePair)
- type ICEConnectionInfo
- type ICEConnectionType
- type LocalMediaTrack
- type LocalParticipant
- type LocalParticipantHelper
- type LocalParticipantListener
- type MediaResolverResult
- type MediaTrack
- type MediaTrackResolver
- type MigrateState
- type MoveToRoomParams
- type NullLocalParticipantListener
- func (*NullLocalParticipantListener) OnDataMessage(LocalParticipant, []byte)
- func (*NullLocalParticipantListener) OnDataPacket(LocalParticipant, livekit.DataPacket_Kind, *livekit.DataPacket)
- func (*NullLocalParticipantListener) OnDataTrackMessage(LocalParticipant, []byte, *datatrack.Packet)
- func (*NullLocalParticipantListener) OnLeave(LocalParticipant, ParticipantCloseReason)
- func (*NullLocalParticipantListener) OnMigrateStateChange(LocalParticipant, MigrateState)
- func (*NullLocalParticipantListener) OnSimulateScenario(LocalParticipant, *livekit.SimulateScenario) error
- func (*NullLocalParticipantListener) OnStateChange(LocalParticipant)
- func (*NullLocalParticipantListener) OnSubscribeStatusChanged(LocalParticipant, livekit.ParticipantID, bool)
- func (*NullLocalParticipantListener) OnSubscriberReady(LocalParticipant)
- func (*NullLocalParticipantListener) OnSyncState(LocalParticipant, *livekit.SyncState) error
- func (*NullLocalParticipantListener) OnUpdateDataSubscriptions(LocalParticipant, *livekit.UpdateDataSubscription)
- func (*NullLocalParticipantListener) OnUpdateSubscriptionPermission(LocalParticipant, *livekit.SubscriptionPermission) error
- func (*NullLocalParticipantListener) OnUpdateSubscriptions(LocalParticipant, []livekit.TrackID, []*livekit.ParticipantTracks, bool)
- type NullParticipantListener
- func (*NullParticipantListener) OnDataTrackPublished(Participant, DataTrack)
- func (*NullParticipantListener) OnDataTrackUnpublished(Participant, DataTrack)
- func (*NullParticipantListener) OnMetrics(Participant, *livekit.DataPacket)
- func (*NullParticipantListener) OnParticipantUpdate(Participant)
- func (*NullParticipantListener) OnTrackPublished(Participant, MediaTrack)
- func (*NullParticipantListener) OnTrackUnpublished(Participant, MediaTrack)
- func (*NullParticipantListener) OnTrackUpdated(Participant, MediaTrack)
- type OperationMonitor
- type OperationMonitorData
- type OperationMonitorEvent
- type Participant
- type ParticipantCloseReason
- type ParticipantListener
- type ProtocolVersion
- func (v ProtocolVersion) HandlesDataPackets() bool
- func (v ProtocolVersion) SubscriberAsPrimary() bool
- func (v ProtocolVersion) SupportFastStart() bool
- func (v ProtocolVersion) SupportsAsyncRoomID() bool
- func (v ProtocolVersion) SupportsConnectionQuality() bool
- func (v ProtocolVersion) SupportsConnectionQualityLost() bool
- func (v ProtocolVersion) SupportsDisconnectedUpdate() bool
- func (v ProtocolVersion) SupportsICELite() bool
- func (v ProtocolVersion) SupportsIdentityBasedReconnection() bool
- func (v ProtocolVersion) SupportsMoving() bool
- func (v ProtocolVersion) SupportsNonErrorSignalResponse() 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) SupportsSyncStreamID() 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 ( ParticipantCloseKeyNormal = "normal" ParticipantCloseKeyWHIP = "whip" )
---------------------------------------------
const CurrentProtocol = 16
Variables ¶
This section is empty.
Functions ¶
func IsCandidateMDNS ¶ added in v1.8.0
func IsCandidateMDNS(candidate webrtc.ICECandidateInit) bool
func IsICECandidateMDNS ¶ added in v1.8.0
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 DataDownTrack ¶ added in v1.9.7
type DataDownTrack interface {
Handle() uint16
PublishDataTrack() DataTrack
UpdateSubscriptionOptions(subscriptionOptions *livekit.DataTrackSubscriptionOptions)
}
type DataMessageCache ¶ added in v1.9.1
type DataMessageCache struct {
Data []byte
SenderID livekit.ParticipantID
Seq uint32
DestIdentities []livekit.ParticipantIdentity
}
type DataResolverResult ¶ added in v1.9.7
type DataResolverResult struct {
TrackChangedNotifier ChangeNotifier
TrackRemovedNotifier ChangeNotifier
DataTrack DataTrack
PublisherID livekit.ParticipantID
PublisherIdentity livekit.ParticipantIdentity
}
type DataTrack ¶ added in v1.9.7
type DataTrack interface {
ID() livekit.TrackID
PubHandle() uint16
Name() string
ToProto() *livekit.DataTrackInfo
AddSubscriber(sub LocalParticipant) (DataDownTrack, error)
RemoveSubscriber(participantID livekit.ParticipantID)
IsSubscriber(subID livekit.ParticipantID) bool
AddDataDownTrack(sender DataTrackSender) error
DeleteDataDownTrack(subscriberID livekit.ParticipantID)
HandlePacket(data []byte, packet *datatrack.Packet)
Close()
}
DataTrack represents a data track
type DataTrackResolver ¶ added in v1.9.7
type DataTrackResolver func(LocalParticipant, livekit.TrackID) DataResolverResult
DataTrackResolver locates a specific data track for a subscriber
type DataTrackSender ¶ added in v1.9.7
type DataTrackSender interface {
SubscriberID() livekit.ParticipantID
WritePacket(data []byte, packet *datatrack.Packet)
}
type DataTrackTransport ¶ added in v1.9.7
type ICECandidateExtended ¶ added in v1.5.2
type ICEConnectionDetails ¶ added in v1.5.2
type ICEConnectionDetails struct {
ICEConnectionInfo
// 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, trickle bool)
func (*ICEConnectionDetails) AddLocalICECandidate ¶ added in v1.7.1
func (d *ICEConnectionDetails) AddLocalICECandidate(c ice.Candidate, filtered, trickle bool)
func (*ICEConnectionDetails) AddRemoteCandidate ¶ added in v1.5.2
func (d *ICEConnectionDetails) AddRemoteCandidate(c webrtc.ICECandidateInit, filtered, trickle, canUpdate bool)
func (*ICEConnectionDetails) AddRemoteICECandidate ¶ added in v1.7.1
func (d *ICEConnectionDetails) AddRemoteICECandidate(candidate ice.Candidate, filtered, trickle, canUpdate bool)
func (*ICEConnectionDetails) Clear ¶ added in v1.5.2
func (d *ICEConnectionDetails) Clear()
func (*ICEConnectionDetails) GetConnectionType ¶ added in v1.9.0
func (d *ICEConnectionDetails) GetConnectionType() ICEConnectionType
func (*ICEConnectionDetails) GetInfo ¶ added in v1.8.0
func (d *ICEConnectionDetails) GetInfo() *ICEConnectionInfo
func (*ICEConnectionDetails) SetSelectedPair ¶ added in v1.5.2
func (d *ICEConnectionDetails) SetSelectedPair(pair *webrtc.ICECandidatePair)
type ICEConnectionInfo ¶ added in v1.8.0
type ICEConnectionInfo struct {
Local []*ICECandidateExtended
Remote []*ICECandidateExtended
Transport livekit.SignalTarget
Type ICEConnectionType
}
func (*ICEConnectionInfo) HasCandidates ¶ added in v1.8.0
func (i *ICEConnectionInfo) HasCandidates() bool
type ICEConnectionType ¶ added in v1.2.1
type ICEConnectionType int
const ( // this is in ICE priority highest -> lowest ordering // WARNING: Keep this ordering as it is used to find lowest priority connection type. ICEConnectionTypeUnknown ICEConnectionType = iota ICEConnectionTypeUDP ICEConnectionTypeTCP ICEConnectionTypeTURN )
func ICEConnectionInfosType ¶ added in v1.9.1
func ICEConnectionInfosType(infos []*ICEConnectionInfo) ICEConnectionType
func (ICEConnectionType) ReporterType ¶ added in v1.9.1
func (i ICEConnectionType) ReporterType() roomobs.ConnectionType
func (ICEConnectionType) String ¶ added in v1.9.0
func (i ICEConnectionType) String() string
type LocalMediaTrack ¶ added in v0.15.3
type LocalMediaTrack interface {
MediaTrack
Restart()
HasSignalCid(cid string) bool
HasSdpCid(cid string) bool
GetConnectionScoreAndQuality() (float32, livekit.ConnectionQuality)
GetTrackStats() *livekit.RTPStats
SetRTT(rtt uint32)
NotifySubscriberNodeMaxQuality(nodeID livekit.NodeID, qualities []SubscribedCodecQuality)
NotifySubscriptionNode(nodeID livekit.NodeID, codecs []*livekit.SubscribedAudioCodec)
ClearSubscriberNodes()
NotifySubscriberNodeMediaLoss(nodeID livekit.NodeID, fractionalLoss uint8)
}
type LocalParticipant ¶ added in v0.15.3
type LocalParticipant interface {
Participant
TelemetryGuard() *telemetry.ReferenceGuard
// getters
GetCountry() string
GetTrailer() []byte
GetLoggerResolver() logger.DeferredFieldResolver
GetReporter() roomobs.ParticipantSessionReporter
GetReporterResolver() roomobs.ParticipantReporterResolver
GetAdaptiveStream() bool
ProtocolVersion() ProtocolVersion
SupportsSyncStreamID() bool
SupportsTransceiverReuse() bool
IsUsingSinglePeerConnection() bool
IsReady() bool
Disconnected() <-chan struct{}
IsIdle() bool
SubscriberAsPrimary() bool
GetClientInfo() *livekit.ClientInfo
GetClientConfiguration() *livekit.ClientConfiguration
GetBufferFactory() *buffer.Factory
GetPlayoutDelayConfig() *livekit.PlayoutDelay
GetPendingTrack(trackID livekit.TrackID) *livekit.TrackInfo
GetICEConnectionInfo() []*ICEConnectionInfo
HasConnected() bool
GetEnabledPublishCodecs() []*livekit.Codec
GetPublisherICESessionUfrag() (string, error)
SupportsMoving() error
GetLastReliableSequence(migrateOut bool) uint32
SetResponseSink(sink routing.MessageSink)
GetResponseSink() routing.MessageSink
CloseSignalConnection(reason SignallingCloseReason)
UpdateLastSeenSignal()
SetSignalSourceValid(valid bool)
HandleSignalSourceClose()
// updates
UpdateMetadata(update *livekit.UpdateParticipantMetadata, fromAdmin bool) error
SetName(name string)
SetMetadata(metadata string)
SetAttributes(attributes map[string]string)
UpdateAudioTrack(update *livekit.UpdateLocalAudioTrack) error
UpdateVideoTrack(update *livekit.UpdateLocalVideoTrack) error
// permissions
ClaimGrants() *auth.ClaimGrants
SetPermission(permission *livekit.ParticipantPermission) bool
CanPublish() bool
CanPublishSource(source livekit.TrackSource) bool
CanSubscribe() bool
CanPublishData() bool
// PeerConnection
HandleICETrickle(trickleRequest *livekit.TrickleRequest)
HandleOffer(sd *livekit.SessionDescription) error
GetAnswer() (webrtc.SessionDescription, uint32, error)
HandleICETrickleSDPFragment(sdpFragment string) error
HandleICERestartSDPFragment(sdpFragment string) (string, error)
AddTrack(req *livekit.AddTrackRequest)
SetTrackMuted(mute *livekit.MuteTrackRequest, fromAdmin bool) *livekit.TrackInfo
HandleAnswer(sd *livekit.SessionDescription)
Negotiate(force bool)
ICERestart(iceConfig *livekit.ICEConfig)
AddTrackLocal(trackLocal webrtc.TrackLocal, params AddTrackParams) (*webrtc.RTPSender, *webrtc.RTPTransceiver, error)
AddTransceiverFromTrackLocal(trackLocal webrtc.TrackLocal, params AddTrackParams) (*webrtc.RTPSender, *webrtc.RTPTransceiver, error)
RemoveTrackLocal(sender *webrtc.RTPSender) error
WriteSubscriberRTCP(pkts []rtcp.Packet) error
// subscriptions
SubscribeToTrack(trackID livekit.TrackID, isSync bool)
UnsubscribeFromTrack(trackID livekit.TrackID)
UpdateSubscribedTrackSettings(trackID livekit.TrackID, settings *livekit.UpdateTrackSettings)
GetSubscribedTracks() []SubscribedTrack
IsTrackNameSubscribed(publisherIdentity livekit.ParticipantIdentity, trackName string) bool
SubscribeToDataTrack(trackID livekit.TrackID)
UnsubscribeFromDataTrack(trackID livekit.TrackID)
UpdateDataTrackSubscriptionOptions(trackID livekit.TrackID, subscriptionOptions *livekit.DataTrackSubscriptionOptions)
Verify() bool
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
StopAndGetSubscribedTracksForwarderState() map[livekit.TrackID]*livekit.RTPForwarderState
SupportsCodecChange() bool
// 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
SendDataMessage(kind livekit.DataPacket_Kind, data []byte, senderID livekit.ParticipantID, seq uint32) error
SendDataMessageUnlabeled(data []byte, useRaw bool, sender livekit.ParticipantIdentity) error
SendRoomUpdate(room *livekit.Room) error
SendConnectionQualityUpdate(update *livekit.ConnectionQualityUpdate) error
SendSubscriptionPermissionUpdate(publisherID livekit.ParticipantID, trackID livekit.TrackID, allowed bool) error
SendRefreshToken(token string) error
HandleReconnectAndSendResponse(reconnectReason livekit.ReconnectReason, reconnectResponse *livekit.ReconnectResponse) error
IssueFullReconnect(reason ParticipantCloseReason)
SendRoomMovedResponse(moved *livekit.RoomMovedResponse) error
SendDataTrackSubscriberHandles(handles map[uint32]*livekit.DataTrackSubscriberHandles_PublishedDataTrack) error
AddOnClose(key string, callback func(LocalParticipant))
OnClaimsChanged(callback func(LocalParticipant))
HandleReceiverReport(dt *sfu.DownTrack, report *rtcp.ReceiverReport)
// session migration
MaybeStartMigration(force bool, onStart func()) bool
NotifyMigration()
SetMigrateState(s MigrateState)
SetMigrateInfo(
previousOffer *webrtc.SessionDescription,
previousAnswer *webrtc.SessionDescription,
mediaTracks []*livekit.TrackPublishedResponse,
dataChannels []*livekit.DataChannelInfo,
dataChannelReceiveState []*livekit.DataChannelReceiveState,
dataTracks []*livekit.PublishDataTrackResponse,
)
IsReconnect() bool
MoveToRoom(params MoveToRoomParams)
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)
GetICEConfig() *livekit.ICEConfig
OnICEConfigChanged(callback func(participant LocalParticipant, iceConfig *livekit.ICEConfig))
UpdateSubscribedQuality(nodeID livekit.NodeID, trackID livekit.TrackID, maxQualities []SubscribedCodecQuality) error
UpdateSubscribedAudioCodecs(nodeID livekit.NodeID, trackID livekit.TrackID, codecs []*livekit.SubscribedAudioCodec) error
UpdateMediaLoss(nodeID livekit.NodeID, trackID livekit.TrackID, fractionalLoss uint32) error
// down stream bandwidth management
SetSubscriberAllowPause(allowPause bool)
SetSubscriberChannelCapacity(channelCapacity int64)
GetPacer() pacer.Pacer
GetDisableSenderReportPassThrough() bool
HandleMetrics(senderParticipantID livekit.ParticipantID, batch *livekit.MetricsBatch) error
HandleUpdateSubscriptions(
[]livekit.TrackID,
[]*livekit.ParticipantTracks,
bool,
)
HandleUpdateSubscriptionPermission(*livekit.SubscriptionPermission) error
HandleSyncState(*livekit.SyncState) error
HandleSimulateScenario(*livekit.SimulateScenario) error
HandleLeaveRequest(reason ParticipantCloseReason)
HandlePublishDataTrackRequest(*livekit.PublishDataTrackRequest)
HandleUnpublishDataTrackRequest(*livekit.UnpublishDataTrackRequest)
HandleUpdateDataSubscription(*livekit.UpdateDataSubscription)
HandleSignalMessage(msg proto.Message) error
PerformRpc(req *livekit.PerformRpcRequest, resultCh chan string, errorCh chan error)
GetDataTrackTransport() DataTrackTransport
ClearParticipantListener()
GetNextSubscribedDataTrackHandle() uint16
}
type LocalParticipantHelper ¶ added in v1.9.0
type LocalParticipantHelper interface {
ResolveMediaTrack(LocalParticipant, livekit.TrackID) MediaResolverResult
ResolveDataTrack(LocalParticipant, livekit.TrackID) DataResolverResult
GetParticipantInfo(pID livekit.ParticipantID) *livekit.ParticipantInfo
GetRegionSettings(ip string) *livekit.RegionSettings
GetSubscriberForwarderState(p LocalParticipant) (map[livekit.TrackID]*livekit.RTPForwarderState, error)
ShouldRegressCodec() bool
GetCachedReliableDataMessage(seqs map[livekit.ParticipantID]uint32) []*DataMessageCache
}
type LocalParticipantListener ¶ added in v1.9.8
type LocalParticipantListener interface {
ParticipantListener
OnStateChange(LocalParticipant)
OnSubscriberReady(LocalParticipant)
OnMigrateStateChange(LocalParticipant, MigrateState)
OnDataPacket(LocalParticipant, livekit.DataPacket_Kind, *livekit.DataPacket)
OnDataMessage(LocalParticipant, []byte)
OnDataTrackMessage(LocalParticipant, []byte, *datatrack.Packet)
OnSubscribeStatusChanged(LocalParticipant, livekit.ParticipantID, bool)
OnUpdateSubscriptions(
LocalParticipant,
[]livekit.TrackID,
[]*livekit.ParticipantTracks,
bool,
)
OnUpdateSubscriptionPermission(LocalParticipant, *livekit.SubscriptionPermission) error
OnUpdateDataSubscriptions(LocalParticipant, *livekit.UpdateDataSubscription)
OnSyncState(LocalParticipant, *livekit.SyncState) error
OnSimulateScenario(LocalParticipant, *livekit.SimulateScenario) error
OnLeave(LocalParticipant, ParticipantCloseReason)
}
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)
UpdateAudioTrack(update *livekit.UpdateLocalAudioTrack)
UpdateVideoTrack(update *livekit.UpdateLocalVideoTrack)
ToProto() *livekit.TrackInfo
PublisherID() livekit.ParticipantID
PublisherIdentity() livekit.ParticipantIdentity
PublisherVersion() uint32
Logger() logger.Logger
IsMuted() bool
SetMuted(muted bool)
GetAudioLevel() (level float64, active bool)
Close(isExpectedToResume bool)
IsOpen() bool
// callbacks
AddOnClose(func(isExpectedToResume bool))
// subscribers
AddSubscriber(participant LocalParticipant) (SubscribedTrack, error)
RemoveSubscriber(participantID livekit.ParticipantID, isExpectedToResume bool)
IsSubscriber(subID livekit.ParticipantID) bool
RevokeDisallowedSubscribers(allowedSubscriberIdentities []livekit.ParticipantIdentity) []livekit.ParticipantIdentity
GetAllSubscribers() []livekit.ParticipantID
GetNumSubscribers() int
OnTrackSubscribed()
// returns quality information that's appropriate for width & height
GetQualityForDimension(mimeType mime.MimeType, width, height uint32) livekit.VideoQuality
// returns temporal layer that's appropriate for fps
GetTemporalLayerForSpatialFps(mimeType mime.MimeType, spatial int32, fps uint32) int32
Receivers() []sfu.TrackReceiver
ClearAllReceivers(isExpectedToResume bool)
IsEncrypted() bool
}
MediaTrack represents a media track
type MediaTrackResolver ¶ added in v1.3.4
type MediaTrackResolver func(LocalParticipant, 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 MoveToRoomParams ¶ added in v1.9.0
type MoveToRoomParams struct {
RoomName livekit.RoomName
ParticipantID livekit.ParticipantID
Listener LocalParticipantListener
Helper LocalParticipantHelper
}
type NullLocalParticipantListener ¶ added in v1.9.8
type NullLocalParticipantListener struct {
NullParticipantListener
}
func (*NullLocalParticipantListener) OnDataMessage ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnDataMessage(LocalParticipant, []byte)
func (*NullLocalParticipantListener) OnDataPacket ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnDataPacket(LocalParticipant, livekit.DataPacket_Kind, *livekit.DataPacket)
func (*NullLocalParticipantListener) OnDataTrackMessage ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnDataTrackMessage(LocalParticipant, []byte, *datatrack.Packet)
func (*NullLocalParticipantListener) OnLeave ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnLeave(LocalParticipant, ParticipantCloseReason)
func (*NullLocalParticipantListener) OnMigrateStateChange ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnMigrateStateChange(LocalParticipant, MigrateState)
func (*NullLocalParticipantListener) OnSimulateScenario ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnSimulateScenario(LocalParticipant, *livekit.SimulateScenario) error
func (*NullLocalParticipantListener) OnStateChange ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnStateChange(LocalParticipant)
func (*NullLocalParticipantListener) OnSubscribeStatusChanged ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnSubscribeStatusChanged(LocalParticipant, livekit.ParticipantID, bool)
func (*NullLocalParticipantListener) OnSubscriberReady ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnSubscriberReady(LocalParticipant)
func (*NullLocalParticipantListener) OnSyncState ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnSyncState(LocalParticipant, *livekit.SyncState) error
func (*NullLocalParticipantListener) OnUpdateDataSubscriptions ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnUpdateDataSubscriptions(LocalParticipant, *livekit.UpdateDataSubscription)
func (*NullLocalParticipantListener) OnUpdateSubscriptionPermission ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnUpdateSubscriptionPermission(LocalParticipant, *livekit.SubscriptionPermission) error
func (*NullLocalParticipantListener) OnUpdateSubscriptions ¶ added in v1.9.8
func (*NullLocalParticipantListener) OnUpdateSubscriptions( LocalParticipant, []livekit.TrackID, []*livekit.ParticipantTracks, bool, )
type NullParticipantListener ¶ added in v1.9.8
type NullParticipantListener struct{}
func (*NullParticipantListener) OnDataTrackPublished ¶ added in v1.9.8
func (*NullParticipantListener) OnDataTrackPublished(Participant, DataTrack)
func (*NullParticipantListener) OnDataTrackUnpublished ¶ added in v1.9.8
func (*NullParticipantListener) OnDataTrackUnpublished(Participant, DataTrack)
func (*NullParticipantListener) OnMetrics ¶ added in v1.9.8
func (*NullParticipantListener) OnMetrics(Participant, *livekit.DataPacket)
func (*NullParticipantListener) OnParticipantUpdate ¶ added in v1.9.8
func (*NullParticipantListener) OnParticipantUpdate(Participant)
func (*NullParticipantListener) OnTrackPublished ¶ added in v1.9.8
func (*NullParticipantListener) OnTrackPublished(Participant, MediaTrack)
func (*NullParticipantListener) OnTrackUnpublished ¶ added in v1.9.8
func (*NullParticipantListener) OnTrackUnpublished(Participant, MediaTrack)
func (*NullParticipantListener) OnTrackUpdated ¶ added in v1.9.8
func (*NullParticipantListener) OnTrackUpdated(Participant, MediaTrack)
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 any
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
ConnectedAt() time.Time
CloseReason() ParticipantCloseReason
Kind() livekit.ParticipantInfo_Kind
IsRecorder() bool
IsDependent() bool
IsAgent() bool
GetLogger() logger.Logger
CanSkipBroadcast() bool
Version() utils.TimedVersion
ToProto() *livekit.ParticipantInfo
ToProtoWithVersion() (*livekit.ParticipantInfo, utils.TimedVersion)
IsPublisher() bool
GetPublishedTrack(trackID livekit.TrackID) MediaTrack
GetPublishedTracks() []MediaTrack
RemovePublishedTrack(track MediaTrack, isExpectedToResume bool)
GetPublishedDataTracks() []DataTrack
GetPublishedDataTrack(handle uint16) DataTrack
RemovePublishedDataTrack(track DataTrack)
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
MigrateState() MigrateState
Close(sendLeave bool, reason ParticipantCloseReason, isExpectedToResume bool) error
IsClosed() bool
IsDisconnected() bool
SubscriptionPermission() (*livekit.SubscriptionPermission, utils.TimedVersion)
// updates from remotes
UpdateSubscriptionPermission(
subscriptionPermission *livekit.SubscriptionPermission,
timedVersion utils.TimedVersion,
resolverBySid func(participantID livekit.ParticipantID) LocalParticipant,
) error
DebugInfo() map[string]any
HandleReceivedDataTrackMessage([]byte, *datatrack.Packet)
GetParticipantListener() ParticipantListener
}
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 ParticipantCloseReasonSimulateLeaveRequest ParticipantCloseReasonNegotiateFailed ParticipantCloseReasonMigrationRequested ParticipantCloseReasonPublicationError ParticipantCloseReasonSubscriptionError ParticipantCloseReasonDataChannelError ParticipantCloseReasonMigrateCodecMismatch ParticipantCloseReasonSignalSourceClose ParticipantCloseReasonRoomClosed ParticipantCloseReasonUserRejected ParticipantCloseReasonMoveFailed )
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 ParticipantListener ¶ added in v1.9.8
type ParticipantListener interface {
OnParticipantUpdate(Participant)
OnTrackPublished(Participant, MediaTrack)
OnTrackUpdated(Participant, MediaTrack)
OnTrackUnpublished(Participant, MediaTrack)
OnDataTrackPublished(Participant, DataTrack)
OnDataTrackUnpublished(Participant, DataTrack)
OnMetrics(Participant, *livekit.DataPacket)
}
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) 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) SupportsDisconnectedUpdate ¶ added in v1.9.1
func (v ProtocolVersion) SupportsDisconnectedUpdate() 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) SupportsMoving ¶ added in v1.9.0
func (v ProtocolVersion) SupportsMoving() bool
func (ProtocolVersion) SupportsNonErrorSignalResponse ¶ added in v1.8.0
func (v ProtocolVersion) SupportsNonErrorSignalResponse() 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) SupportsSyncStreamID ¶ added in v1.9.1
func (v ProtocolVersion) SupportsSyncStreamID() bool
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,
)
ResolveMediaTrackForSubscriber(sub LocalParticipant, trackID livekit.TrackID) MediaResolverResult
ResolveDataTrackForSubscriber(sub LocalParticipant, trackID livekit.TrackID) DataResolverResult
GetLocalParticipants() []LocalParticipant
IsDataMessageUserPacketDuplicate(ip *livekit.UserPacket) bool
}
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 mime.MimeType
Quality livekit.VideoQuality
}
type SubscribedTrack ¶
type SubscribedTrack interface {
AddOnBind(f func(error))
IsBound() bool
Close(isExpectedToResume bool)
OnClose(f func(isExpectedToResume 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
}