types

package
v1.5.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 17, 2024 License: Apache-2.0 Imports: 16 Imported by: 6

Documentation

Index

Constants

View Source
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 AddSubscriberParams struct {
	AllTracks bool
	TrackIDs  []livekit.TrackID
}

type AddTrackParams added in v1.2.5

type AddTrackParams struct {
	Stereo bool
	Red    bool
}

type ChangeNotifier added in v1.3.4

type ChangeNotifier interface {
	AddObserver(key string, onChanged func())
	RemoveObserver(key string)
	HasObservers() bool
	NotifyChanged()
}

type ICECandidateExtended added in v1.5.2

type ICECandidateExtended struct {
	// only one of local or remote is set. This is due to type foo in Pion
	Local    *webrtc.ICECandidate
	Remote   ice.Candidate
	Selected bool
	Filtered bool
}

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

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

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
}

type WebsocketClient

type WebsocketClient interface {
	ReadMessage() (messageType int, p []byte, err error)
	WriteMessage(messageType int, data []byte) error
	WriteControl(messageType int, data []byte, deadline time.Time) error
}

Directories

Path Synopsis
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL