Documentation
¶
Index ¶
- Constants
- Variables
- func BroadcastDataMessageForRoom(r types.Room, source types.LocalParticipant, data []byte, logger logger.Logger)
- func BroadcastDataPacketForRoom(r types.Room, source types.LocalParticipant, kind livekit.DataPacket_Kind, ...)
- func BroadcastMetricsForRoom(r types.Room, source types.Participant, dp *livekit.DataPacket, ...)
- func ChunkProtoBatch[T proto.Message](batch []T, target int) [][]T
- func CompareParticipant(pi1 *livekit.ParticipantInfo, pi2 *livekit.ParticipantInfo) int
- func GetOtherParticipantInfo(lp types.LocalParticipant, isMigratingIn bool, ...) []*livekit.ParticipantInfo
- func IsCloseNotifySkippable(closeReason types.ParticipantCloseReason) bool
- func IsCodecEnabled(codecs []*livekit.Codec, cap webrtc.RTPCodecCapability) bool
- func IsEOF(err error) bool
- func IsParticipantExemptFromTrackPermissionsRestrictions(p types.LocalParticipant) bool
- func LoggerWithCodecMime(l logger.Logger, mimeType mime.MimeType) logger.Logger
- func LoggerWithPCTarget(l logger.Logger, target livekit.SignalTarget) logger.Logger
- func LoggerWithParticipant(l logger.Logger, identity livekit.ParticipantIdentity, ...) logger.Logger
- func LoggerWithRoom(l logger.Logger, name livekit.RoomName, roomID livekit.RoomID) logger.Logger
- func LoggerWithTrack(l logger.Logger, trackID livekit.TrackID, isRelayed bool) logger.Logger
- func MaybeTruncateIP(addr string) string
- func NewMockParticipant(identity livekit.ParticipantIdentity, protocol types.ProtocolVersion, ...) *typesfakes.FakeLocalParticipant
- func NewMockTrack(kind livekit.TrackType, name string) *typesfakes.FakeMediaTrack
- func PackDataTrackLabel(participantID livekit.ParticipantID, trackID livekit.TrackID, label string) string
- func PackStreamID(participantID livekit.ParticipantID, trackID livekit.TrackID) string
- func PackSyncStreamID(participantID livekit.ParticipantID, stream string) string
- func Recover(l logger.Logger) any
- func SendParticipantUpdates(updates []*ParticipantUpdate, participants []types.LocalParticipant, ...)
- func StartParticipantEgress(ctx context.Context, launcher EgressLauncher, ts telemetry.TelemetryService, ...) error
- func StartTrackEgress(ctx context.Context, launcher EgressLauncher, ts telemetry.TelemetryService, ...) error
- func StreamFromTrackSource(source livekit.TrackSource) string
- func ToProtoTrackKind(kind webrtc.RTPCodecType) livekit.TrackType
- func UnpackDataTrackLabel(packed string) (participantID livekit.ParticipantID, trackID livekit.TrackID, label string)
- func UnpackStreamID(packed string) (participantID livekit.ParticipantID, trackID livekit.TrackID)
- type AgentStore
- type AnyTransportHandler
- type ClientInfo
- func (c ClientInfo) CanHandleReconnectResponse() bool
- func (c ClientInfo) ComplyWithCodecOrderInSDPAnswer() bool
- func (c ClientInfo) FireTrackByRTPPacket() bool
- func (c ClientInfo) SupportsAudioRED() bool
- func (c ClientInfo) SupportsChangeRTPSenderEncodingActive() bool
- func (c ClientInfo) SupportsCodecChange() bool
- func (c ClientInfo) SupportsICETCP() bool
- func (c ClientInfo) SupportsPrflxOverRelay() bool
- func (c ClientInfo) SupportsRequestResponse() bool
- func (c ClientInfo) SupportsSctpZeroChecksum() bool
- func (c ClientInfo) SupportsTrackSubscribedEvent() bool
- type DirectionConfig
- type DummyReceiver
- func (d *DummyReceiver) AddDownTrack(track sfu.TrackSender) error
- func (d *DummyReceiver) AddOnCodecStateChange(f func(codec webrtc.RTPCodecParameters, state sfu.ReceiverCodecState))
- func (d *DummyReceiver) AddOnReady(f func())
- func (d *DummyReceiver) Codec() webrtc.RTPCodecParameters
- func (d *DummyReceiver) CodecState() sfu.ReceiverCodecState
- func (d *DummyReceiver) DebugInfo() map[string]interface{}
- func (d *DummyReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID)
- func (d *DummyReceiver) GetAudioLevel() (float64, bool)
- func (d *DummyReceiver) GetDownTracks() []sfu.TrackSender
- func (d *DummyReceiver) GetLayeredBitrate() ([]int32, sfu.Bitrates)
- func (d *DummyReceiver) GetPrimaryReceiverForRed() sfu.TrackReceiver
- func (d *DummyReceiver) GetRedReceiver() sfu.TrackReceiver
- func (d *DummyReceiver) GetTemporalLayerFpsForSpatial(spatial int32) []float32
- func (d *DummyReceiver) GetTrackStats() *livekit.RTPStats
- func (d *DummyReceiver) HeaderExtensions() []webrtc.RTPHeaderExtensionParameter
- func (d *DummyReceiver) IsClosed() bool
- func (d *DummyReceiver) IsReady() bool
- func (d *DummyReceiver) Mime() mime.MimeType
- func (d *DummyReceiver) ReadRTP(buf []byte, layer uint8, esn uint64) (int, error)
- func (d *DummyReceiver) Receiver() sfu.TrackReceiver
- func (d *DummyReceiver) SendPLI(layer int32, force bool)
- func (d *DummyReceiver) SetMaxExpectedSpatialLayer(layer int32)
- func (d *DummyReceiver) SetUpTrackPaused(paused bool)
- func (d *DummyReceiver) StreamID() string
- func (d *DummyReceiver) TrackID() livekit.TrackID
- func (d *DummyReceiver) TrackInfo() *livekit.TrackInfo
- func (d *DummyReceiver) UpdateTrackInfo(ti *livekit.TrackInfo)
- func (d *DummyReceiver) Upgrade(receiver sfu.TrackReceiver)
- func (d *DummyReceiver) VideoLayerMode() livekit.VideoLayer_Mode
- func (d *DummyReceiver) VideoSizes() []buffer.VideoSize
- type DummyRedReceiver
- type EgressLauncher
- type MediaLossProxy
- type MediaLossProxyParams
- type MediaTrack
- func (t *MediaTrack) AddReceiver(receiver *webrtc.RTPReceiver, track sfu.TrackRemote, mid string) (bool, bool)
- func (t *MediaTrack) ClearSubscriberNodesMaxQuality()
- func (t *MediaTrack) Close(isExpectedToResume bool)
- func (t *MediaTrack) GetCidsForMimeType(mimeType mime.MimeType) (string, string)
- func (t *MediaTrack) GetConnectionScoreAndQuality() (float32, livekit.ConnectionQuality)
- func (t *MediaTrack) GetMimeTypeForSdpCid(cid string) mime.MimeType
- func (t *MediaTrack) HasPendingCodec() bool
- func (t *MediaTrack) HasSdpCid(cid string) bool
- func (t *MediaTrack) HasSignalCid(cid string) bool
- func (t *MediaTrack) Logger() logger.Logger
- func (t *MediaTrack) NotifySubscriberNodeMaxQuality(nodeID livekit.NodeID, qualities []types.SubscribedCodecQuality)
- func (t *MediaTrack) OnSubscribedMaxQualityChange(f func(trackID livekit.TrackID, trackInfo *livekit.TrackInfo, ...) error)
- func (t *MediaTrack) OnTrackSubscribed()
- func (t *MediaTrack) Restart()
- func (t *MediaTrack) SetMuted(muted bool)
- func (t *MediaTrack) SetRTT(rtt uint32)
- func (t *MediaTrack) ToProto() *livekit.TrackInfo
- type MediaTrackParams
- type MediaTrackReceiver
- func (t *MediaTrackReceiver) ActiveReceiver() sfu.TrackReceiver
- func (t *MediaTrackReceiver) AddOnClose(f func(isExpectedToResume bool))
- func (t *MediaTrackReceiver) AddSubscriber(sub types.LocalParticipant) (types.SubscribedTrack, error)
- func (t *MediaTrackReceiver) ClearAllReceivers(isExpectedToResume bool)
- func (t *MediaTrackReceiver) ClearReceiver(mime mime.MimeType, isExpectedToResume bool)
- func (t *MediaTrackReceiver) Close(isExpectedToResume bool)
- func (t *MediaTrackReceiver) DebugInfo() map[string]interface{}
- func (t *MediaTrackReceiver) GetAudioLevel() (float64, bool)
- func (t *MediaTrackReceiver) GetQualityForDimension(mimeType mime.MimeType, width, height uint32) livekit.VideoQuality
- func (t *MediaTrackReceiver) GetTemporalLayerForSpatialFps(mimeType mime.MimeType, spatial int32, fps uint32) int32
- func (t *MediaTrackReceiver) GetTrackStats() *livekit.RTPStats
- func (t *MediaTrackReceiver) HandleReceiverCodecChange(r sfu.TrackReceiver, codec webrtc.RTPCodecParameters, ...)
- func (t *MediaTrackReceiver) ID() livekit.TrackID
- func (t *MediaTrackReceiver) IsEncrypted() bool
- func (t *MediaTrackReceiver) IsMuted() bool
- func (t *MediaTrackReceiver) IsOpen() bool
- func (t *MediaTrackReceiver) Kind() livekit.TrackType
- func (t *MediaTrackReceiver) Name() string
- func (t *MediaTrackReceiver) NotifyMaxLayerChange(mimeType mime.MimeType, maxLayer int32)
- func (t *MediaTrackReceiver) OnCodecRegression(f func(old, new webrtc.RTPCodecParameters))
- func (t *MediaTrackReceiver) OnMediaLossFeedback(f func(dt *sfu.DownTrack, rr *rtcp.ReceiverReport))
- func (t *MediaTrackReceiver) OnSetupReceiver(f func(mime mime.MimeType))
- func (t *MediaTrackReceiver) PrimaryReceiver() sfu.TrackReceiver
- func (t *MediaTrackReceiver) PublisherID() livekit.ParticipantID
- func (t *MediaTrackReceiver) PublisherIdentity() livekit.ParticipantIdentity
- func (t *MediaTrackReceiver) PublisherVersion() uint32
- func (t *MediaTrackReceiver) Receiver(mime mime.MimeType) sfu.TrackReceiver
- func (t *MediaTrackReceiver) Receivers() []sfu.TrackReceiver
- func (t *MediaTrackReceiver) RemoveSubscriber(subscriberID livekit.ParticipantID, isExpectedToResume bool)
- func (t *MediaTrackReceiver) Restart()
- func (t *MediaTrackReceiver) RevokeDisallowedSubscribers(allowedSubscriberIdentities []livekit.ParticipantIdentity) []livekit.ParticipantIdentity
- func (t *MediaTrackReceiver) SetClosing(isExpectedToResume bool)
- func (t *MediaTrackReceiver) SetLayerSsrc(mimeType mime.MimeType, rid string, ssrc uint32)
- func (t *MediaTrackReceiver) SetMuted(muted bool)
- func (t *MediaTrackReceiver) SetPotentialCodecs(codecs []webrtc.RTPCodecParameters, ...)
- func (t *MediaTrackReceiver) SetRTT(rtt uint32)
- func (t *MediaTrackReceiver) SetupReceiver(receiver sfu.TrackReceiver, priority int, mid string)
- func (t *MediaTrackReceiver) Source() livekit.TrackSource
- func (t *MediaTrackReceiver) Stream() string
- func (t *MediaTrackReceiver) TrackInfo() *livekit.TrackInfo
- func (t *MediaTrackReceiver) TrackInfoClone() *livekit.TrackInfo
- func (t *MediaTrackReceiver) TryClose() bool
- func (t *MediaTrackReceiver) UpdateAudioTrack(update *livekit.UpdateLocalAudioTrack)
- func (t *MediaTrackReceiver) UpdateCodecInfo(codecs []*livekit.SimulcastCodec)
- func (t *MediaTrackReceiver) UpdateCodecRids(mimeType mime.MimeType, rids buffer.VideoLayersRid)
- func (t *MediaTrackReceiver) UpdateCodecSdpCid(mimeType mime.MimeType, sdpCid string)
- func (t *MediaTrackReceiver) UpdateTrackInfo(ti *livekit.TrackInfo)
- func (t *MediaTrackReceiver) UpdateVideoTrack(update *livekit.UpdateLocalVideoTrack)
- type MediaTrackReceiverParams
- type MediaTrackSubscriptions
- func (t *MediaTrackSubscriptions) AddSubscriber(sub types.LocalParticipant, wr *WrappedReceiver) (types.SubscribedTrack, error)
- func (t *MediaTrackSubscriptions) DebugInfo() []map[string]interface{}
- func (t *MediaTrackSubscriptions) GetAllSubscribers() []livekit.ParticipantID
- func (t *MediaTrackSubscriptions) GetAllSubscribersForMime(mime mime.MimeType) []livekit.ParticipantID
- func (t *MediaTrackSubscriptions) GetNumSubscribers() int
- func (t *MediaTrackSubscriptions) IsSubscriber(subID livekit.ParticipantID) bool
- func (t *MediaTrackSubscriptions) OnDownTrackCreated(f func(downTrack *sfu.DownTrack))
- func (t *MediaTrackSubscriptions) OnSubscriberMaxQualityChange(f func(subscriberID livekit.ParticipantID, mime mime.MimeType, layer int32))
- func (t *MediaTrackSubscriptions) RemoveSubscriber(subscriberID livekit.ParticipantID, isExpectedToResume bool) error
- func (t *MediaTrackSubscriptions) SetMuted(muted bool)
- func (t *MediaTrackSubscriptions) UpdateVideoLayers()
- type MediaTrackSubscriptionsParams
- type MigrationDataCache
- type MigrationDataCacheState
- type PCTransport
- func (t *PCTransport) AddICECandidate(candidate webrtc.ICECandidateInit)
- func (t *PCTransport) AddTrack(trackLocal webrtc.TrackLocal, params types.AddTrackParams, ...) (sender *webrtc.RTPSender, transceiver *webrtc.RTPTransceiver, err error)
- func (t *PCTransport) AddTrackToStreamAllocator(subTrack types.SubscribedTrack)
- func (t *PCTransport) AddTransceiverFromKind(kind webrtc.RTPCodecType, init webrtc.RTPTransceiverInit) (*webrtc.RTPTransceiver, error)
- func (t *PCTransport) AddTransceiverFromTrack(trackLocal webrtc.TrackLocal, params types.AddTrackParams, ...) (sender *webrtc.RTPSender, transceiver *webrtc.RTPTransceiver, err error)
- func (t *PCTransport) Close()
- func (t *PCTransport) CreateDataChannel(label string, dci *webrtc.DataChannelInit) error
- func (t *PCTransport) CreateDataChannelIfEmpty(dcLabel string, dci *webrtc.DataChannelInit) (label string, id uint16, existing bool, err error)
- func (t *PCTransport) CreateReadableDataChannel(label string, dci *webrtc.DataChannelInit) error
- func (t *PCTransport) CurrentLocalDescription() *webrtc.SessionDescription
- func (t *PCTransport) CurrentRemoteDescription() *webrtc.SessionDescription
- func (t *PCTransport) GetAnswer() (webrtc.SessionDescription, uint32, error)
- func (t *PCTransport) GetICEConnectionInfo() *types.ICEConnectionInfo
- func (t *PCTransport) GetICEConnectionType() types.ICEConnectionType
- func (t *PCTransport) GetICESessionUfrag() (string, error)
- func (t *PCTransport) GetMid(rtpReceiver *webrtc.RTPReceiver) string
- func (t *PCTransport) GetPacer() pacer.Pacer
- func (t *PCTransport) GetRTPReceiver(mid string) *webrtc.RTPReceiver
- func (t *PCTransport) GetRTT() (float64, bool)
- func (t *PCTransport) HandleICERestartSDPFragment(sdpFragment string) (string, error)
- func (t *PCTransport) HandleICETrickleSDPFragment(sdpFragment string) error
- func (t *PCTransport) HandleRemoteDescription(sd webrtc.SessionDescription, remoteId uint32) error
- func (t *PCTransport) HasEverConnected() bool
- func (t *PCTransport) ICERestart() error
- func (t *PCTransport) IsEstablished() bool
- func (t *PCTransport) IsShortConnection(at time.Time) (bool, time.Duration)
- func (t *PCTransport) Negotiate(force bool)
- func (t *PCTransport) OnNegotiationStateChanged(f func(state transport.NegotiationState))
- func (t *PCTransport) RemoveTrack(sender *webrtc.RTPSender) error
- func (t *PCTransport) RemoveTrackFromStreamAllocator(subTrack types.SubscribedTrack)
- func (t *PCTransport) ResetShortConnOnICERestart()
- func (t *PCTransport) SendDataMessage(kind livekit.DataPacket_Kind, data []byte) error
- func (t *PCTransport) SendDataMessageUnlabeled(data []byte, useRaw bool, sender livekit.ParticipantIdentity) error
- func (t *PCTransport) SetAllowPauseOfStreamAllocator(allowPause bool)
- func (t *PCTransport) SetChannelCapacityOfStreamAllocator(channelCapacity int64)
- func (t *PCTransport) SetPreferTCP(preferTCP bool)
- func (t *PCTransport) SetPreviousSdp(localDescription, remoteDescription *webrtc.SessionDescription)
- func (t *PCTransport) SetSignalingRTT(rtt uint32)
- func (t *PCTransport) WriteRTCP(pkts []rtcp.Packet) error
- type ParticipantImpl
- func (p *ParticipantImpl) AddTrack(req *livekit.AddTrackRequest)
- func (p *ParticipantImpl) AddTrackLocal(trackLocal webrtc.TrackLocal, params types.AddTrackParams) (*webrtc.RTPSender, *webrtc.RTPTransceiver, error)
- func (p *ParticipantImpl) AddTransceiverFromTrackLocal(trackLocal webrtc.TrackLocal, params types.AddTrackParams) (*webrtc.RTPSender, *webrtc.RTPTransceiver, error)
- func (p *ParticipantImpl) CacheDownTrack(trackID livekit.TrackID, rtpTransceiver *webrtc.RTPTransceiver, ...)
- func (p *ParticipantImpl) CanPublish() bool
- func (p *ParticipantImpl) CanPublishData() bool
- func (p *ParticipantImpl) CanPublishSource(source livekit.TrackSource) bool
- func (p *ParticipantImpl) CanSkipBroadcast() bool
- func (p *ParticipantImpl) CanSubscribe() bool
- func (p *ParticipantImpl) CanSubscribeMetrics() bool
- func (p *ParticipantImpl) ClaimGrants() *auth.ClaimGrants
- func (p *ParticipantImpl) Close(sendLeave bool, reason types.ParticipantCloseReason, isExpectedToResume bool) error
- func (p *ParticipantImpl) CloseReason() types.ParticipantCloseReason
- func (p *ParticipantImpl) CloseSignalConnection(reason types.SignallingCloseReason)
- func (p *ParticipantImpl) ConnectedAt() time.Time
- func (p *ParticipantImpl) DebugInfo() map[string]interface{}
- func (p *ParticipantImpl) Disconnected() <-chan struct{}
- func (p *ParticipantImpl) GetAdaptiveStream() bool
- func (p *ParticipantImpl) GetAnswer() (webrtc.SessionDescription, uint32, error)
- func (p *ParticipantImpl) GetBufferFactory() *buffer.Factory
- func (p *ParticipantImpl) GetCachedDownTrack(trackID livekit.TrackID) (*webrtc.RTPTransceiver, sfu.DownTrackState)
- func (p *ParticipantImpl) GetClientConfiguration() *livekit.ClientConfiguration
- func (p *ParticipantImpl) GetClientInfo() *livekit.ClientInfo
- func (p *ParticipantImpl) GetConnectionQuality() *livekit.ConnectionQualityInfo
- func (p *ParticipantImpl) GetCountry() string
- func (p *ParticipantImpl) GetDisableSenderReportPassThrough() bool
- func (p *ParticipantImpl) GetEnabledPublishCodecs() []*livekit.Codec
- func (p *ParticipantImpl) GetLastReliableSequence(migrateOut bool) uint32
- func (p *ParticipantImpl) GetLogger() logger.Logger
- func (p *ParticipantImpl) GetLoggerResolver() logger.DeferredFieldResolver
- func (p *ParticipantImpl) GetPacer() pacer.Pacer
- func (p *ParticipantImpl) GetPendingTrack(trackID livekit.TrackID) *livekit.TrackInfo
- func (p *ParticipantImpl) GetPlayoutDelayConfig() *livekit.PlayoutDelay
- func (p *ParticipantImpl) GetReporter() roomobs.ParticipantSessionReporter
- func (p *ParticipantImpl) GetReporterResolver() roomobs.ParticipantReporterResolver
- func (p *ParticipantImpl) GetResponseSink() routing.MessageSink
- func (p *ParticipantImpl) GetTrailer() []byte
- func (p *ParticipantImpl) HandleAnswer(sd *livekit.SessionDescription)
- func (p *ParticipantImpl) HandleICETrickle(trickleRequest *livekit.TrickleRequest)
- func (p *ParticipantImpl) HandleLeaveRequest(reason types.ParticipantCloseReason)
- func (p *ParticipantImpl) HandleMetrics(senderParticipantID livekit.ParticipantID, metrics *livekit.MetricsBatch) error
- func (p *ParticipantImpl) HandleOffer(sd *livekit.SessionDescription) error
- func (p *ParticipantImpl) HandleReconnectAndSendResponse(reconnectReason livekit.ReconnectReason, ...) error
- func (p *ParticipantImpl) HandleSignalMessage(msg proto.Message) error
- func (p *ParticipantImpl) HandleSignalSourceClose()
- func (p *ParticipantImpl) HandleSimulateScenario(simulateScenario *livekit.SimulateScenario) error
- func (p *ParticipantImpl) HandleSyncState(syncState *livekit.SyncState) error
- func (p *ParticipantImpl) HandleUpdateSubscriptionPermission(subscriptionPermission *livekit.SubscriptionPermission) error
- func (p *ParticipantImpl) HandleUpdateSubscriptions(trackIDs []livekit.TrackID, participantTracks []*livekit.ParticipantTracks, ...)
- func (p *ParticipantImpl) HasConnected() bool
- func (p *ParticipantImpl) Hidden() bool
- func (p *ParticipantImpl) ICERestart(iceConfig *livekit.ICEConfig)
- func (p *ParticipantImpl) ID() livekit.ParticipantID
- func (p *ParticipantImpl) Identity() livekit.ParticipantIdentity
- func (p *ParticipantImpl) IsAgent() bool
- func (p *ParticipantImpl) IsClosed() bool
- func (p *ParticipantImpl) IsDependent() bool
- func (p *ParticipantImpl) IsDisconnected() bool
- func (p *ParticipantImpl) IsIdle() bool
- func (p *ParticipantImpl) IsPublisher() bool
- func (p *ParticipantImpl) IsReady() bool
- func (p *ParticipantImpl) IsReconnect() bool
- func (p *ParticipantImpl) IsRecorder() bool
- func (p *ParticipantImpl) IsUsingSinglePeerConnection() bool
- func (p *ParticipantImpl) IssueFullReconnect(reason types.ParticipantCloseReason)
- func (p *ParticipantImpl) Kind() livekit.ParticipantInfo_Kind
- func (p *ParticipantImpl) MaybeStartMigration(force bool, onStart func()) bool
- func (p *ParticipantImpl) MetricsCollectorBatchReady(mb *livekit.MetricsBatch)
- func (p *ParticipantImpl) MetricsCollectorTimeToCollectMetrics()
- func (p *ParticipantImpl) MetricsReporterBatchReady(mb *livekit.MetricsBatch)
- func (p *ParticipantImpl) MigrateState() types.MigrateState
- func (p *ParticipantImpl) MoveToRoom(params types.MoveToRoomParams)
- func (p *ParticipantImpl) Negotiate(force bool)
- func (p *ParticipantImpl) NotifyMigration()
- func (p *ParticipantImpl) OnClaimsChanged(callback func(types.LocalParticipant))
- func (p *ParticipantImpl) OnClose(callback func(types.LocalParticipant))
- func (p *ParticipantImpl) OnDataMessage(callback func(types.LocalParticipant, []byte))
- func (p *ParticipantImpl) OnDataPacket(...)
- func (p *ParticipantImpl) OnICEConfigChanged(f func(participant types.LocalParticipant, iceConfig *livekit.ICEConfig))
- func (p *ParticipantImpl) OnLeave(callback func(types.LocalParticipant, types.ParticipantCloseReason))
- func (p *ParticipantImpl) OnMetrics(callback func(types.Participant, *livekit.DataPacket))
- func (p *ParticipantImpl) OnMigrateStateChange(callback func(p types.LocalParticipant, state types.MigrateState))
- func (p *ParticipantImpl) OnParticipantUpdate(callback func(types.LocalParticipant))
- func (p *ParticipantImpl) OnSimulateScenario(callback func(types.LocalParticipant, *livekit.SimulateScenario) error)
- func (p *ParticipantImpl) OnStateChange(callback func(p types.LocalParticipant))
- func (p *ParticipantImpl) OnSubscriberReady(callback func(p types.LocalParticipant))
- func (p *ParticipantImpl) OnSyncState(callback func(types.LocalParticipant, *livekit.SyncState) error)
- func (p *ParticipantImpl) OnTrackPublished(callback func(types.LocalParticipant, types.MediaTrack))
- func (p *ParticipantImpl) OnTrackUnpublished(callback func(types.LocalParticipant, types.MediaTrack))
- func (p *ParticipantImpl) OnTrackUpdated(callback func(types.LocalParticipant, types.MediaTrack))
- func (p *ParticipantImpl) OnUpdateSubscriptionPermission(callback func(types.LocalParticipant, *livekit.SubscriptionPermission) error)
- func (p *ParticipantImpl) OnUpdateSubscriptions(...)
- func (p *ParticipantImpl) ProtocolVersion() types.ProtocolVersion
- func (p *ParticipantImpl) SendConnectionQualityUpdate(update *livekit.ConnectionQualityUpdate) error
- func (p *ParticipantImpl) SendDataMessage(kind livekit.DataPacket_Kind, data []byte, sender livekit.ParticipantID, ...) error
- func (p *ParticipantImpl) SendDataMessageUnlabeled(data []byte, useRaw bool, sender livekit.ParticipantIdentity) error
- func (p *ParticipantImpl) SendJoinResponse(joinResponse *livekit.JoinResponse) error
- func (p *ParticipantImpl) SendParticipantUpdate(participantsToUpdate []*livekit.ParticipantInfo) error
- func (p *ParticipantImpl) SendRefreshToken(token string) error
- func (p *ParticipantImpl) SendRoomMovedResponse(roomMovedResponse *livekit.RoomMovedResponse) error
- func (p *ParticipantImpl) SendRoomUpdate(room *livekit.Room) error
- func (p *ParticipantImpl) SendSpeakerUpdate(speakers []*livekit.SpeakerInfo, force bool) error
- func (p *ParticipantImpl) SendSubscriptionPermissionUpdate(publisherID livekit.ParticipantID, trackID livekit.TrackID, allowed bool) error
- func (p *ParticipantImpl) SetAttributes(attrs map[string]string)
- func (p *ParticipantImpl) SetMetadata(metadata string)
- func (p *ParticipantImpl) SetMigrateInfo(previousOffer, previousAnswer *webrtc.SessionDescription, ...)
- func (p *ParticipantImpl) SetMigrateState(s types.MigrateState)
- func (p *ParticipantImpl) SetName(name string)
- func (p *ParticipantImpl) SetPermission(permission *livekit.ParticipantPermission) bool
- func (p *ParticipantImpl) SetResponseSink(sink routing.MessageSink)
- func (p *ParticipantImpl) SetTrackMuted(mute *livekit.MuteTrackRequest, fromAdmin bool) *livekit.TrackInfo
- func (p *ParticipantImpl) State() livekit.ParticipantInfo_State
- func (p *ParticipantImpl) SupportsCodecChange() bool
- func (p *ParticipantImpl) SupportsMoving() error
- func (p *ParticipantImpl) SupportsSyncStreamID() bool
- func (p *ParticipantImpl) SupportsTransceiverReuse() bool
- func (p *ParticipantImpl) ToProto() *livekit.ParticipantInfo
- func (p *ParticipantImpl) ToProtoWithVersion() (*livekit.ParticipantInfo, utils.TimedVersion)
- func (p *ParticipantImpl) UncacheDownTrack(rtpTransceiver *webrtc.RTPTransceiver)
- func (p *ParticipantImpl) UpdateAudioTrack(update *livekit.UpdateLocalAudioTrack) error
- func (p *ParticipantImpl) UpdateMediaLoss(nodeID livekit.NodeID, trackID livekit.TrackID, fractionalLoss uint32) error
- func (p *ParticipantImpl) UpdateMediaRTT(rtt uint32)
- func (p *ParticipantImpl) UpdateMetadata(update *livekit.UpdateParticipantMetadata, fromAdmin bool) error
- func (p *ParticipantImpl) UpdateSubscribedQuality(nodeID livekit.NodeID, trackID livekit.TrackID, ...) error
- func (p *ParticipantImpl) UpdateVideoTrack(update *livekit.UpdateLocalVideoTrack) error
- func (p *ParticipantImpl) Verify() bool
- func (p *ParticipantImpl) VerifySubscribeParticipantInfo(pID livekit.ParticipantID, version uint32)
- func (p *ParticipantImpl) Version() utils.TimedVersion
- type ParticipantOptions
- type ParticipantParams
- type ParticipantUpdate
- type PrimaryTransportHandler
- type PublisherTransportHandler
- func (h PublisherTransportHandler) OnAnswer(sd webrtc.SessionDescription, answerId uint32) error
- func (h PublisherTransportHandler) OnDataMessage(kind livekit.DataPacket_Kind, data []byte)
- func (h PublisherTransportHandler) OnDataMessageUnlabeled(data []byte)
- func (h PublisherTransportHandler) OnDataSendError(err error)
- func (h PublisherTransportHandler) OnInitialConnected()
- func (h PublisherTransportHandler) OnTrack(track *webrtc.TrackRemote, rtpReceiver *webrtc.RTPReceiver)
- func (h PublisherTransportHandler) OnUnmatchedMedia(numAudios uint32, numVideos uint32) error
- type RTCPFeedbackConfig
- type RTPHeaderExtensionConfig
- type ReceiverConfig
- type Room
- func (r *Room) AddAgentDispatch(dispatch *livekit.AgentDispatch) (*livekit.AgentDispatch, error)
- func (r *Room) Close(reason types.ParticipantCloseReason)
- func (r *Room) CloseIfEmpty()
- func (r *Room) DebugInfo() map[string]interface{}
- func (r *Room) DeleteAgentDispatch(dispatchID string) (*livekit.AgentDispatch, error)
- func (r *Room) FirstJoinedAt() int64
- func (r *Room) GetActiveSpeakers() []*livekit.SpeakerInfo
- func (r *Room) GetAgentDispatches(dispatchID string) ([]*livekit.AgentDispatch, error)
- func (r *Room) GetBufferFactory() *buffer.Factory
- func (r *Room) GetCachedReliableDataMessage(seqs map[livekit.ParticipantID]uint32) []*types.DataMessageCache
- func (r *Room) GetLocalParticipants() []types.LocalParticipant
- func (r *Room) GetParticipant(identity livekit.ParticipantIdentity) types.LocalParticipant
- func (r *Room) GetParticipantByID(participantID livekit.ParticipantID) types.LocalParticipant
- func (r *Room) GetParticipantCount() int
- func (r *Room) GetParticipantRequestSource(identity livekit.ParticipantIdentity) routing.MessageSource
- func (r *Room) GetParticipants() []types.LocalParticipant
- func (r *Room) HandleSyncState(participant types.LocalParticipant, state *livekit.SyncState) error
- func (r *Room) Hold() bool
- func (r *Room) ID() livekit.RoomID
- func (r *Room) Internal() *livekit.RoomInternal
- func (r *Room) IsClosed() bool
- func (r *Room) IsDataMessageUserPacketDuplicate(up *livekit.UserPacket) bool
- func (r *Room) Join(participant types.LocalParticipant, requestSource routing.MessageSource, ...) error
- func (r *Room) LastLeftAt() int64
- func (r *Room) Logger() logger.Logger
- func (r *Room) Name() livekit.RoomName
- func (r *Room) OnClose(f func())
- func (r *Room) OnParticipantChanged(f func(participant types.LocalParticipant))
- func (r *Room) OnRoomUpdated(f func())
- func (r *Room) Release()
- func (r *Room) RemoveParticipant(identity livekit.ParticipantIdentity, pID livekit.ParticipantID, ...)
- func (r *Room) ReplaceParticipantRequestSource(identity livekit.ParticipantIdentity, reqSource routing.MessageSource)
- func (r *Room) ResolveMediaTrackForSubscriber(sub types.LocalParticipant, trackID livekit.TrackID) types.MediaResolverResult
- func (r *Room) ResumeParticipant(p types.LocalParticipant, requestSource routing.MessageSource, ...) error
- func (r *Room) SendDataPacket(dp *livekit.DataPacket, kind livekit.DataPacket_Kind)
- func (r *Room) SetMetadata(metadata string) <-chan struct{}
- func (r *Room) ToProto() *livekit.Room
- func (r *Room) Trailer() []byte
- func (r *Room) UpdateSubscriptions(participant types.LocalParticipant, trackIDs []livekit.TrackID, ...)
- type RoomTrackManager
- func (r *RoomTrackManager) AddTrack(track types.MediaTrack, publisherIdentity livekit.ParticipantIdentity, ...)
- func (r *RoomTrackManager) GetOrCreateTrackChangeNotifier(trackID livekit.TrackID) *utils.ChangeNotifier
- func (r *RoomTrackManager) GetOrCreateTrackRemoveNotifier(trackID livekit.TrackID) *utils.ChangeNotifier
- func (r *RoomTrackManager) GetTrackInfo(trackID livekit.TrackID) *TrackInfo
- func (r *RoomTrackManager) HasObservers(track types.MediaTrack) bool
- func (r *RoomTrackManager) NotifyTrackChanged(trackID livekit.TrackID)
- func (r *RoomTrackManager) RemoveTrack(track types.MediaTrack)
- type SimulcastTrackInfo
- type SubscribedTrack
- func (t *SubscribedTrack) AddOnBind(f func(error))
- func (t *SubscribedTrack) Bound(err error)
- func (t *SubscribedTrack) Close(isExpectedToResume bool)
- func (t *SubscribedTrack) DownTrack() *sfu.DownTrack
- func (t *SubscribedTrack) ID() livekit.TrackID
- func (t *SubscribedTrack) IsBound() bool
- func (t *SubscribedTrack) IsMuted() bool
- func (t *SubscribedTrack) MediaTrack() types.MediaTrack
- func (t *SubscribedTrack) NeedsNegotiation() bool
- func (t *SubscribedTrack) OnClose(f func(bool))
- func (t *SubscribedTrack) PublisherID() livekit.ParticipantID
- func (t *SubscribedTrack) PublisherIdentity() livekit.ParticipantIdentity
- func (t *SubscribedTrack) PublisherVersion() uint32
- func (t *SubscribedTrack) RTPSender() *webrtc.RTPSender
- func (t *SubscribedTrack) SetNeedsNegotiation(needs bool)
- func (t *SubscribedTrack) SetPublisherMuted(muted bool)
- func (t *SubscribedTrack) SetRTPSender(sender *webrtc.RTPSender)
- func (t *SubscribedTrack) Subscriber() types.LocalParticipant
- func (t *SubscribedTrack) SubscriberID() livekit.ParticipantID
- func (t *SubscribedTrack) SubscriberIdentity() livekit.ParticipantIdentity
- func (t *SubscribedTrack) UpdateSubscriberSettings(settings *livekit.UpdateTrackSettings, isImmediate bool)
- func (t *SubscribedTrack) UpdateVideoLayer()
- type SubscribedTrackParams
- type SubscriberTransportHandler
- func (h SubscriberTransportHandler) OnDataSendError(err error)
- func (h SubscriberTransportHandler) OnInitialConnected()
- func (h SubscriberTransportHandler) OnOffer(sd webrtc.SessionDescription, offerId uint32) error
- func (h SubscriberTransportHandler) OnStreamStateChange(update *streamallocator.StreamStateUpdate) error
- type SubscriptionManager
- func (m *SubscriptionManager) ClearAllSubscriptions()
- func (m *SubscriptionManager) Close(isExpectedToResume bool)
- func (m *SubscriptionManager) GetSubscribedParticipants() []livekit.ParticipantID
- func (m *SubscriptionManager) GetSubscribedTracks() []types.SubscribedTrack
- func (m *SubscriptionManager) HasSubscriptions() bool
- func (m *SubscriptionManager) IsSubscribedTo(participantID livekit.ParticipantID) bool
- func (m *SubscriptionManager) IsTrackNameSubscribed(publisherIdentity livekit.ParticipantIdentity, trackName string) bool
- func (m *SubscriptionManager) OnSubscribeStatusChanged(fn func(publisherID livekit.ParticipantID, subscribed bool))
- func (m *SubscriptionManager) ReconcileAll()
- func (m *SubscriptionManager) StopAndGetSubscribedTracksForwarderState() map[livekit.TrackID]*livekit.RTPForwarderState
- func (m *SubscriptionManager) SubscribeToTrack(trackID livekit.TrackID, isSync bool)
- func (m *SubscriptionManager) UnsubscribeFromTrack(trackID livekit.TrackID)
- func (m *SubscriptionManager) UpdateSubscribedTrackSettings(trackID livekit.TrackID, settings *livekit.UpdateTrackSettings)
- func (m *SubscriptionManager) WaitUntilSubscribed(timeout time.Duration) error
- type SubscriptionManagerParams
- type TrackInfo
- type TransportManager
- func (t *TransportManager) AddICECandidate(candidate webrtc.ICECandidateInit, target livekit.SignalTarget)
- func (t *TransportManager) AddSubscribedTrack(subTrack types.SubscribedTrack)
- func (t *TransportManager) AddTrackLocal(trackLocal webrtc.TrackLocal, params types.AddTrackParams, ...) (*webrtc.RTPSender, *webrtc.RTPTransceiver, error)
- func (t *TransportManager) AddTransceiverFromTrackLocal(trackLocal webrtc.TrackLocal, params types.AddTrackParams, ...) (*webrtc.RTPSender, *webrtc.RTPTransceiver, error)
- func (t *TransportManager) Close()
- func (t *TransportManager) GetAnswer() (webrtc.SessionDescription, uint32, error)
- func (t *TransportManager) GetICEConfig() *livekit.ICEConfig
- func (t *TransportManager) GetICEConnectionInfo() []*types.ICEConnectionInfo
- func (t *TransportManager) GetPublisherICESessionUfrag() (string, error)
- func (t *TransportManager) GetPublisherMid(rtpReceiver *webrtc.RTPReceiver) string
- func (t *TransportManager) GetPublisherRTPReceiver(mid string) *webrtc.RTPReceiver
- func (t *TransportManager) GetPublisherRTT() (float64, bool)
- func (t *TransportManager) GetSubscriberPacer() pacer.Pacer
- func (t *TransportManager) GetSubscriberRTT() (float64, bool)
- func (t *TransportManager) GetUnmatchMediaForOffer(parsedOffer *sdp.SessionDescription, mediaType string) (unmatched []*sdp.MediaDescription, err error)
- func (t *TransportManager) HandleAnswer(answer webrtc.SessionDescription, answerId uint32)
- func (t *TransportManager) HandleClientReconnect(reason livekit.ReconnectReason)
- func (t *TransportManager) HandleICERestartSDPFragment(sdpFragment string) (string, error)
- func (t *TransportManager) HandleICETrickleSDPFragment(sdpFragment string) error
- func (t *TransportManager) HandleOffer(offer webrtc.SessionDescription, offerId uint32, shouldPend bool) error
- func (t *TransportManager) HandleReceiverReport(dt *sfu.DownTrack, report *rtcp.ReceiverReport)
- func (t *TransportManager) HasPublisherEverConnected() bool
- func (t *TransportManager) HasSubscriberEverConnected() bool
- func (t *TransportManager) ICERestart(iceConfig *livekit.ICEConfig) error
- func (t *TransportManager) IsPublisherEstablished() bool
- func (t *TransportManager) LastPublisherOffer() *webrtc.SessionDescription
- func (t *TransportManager) LastSeenSignalAt() time.Time
- func (t *TransportManager) NegotiateSubscriber(force bool)
- func (t *TransportManager) OnICEConfigChanged(f func(iceConfig *livekit.ICEConfig))
- func (t *TransportManager) ProcessPendingPublisherDataChannels()
- func (t *TransportManager) ProcessPendingPublisherOffer()
- func (t *TransportManager) RemoveSubscribedTrack(subTrack types.SubscribedTrack)
- func (t *TransportManager) RemoveTrackLocal(sender *webrtc.RTPSender) error
- func (t *TransportManager) SendDataMessage(kind livekit.DataPacket_Kind, data []byte) error
- func (t *TransportManager) SendDataMessageUnlabeled(data []byte, useRaw bool, sender livekit.ParticipantIdentity) error
- func (t *TransportManager) SetICEConfig(iceConfig *livekit.ICEConfig)
- func (t *TransportManager) SetMigrateInfo(previousOffer *webrtc.SessionDescription, ...)
- func (t *TransportManager) SetSignalSourceValid(valid bool)
- func (t *TransportManager) SetSubscriberAllowPause(allowPause bool)
- func (t *TransportManager) SetSubscriberChannelCapacity(channelCapacity int64)
- func (t *TransportManager) SinceLastSignal() time.Duration
- func (t *TransportManager) SubscriberAsPrimary() bool
- func (t *TransportManager) SubscriberClose()
- func (t *TransportManager) UpdateLastSeenSignal()
- func (t *TransportManager) UpdateMediaRTT(rtt uint32)
- func (t *TransportManager) UpdateSignalingRTT(rtt uint32)
- func (t *TransportManager) WritePublisherRTCP(pkts []rtcp.Packet) error
- func (t *TransportManager) WriteSubscriberRTCP(pkts []rtcp.Packet) error
- type TransportManagerParams
- type TransportManagerTransportHandler
- type TransportParams
- type UnhandleSimulcastInterceptor
- type UnhandleSimulcastInterceptorFactory
- type UnhandleSimulcastOption
- type UpTrackManager
- func (u *UpTrackManager) AddPublishedTrack(track types.MediaTrack)
- func (u *UpTrackManager) Close(isExpectedToResume bool)
- func (u *UpTrackManager) DebugInfo() map[string]interface{}
- func (u *UpTrackManager) GetAudioLevel() (level float64, active bool)
- func (u *UpTrackManager) GetPublishedTrack(trackID livekit.TrackID) types.MediaTrack
- func (u *UpTrackManager) GetPublishedTracks() []types.MediaTrack
- func (u *UpTrackManager) HasPermission(trackID livekit.TrackID, subIdentity livekit.ParticipantIdentity) bool
- func (u *UpTrackManager) OnPublishedTrackUpdated(f func(track types.MediaTrack))
- func (u *UpTrackManager) OnUpTrackManagerClose(f func())
- func (u *UpTrackManager) RemovePublishedTrack(track types.MediaTrack, isExpectedToResume bool)
- func (u *UpTrackManager) SetPublishedTrackMuted(trackID livekit.TrackID, muted bool) (types.MediaTrack, bool)
- func (u *UpTrackManager) SubscriptionPermission() (*livekit.SubscriptionPermission, utils.TimedVersion)
- func (u *UpTrackManager) ToProto() []*livekit.TrackInfo
- func (u *UpTrackManager) UpdatePublishedAudioTrack(update *livekit.UpdateLocalAudioTrack) types.MediaTrack
- func (u *UpTrackManager) UpdatePublishedVideoTrack(update *livekit.UpdateLocalVideoTrack) types.MediaTrack
- func (u *UpTrackManager) UpdateSubscriptionPermission(subscriptionPermission *livekit.SubscriptionPermission, ...) error
- type UpTrackManagerParams
- type UserPacketDeduper
- type WebRTCConfig
- type WrappedReceiver
- func (r *WrappedReceiver) AddOnReady(f func())
- func (r *WrappedReceiver) Codecs() []webrtc.RTPCodecParameters
- func (r *WrappedReceiver) DeleteDownTrack(participantID livekit.ParticipantID)
- func (r *WrappedReceiver) DetermineReceiver(codec webrtc.RTPCodecCapability) bool
- func (r *WrappedReceiver) StreamID() string
- func (r *WrappedReceiver) TrackID() livekit.TrackID
- type WrappedReceiverParams
Constants ¶
const ( PingIntervalSeconds = 5 PingTimeoutSeconds = 15 )
const ( LossyDataChannel = "_lossy" ReliableDataChannel = "_reliable" )
const (
AudioLevelQuantization = 8 // ideally power of 2 to minimize float decimal
)
Variables ¶
var ( ErrRoomClosed = errors.New("room has already closed") ErrParticipantSessionClosed = errors.New("participant session is already closed") ErrPermissionDenied = errors.New("no permissions to access the room") ErrMaxParticipantsExceeded = errors.New("room has exceeded its max participants") ErrLimitExceeded = errors.New("node has exceeded its configured limit") ErrAlreadyJoined = errors.New("a participant with the same identity is already in the room") ErrDataChannelBufferFull = errors.New("data channel buffer is full") ErrTransportFailure = errors.New("transport failure") ErrEmptyIdentity = errors.New("participant identity cannot be empty") ErrEmptyParticipantID = errors.New("participant ID cannot be empty") ErrMissingGrants = errors.New("VideoGrant is missing") ErrInternalError = errors.New("internal error") // Track subscription related ErrNoTrackPermission = errors.New("participant is not allowed to subscribe to this track") ErrNoSubscribePermission = errors.New("participant is not given permission to subscribe to tracks") ErrTrackNotFound = errors.New("track cannot be found") ErrTrackNotBound = errors.New("track not bound") ErrSubscriptionLimitExceeded = errors.New("participant has exceeded its subscription limit") ErrNoSubscribeMetricsPermission = errors.New("participant is not given permission to subscribe to metrics") )
var ( OpusCodecParameters = webrtc.RTPCodecParameters{ RTPCodecCapability: webrtc.RTPCodecCapability{ MimeType: mime.MimeTypeOpus.String(), ClockRate: 48000, Channels: 2, SDPFmtpLine: "minptime=10;useinbandfec=1", }, PayloadType: 111, } RedCodecParameters = webrtc.RTPCodecParameters{ RTPCodecCapability: webrtc.RTPCodecCapability{ MimeType: mime.MimeTypeRED.String(), ClockRate: 48000, Channels: 2, SDPFmtpLine: "111/111", }, PayloadType: 63, } )
var ( ErrNotOpen = errors.New("track is not open") ErrNoReceiver = errors.New("cannot subscribe without a receiver in place") )
var ( ErrNoICETransport = errors.New("no ICE transport") ErrIceRestartWithoutLocalSDP = errors.New("ICE restart without local SDP settled") ErrIceRestartOnClosedPeerConnection = errors.New("ICE restart on closed peer connection") ErrNoTransceiver = errors.New("no transceiver") ErrNoSender = errors.New("no sender") ErrMidNotFound = errors.New("mid not found") ErrNotSynchronousLocalCandidatesMode = errors.New("not using synchronous local candidates mode") ErrNoRemoteDescription = errors.New("no remote description") ErrNoLocalDescription = errors.New("no local description") ErrInvalidSDPFragment = errors.New("invalid sdp fragment") ErrNoBundleMid = errors.New("could not get bundle mid") ErrMidMismatch = errors.New("media mid does not match bundle mid") ErrICECredentialMismatch = errors.New("ice credential mismatch") )
var (
ErrJobShutdownTimeout = psrpc.NewErrorf(psrpc.DeadlineExceeded, "timed out waiting for agent job to shutdown")
)
var (
ErrMoveOldClientVersion = errors.New("participant client version does not support moving")
)
var (
ErrSubscriptionPermissionNeedsId = errors.New("either participant identity or SID needed")
)
Functions ¶
func BroadcastDataMessageForRoom ¶ added in v1.9.0
func BroadcastDataPacketForRoom ¶ added in v1.3.5
func BroadcastDataPacketForRoom( r types.Room, source types.LocalParticipant, kind livekit.DataPacket_Kind, dp *livekit.DataPacket, logger logger.Logger, )
func BroadcastMetricsForRoom ¶ added in v1.8.0
func BroadcastMetricsForRoom(r types.Room, source types.Participant, dp *livekit.DataPacket, logger logger.Logger)
func ChunkProtoBatch ¶ added in v1.9.1
func CompareParticipant ¶ added in v1.8.4
func CompareParticipant(pi1 *livekit.ParticipantInfo, pi2 *livekit.ParticipantInfo) int
func GetOtherParticipantInfo ¶ added in v1.9.0
func GetOtherParticipantInfo( lp types.LocalParticipant, isMigratingIn bool, allParticipants []types.Participant, skipSubscriberBroadcast bool, ) []*livekit.ParticipantInfo
GetOtherParticipantInfo returns ParticipantInfo for everyone in the room except for the participant identified by lp.Identity()
func IsCloseNotifySkippable ¶ added in v1.5.3
func IsCloseNotifySkippable(closeReason types.ParticipantCloseReason) bool
func IsCodecEnabled ¶ added in v1.4.2
func IsCodecEnabled(codecs []*livekit.Codec, cap webrtc.RTPCodecCapability) bool
func IsParticipantExemptFromTrackPermissionsRestrictions ¶ added in v1.8.4
func IsParticipantExemptFromTrackPermissionsRestrictions(p types.LocalParticipant) bool
func LoggerWithCodecMime ¶ added in v1.0.0
func LoggerWithPCTarget ¶ added in v0.15.6
func LoggerWithParticipant ¶ added in v0.15.0
func LoggerWithParticipant(l logger.Logger, identity livekit.ParticipantIdentity, sid livekit.ParticipantID, isRemote bool) logger.Logger
logger helpers
func LoggerWithRoom ¶ added in v0.15.0
func LoggerWithTrack ¶ added in v0.15.3
func MaybeTruncateIP ¶ added in v1.8.1
func NewMockParticipant ¶ added in v1.5.1
func NewMockParticipant(identity livekit.ParticipantIdentity, protocol types.ProtocolVersion, hidden bool, publisher bool) *typesfakes.FakeLocalParticipant
func NewMockTrack ¶ added in v1.5.1
func NewMockTrack(kind livekit.TrackType, name string) *typesfakes.FakeMediaTrack
func PackDataTrackLabel ¶
func PackStreamID ¶
func PackStreamID(participantID livekit.ParticipantID, trackID livekit.TrackID) string
func PackSyncStreamID ¶ added in v1.4.5
func PackSyncStreamID(participantID livekit.ParticipantID, stream string) string
func SendParticipantUpdates ¶ added in v1.9.0
func SendParticipantUpdates(updates []*ParticipantUpdate, participants []types.LocalParticipant, batchTargetSize int)
func StartParticipantEgress ¶ added in v1.5.0
func StartParticipantEgress( ctx context.Context, launcher EgressLauncher, ts telemetry.TelemetryService, opts *livekit.AutoParticipantEgress, identity livekit.ParticipantIdentity, roomName livekit.RoomName, roomID livekit.RoomID, ) error
func StartTrackEgress ¶ added in v1.2.2
func StartTrackEgress( ctx context.Context, launcher EgressLauncher, ts telemetry.TelemetryService, opts *livekit.AutoTrackEgress, track types.MediaTrack, roomName livekit.RoomName, roomID livekit.RoomID, ) error
func StreamFromTrackSource ¶ added in v1.4.5
func StreamFromTrackSource(source livekit.TrackSource) string
func ToProtoTrackKind ¶
func ToProtoTrackKind(kind webrtc.RTPCodecType) livekit.TrackType
func UnpackDataTrackLabel ¶
func UnpackStreamID ¶
func UnpackStreamID(packed string) (participantID livekit.ParticipantID, trackID livekit.TrackID)
Types ¶
type AgentStore ¶ added in v1.7.1
type AgentStore interface {
StoreAgentDispatch(ctx context.Context, dispatch *livekit.AgentDispatch) error
DeleteAgentDispatch(ctx context.Context, dispatch *livekit.AgentDispatch) error
ListAgentDispatches(ctx context.Context, roomName livekit.RoomName) ([]*livekit.AgentDispatch, error)
StoreAgentJob(ctx context.Context, job *livekit.Job) error
DeleteAgentJob(ctx context.Context, job *livekit.Job) error
}
Duplicate the service.AgentStore interface to avoid a rtc -> service -> rtc import cycle
type AnyTransportHandler ¶ added in v1.5.3
type AnyTransportHandler struct {
transport.UnimplementedHandler
// contains filtered or unexported fields
}
func (AnyTransportHandler) OnFailed ¶ added in v1.5.3
func (h AnyTransportHandler) OnFailed(_isShortLived bool, _ici *types.ICEConnectionInfo)
func (AnyTransportHandler) OnICECandidate ¶ added in v1.5.3
func (h AnyTransportHandler) OnICECandidate(c *webrtc.ICECandidate, target livekit.SignalTarget) error
func (AnyTransportHandler) OnNegotiationFailed ¶ added in v1.5.3
func (h AnyTransportHandler) OnNegotiationFailed()
type ClientInfo ¶ added in v1.2.0
type ClientInfo struct {
*livekit.ClientInfo
}
func (ClientInfo) CanHandleReconnectResponse ¶ added in v1.3.4
func (c ClientInfo) CanHandleReconnectResponse() bool
func (ClientInfo) ComplyWithCodecOrderInSDPAnswer ¶ added in v1.5.1
func (c ClientInfo) ComplyWithCodecOrderInSDPAnswer() bool
func (ClientInfo) FireTrackByRTPPacket ¶ added in v1.3.3
func (c ClientInfo) FireTrackByRTPPacket() bool
GoSDK(pion) relies on rtp packets to fire ontrack event, browsers and native (libwebrtc) rely on sdp
func (ClientInfo) SupportsAudioRED ¶ added in v1.2.0
func (c ClientInfo) SupportsAudioRED() bool
func (ClientInfo) SupportsChangeRTPSenderEncodingActive ¶ added in v1.3.4
func (c ClientInfo) SupportsChangeRTPSenderEncodingActive() bool
func (ClientInfo) SupportsCodecChange ¶ added in v1.8.4
func (c ClientInfo) SupportsCodecChange() bool
func (ClientInfo) SupportsICETCP ¶ added in v1.2.1
func (c ClientInfo) SupportsICETCP() bool
func (ClientInfo) SupportsPrflxOverRelay ¶ added in v1.9.1
func (c ClientInfo) SupportsPrflxOverRelay() bool
func (ClientInfo) SupportsRequestResponse ¶ added in v1.9.1
func (c ClientInfo) SupportsRequestResponse() bool
func (ClientInfo) SupportsSctpZeroChecksum ¶ added in v1.9.1
func (c ClientInfo) SupportsSctpZeroChecksum() bool
func (ClientInfo) SupportsTrackSubscribedEvent ¶ added in v1.9.1
func (c ClientInfo) SupportsTrackSubscribedEvent() bool
Rust SDK can't decode unknown signal message (TrackSubscribed and ErrorResponse)
type DirectionConfig ¶ added in v0.15.2
type DirectionConfig struct {
RTPHeaderExtension RTPHeaderExtensionConfig
RTCPFeedback RTCPFeedbackConfig
}
type DummyReceiver ¶ added in v1.1.1
type DummyReceiver struct {
// contains filtered or unexported fields
}
func NewDummyReceiver ¶ added in v1.1.1
func NewDummyReceiver(trackID livekit.TrackID, streamId string, codec webrtc.RTPCodecParameters, headerExtensions []webrtc.RTPHeaderExtensionParameter) *DummyReceiver
func (*DummyReceiver) AddDownTrack ¶ added in v1.1.1
func (d *DummyReceiver) AddDownTrack(track sfu.TrackSender) error
func (*DummyReceiver) AddOnCodecStateChange ¶ added in v1.8.4
func (d *DummyReceiver) AddOnCodecStateChange(f func(codec webrtc.RTPCodecParameters, state sfu.ReceiverCodecState))
func (*DummyReceiver) AddOnReady ¶ added in v1.8.0
func (d *DummyReceiver) AddOnReady(f func())
func (*DummyReceiver) Codec ¶ added in v1.1.1
func (d *DummyReceiver) Codec() webrtc.RTPCodecParameters
func (*DummyReceiver) CodecState ¶ added in v1.8.4
func (d *DummyReceiver) CodecState() sfu.ReceiverCodecState
func (*DummyReceiver) DebugInfo ¶ added in v1.1.1
func (d *DummyReceiver) DebugInfo() map[string]interface{}
func (*DummyReceiver) DeleteDownTrack ¶ added in v1.1.1
func (d *DummyReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID)
func (*DummyReceiver) GetAudioLevel ¶ added in v1.1.1
func (d *DummyReceiver) GetAudioLevel() (float64, bool)
func (*DummyReceiver) GetDownTracks ¶ added in v1.8.4
func (d *DummyReceiver) GetDownTracks() []sfu.TrackSender
func (*DummyReceiver) GetLayeredBitrate ¶ added in v1.2.4
func (d *DummyReceiver) GetLayeredBitrate() ([]int32, sfu.Bitrates)
func (*DummyReceiver) GetPrimaryReceiverForRed ¶ added in v1.2.0
func (d *DummyReceiver) GetPrimaryReceiverForRed() sfu.TrackReceiver
func (*DummyReceiver) GetRedReceiver ¶ added in v1.3.0
func (d *DummyReceiver) GetRedReceiver() sfu.TrackReceiver
func (*DummyReceiver) GetTemporalLayerFpsForSpatial ¶ added in v1.3.0
func (d *DummyReceiver) GetTemporalLayerFpsForSpatial(spatial int32) []float32
func (*DummyReceiver) GetTrackStats ¶ added in v1.5.2
func (d *DummyReceiver) GetTrackStats() *livekit.RTPStats
func (*DummyReceiver) HeaderExtensions ¶ added in v1.1.1
func (d *DummyReceiver) HeaderExtensions() []webrtc.RTPHeaderExtensionParameter
func (*DummyReceiver) IsClosed ¶ added in v1.3.5
func (d *DummyReceiver) IsClosed() bool
func (*DummyReceiver) IsReady ¶ added in v1.8.0
func (d *DummyReceiver) IsReady() bool
func (*DummyReceiver) Mime ¶ added in v1.8.4
func (d *DummyReceiver) Mime() mime.MimeType
func (*DummyReceiver) Receiver ¶ added in v1.1.1
func (d *DummyReceiver) Receiver() sfu.TrackReceiver
func (*DummyReceiver) SendPLI ¶ added in v1.1.1
func (d *DummyReceiver) SendPLI(layer int32, force bool)
func (*DummyReceiver) SetMaxExpectedSpatialLayer ¶ added in v1.1.1
func (d *DummyReceiver) SetMaxExpectedSpatialLayer(layer int32)
func (*DummyReceiver) SetUpTrackPaused ¶ added in v1.1.1
func (d *DummyReceiver) SetUpTrackPaused(paused bool)
func (*DummyReceiver) StreamID ¶ added in v1.1.1
func (d *DummyReceiver) StreamID() string
func (*DummyReceiver) TrackID ¶ added in v1.1.1
func (d *DummyReceiver) TrackID() livekit.TrackID
func (*DummyReceiver) TrackInfo ¶ added in v1.2.0
func (d *DummyReceiver) TrackInfo() *livekit.TrackInfo
func (*DummyReceiver) UpdateTrackInfo ¶ added in v1.5.2
func (d *DummyReceiver) UpdateTrackInfo(ti *livekit.TrackInfo)
func (*DummyReceiver) Upgrade ¶ added in v1.1.1
func (d *DummyReceiver) Upgrade(receiver sfu.TrackReceiver)
func (*DummyReceiver) VideoLayerMode ¶ added in v1.9.1
func (d *DummyReceiver) VideoLayerMode() livekit.VideoLayer_Mode
func (*DummyReceiver) VideoSizes ¶ added in v1.9.1
func (d *DummyReceiver) VideoSizes() []buffer.VideoSize
type DummyRedReceiver ¶ added in v1.8.0
type DummyRedReceiver struct {
*DummyReceiver
// contains filtered or unexported fields
}
func NewDummyRedReceiver ¶ added in v1.8.0
func NewDummyRedReceiver(d *DummyReceiver, isRedEncoding bool) *DummyRedReceiver
func (*DummyRedReceiver) AddDownTrack ¶ added in v1.8.0
func (d *DummyRedReceiver) AddDownTrack(track sfu.TrackSender) error
func (*DummyRedReceiver) DeleteDownTrack ¶ added in v1.8.0
func (d *DummyRedReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID)
func (*DummyRedReceiver) GetDownTracks ¶ added in v1.8.4
func (d *DummyRedReceiver) GetDownTracks() []sfu.TrackSender
type EgressLauncher ¶ added in v1.2.2
type EgressLauncher interface {
StartEgress(context.Context, *rpc.StartEgressRequest) (*livekit.EgressInfo, error)
}
type MediaLossProxy ¶ added in v1.2.0
type MediaLossProxy struct {
// contains filtered or unexported fields
}
func NewMediaLossProxy ¶ added in v1.2.0
func NewMediaLossProxy(params MediaLossProxyParams) *MediaLossProxy
func (*MediaLossProxy) HandleMaxLossFeedback ¶ added in v1.2.0
func (m *MediaLossProxy) HandleMaxLossFeedback(_ *sfu.DownTrack, report *rtcp.ReceiverReport)
func (*MediaLossProxy) NotifySubscriberNodeMediaLoss ¶ added in v1.2.0
func (m *MediaLossProxy) NotifySubscriberNodeMediaLoss(_nodeID livekit.NodeID, fractionalLoss uint8)
func (*MediaLossProxy) OnMediaLossUpdate ¶ added in v1.2.0
func (m *MediaLossProxy) OnMediaLossUpdate(f func(fractionalLoss uint8))
type MediaLossProxyParams ¶ added in v1.2.0
type MediaTrack ¶
type MediaTrack struct {
*MediaTrackReceiver
*MediaLossProxy
// contains filtered or unexported fields
}
MediaTrack represents a WebRTC track that needs to be forwarded Implements MediaTrack and PublishedTrack interface
func NewMediaTrack ¶
func NewMediaTrack(params MediaTrackParams, ti *livekit.TrackInfo) *MediaTrack
func (*MediaTrack) AddReceiver ¶
func (t *MediaTrack) AddReceiver(receiver *webrtc.RTPReceiver, track sfu.TrackRemote, mid string) (bool, bool)
AddReceiver adds a new RTP receiver to the track, returns true when receiver represents a new codec and if a receiver was added successfully
func (*MediaTrack) ClearSubscriberNodesMaxQuality ¶ added in v1.9.0
func (t *MediaTrack) ClearSubscriberNodesMaxQuality()
func (*MediaTrack) Close ¶ added in v1.2.0
func (t *MediaTrack) Close(isExpectedToResume bool)
func (*MediaTrack) GetCidsForMimeType ¶ added in v1.9.1
func (t *MediaTrack) GetCidsForMimeType(mimeType mime.MimeType) (string, string)
func (*MediaTrack) GetConnectionScoreAndQuality ¶ added in v1.4.0
func (t *MediaTrack) GetConnectionScoreAndQuality() (float32, livekit.ConnectionQuality)
func (*MediaTrack) GetMimeTypeForSdpCid ¶ added in v1.9.1
func (t *MediaTrack) GetMimeTypeForSdpCid(cid string) mime.MimeType
func (*MediaTrack) HasPendingCodec ¶ added in v1.1.0
func (t *MediaTrack) HasPendingCodec() bool
func (*MediaTrack) HasSdpCid ¶ added in v1.1.0
func (t *MediaTrack) HasSdpCid(cid string) bool
func (*MediaTrack) HasSignalCid ¶ added in v1.9.1
func (t *MediaTrack) HasSignalCid(cid string) bool
func (*MediaTrack) Logger ¶ added in v1.9.0
func (t *MediaTrack) Logger() logger.Logger
func (*MediaTrack) NotifySubscriberNodeMaxQuality ¶ added in v1.2.0
func (t *MediaTrack) NotifySubscriberNodeMaxQuality(nodeID livekit.NodeID, qualities []types.SubscribedCodecQuality)
func (*MediaTrack) OnSubscribedMaxQualityChange ¶ added in v0.15.0
func (t *MediaTrack) OnSubscribedMaxQualityChange( f func( trackID livekit.TrackID, trackInfo *livekit.TrackInfo, subscribedQualities []*livekit.SubscribedCodec, maxSubscribedQualities []types.SubscribedCodecQuality, ) error, )
func (*MediaTrack) OnTrackSubscribed ¶ added in v1.7.1
func (t *MediaTrack) OnTrackSubscribed()
OnTrackSubscribed is called when the track is subscribed by a non-hidden subscriber this allows the publisher to know when they should start sending data
func (*MediaTrack) Restart ¶ added in v1.2.0
func (t *MediaTrack) Restart()
func (*MediaTrack) SetMuted ¶
func (t *MediaTrack) SetMuted(muted bool)
func (*MediaTrack) SetRTT ¶ added in v0.15.4
func (t *MediaTrack) SetRTT(rtt uint32)
func (*MediaTrack) ToProto ¶ added in v0.9.13
func (t *MediaTrack) ToProto() *livekit.TrackInfo
type MediaTrackParams ¶
type MediaTrackParams struct {
ParticipantID func() livekit.ParticipantID
ParticipantIdentity livekit.ParticipantIdentity
ParticipantVersion uint32
ParticipantCountry string
BufferFactory *buffer.Factory
ReceiverConfig ReceiverConfig
SubscriberConfig DirectionConfig
PLIThrottleConfig sfu.PLIThrottleConfig
AudioConfig sfu.AudioConfig
VideoConfig config.VideoConfig
Telemetry telemetry.TelemetryService
Logger logger.Logger
Reporter roomobs.TrackReporter
SimTracks map[uint32]SimulcastTrackInfo
OnRTCP func([]rtcp.Packet)
ForwardStats *sfu.ForwardStats
OnTrackEverSubscribed func(livekit.TrackID)
ShouldRegressCodec func() bool
PreferVideoSizeFromMedia bool
}
type MediaTrackReceiver ¶ added in v0.15.3
type MediaTrackReceiver struct {
*MediaTrackSubscriptions
// contains filtered or unexported fields
}
func NewMediaTrackReceiver ¶ added in v0.15.3
func NewMediaTrackReceiver(params MediaTrackReceiverParams, ti *livekit.TrackInfo) *MediaTrackReceiver
func (*MediaTrackReceiver) ActiveReceiver ¶ added in v1.9.1
func (t *MediaTrackReceiver) ActiveReceiver() sfu.TrackReceiver
func (*MediaTrackReceiver) AddOnClose ¶ added in v0.15.3
func (t *MediaTrackReceiver) AddOnClose(f func(isExpectedToResume bool))
func (*MediaTrackReceiver) AddSubscriber ¶ added in v0.15.3
func (t *MediaTrackReceiver) AddSubscriber(sub types.LocalParticipant) (types.SubscribedTrack, error)
AddSubscriber subscribes sub to current mediaTrack
func (*MediaTrackReceiver) ClearAllReceivers ¶ added in v1.1.0
func (t *MediaTrackReceiver) ClearAllReceivers(isExpectedToResume bool)
func (*MediaTrackReceiver) ClearReceiver ¶ added in v0.15.3
func (t *MediaTrackReceiver) ClearReceiver(mime mime.MimeType, isExpectedToResume bool)
func (*MediaTrackReceiver) Close ¶ added in v0.15.3
func (t *MediaTrackReceiver) Close(isExpectedToResume bool)
func (*MediaTrackReceiver) DebugInfo ¶ added in v0.15.3
func (t *MediaTrackReceiver) DebugInfo() map[string]interface{}
func (*MediaTrackReceiver) GetAudioLevel ¶ added in v0.15.7
func (t *MediaTrackReceiver) GetAudioLevel() (float64, bool)
func (*MediaTrackReceiver) GetQualityForDimension ¶ added in v0.15.3
func (t *MediaTrackReceiver) GetQualityForDimension(mimeType mime.MimeType, width, height uint32) livekit.VideoQuality
GetQualityForDimension finds the closest quality to use for desired dimensions affords a 20% tolerance on dimension
func (*MediaTrackReceiver) GetTemporalLayerForSpatialFps ¶ added in v1.3.0
func (*MediaTrackReceiver) GetTrackStats ¶ added in v1.5.2
func (t *MediaTrackReceiver) GetTrackStats() *livekit.RTPStats
func (*MediaTrackReceiver) HandleReceiverCodecChange ¶ added in v1.8.4
func (t *MediaTrackReceiver) HandleReceiverCodecChange(r sfu.TrackReceiver, codec webrtc.RTPCodecParameters, state sfu.ReceiverCodecState)
func (*MediaTrackReceiver) ID ¶ added in v0.15.3
func (t *MediaTrackReceiver) ID() livekit.TrackID
func (*MediaTrackReceiver) IsEncrypted ¶ added in v1.4.5
func (t *MediaTrackReceiver) IsEncrypted() bool
func (*MediaTrackReceiver) IsMuted ¶ added in v0.15.3
func (t *MediaTrackReceiver) IsMuted() bool
func (*MediaTrackReceiver) IsOpen ¶ added in v1.3.5
func (t *MediaTrackReceiver) IsOpen() bool
func (*MediaTrackReceiver) Kind ¶ added in v0.15.3
func (t *MediaTrackReceiver) Kind() livekit.TrackType
func (*MediaTrackReceiver) Name ¶ added in v0.15.3
func (t *MediaTrackReceiver) Name() string
func (*MediaTrackReceiver) NotifyMaxLayerChange ¶ added in v1.5.2
func (t *MediaTrackReceiver) NotifyMaxLayerChange(mimeType mime.MimeType, maxLayer int32)
func (*MediaTrackReceiver) OnCodecRegression ¶ added in v1.8.4
func (t *MediaTrackReceiver) OnCodecRegression(f func(old, new webrtc.RTPCodecParameters))
func (*MediaTrackReceiver) OnMediaLossFeedback ¶ added in v1.2.0
func (t *MediaTrackReceiver) OnMediaLossFeedback(f func(dt *sfu.DownTrack, rr *rtcp.ReceiverReport))
func (*MediaTrackReceiver) OnSetupReceiver ¶ added in v1.2.0
func (t *MediaTrackReceiver) OnSetupReceiver(f func(mime mime.MimeType))
func (*MediaTrackReceiver) PrimaryReceiver ¶ added in v1.1.0
func (t *MediaTrackReceiver) PrimaryReceiver() sfu.TrackReceiver
func (*MediaTrackReceiver) PublisherID ¶ added in v0.15.3
func (t *MediaTrackReceiver) PublisherID() livekit.ParticipantID
func (*MediaTrackReceiver) PublisherIdentity ¶ added in v0.15.3
func (t *MediaTrackReceiver) PublisherIdentity() livekit.ParticipantIdentity
func (*MediaTrackReceiver) PublisherVersion ¶ added in v1.1.1
func (t *MediaTrackReceiver) PublisherVersion() uint32
func (*MediaTrackReceiver) Receiver ¶ added in v0.15.3
func (t *MediaTrackReceiver) Receiver(mime mime.MimeType) sfu.TrackReceiver
func (*MediaTrackReceiver) Receivers ¶ added in v1.1.0
func (t *MediaTrackReceiver) Receivers() []sfu.TrackReceiver
func (*MediaTrackReceiver) RemoveSubscriber ¶ added in v1.1.1
func (t *MediaTrackReceiver) RemoveSubscriber(subscriberID livekit.ParticipantID, isExpectedToResume bool)
RemoveSubscriber removes participant from subscription stop all forwarders to the client
func (*MediaTrackReceiver) Restart ¶ added in v0.15.7
func (t *MediaTrackReceiver) Restart()
func (*MediaTrackReceiver) RevokeDisallowedSubscribers ¶ added in v1.1.1
func (t *MediaTrackReceiver) RevokeDisallowedSubscribers(allowedSubscriberIdentities []livekit.ParticipantIdentity) []livekit.ParticipantIdentity
func (*MediaTrackReceiver) SetClosing ¶ added in v1.3.5
func (t *MediaTrackReceiver) SetClosing(isExpectedToResume bool)
func (*MediaTrackReceiver) SetLayerSsrc ¶ added in v1.1.0
func (t *MediaTrackReceiver) SetLayerSsrc(mimeType mime.MimeType, rid string, ssrc uint32)
func (*MediaTrackReceiver) SetMuted ¶ added in v0.15.3
func (t *MediaTrackReceiver) SetMuted(muted bool)
func (*MediaTrackReceiver) SetPotentialCodecs ¶ added in v1.1.0
func (t *MediaTrackReceiver) SetPotentialCodecs(codecs []webrtc.RTPCodecParameters, headers []webrtc.RTPHeaderExtensionParameter)
func (*MediaTrackReceiver) SetRTT ¶ added in v1.1.0
func (t *MediaTrackReceiver) SetRTT(rtt uint32)
func (*MediaTrackReceiver) SetupReceiver ¶ added in v0.15.3
func (t *MediaTrackReceiver) SetupReceiver(receiver sfu.TrackReceiver, priority int, mid string)
func (*MediaTrackReceiver) Source ¶ added in v0.15.3
func (t *MediaTrackReceiver) Source() livekit.TrackSource
func (*MediaTrackReceiver) Stream ¶ added in v1.4.5
func (t *MediaTrackReceiver) Stream() string
func (*MediaTrackReceiver) TrackInfo ¶ added in v0.15.3
func (t *MediaTrackReceiver) TrackInfo() *livekit.TrackInfo
func (*MediaTrackReceiver) TrackInfoClone ¶ added in v1.5.2
func (t *MediaTrackReceiver) TrackInfoClone() *livekit.TrackInfo
func (*MediaTrackReceiver) TryClose ¶ added in v1.1.0
func (t *MediaTrackReceiver) TryClose() bool
func (*MediaTrackReceiver) UpdateAudioTrack ¶ added in v1.6.1
func (t *MediaTrackReceiver) UpdateAudioTrack(update *livekit.UpdateLocalAudioTrack)
func (*MediaTrackReceiver) UpdateCodecInfo ¶ added in v1.9.1
func (t *MediaTrackReceiver) UpdateCodecInfo(codecs []*livekit.SimulcastCodec)
func (*MediaTrackReceiver) UpdateCodecRids ¶ added in v1.9.1
func (t *MediaTrackReceiver) UpdateCodecRids(mimeType mime.MimeType, rids buffer.VideoLayersRid)
func (*MediaTrackReceiver) UpdateCodecSdpCid ¶ added in v1.9.1
func (t *MediaTrackReceiver) UpdateCodecSdpCid(mimeType mime.MimeType, sdpCid string)
func (*MediaTrackReceiver) UpdateTrackInfo ¶ added in v0.15.3
func (t *MediaTrackReceiver) UpdateTrackInfo(ti *livekit.TrackInfo)
func (*MediaTrackReceiver) UpdateVideoTrack ¶ added in v1.6.1
func (t *MediaTrackReceiver) UpdateVideoTrack(update *livekit.UpdateLocalVideoTrack)
type MediaTrackReceiverParams ¶ added in v0.15.3
type MediaTrackReceiverParams struct {
MediaTrack types.MediaTrack
IsRelayed bool
ParticipantID func() livekit.ParticipantID
ParticipantIdentity livekit.ParticipantIdentity
ParticipantVersion uint32
ReceiverConfig ReceiverConfig
SubscriberConfig DirectionConfig
AudioConfig sfu.AudioConfig
Telemetry telemetry.TelemetryService
Logger logger.Logger
RegressionTargetCodec mime.MimeType
PreferVideoSizeFromMedia bool
}
type MediaTrackSubscriptions ¶ added in v0.15.3
type MediaTrackSubscriptions struct {
// contains filtered or unexported fields
}
MediaTrackSubscriptions manages subscriptions of a media track
func NewMediaTrackSubscriptions ¶ added in v0.15.3
func NewMediaTrackSubscriptions(params MediaTrackSubscriptionsParams) *MediaTrackSubscriptions
func (*MediaTrackSubscriptions) AddSubscriber ¶ added in v0.15.3
func (t *MediaTrackSubscriptions) AddSubscriber(sub types.LocalParticipant, wr *WrappedReceiver) (types.SubscribedTrack, error)
AddSubscriber subscribes sub to current mediaTrack
func (*MediaTrackSubscriptions) DebugInfo ¶ added in v0.15.3
func (t *MediaTrackSubscriptions) DebugInfo() []map[string]interface{}
func (*MediaTrackSubscriptions) GetAllSubscribers ¶ added in v0.15.6
func (t *MediaTrackSubscriptions) GetAllSubscribers() []livekit.ParticipantID
func (*MediaTrackSubscriptions) GetAllSubscribersForMime ¶ added in v1.2.0
func (t *MediaTrackSubscriptions) GetAllSubscribersForMime(mime mime.MimeType) []livekit.ParticipantID
func (*MediaTrackSubscriptions) GetNumSubscribers ¶ added in v1.1.1
func (t *MediaTrackSubscriptions) GetNumSubscribers() int
func (*MediaTrackSubscriptions) IsSubscriber ¶ added in v0.15.3
func (t *MediaTrackSubscriptions) IsSubscriber(subID livekit.ParticipantID) bool
func (*MediaTrackSubscriptions) OnDownTrackCreated ¶ added in v1.1.1
func (t *MediaTrackSubscriptions) OnDownTrackCreated(f func(downTrack *sfu.DownTrack))
func (*MediaTrackSubscriptions) OnSubscriberMaxQualityChange ¶ added in v1.2.0
func (t *MediaTrackSubscriptions) OnSubscriberMaxQualityChange(f func(subscriberID livekit.ParticipantID, mime mime.MimeType, layer int32))
func (*MediaTrackSubscriptions) RemoveSubscriber ¶ added in v0.15.3
func (t *MediaTrackSubscriptions) RemoveSubscriber(subscriberID livekit.ParticipantID, isExpectedToResume bool) error
RemoveSubscriber removes participant from subscription stop all forwarders to the client
func (*MediaTrackSubscriptions) SetMuted ¶ added in v0.15.3
func (t *MediaTrackSubscriptions) SetMuted(muted bool)
func (*MediaTrackSubscriptions) UpdateVideoLayers ¶ added in v0.15.3
func (t *MediaTrackSubscriptions) UpdateVideoLayers()
type MediaTrackSubscriptionsParams ¶ added in v0.15.3
type MediaTrackSubscriptionsParams struct {
MediaTrack types.MediaTrack
IsRelayed bool
ReceiverConfig ReceiverConfig
SubscriberConfig DirectionConfig
Telemetry telemetry.TelemetryService
Logger logger.Logger
}
type MigrationDataCache ¶ added in v1.9.1
type MigrationDataCache struct {
// contains filtered or unexported fields
}
func NewMigrationDataCache ¶ added in v1.9.1
func NewMigrationDataCache(lastSeq uint32, expiredAt time.Time) *MigrationDataCache
func (*MigrationDataCache) Add ¶ added in v1.9.1
func (c *MigrationDataCache) Add(pkt *livekit.DataPacket) MigrationDataCacheState
Add adds a message to the cache if there is a gap between the last sequence number and cached messages then return the cache State:
- MigrationDataCacheStateWaiting: waiting for the next packet (lastSeq + 1) of last sequence from old node
- MigrationDataCacheStateTimeout: the next packet is not received before the expiredAt, participant will continue to process the reliable messages, subscribers will see the gap after the publisher migration
- MigrationDataCacheStateDone: the next packet is received, participant can continue to process the reliable messages
func (*MigrationDataCache) Get ¶ added in v1.9.1
func (c *MigrationDataCache) Get() []*livekit.DataPacket
type MigrationDataCacheState ¶ added in v1.9.1
type MigrationDataCacheState int
const ( MigrationDataCacheStateWaiting MigrationDataCacheState = iota MigrationDataCacheStateTimeout MigrationDataCacheStateDone )
type PCTransport ¶
type PCTransport struct {
// contains filtered or unexported fields
}
PCTransport is a wrapper around PeerConnection, with some helper methods
func NewPCTransport ¶
func NewPCTransport(params TransportParams) (*PCTransport, error)
func (*PCTransport) AddICECandidate ¶
func (t *PCTransport) AddICECandidate(candidate webrtc.ICECandidateInit)
func (*PCTransport) AddTrack ¶ added in v0.15.0
func (t *PCTransport) AddTrack( trackLocal webrtc.TrackLocal, params types.AddTrackParams, enabledCodecs []*livekit.Codec, rtcpFeedbackConfig RTCPFeedbackConfig, ) (sender *webrtc.RTPSender, transceiver *webrtc.RTPTransceiver, err error)
func (*PCTransport) AddTrackToStreamAllocator ¶ added in v1.2.0
func (t *PCTransport) AddTrackToStreamAllocator(subTrack types.SubscribedTrack)
func (*PCTransport) AddTransceiverFromKind ¶ added in v1.9.1
func (t *PCTransport) AddTransceiverFromKind( kind webrtc.RTPCodecType, init webrtc.RTPTransceiverInit, ) (*webrtc.RTPTransceiver, error)
func (*PCTransport) AddTransceiverFromTrack ¶ added in v1.2.0
func (t *PCTransport) AddTransceiverFromTrack( trackLocal webrtc.TrackLocal, params types.AddTrackParams, enabledCodecs []*livekit.Codec, rtcpFeedbackConfig RTCPFeedbackConfig, ) (sender *webrtc.RTPSender, transceiver *webrtc.RTPTransceiver, err error)
func (*PCTransport) Close ¶
func (t *PCTransport) Close()
func (*PCTransport) CreateDataChannel ¶ added in v1.2.0
func (t *PCTransport) CreateDataChannel(label string, dci *webrtc.DataChannelInit) error
func (*PCTransport) CreateDataChannelIfEmpty ¶ added in v1.2.0
func (t *PCTransport) CreateDataChannelIfEmpty(dcLabel string, dci *webrtc.DataChannelInit) (label string, id uint16, existing bool, err error)
func (*PCTransport) CreateReadableDataChannel ¶ added in v1.9.0
func (t *PCTransport) CreateReadableDataChannel(label string, dci *webrtc.DataChannelInit) error
for testing only
func (*PCTransport) CurrentLocalDescription ¶ added in v1.9.1
func (t *PCTransport) CurrentLocalDescription() *webrtc.SessionDescription
func (*PCTransport) CurrentRemoteDescription ¶ added in v1.9.1
func (t *PCTransport) CurrentRemoteDescription() *webrtc.SessionDescription
func (*PCTransport) GetAnswer ¶ added in v1.8.1
func (t *PCTransport) GetAnswer() (webrtc.SessionDescription, uint32, error)
func (*PCTransport) GetICEConnectionInfo ¶ added in v1.8.0
func (t *PCTransport) GetICEConnectionInfo() *types.ICEConnectionInfo
func (*PCTransport) GetICEConnectionType ¶ added in v1.2.1
func (t *PCTransport) GetICEConnectionType() types.ICEConnectionType
func (*PCTransport) GetICESessionUfrag ¶ added in v1.9.0
func (t *PCTransport) GetICESessionUfrag() (string, error)
func (*PCTransport) GetMid ¶ added in v1.2.0
func (t *PCTransport) GetMid(rtpReceiver *webrtc.RTPReceiver) string
func (*PCTransport) GetPacer ¶ added in v1.4.4
func (t *PCTransport) GetPacer() pacer.Pacer
func (*PCTransport) GetRTPReceiver ¶ added in v1.2.0
func (t *PCTransport) GetRTPReceiver(mid string) *webrtc.RTPReceiver
func (*PCTransport) GetRTT ¶ added in v1.8.1
func (t *PCTransport) GetRTT() (float64, bool)
func (*PCTransport) HandleICERestartSDPFragment ¶ added in v1.9.0
func (t *PCTransport) HandleICERestartSDPFragment(sdpFragment string) (string, error)
Handles SDP Fragment for ICE Restart in WHIP
func (*PCTransport) HandleICETrickleSDPFragment ¶ added in v1.9.0
func (t *PCTransport) HandleICETrickleSDPFragment(sdpFragment string) error
Handles SDP Fragment for ICE Trickle in WHIP
func (*PCTransport) HandleRemoteDescription ¶ added in v1.2.0
func (t *PCTransport) HandleRemoteDescription(sd webrtc.SessionDescription, remoteId uint32) error
func (*PCTransport) HasEverConnected ¶ added in v1.2.0
func (t *PCTransport) HasEverConnected() bool
func (*PCTransport) ICERestart ¶ added in v1.2.0
func (t *PCTransport) ICERestart() error
func (*PCTransport) IsEstablished ¶ added in v0.15.7
func (t *PCTransport) IsEstablished() bool
func (*PCTransport) IsShortConnection ¶ added in v1.4.0
func (*PCTransport) Negotiate ¶
func (t *PCTransport) Negotiate(force bool)
func (*PCTransport) OnNegotiationStateChanged ¶ added in v1.2.0
func (t *PCTransport) OnNegotiationStateChanged(f func(state transport.NegotiationState))
func (*PCTransport) RemoveTrack ¶ added in v0.15.0
func (t *PCTransport) RemoveTrack(sender *webrtc.RTPSender) error
func (*PCTransport) RemoveTrackFromStreamAllocator ¶ added in v1.2.0
func (t *PCTransport) RemoveTrackFromStreamAllocator(subTrack types.SubscribedTrack)
func (*PCTransport) ResetShortConnOnICERestart ¶ added in v1.3.4
func (t *PCTransport) ResetShortConnOnICERestart()
func (*PCTransport) SendDataMessage ¶ added in v1.9.0
func (t *PCTransport) SendDataMessage(kind livekit.DataPacket_Kind, data []byte) error
func (*PCTransport) SendDataMessageUnlabeled ¶ added in v1.9.0
func (t *PCTransport) SendDataMessageUnlabeled(data []byte, useRaw bool, sender livekit.ParticipantIdentity) error
func (*PCTransport) SetAllowPauseOfStreamAllocator ¶ added in v1.4.2
func (t *PCTransport) SetAllowPauseOfStreamAllocator(allowPause bool)
func (*PCTransport) SetChannelCapacityOfStreamAllocator ¶ added in v1.4.2
func (t *PCTransport) SetChannelCapacityOfStreamAllocator(channelCapacity int64)
func (*PCTransport) SetPreferTCP ¶ added in v1.2.0
func (t *PCTransport) SetPreferTCP(preferTCP bool)
func (*PCTransport) SetPreviousSdp ¶ added in v1.2.1
func (t *PCTransport) SetPreviousSdp(localDescription, remoteDescription *webrtc.SessionDescription)
func (*PCTransport) SetSignalingRTT ¶ added in v1.3.5
func (t *PCTransport) SetSignalingRTT(rtt uint32)
type ParticipantImpl ¶
type ParticipantImpl struct {
*TransportManager
*UpTrackManager
*SubscriptionManager
// contains filtered or unexported fields
}
func NewParticipant ¶
func NewParticipant(params ParticipantParams) (*ParticipantImpl, error)
func (*ParticipantImpl) AddTrack ¶
func (p *ParticipantImpl) AddTrack(req *livekit.AddTrackRequest)
AddTrack is called when client intends to publish track. records track details and lets client know it's ok to proceed
func (*ParticipantImpl) AddTrackLocal ¶ added in v1.9.1
func (p *ParticipantImpl) AddTrackLocal( trackLocal webrtc.TrackLocal, params types.AddTrackParams, ) (*webrtc.RTPSender, *webrtc.RTPTransceiver, error)
func (*ParticipantImpl) AddTransceiverFromTrackLocal ¶ added in v1.9.1
func (p *ParticipantImpl) AddTransceiverFromTrackLocal( trackLocal webrtc.TrackLocal, params types.AddTrackParams, ) (*webrtc.RTPSender, *webrtc.RTPTransceiver, error)
func (*ParticipantImpl) CacheDownTrack ¶ added in v1.1.1
func (p *ParticipantImpl) CacheDownTrack(trackID livekit.TrackID, rtpTransceiver *webrtc.RTPTransceiver, downTrack sfu.DownTrackState)
func (*ParticipantImpl) CanPublish ¶
func (p *ParticipantImpl) CanPublish() bool
func (*ParticipantImpl) CanPublishData ¶ added in v0.12.2
func (p *ParticipantImpl) CanPublishData() bool
func (*ParticipantImpl) CanPublishSource ¶ added in v1.4.2
func (p *ParticipantImpl) CanPublishSource(source livekit.TrackSource) bool
func (*ParticipantImpl) CanSkipBroadcast ¶ added in v1.4.2
func (p *ParticipantImpl) CanSkipBroadcast() bool
func (*ParticipantImpl) CanSubscribe ¶
func (p *ParticipantImpl) CanSubscribe() bool
func (*ParticipantImpl) CanSubscribeMetrics ¶ added in v1.8.0
func (p *ParticipantImpl) CanSubscribeMetrics() bool
func (*ParticipantImpl) ClaimGrants ¶ added in v0.15.3
func (p *ParticipantImpl) ClaimGrants() *auth.ClaimGrants
func (*ParticipantImpl) Close ¶
func (p *ParticipantImpl) Close(sendLeave bool, reason types.ParticipantCloseReason, isExpectedToResume bool) error
func (*ParticipantImpl) CloseReason ¶ added in v1.5.3
func (p *ParticipantImpl) CloseReason() types.ParticipantCloseReason
func (*ParticipantImpl) CloseSignalConnection ¶ added in v1.2.0
func (p *ParticipantImpl) CloseSignalConnection(reason types.SignallingCloseReason)
func (*ParticipantImpl) ConnectedAt ¶
func (p *ParticipantImpl) ConnectedAt() time.Time
func (*ParticipantImpl) DebugInfo ¶ added in v0.10.6
func (p *ParticipantImpl) DebugInfo() map[string]interface{}
func (*ParticipantImpl) Disconnected ¶ added in v1.6.1
func (p *ParticipantImpl) Disconnected() <-chan struct{}
func (*ParticipantImpl) GetAdaptiveStream ¶ added in v0.15.7
func (p *ParticipantImpl) GetAdaptiveStream() bool
func (*ParticipantImpl) GetAnswer ¶ added in v1.8.1
func (p *ParticipantImpl) GetAnswer() (webrtc.SessionDescription, uint32, error)
func (*ParticipantImpl) GetBufferFactory ¶ added in v1.3.2
func (p *ParticipantImpl) GetBufferFactory() *buffer.Factory
func (*ParticipantImpl) GetCachedDownTrack ¶ added in v1.1.1
func (p *ParticipantImpl) GetCachedDownTrack(trackID livekit.TrackID) (*webrtc.RTPTransceiver, sfu.DownTrackState)
func (*ParticipantImpl) GetClientConfiguration ¶ added in v1.2.0
func (p *ParticipantImpl) GetClientConfiguration() *livekit.ClientConfiguration
func (*ParticipantImpl) GetClientInfo ¶ added in v1.4.4
func (p *ParticipantImpl) GetClientInfo() *livekit.ClientInfo
func (*ParticipantImpl) GetConnectionQuality ¶ added in v0.14.0
func (p *ParticipantImpl) GetConnectionQuality() *livekit.ConnectionQualityInfo
func (*ParticipantImpl) GetCountry ¶ added in v1.9.1
func (p *ParticipantImpl) GetCountry() string
func (*ParticipantImpl) GetDisableSenderReportPassThrough ¶ added in v1.7.1
func (p *ParticipantImpl) GetDisableSenderReportPassThrough() bool
func (*ParticipantImpl) GetEnabledPublishCodecs ¶ added in v1.8.0
func (p *ParticipantImpl) GetEnabledPublishCodecs() []*livekit.Codec
func (*ParticipantImpl) GetLastReliableSequence ¶ added in v1.9.1
func (p *ParticipantImpl) GetLastReliableSequence(migrateOut bool) uint32
func (*ParticipantImpl) GetLogger ¶ added in v0.15.4
func (p *ParticipantImpl) GetLogger() logger.Logger
func (*ParticipantImpl) GetLoggerResolver ¶ added in v1.9.0
func (p *ParticipantImpl) GetLoggerResolver() logger.DeferredFieldResolver
func (*ParticipantImpl) GetPacer ¶ added in v1.4.4
func (p *ParticipantImpl) GetPacer() pacer.Pacer
func (*ParticipantImpl) GetPendingTrack ¶ added in v1.5.0
func (p *ParticipantImpl) GetPendingTrack(trackID livekit.TrackID) *livekit.TrackInfo
func (*ParticipantImpl) GetPlayoutDelayConfig ¶ added in v1.4.5
func (p *ParticipantImpl) GetPlayoutDelayConfig() *livekit.PlayoutDelay
func (*ParticipantImpl) GetReporter ¶ added in v1.9.1
func (p *ParticipantImpl) GetReporter() roomobs.ParticipantSessionReporter
func (*ParticipantImpl) GetReporterResolver ¶ added in v1.9.1
func (p *ParticipantImpl) GetReporterResolver() roomobs.ParticipantReporterResolver
func (*ParticipantImpl) GetResponseSink ¶
func (p *ParticipantImpl) GetResponseSink() routing.MessageSink
func (*ParticipantImpl) GetTrailer ¶ added in v1.4.5
func (p *ParticipantImpl) GetTrailer() []byte
func (*ParticipantImpl) HandleAnswer ¶
func (p *ParticipantImpl) HandleAnswer(sd *livekit.SessionDescription)
HandleAnswer handles a client answer response, with subscriber PC, server initiates the offer and client answers
func (*ParticipantImpl) HandleICETrickle ¶ added in v1.9.1
func (p *ParticipantImpl) HandleICETrickle(trickleRequest *livekit.TrickleRequest)
func (*ParticipantImpl) HandleLeaveRequest ¶ added in v1.9.1
func (p *ParticipantImpl) HandleLeaveRequest(reason types.ParticipantCloseReason)
func (*ParticipantImpl) HandleMetrics ¶ added in v1.8.0
func (p *ParticipantImpl) HandleMetrics(senderParticipantID livekit.ParticipantID, metrics *livekit.MetricsBatch) error
func (*ParticipantImpl) HandleOffer ¶
func (p *ParticipantImpl) HandleOffer(sd *livekit.SessionDescription) error
HandleOffer an offer from remote participant, used when clients make the initial connection
func (*ParticipantImpl) HandleReconnectAndSendResponse ¶ added in v1.4.2
func (p *ParticipantImpl) HandleReconnectAndSendResponse(reconnectReason livekit.ReconnectReason, reconnectResponse *livekit.ReconnectResponse) error
func (*ParticipantImpl) HandleSignalMessage ¶ added in v1.9.1
func (p *ParticipantImpl) HandleSignalMessage(msg proto.Message) error
func (*ParticipantImpl) HandleSignalSourceClose ¶ added in v1.4.5
func (p *ParticipantImpl) HandleSignalSourceClose()
func (*ParticipantImpl) HandleSimulateScenario ¶ added in v1.9.1
func (p *ParticipantImpl) HandleSimulateScenario(simulateScenario *livekit.SimulateScenario) error
func (*ParticipantImpl) HandleSyncState ¶ added in v1.9.1
func (p *ParticipantImpl) HandleSyncState(syncState *livekit.SyncState) error
func (*ParticipantImpl) HandleUpdateSubscriptionPermission ¶ added in v1.9.1
func (p *ParticipantImpl) HandleUpdateSubscriptionPermission(subscriptionPermission *livekit.SubscriptionPermission) error
func (*ParticipantImpl) HandleUpdateSubscriptions ¶ added in v1.9.1
func (p *ParticipantImpl) HandleUpdateSubscriptions( trackIDs []livekit.TrackID, participantTracks []*livekit.ParticipantTracks, subscribe bool, )
func (*ParticipantImpl) HasConnected ¶ added in v1.5.2
func (p *ParticipantImpl) HasConnected() bool
func (*ParticipantImpl) Hidden ¶ added in v0.11.1
func (p *ParticipantImpl) Hidden() bool
func (*ParticipantImpl) ICERestart ¶
func (p *ParticipantImpl) ICERestart(iceConfig *livekit.ICEConfig)
ICERestart restarts subscriber ICE connections
func (*ParticipantImpl) ID ¶
func (p *ParticipantImpl) ID() livekit.ParticipantID
func (*ParticipantImpl) Identity ¶
func (p *ParticipantImpl) Identity() livekit.ParticipantIdentity
func (*ParticipantImpl) IsAgent ¶ added in v1.5.1
func (p *ParticipantImpl) IsAgent() bool
func (*ParticipantImpl) IsClosed ¶ added in v1.3.4
func (p *ParticipantImpl) IsClosed() bool
func (*ParticipantImpl) IsDependent ¶ added in v1.6.0
func (p *ParticipantImpl) IsDependent() bool
func (*ParticipantImpl) IsDisconnected ¶ added in v1.3.3
func (p *ParticipantImpl) IsDisconnected() bool
func (*ParticipantImpl) IsIdle ¶ added in v1.3.4
func (p *ParticipantImpl) IsIdle() bool
func (*ParticipantImpl) IsPublisher ¶ added in v1.1.0
func (p *ParticipantImpl) IsPublisher() bool
func (*ParticipantImpl) IsReady ¶
func (p *ParticipantImpl) IsReady() bool
func (*ParticipantImpl) IsReconnect ¶ added in v1.8.0
func (p *ParticipantImpl) IsReconnect() bool
func (*ParticipantImpl) IsRecorder ¶ added in v0.15.0
func (p *ParticipantImpl) IsRecorder() bool
func (*ParticipantImpl) IsUsingSinglePeerConnection ¶ added in v1.9.1
func (p *ParticipantImpl) IsUsingSinglePeerConnection() bool
func (*ParticipantImpl) IssueFullReconnect ¶ added in v1.3.4
func (p *ParticipantImpl) IssueFullReconnect(reason types.ParticipantCloseReason)
func (*ParticipantImpl) Kind ¶ added in v1.6.0
func (p *ParticipantImpl) Kind() livekit.ParticipantInfo_Kind
func (*ParticipantImpl) MaybeStartMigration ¶ added in v1.2.1
func (p *ParticipantImpl) MaybeStartMigration(force bool, onStart func()) bool
func (*ParticipantImpl) MetricsCollectorBatchReady ¶ added in v1.8.1
func (p *ParticipantImpl) MetricsCollectorBatchReady(mb *livekit.MetricsBatch)
func (*ParticipantImpl) MetricsCollectorTimeToCollectMetrics ¶ added in v1.8.1
func (p *ParticipantImpl) MetricsCollectorTimeToCollectMetrics()
func (*ParticipantImpl) MetricsReporterBatchReady ¶ added in v1.8.1
func (p *ParticipantImpl) MetricsReporterBatchReady(mb *livekit.MetricsBatch)
func (*ParticipantImpl) MigrateState ¶ added in v0.15.3
func (p *ParticipantImpl) MigrateState() types.MigrateState
func (*ParticipantImpl) MoveToRoom ¶ added in v1.9.0
func (p *ParticipantImpl) MoveToRoom(params types.MoveToRoomParams)
func (*ParticipantImpl) Negotiate ¶
func (p *ParticipantImpl) Negotiate(force bool)
Negotiate subscriber SDP with client, if force is true, will cancel pending negotiate task and negotiate immediately
func (*ParticipantImpl) NotifyMigration ¶ added in v1.6.0
func (p *ParticipantImpl) NotifyMigration()
func (*ParticipantImpl) OnClaimsChanged ¶ added in v0.15.3
func (p *ParticipantImpl) OnClaimsChanged(callback func(types.LocalParticipant))
func (*ParticipantImpl) OnClose ¶
func (p *ParticipantImpl) OnClose(callback func(types.LocalParticipant))
func (*ParticipantImpl) OnDataMessage ¶ added in v1.9.0
func (p *ParticipantImpl) OnDataMessage(callback func(types.LocalParticipant, []byte))
func (*ParticipantImpl) OnDataPacket ¶
func (p *ParticipantImpl) OnDataPacket(callback func(types.LocalParticipant, livekit.DataPacket_Kind, *livekit.DataPacket))
func (*ParticipantImpl) OnICEConfigChanged ¶ added in v1.2.0
func (p *ParticipantImpl) OnICEConfigChanged(f func(participant types.LocalParticipant, iceConfig *livekit.ICEConfig))
func (*ParticipantImpl) OnLeave ¶ added in v1.9.1
func (p *ParticipantImpl) OnLeave(callback func(types.LocalParticipant, types.ParticipantCloseReason))
func (*ParticipantImpl) OnMetrics ¶ added in v1.8.0
func (p *ParticipantImpl) OnMetrics(callback func(types.Participant, *livekit.DataPacket))
func (*ParticipantImpl) OnMigrateStateChange ¶ added in v1.3.5
func (p *ParticipantImpl) OnMigrateStateChange(callback func(p types.LocalParticipant, state types.MigrateState))
func (*ParticipantImpl) OnParticipantUpdate ¶ added in v0.15.6
func (p *ParticipantImpl) OnParticipantUpdate(callback func(types.LocalParticipant))
func (*ParticipantImpl) OnSimulateScenario ¶ added in v1.9.1
func (p *ParticipantImpl) OnSimulateScenario(callback func(types.LocalParticipant, *livekit.SimulateScenario) error)
func (*ParticipantImpl) OnStateChange ¶
func (p *ParticipantImpl) OnStateChange(callback func(p types.LocalParticipant))
func (*ParticipantImpl) OnSubscriberReady ¶ added in v1.9.0
func (p *ParticipantImpl) OnSubscriberReady(callback func(p types.LocalParticipant))
func (*ParticipantImpl) OnSyncState ¶ added in v1.9.1
func (p *ParticipantImpl) OnSyncState(callback func(types.LocalParticipant, *livekit.SyncState) error)
func (*ParticipantImpl) OnTrackPublished ¶
func (p *ParticipantImpl) OnTrackPublished(callback func(types.LocalParticipant, types.MediaTrack))
func (*ParticipantImpl) OnTrackUnpublished ¶ added in v1.3.4
func (p *ParticipantImpl) OnTrackUnpublished(callback func(types.LocalParticipant, types.MediaTrack))
func (*ParticipantImpl) OnTrackUpdated ¶
func (p *ParticipantImpl) OnTrackUpdated(callback func(types.LocalParticipant, types.MediaTrack))
func (*ParticipantImpl) OnUpdateSubscriptionPermission ¶ added in v1.9.1
func (p *ParticipantImpl) OnUpdateSubscriptionPermission(callback func(types.LocalParticipant, *livekit.SubscriptionPermission) error)
func (*ParticipantImpl) OnUpdateSubscriptions ¶ added in v1.9.1
func (p *ParticipantImpl) OnUpdateSubscriptions(callback func(types.LocalParticipant, []livekit.TrackID, []*livekit.ParticipantTracks, bool))
func (*ParticipantImpl) ProtocolVersion ¶
func (p *ParticipantImpl) ProtocolVersion() types.ProtocolVersion
func (*ParticipantImpl) SendConnectionQualityUpdate ¶ added in v0.14.0
func (p *ParticipantImpl) SendConnectionQualityUpdate(update *livekit.ConnectionQualityUpdate) error
func (*ParticipantImpl) SendDataMessage ¶ added in v1.9.0
func (p *ParticipantImpl) SendDataMessage(kind livekit.DataPacket_Kind, data []byte, sender livekit.ParticipantID, seq uint32) error
func (*ParticipantImpl) SendDataMessageUnlabeled ¶ added in v1.9.0
func (p *ParticipantImpl) SendDataMessageUnlabeled(data []byte, useRaw bool, sender livekit.ParticipantIdentity) error
func (*ParticipantImpl) SendJoinResponse ¶
func (p *ParticipantImpl) SendJoinResponse(joinResponse *livekit.JoinResponse) error
func (*ParticipantImpl) SendParticipantUpdate ¶
func (p *ParticipantImpl) SendParticipantUpdate(participantsToUpdate []*livekit.ParticipantInfo) error
func (*ParticipantImpl) SendRefreshToken ¶ added in v0.15.3
func (p *ParticipantImpl) SendRefreshToken(token string) error
func (*ParticipantImpl) SendRoomMovedResponse ¶ added in v1.9.0
func (p *ParticipantImpl) SendRoomMovedResponse(roomMovedResponse *livekit.RoomMovedResponse) error
func (*ParticipantImpl) SendRoomUpdate ¶ added in v0.13.1
func (p *ParticipantImpl) SendRoomUpdate(room *livekit.Room) error
func (*ParticipantImpl) SendSpeakerUpdate ¶ added in v0.13.0
func (p *ParticipantImpl) SendSpeakerUpdate(speakers []*livekit.SpeakerInfo, force bool) error
SendSpeakerUpdate notifies participant changes to speakers. only send members that have changed since last update
func (*ParticipantImpl) SendSubscriptionPermissionUpdate ¶ added in v1.9.1
func (p *ParticipantImpl) SendSubscriptionPermissionUpdate(publisherID livekit.ParticipantID, trackID livekit.TrackID, allowed bool) error
func (*ParticipantImpl) SetAttributes ¶ added in v1.6.3
func (p *ParticipantImpl) SetAttributes(attrs map[string]string)
func (*ParticipantImpl) SetMetadata ¶
func (p *ParticipantImpl) SetMetadata(metadata string)
SetMetadata attaches metadata to the participant
func (*ParticipantImpl) SetMigrateInfo ¶ added in v0.15.5
func (p *ParticipantImpl) SetMigrateInfo( previousOffer, previousAnswer *webrtc.SessionDescription, mediaTracks []*livekit.TrackPublishedResponse, dataChannels []*livekit.DataChannelInfo, dataChannelReceiveState []*livekit.DataChannelReceiveState, )
func (*ParticipantImpl) SetMigrateState ¶ added in v0.15.3
func (p *ParticipantImpl) SetMigrateState(s types.MigrateState)
func (*ParticipantImpl) SetName ¶ added in v1.3.2
func (p *ParticipantImpl) SetName(name string)
SetName attaches name to the participant
func (*ParticipantImpl) SetPermission ¶
func (p *ParticipantImpl) SetPermission(permission *livekit.ParticipantPermission) bool
func (*ParticipantImpl) SetResponseSink ¶
func (p *ParticipantImpl) SetResponseSink(sink routing.MessageSink)
func (*ParticipantImpl) SetTrackMuted ¶
func (p *ParticipantImpl) SetTrackMuted(mute *livekit.MuteTrackRequest, fromAdmin bool) *livekit.TrackInfo
func (*ParticipantImpl) State ¶
func (p *ParticipantImpl) State() livekit.ParticipantInfo_State
func (*ParticipantImpl) SupportsCodecChange ¶ added in v1.8.4
func (p *ParticipantImpl) SupportsCodecChange() bool
func (*ParticipantImpl) SupportsMoving ¶ added in v1.9.0
func (p *ParticipantImpl) SupportsMoving() error
func (*ParticipantImpl) SupportsSyncStreamID ¶ added in v1.5.0
func (p *ParticipantImpl) SupportsSyncStreamID() bool
func (*ParticipantImpl) SupportsTransceiverReuse ¶ added in v1.5.0
func (p *ParticipantImpl) SupportsTransceiverReuse() bool
func (*ParticipantImpl) ToProto ¶
func (p *ParticipantImpl) ToProto() *livekit.ParticipantInfo
func (*ParticipantImpl) ToProtoWithVersion ¶ added in v1.4.2
func (p *ParticipantImpl) ToProtoWithVersion() (*livekit.ParticipantInfo, utils.TimedVersion)
func (*ParticipantImpl) UncacheDownTrack ¶ added in v1.1.1
func (p *ParticipantImpl) UncacheDownTrack(rtpTransceiver *webrtc.RTPTransceiver)
func (*ParticipantImpl) UpdateAudioTrack ¶ added in v1.7.1
func (p *ParticipantImpl) UpdateAudioTrack(update *livekit.UpdateLocalAudioTrack) error
func (*ParticipantImpl) UpdateMediaLoss ¶ added in v1.2.0
func (*ParticipantImpl) UpdateMediaRTT ¶ added in v1.3.4
func (p *ParticipantImpl) UpdateMediaRTT(rtt uint32)
func (*ParticipantImpl) UpdateMetadata ¶ added in v1.9.1
func (p *ParticipantImpl) UpdateMetadata(update *livekit.UpdateParticipantMetadata, fromAdmin bool) error
func (*ParticipantImpl) UpdateSubscribedQuality ¶ added in v1.2.0
func (p *ParticipantImpl) UpdateSubscribedQuality(nodeID livekit.NodeID, trackID livekit.TrackID, maxQualities []types.SubscribedCodecQuality) error
func (*ParticipantImpl) UpdateVideoTrack ¶ added in v1.7.1
func (p *ParticipantImpl) UpdateVideoTrack(update *livekit.UpdateLocalVideoTrack) error
func (*ParticipantImpl) Verify ¶ added in v1.8.1
func (p *ParticipantImpl) Verify() bool
func (*ParticipantImpl) VerifySubscribeParticipantInfo ¶ added in v1.3.0
func (p *ParticipantImpl) VerifySubscribeParticipantInfo(pID livekit.ParticipantID, version uint32)
func (*ParticipantImpl) Version ¶ added in v1.8.0
func (p *ParticipantImpl) Version() utils.TimedVersion
type ParticipantOptions ¶ added in v0.9.4
type ParticipantOptions struct {
AutoSubscribe bool
}
type ParticipantParams ¶
type ParticipantParams struct {
Identity livekit.ParticipantIdentity
Name livekit.ParticipantName
SID livekit.ParticipantID
Config *WebRTCConfig
Sink routing.MessageSink
AudioConfig sfu.AudioConfig
VideoConfig config.VideoConfig
LimitConfig config.LimitConfig
ProtocolVersion types.ProtocolVersion
SessionStartTime time.Time
Telemetry telemetry.TelemetryService
Trailer []byte
PLIThrottleConfig sfu.PLIThrottleConfig
CongestionControlConfig config.CongestionControlConfig
// codecs that are enabled for this room
PublishEnabledCodecs []*livekit.Codec
SubscribeEnabledCodecs []*livekit.Codec
Logger logger.Logger
LoggerResolver logger.DeferredFieldResolver
Reporter roomobs.ParticipantSessionReporter
ReporterResolver roomobs.ParticipantReporterResolver
SimTracks map[uint32]SimulcastTrackInfo
Grants *auth.ClaimGrants
InitialVersion uint32
ClientConf *livekit.ClientConfiguration
ClientInfo ClientInfo
Region string
Migration bool
Reconnect bool
AdaptiveStream bool
AllowTCPFallback bool
TCPFallbackRTTThreshold int
AllowUDPUnstableFallback bool
TURNSEnabled bool
ParticipantHelper types.LocalParticipantHelper
DisableSupervisor bool
ReconnectOnPublicationError bool
ReconnectOnSubscriptionError bool
ReconnectOnDataChannelError bool
VersionGenerator utils.TimedVersionGenerator
DisableDynacast bool
SubscriberAllowPause bool
SubscriptionLimitAudio int32
SubscriptionLimitVideo int32
PlayoutDelay *livekit.PlayoutDelay
SyncStreams bool
ForwardStats *sfu.ForwardStats
DisableSenderReportPassThrough bool
MetricConfig metric.MetricConfig
UseOneShotSignallingMode bool
EnableMetrics bool
DataChannelMaxBufferedAmount uint64
DatachannelSlowThreshold int
FireOnTrackBySdp bool
DisableCodecRegression bool
LastPubReliableSeq uint32
Country string
PreferVideoSizeFromMedia bool
UseSinglePeerConnection bool
}
type ParticipantUpdate ¶ added in v1.9.0
type ParticipantUpdate struct {
ParticipantInfo *livekit.ParticipantInfo
IsSynthesizedDisconnect bool
CloseReason types.ParticipantCloseReason
}
func PushAndDequeueUpdates ¶ added in v1.9.0
func PushAndDequeueUpdates( pi *livekit.ParticipantInfo, closeReason types.ParticipantCloseReason, isImmediate bool, existingParticipant types.Participant, cache map[livekit.ParticipantIdentity]*ParticipantUpdate, ) []*ParticipantUpdate
push a participant update for batched broadcast, optionally returning immediate updates to broadcast. it handles the following scenarios * subscriber-only updates will be queued for batch updates * publisher & immediate updates will be returned without queuing * when the SID changes, it will return both updates, with the earlier participant set to disconnected
type PrimaryTransportHandler ¶ added in v1.5.3
func (PrimaryTransportHandler) OnFullyEstablished ¶ added in v1.5.3
func (h PrimaryTransportHandler) OnFullyEstablished()
func (PrimaryTransportHandler) OnInitialConnected ¶ added in v1.5.3
func (h PrimaryTransportHandler) OnInitialConnected()
type PublisherTransportHandler ¶ added in v1.5.3
type PublisherTransportHandler struct {
AnyTransportHandler
}
func (PublisherTransportHandler) OnAnswer ¶ added in v1.5.3
func (h PublisherTransportHandler) OnAnswer(sd webrtc.SessionDescription, answerId uint32) error
func (PublisherTransportHandler) OnDataMessage ¶ added in v1.9.0
func (h PublisherTransportHandler) OnDataMessage(kind livekit.DataPacket_Kind, data []byte)
func (PublisherTransportHandler) OnDataMessageUnlabeled ¶ added in v1.9.0
func (h PublisherTransportHandler) OnDataMessageUnlabeled(data []byte)
func (PublisherTransportHandler) OnDataSendError ¶ added in v1.9.0
func (h PublisherTransportHandler) OnDataSendError(err error)
func (PublisherTransportHandler) OnInitialConnected ¶ added in v1.5.3
func (h PublisherTransportHandler) OnInitialConnected()
func (PublisherTransportHandler) OnTrack ¶ added in v1.5.3
func (h PublisherTransportHandler) OnTrack(track *webrtc.TrackRemote, rtpReceiver *webrtc.RTPReceiver)
func (PublisherTransportHandler) OnUnmatchedMedia ¶ added in v1.9.1
func (h PublisherTransportHandler) OnUnmatchedMedia(numAudios uint32, numVideos uint32) error
type RTCPFeedbackConfig ¶ added in v0.15.2
type RTCPFeedbackConfig struct {
Audio []webrtc.RTCPFeedback
Video []webrtc.RTCPFeedback
}
type RTPHeaderExtensionConfig ¶ added in v0.15.2
type ReceiverConfig ¶
type Room ¶
type Room struct {
// contains filtered or unexported fields
}
func NewRoom ¶
func NewRoom( room *livekit.Room, internal *livekit.RoomInternal, config WebRTCConfig, roomConfig config.RoomConfig, audioConfig *sfu.AudioConfig, serverInfo *livekit.ServerInfo, telemetry telemetry.TelemetryService, agentClient agent.Client, agentStore AgentStore, egressLauncher EgressLauncher, ) *Room
func (*Room) AddAgentDispatch ¶ added in v1.7.1
func (r *Room) AddAgentDispatch(dispatch *livekit.AgentDispatch) (*livekit.AgentDispatch, error)
func (*Room) Close ¶
func (r *Room) Close(reason types.ParticipantCloseReason)
func (*Room) CloseIfEmpty ¶
func (r *Room) CloseIfEmpty()
CloseIfEmpty closes the room if all participants had left, or it's still empty past timeout
func (*Room) DeleteAgentDispatch ¶ added in v1.7.1
func (r *Room) DeleteAgentDispatch(dispatchID string) (*livekit.AgentDispatch, error)
func (*Room) FirstJoinedAt ¶
func (*Room) GetActiveSpeakers ¶
func (r *Room) GetActiveSpeakers() []*livekit.SpeakerInfo
func (*Room) GetAgentDispatches ¶ added in v1.7.1
func (r *Room) GetAgentDispatches(dispatchID string) ([]*livekit.AgentDispatch, error)
func (*Room) GetBufferFactory ¶ added in v0.15.2
func (*Room) GetCachedReliableDataMessage ¶ added in v1.9.1
func (r *Room) GetCachedReliableDataMessage(seqs map[livekit.ParticipantID]uint32) []*types.DataMessageCache
func (*Room) GetLocalParticipants ¶ added in v1.3.5
func (r *Room) GetLocalParticipants() []types.LocalParticipant
func (*Room) GetParticipant ¶
func (r *Room) GetParticipant(identity livekit.ParticipantIdentity) types.LocalParticipant
func (*Room) GetParticipantByID ¶ added in v1.3.4
func (r *Room) GetParticipantByID(participantID livekit.ParticipantID) types.LocalParticipant
func (*Room) GetParticipantCount ¶ added in v1.5.2
func (*Room) GetParticipantRequestSource ¶ added in v1.4.0
func (r *Room) GetParticipantRequestSource(identity livekit.ParticipantIdentity) routing.MessageSource
func (*Room) GetParticipants ¶
func (r *Room) GetParticipants() []types.LocalParticipant
func (*Room) HandleSyncState ¶ added in v1.9.1
func (*Room) Internal ¶ added in v1.2.2
func (r *Room) Internal() *livekit.RoomInternal
func (*Room) IsDataMessageUserPacketDuplicate ¶ added in v1.8.4
func (r *Room) IsDataMessageUserPacketDuplicate(up *livekit.UserPacket) bool
func (*Room) Join ¶
func (r *Room) Join( participant types.LocalParticipant, requestSource routing.MessageSource, opts *ParticipantOptions, iceServers []*livekit.ICEServer, ) error
func (*Room) LastLeftAt ¶
func (*Room) OnParticipantChanged ¶
func (r *Room) OnParticipantChanged(f func(participant types.LocalParticipant))
func (*Room) OnRoomUpdated ¶ added in v1.4.2
func (r *Room) OnRoomUpdated(f func())
func (*Room) RemoveParticipant ¶
func (r *Room) RemoveParticipant( identity livekit.ParticipantIdentity, pID livekit.ParticipantID, reason types.ParticipantCloseReason, )
func (*Room) ReplaceParticipantRequestSource ¶ added in v1.4.0
func (r *Room) ReplaceParticipantRequestSource(identity livekit.ParticipantIdentity, reqSource routing.MessageSource)
func (*Room) ResolveMediaTrackForSubscriber ¶ added in v1.3.4
func (r *Room) ResolveMediaTrackForSubscriber(sub types.LocalParticipant, trackID livekit.TrackID) types.MediaResolverResult
func (*Room) ResumeParticipant ¶ added in v0.13.7
func (r *Room) ResumeParticipant( p types.LocalParticipant, requestSource routing.MessageSource, responseSink routing.MessageSink, iceConfig *livekit.ICEConfig, iceServers []*livekit.ICEServer, reason livekit.ReconnectReason, ) error
func (*Room) SendDataPacket ¶ added in v0.12.2
func (r *Room) SendDataPacket(dp *livekit.DataPacket, kind livekit.DataPacket_Kind)
func (*Room) SetMetadata ¶ added in v0.13.1
func (*Room) UpdateSubscriptions ¶
func (r *Room) UpdateSubscriptions( participant types.LocalParticipant, trackIDs []livekit.TrackID, participantTracks []*livekit.ParticipantTracks, subscribe bool, )
type RoomTrackManager ¶ added in v1.3.4
type RoomTrackManager struct {
// contains filtered or unexported fields
}
RoomTrackManager holds tracks that are published to the room
func NewRoomTrackManager ¶ added in v1.3.4
func NewRoomTrackManager() *RoomTrackManager
func (*RoomTrackManager) AddTrack ¶ added in v1.3.4
func (r *RoomTrackManager) AddTrack(track types.MediaTrack, publisherIdentity livekit.ParticipantIdentity, publisherID livekit.ParticipantID)
func (*RoomTrackManager) GetOrCreateTrackChangeNotifier ¶ added in v1.3.4
func (r *RoomTrackManager) GetOrCreateTrackChangeNotifier(trackID livekit.TrackID) *utils.ChangeNotifier
func (*RoomTrackManager) GetOrCreateTrackRemoveNotifier ¶ added in v1.3.4
func (r *RoomTrackManager) GetOrCreateTrackRemoveNotifier(trackID livekit.TrackID) *utils.ChangeNotifier
func (*RoomTrackManager) GetTrackInfo ¶ added in v1.3.4
func (r *RoomTrackManager) GetTrackInfo(trackID livekit.TrackID) *TrackInfo
func (*RoomTrackManager) HasObservers ¶ added in v1.3.4
func (r *RoomTrackManager) HasObservers(track types.MediaTrack) bool
HasObservers lets caller know if the current media track has any observers this is used to signal interest in the track. when another MediaTrack with the same trackID is being used, track is not considered to be observed.
func (*RoomTrackManager) NotifyTrackChanged ¶ added in v1.3.4
func (r *RoomTrackManager) NotifyTrackChanged(trackID livekit.TrackID)
func (*RoomTrackManager) RemoveTrack ¶ added in v1.3.4
func (r *RoomTrackManager) RemoveTrack(track types.MediaTrack)
type SimulcastTrackInfo ¶ added in v0.15.3
type SubscribedTrack ¶
type SubscribedTrack struct {
// contains filtered or unexported fields
}
func NewSubscribedTrack ¶
func NewSubscribedTrack(params SubscribedTrackParams) *SubscribedTrack
func (*SubscribedTrack) AddOnBind ¶ added in v1.3.4
func (t *SubscribedTrack) AddOnBind(f func(error))
func (*SubscribedTrack) Bound ¶ added in v0.15.0
func (t *SubscribedTrack) Bound(err error)
for DownTrack callback to notify us that it's bound
func (*SubscribedTrack) Close ¶ added in v1.3.4
func (t *SubscribedTrack) Close(isExpectedToResume bool)
for DownTrack callback to notify us that it's closed
func (*SubscribedTrack) DownTrack ¶
func (t *SubscribedTrack) DownTrack() *sfu.DownTrack
func (*SubscribedTrack) ID ¶
func (t *SubscribedTrack) ID() livekit.TrackID
func (*SubscribedTrack) IsBound ¶ added in v1.3.4
func (t *SubscribedTrack) IsBound() bool
func (*SubscribedTrack) IsMuted ¶
func (t *SubscribedTrack) IsMuted() bool
has subscriber indicated it wants to mute this track
func (*SubscribedTrack) MediaTrack ¶ added in v0.15.0
func (t *SubscribedTrack) MediaTrack() types.MediaTrack
func (*SubscribedTrack) NeedsNegotiation ¶ added in v1.3.4
func (t *SubscribedTrack) NeedsNegotiation() bool
func (*SubscribedTrack) OnClose ¶ added in v1.3.4
func (t *SubscribedTrack) OnClose(f func(bool))
func (*SubscribedTrack) PublisherID ¶ added in v0.15.2
func (t *SubscribedTrack) PublisherID() livekit.ParticipantID
func (*SubscribedTrack) PublisherIdentity ¶ added in v0.13.7
func (t *SubscribedTrack) PublisherIdentity() livekit.ParticipantIdentity
func (*SubscribedTrack) PublisherVersion ¶ added in v1.1.1
func (t *SubscribedTrack) PublisherVersion() uint32
func (*SubscribedTrack) RTPSender ¶ added in v1.3.4
func (t *SubscribedTrack) RTPSender() *webrtc.RTPSender
func (*SubscribedTrack) SetNeedsNegotiation ¶ added in v1.3.4
func (t *SubscribedTrack) SetNeedsNegotiation(needs bool)
func (*SubscribedTrack) SetPublisherMuted ¶
func (t *SubscribedTrack) SetPublisherMuted(muted bool)
func (*SubscribedTrack) SetRTPSender ¶ added in v1.3.4
func (t *SubscribedTrack) SetRTPSender(sender *webrtc.RTPSender)
func (*SubscribedTrack) Subscriber ¶ added in v1.1.1
func (t *SubscribedTrack) Subscriber() types.LocalParticipant
func (*SubscribedTrack) SubscriberID ¶ added in v0.15.4
func (t *SubscribedTrack) SubscriberID() livekit.ParticipantID
func (*SubscribedTrack) SubscriberIdentity ¶ added in v1.0.0
func (t *SubscribedTrack) SubscriberIdentity() livekit.ParticipantIdentity
func (*SubscribedTrack) UpdateSubscriberSettings ¶ added in v0.9.14
func (t *SubscribedTrack) UpdateSubscriberSettings(settings *livekit.UpdateTrackSettings, isImmediate bool)
func (*SubscribedTrack) UpdateVideoLayer ¶ added in v0.15.0
func (t *SubscribedTrack) UpdateVideoLayer()
type SubscribedTrackParams ¶ added in v0.15.0
type SubscribedTrackParams struct {
PublisherID livekit.ParticipantID
PublisherIdentity livekit.ParticipantIdentity
PublisherVersion uint32
Subscriber types.LocalParticipant
MediaTrack types.MediaTrack
DownTrack *sfu.DownTrack
AdaptiveStream bool
}
type SubscriberTransportHandler ¶ added in v1.5.3
type SubscriberTransportHandler struct {
AnyTransportHandler
}
func (SubscriberTransportHandler) OnDataSendError ¶ added in v1.8.0
func (h SubscriberTransportHandler) OnDataSendError(err error)
func (SubscriberTransportHandler) OnInitialConnected ¶ added in v1.5.3
func (h SubscriberTransportHandler) OnInitialConnected()
func (SubscriberTransportHandler) OnOffer ¶ added in v1.5.3
func (h SubscriberTransportHandler) OnOffer(sd webrtc.SessionDescription, offerId uint32) error
func (SubscriberTransportHandler) OnStreamStateChange ¶ added in v1.5.3
func (h SubscriberTransportHandler) OnStreamStateChange(update *streamallocator.StreamStateUpdate) error
type SubscriptionManager ¶ added in v1.3.4
type SubscriptionManager struct {
// contains filtered or unexported fields
}
SubscriptionManager manages a participant's subscriptions
func NewSubscriptionManager ¶ added in v1.3.4
func NewSubscriptionManager(params SubscriptionManagerParams) *SubscriptionManager
func (*SubscriptionManager) ClearAllSubscriptions ¶ added in v1.9.0
func (m *SubscriptionManager) ClearAllSubscriptions()
func (*SubscriptionManager) Close ¶ added in v1.3.4
func (m *SubscriptionManager) Close(isExpectedToResume bool)
func (*SubscriptionManager) GetSubscribedParticipants ¶ added in v1.3.4
func (m *SubscriptionManager) GetSubscribedParticipants() []livekit.ParticipantID
func (*SubscriptionManager) GetSubscribedTracks ¶ added in v1.3.4
func (m *SubscriptionManager) GetSubscribedTracks() []types.SubscribedTrack
func (*SubscriptionManager) HasSubscriptions ¶ added in v1.3.4
func (m *SubscriptionManager) HasSubscriptions() bool
func (*SubscriptionManager) IsSubscribedTo ¶ added in v1.3.4
func (m *SubscriptionManager) IsSubscribedTo(participantID livekit.ParticipantID) bool
func (*SubscriptionManager) IsTrackNameSubscribed ¶ added in v1.8.1
func (m *SubscriptionManager) IsTrackNameSubscribed(publisherIdentity livekit.ParticipantIdentity, trackName string) bool
func (*SubscriptionManager) OnSubscribeStatusChanged ¶ added in v1.3.4
func (m *SubscriptionManager) OnSubscribeStatusChanged(fn func(publisherID livekit.ParticipantID, subscribed bool))
OnSubscribeStatusChanged callback will be notified when a participant subscribes or unsubscribes to another participant it will only fire once per publisher. If current participant is subscribed to multiple tracks from another, this callback will only fire once.
func (*SubscriptionManager) ReconcileAll ¶ added in v1.6.0
func (m *SubscriptionManager) ReconcileAll()
func (*SubscriptionManager) StopAndGetSubscribedTracksForwarderState ¶ added in v1.7.1
func (m *SubscriptionManager) StopAndGetSubscribedTracksForwarderState() map[livekit.TrackID]*livekit.RTPForwarderState
func (*SubscriptionManager) SubscribeToTrack ¶ added in v1.3.4
func (m *SubscriptionManager) SubscribeToTrack(trackID livekit.TrackID, isSync bool)
func (*SubscriptionManager) UnsubscribeFromTrack ¶ added in v1.3.4
func (m *SubscriptionManager) UnsubscribeFromTrack(trackID livekit.TrackID)
func (*SubscriptionManager) UpdateSubscribedTrackSettings ¶ added in v1.3.4
func (m *SubscriptionManager) UpdateSubscribedTrackSettings(trackID livekit.TrackID, settings *livekit.UpdateTrackSettings)
func (*SubscriptionManager) WaitUntilSubscribed ¶ added in v1.3.4
func (m *SubscriptionManager) WaitUntilSubscribed(timeout time.Duration) error
type SubscriptionManagerParams ¶ added in v1.3.4
type SubscriptionManagerParams struct {
Logger logger.Logger
Participant types.LocalParticipant
TrackResolver types.MediaTrackResolver
OnTrackSubscribed func(subTrack types.SubscribedTrack)
OnTrackUnsubscribed func(subTrack types.SubscribedTrack)
OnSubscriptionError func(trackID livekit.TrackID, fatal bool, err error)
Telemetry telemetry.TelemetryService
SubscriptionLimitVideo, SubscriptionLimitAudio int32
UseOneShotSignallingMode bool
}
type TrackInfo ¶ added in v1.3.4
type TrackInfo struct {
Track types.MediaTrack
PublisherIdentity livekit.ParticipantIdentity
PublisherID livekit.ParticipantID
}
type TransportManager ¶ added in v1.2.0
type TransportManager struct {
// contains filtered or unexported fields
}
func NewTransportManager ¶ added in v1.2.0
func NewTransportManager(params TransportManagerParams) (*TransportManager, error)
func (*TransportManager) AddICECandidate ¶ added in v1.2.0
func (t *TransportManager) AddICECandidate(candidate webrtc.ICECandidateInit, target livekit.SignalTarget)
AddICECandidate adds candidates for remote peer
func (*TransportManager) AddSubscribedTrack ¶ added in v1.2.0
func (t *TransportManager) AddSubscribedTrack(subTrack types.SubscribedTrack)
func (*TransportManager) AddTrackLocal ¶ added in v1.8.1
func (t *TransportManager) AddTrackLocal( trackLocal webrtc.TrackLocal, params types.AddTrackParams, enabledCodecs []*livekit.Codec, rtcpFeedbackConfig RTCPFeedbackConfig, ) (*webrtc.RTPSender, *webrtc.RTPTransceiver, error)
func (*TransportManager) AddTransceiverFromTrackLocal ¶ added in v1.8.1
func (t *TransportManager) AddTransceiverFromTrackLocal( trackLocal webrtc.TrackLocal, params types.AddTrackParams, enabledCodecs []*livekit.Codec, rtcpFeedbackConfig RTCPFeedbackConfig, ) (*webrtc.RTPSender, *webrtc.RTPTransceiver, error)
func (*TransportManager) Close ¶ added in v1.2.0
func (t *TransportManager) Close()
func (*TransportManager) GetAnswer ¶ added in v1.8.1
func (t *TransportManager) GetAnswer() (webrtc.SessionDescription, uint32, error)
func (*TransportManager) GetICEConfig ¶ added in v1.8.0
func (t *TransportManager) GetICEConfig() *livekit.ICEConfig
func (*TransportManager) GetICEConnectionInfo ¶ added in v1.8.0
func (t *TransportManager) GetICEConnectionInfo() []*types.ICEConnectionInfo
func (*TransportManager) GetPublisherICESessionUfrag ¶ added in v1.9.0
func (t *TransportManager) GetPublisherICESessionUfrag() (string, error)
func (*TransportManager) GetPublisherMid ¶ added in v1.2.0
func (t *TransportManager) GetPublisherMid(rtpReceiver *webrtc.RTPReceiver) string
func (*TransportManager) GetPublisherRTPReceiver ¶ added in v1.2.0
func (t *TransportManager) GetPublisherRTPReceiver(mid string) *webrtc.RTPReceiver
func (*TransportManager) GetPublisherRTT ¶ added in v1.8.1
func (t *TransportManager) GetPublisherRTT() (float64, bool)
func (*TransportManager) GetSubscriberPacer ¶ added in v1.4.4
func (t *TransportManager) GetSubscriberPacer() pacer.Pacer
func (*TransportManager) GetSubscriberRTT ¶ added in v1.8.1
func (t *TransportManager) GetSubscriberRTT() (float64, bool)
func (*TransportManager) GetUnmatchMediaForOffer ¶ added in v1.3.0
func (t *TransportManager) GetUnmatchMediaForOffer(parsedOffer *sdp.SessionDescription, mediaType string) (unmatched []*sdp.MediaDescription, err error)
func (*TransportManager) HandleAnswer ¶ added in v1.2.0
func (t *TransportManager) HandleAnswer(answer webrtc.SessionDescription, answerId uint32)
func (*TransportManager) HandleClientReconnect ¶ added in v1.4.2
func (t *TransportManager) HandleClientReconnect(reason livekit.ReconnectReason)
func (*TransportManager) HandleICERestartSDPFragment ¶ added in v1.9.0
func (t *TransportManager) HandleICERestartSDPFragment(sdpFragment string) (string, error)
func (*TransportManager) HandleICETrickleSDPFragment ¶ added in v1.9.0
func (t *TransportManager) HandleICETrickleSDPFragment(sdpFragment string) error
func (*TransportManager) HandleOffer ¶ added in v1.2.0
func (t *TransportManager) HandleOffer(offer webrtc.SessionDescription, offerId uint32, shouldPend bool) error
func (*TransportManager) HandleReceiverReport ¶ added in v1.5.3
func (t *TransportManager) HandleReceiverReport(dt *sfu.DownTrack, report *rtcp.ReceiverReport)
func (*TransportManager) HasPublisherEverConnected ¶ added in v1.4.2
func (t *TransportManager) HasPublisherEverConnected() bool
func (*TransportManager) HasSubscriberEverConnected ¶ added in v1.2.0
func (t *TransportManager) HasSubscriberEverConnected() bool
func (*TransportManager) ICERestart ¶ added in v1.2.0
func (t *TransportManager) ICERestart(iceConfig *livekit.ICEConfig) error
func (*TransportManager) IsPublisherEstablished ¶ added in v1.2.0
func (t *TransportManager) IsPublisherEstablished() bool
func (*TransportManager) LastPublisherOffer ¶ added in v1.2.5
func (t *TransportManager) LastPublisherOffer() *webrtc.SessionDescription
func (*TransportManager) LastSeenSignalAt ¶ added in v1.4.0
func (t *TransportManager) LastSeenSignalAt() time.Time
func (*TransportManager) NegotiateSubscriber ¶ added in v1.2.0
func (t *TransportManager) NegotiateSubscriber(force bool)
func (*TransportManager) OnICEConfigChanged ¶ added in v1.2.0
func (t *TransportManager) OnICEConfigChanged(f func(iceConfig *livekit.ICEConfig))
func (*TransportManager) ProcessPendingPublisherDataChannels ¶ added in v1.2.0
func (t *TransportManager) ProcessPendingPublisherDataChannels()
func (*TransportManager) ProcessPendingPublisherOffer ¶ added in v1.2.0
func (t *TransportManager) ProcessPendingPublisherOffer()
func (*TransportManager) RemoveSubscribedTrack ¶ added in v1.2.0
func (t *TransportManager) RemoveSubscribedTrack(subTrack types.SubscribedTrack)
func (*TransportManager) RemoveTrackLocal ¶ added in v1.8.1
func (t *TransportManager) RemoveTrackLocal(sender *webrtc.RTPSender) error
func (*TransportManager) SendDataMessage ¶ added in v1.9.0
func (t *TransportManager) SendDataMessage(kind livekit.DataPacket_Kind, data []byte) error
func (*TransportManager) SendDataMessageUnlabeled ¶ added in v1.9.0
func (t *TransportManager) SendDataMessageUnlabeled(data []byte, useRaw bool, sender livekit.ParticipantIdentity) error
func (*TransportManager) SetICEConfig ¶ added in v1.2.0
func (t *TransportManager) SetICEConfig(iceConfig *livekit.ICEConfig)
func (*TransportManager) SetMigrateInfo ¶ added in v1.2.0
func (t *TransportManager) SetMigrateInfo( previousOffer *webrtc.SessionDescription, previousAnswer *webrtc.SessionDescription, dataChannels []*livekit.DataChannelInfo, )
func (*TransportManager) SetSignalSourceValid ¶ added in v1.4.0
func (t *TransportManager) SetSignalSourceValid(valid bool)
func (*TransportManager) SetSubscriberAllowPause ¶ added in v1.4.2
func (t *TransportManager) SetSubscriberAllowPause(allowPause bool)
func (*TransportManager) SetSubscriberChannelCapacity ¶ added in v1.4.2
func (t *TransportManager) SetSubscriberChannelCapacity(channelCapacity int64)
func (*TransportManager) SinceLastSignal ¶ added in v1.3.5
func (t *TransportManager) SinceLastSignal() time.Duration
func (*TransportManager) SubscriberAsPrimary ¶ added in v1.2.0
func (t *TransportManager) SubscriberAsPrimary() bool
func (*TransportManager) SubscriberClose ¶ added in v1.2.1
func (t *TransportManager) SubscriberClose()
func (*TransportManager) UpdateLastSeenSignal ¶ added in v1.3.4
func (t *TransportManager) UpdateLastSeenSignal()
func (*TransportManager) UpdateMediaRTT ¶ added in v1.3.4
func (t *TransportManager) UpdateMediaRTT(rtt uint32)
func (*TransportManager) UpdateSignalingRTT ¶ added in v1.3.4
func (t *TransportManager) UpdateSignalingRTT(rtt uint32)
func (*TransportManager) WritePublisherRTCP ¶ added in v1.2.0
func (t *TransportManager) WritePublisherRTCP(pkts []rtcp.Packet) error
func (*TransportManager) WriteSubscriberRTCP ¶ added in v1.2.0
func (t *TransportManager) WriteSubscriberRTCP(pkts []rtcp.Packet) error
type TransportManagerParams ¶ added in v1.2.0
type TransportManagerParams struct {
SubscriberAsPrimary bool
UseSinglePeerConnection bool
Config *WebRTCConfig
Twcc *twcc.Responder
ProtocolVersion types.ProtocolVersion
CongestionControlConfig config.CongestionControlConfig
EnabledSubscribeCodecs []*livekit.Codec
EnabledPublishCodecs []*livekit.Codec
SimTracks map[uint32]SimulcastTrackInfo
ClientInfo ClientInfo
Migration bool
AllowTCPFallback bool
TCPFallbackRTTThreshold int
AllowUDPUnstableFallback bool
TURNSEnabled bool
AllowPlayoutDelay bool
DataChannelMaxBufferedAmount uint64
DatachannelSlowThreshold int
Logger logger.Logger
PublisherHandler transport.Handler
SubscriberHandler transport.Handler
DataChannelStats *telemetry.BytesTrackStats
UseOneShotSignallingMode bool
FireOnTrackBySdp bool
}
type TransportManagerTransportHandler ¶ added in v1.5.3
type TransportManagerTransportHandler struct {
transport.Handler
// contains filtered or unexported fields
}
func (TransportManagerTransportHandler) OnFailed ¶ added in v1.5.3
func (h TransportManagerTransportHandler) OnFailed(isShortLived bool, iceConnectionInfo *types.ICEConnectionInfo)
type TransportParams ¶
type TransportParams struct {
Handler transport.Handler
ProtocolVersion types.ProtocolVersion
Config *WebRTCConfig
Twcc *lktwcc.Responder
DirectionConfig DirectionConfig
CongestionControlConfig config.CongestionControlConfig
EnabledCodecs []*livekit.Codec
Logger logger.Logger
Transport livekit.SignalTarget
SimTracks map[uint32]SimulcastTrackInfo
ClientInfo ClientInfo
IsOfferer bool
IsSendSide bool
AllowPlayoutDelay bool
UseOneShotSignallingMode bool
FireOnTrackBySdp bool
DataChannelMaxBufferedAmount uint64
DatachannelSlowThreshold int
// for development test
DatachannelMaxReceiverBufferSize int
}
type UnhandleSimulcastInterceptor ¶ added in v0.15.3
type UnhandleSimulcastInterceptor struct {
interceptor.NoOp
// contains filtered or unexported fields
}
func (*UnhandleSimulcastInterceptor) BindRemoteStream ¶ added in v0.15.3
func (u *UnhandleSimulcastInterceptor) BindRemoteStream(info *interceptor.StreamInfo, reader interceptor.RTPReader) interceptor.RTPReader
type UnhandleSimulcastInterceptorFactory ¶ added in v0.15.3
type UnhandleSimulcastInterceptorFactory struct {
// contains filtered or unexported fields
}
func NewUnhandleSimulcastInterceptorFactory ¶ added in v0.15.3
func NewUnhandleSimulcastInterceptorFactory(opts ...UnhandleSimulcastOption) (*UnhandleSimulcastInterceptorFactory, error)
func (*UnhandleSimulcastInterceptorFactory) NewInterceptor ¶ added in v0.15.3
func (f *UnhandleSimulcastInterceptorFactory) NewInterceptor(id string) (interceptor.Interceptor, error)
type UnhandleSimulcastOption ¶ added in v0.15.3
type UnhandleSimulcastOption func(r *UnhandleSimulcastInterceptor) error
func UnhandleSimulcastTracks ¶ added in v0.15.3
func UnhandleSimulcastTracks(tracks map[uint32]SimulcastTrackInfo) UnhandleSimulcastOption
type UpTrackManager ¶ added in v0.15.3
type UpTrackManager struct {
// contains filtered or unexported fields
}
UpTrackManager manages all uptracks from a participant
func NewUpTrackManager ¶ added in v0.15.3
func NewUpTrackManager(params UpTrackManagerParams) *UpTrackManager
func (*UpTrackManager) AddPublishedTrack ¶ added in v0.15.3
func (u *UpTrackManager) AddPublishedTrack(track types.MediaTrack)
func (*UpTrackManager) Close ¶ added in v0.15.3
func (u *UpTrackManager) Close(isExpectedToResume bool)
func (*UpTrackManager) DebugInfo ¶ added in v0.15.3
func (u *UpTrackManager) DebugInfo() map[string]interface{}
func (*UpTrackManager) GetAudioLevel ¶ added in v1.5.0
func (u *UpTrackManager) GetAudioLevel() (level float64, active bool)
func (*UpTrackManager) GetPublishedTrack ¶ added in v0.15.3
func (u *UpTrackManager) GetPublishedTrack(trackID livekit.TrackID) types.MediaTrack
func (*UpTrackManager) GetPublishedTracks ¶ added in v0.15.3
func (u *UpTrackManager) GetPublishedTracks() []types.MediaTrack
func (*UpTrackManager) HasPermission ¶ added in v1.3.4
func (u *UpTrackManager) HasPermission(trackID livekit.TrackID, subIdentity livekit.ParticipantIdentity) bool
func (*UpTrackManager) OnPublishedTrackUpdated ¶ added in v0.15.3
func (u *UpTrackManager) OnPublishedTrackUpdated(f func(track types.MediaTrack))
func (*UpTrackManager) OnUpTrackManagerClose ¶ added in v0.15.3
func (u *UpTrackManager) OnUpTrackManagerClose(f func())
func (*UpTrackManager) RemovePublishedTrack ¶ added in v0.15.3
func (u *UpTrackManager) RemovePublishedTrack(track types.MediaTrack, isExpectedToResume bool)
func (*UpTrackManager) SetPublishedTrackMuted ¶ added in v0.15.3
func (u *UpTrackManager) SetPublishedTrackMuted(trackID livekit.TrackID, muted bool) (types.MediaTrack, bool)
func (*UpTrackManager) SubscriptionPermission ¶ added in v0.15.3
func (u *UpTrackManager) SubscriptionPermission() (*livekit.SubscriptionPermission, utils.TimedVersion)
func (*UpTrackManager) ToProto ¶ added in v0.15.3
func (u *UpTrackManager) ToProto() []*livekit.TrackInfo
func (*UpTrackManager) UpdatePublishedAudioTrack ¶ added in v1.7.1
func (u *UpTrackManager) UpdatePublishedAudioTrack(update *livekit.UpdateLocalAudioTrack) types.MediaTrack
func (*UpTrackManager) UpdatePublishedVideoTrack ¶ added in v1.7.1
func (u *UpTrackManager) UpdatePublishedVideoTrack(update *livekit.UpdateLocalVideoTrack) types.MediaTrack
func (*UpTrackManager) UpdateSubscriptionPermission ¶ added in v0.15.3
func (u *UpTrackManager) UpdateSubscriptionPermission( subscriptionPermission *livekit.SubscriptionPermission, timedVersion utils.TimedVersion, resolverBySid func(participantID livekit.ParticipantID) types.LocalParticipant, ) error
type UpTrackManagerParams ¶ added in v0.15.3
type UpTrackManagerParams struct {
Logger logger.Logger
VersionGenerator utils.TimedVersionGenerator
}
type UserPacketDeduper ¶ added in v1.8.4
type UserPacketDeduper struct {
// contains filtered or unexported fields
}
func NewUserPacketDeduper ¶ added in v1.8.4
func NewUserPacketDeduper() *UserPacketDeduper
func (*UserPacketDeduper) IsDuplicate ¶ added in v1.8.4
func (u *UserPacketDeduper) IsDuplicate(up *livekit.UserPacket) bool
type WebRTCConfig ¶
type WebRTCConfig struct {
rtcconfig.WebRTCConfig
BufferFactory *buffer.Factory
Receiver ReceiverConfig
Publisher DirectionConfig
Subscriber DirectionConfig
}
func NewWebRTCConfig ¶
func NewWebRTCConfig(conf *config.Config) (*WebRTCConfig, error)
func (*WebRTCConfig) SetBufferFactory ¶ added in v0.9.11
func (c *WebRTCConfig) SetBufferFactory(factory *buffer.Factory)
func (*WebRTCConfig) UpdatePublisherConfig ¶ added in v1.9.1
func (c *WebRTCConfig) UpdatePublisherConfig(consolidated bool)
func (*WebRTCConfig) UpdateSubscriberConfig ¶ added in v1.9.1
func (c *WebRTCConfig) UpdateSubscriberConfig(ccConf config.CongestionControlConfig)
type WrappedReceiver ¶
type WrappedReceiver struct {
sfu.TrackReceiver
// contains filtered or unexported fields
}
func NewWrappedReceiver ¶
func NewWrappedReceiver(params WrappedReceiverParams) *WrappedReceiver
func (*WrappedReceiver) AddOnReady ¶ added in v1.8.0
func (r *WrappedReceiver) AddOnReady(f func())
func (*WrappedReceiver) Codecs ¶ added in v1.1.0
func (r *WrappedReceiver) Codecs() []webrtc.RTPCodecParameters
func (*WrappedReceiver) DeleteDownTrack ¶ added in v1.4.4
func (r *WrappedReceiver) DeleteDownTrack(participantID livekit.ParticipantID)
func (*WrappedReceiver) DetermineReceiver ¶ added in v1.1.0
func (r *WrappedReceiver) DetermineReceiver(codec webrtc.RTPCodecCapability) bool
DetermineReceiver determines the receiver of negotiated codec and return ready state of the receiver
func (*WrappedReceiver) StreamID ¶
func (r *WrappedReceiver) StreamID() string
func (*WrappedReceiver) TrackID ¶
func (r *WrappedReceiver) TrackID() livekit.TrackID
type WrappedReceiverParams ¶ added in v1.3.0
Source Files
¶
- clientinfo.go
- config.go
- egress.go
- errors.go
- mediaengine.go
- medialossproxy.go
- mediatrack.go
- mediatrackreceiver.go
- mediatracksubscriptions.go
- migrationdatacache.go
- participant.go
- participant_sdp.go
- participant_signal.go
- room.go
- roomtrackmanager.go
- subscribedtrack.go
- subscriptionmanager.go
- testutils.go
- transport.go
- transportmanager.go
- unhandlesimulcast.go
- uptrackmanager.go
- user_packet_deduper.go
- utils.go
- wrappedreceiver.go
Directories
¶
| Path | Synopsis |
|---|---|
|
transportfakes
Code generated by counterfeiter.
|
Code generated by counterfeiter. |
|
typesfakes
Code generated by counterfeiter.
|
Code generated by counterfeiter. |