Documentation
¶
Index ¶
- Constants
- type AddSubscriberParams
- type MediaTrack
- type Participant
- type ProtocolVersion
- func (v ProtocolVersion) HandlesDataPackets() bool
- func (v ProtocolVersion) SubscriberAsPrimary() bool
- func (v ProtocolVersion) SupportsConnectionQuality() bool
- func (v ProtocolVersion) SupportsPackedStreamId() bool
- func (v ProtocolVersion) SupportsProtobuf() bool
- func (v ProtocolVersion) SupportsSpeakerChanged() bool
- func (v ProtocolVersion) SupportsTransceiverReuse() bool
- type PublishedTrack
- type Room
- type SubscribedTrack
- type TrackRemote
- type WebsocketClient
Constants ¶
const DefaultProtocol = 2
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AddSubscriberParams ¶ added in v0.15.2
type MediaTrack ¶ added in v0.15.0
type MediaTrack interface {
ID() livekit.TrackID
Kind() livekit.TrackType
Name() string
IsMuted() bool
SetMuted(muted bool)
UpdateVideoLayers(layers []*livekit.VideoLayer)
Source() livekit.TrackSource
IsSimulcast() bool
// subscribers
AddSubscriber(participant Participant) error
RemoveSubscriber(participantID livekit.ParticipantID)
IsSubscriber(subID livekit.ParticipantID) bool
RemoveAllSubscribers()
RevokeDisallowedSubscribers(allowedSubscriberIDs []livekit.ParticipantID) []livekit.ParticipantID
// returns quality information that's appropriate for width & height
GetQualityForDimension(width, height uint32) livekit.VideoQuality
NotifySubscriberMute(subscriberID livekit.ParticipantID)
NotifySubscriberMaxQuality(subscriberID livekit.ParticipantID, quality livekit.VideoQuality)
}
MediaTrack represents a media track
type Participant ¶
type Participant interface {
ID() livekit.ParticipantID
Identity() livekit.ParticipantIdentity
State() livekit.ParticipantInfo_State
ProtocolVersion() ProtocolVersion
IsReady() bool
ConnectedAt() time.Time
ToProto() *livekit.ParticipantInfo
SetMetadata(metadata string)
SetPermission(permission *livekit.ParticipantPermission)
GetResponseSink() routing.MessageSink
SetResponseSink(sink routing.MessageSink)
SubscriberMediaEngine() *webrtc.MediaEngine
Negotiate()
ICERestart() error
AddTrack(req *livekit.AddTrackRequest)
GetPublishedTrack(sid livekit.TrackID) PublishedTrack
GetPublishedTracks() []PublishedTrack
GetSubscribedTrack(sid livekit.TrackID) SubscribedTrack
GetSubscribedTracks() []SubscribedTrack
HandleOffer(sdp webrtc.SessionDescription) (answer webrtc.SessionDescription, err error)
HandleAnswer(sdp webrtc.SessionDescription) error
AddICECandidate(candidate webrtc.ICECandidateInit, target livekit.SignalTarget) error
AddSubscriber(op Participant, params AddSubscriberParams) (int, error)
RemoveSubscriber(op Participant, trackID livekit.TrackID)
SendJoinResponse(info *livekit.Room, otherParticipants []*livekit.ParticipantInfo, iceServers []*livekit.ICEServer) error
SendParticipantUpdate(participants []*livekit.ParticipantInfo, updatedAt time.Time) error
SendSpeakerUpdate(speakers []*livekit.SpeakerInfo) error
SendDataPacket(packet *livekit.DataPacket) error
SendRoomUpdate(room *livekit.Room) error
SendConnectionQualityUpdate(update *livekit.ConnectionQualityUpdate) error
SetTrackMuted(trackID livekit.TrackID, muted bool, fromAdmin bool)
GetAudioLevel() (level uint8, active bool)
GetConnectionQuality() *livekit.ConnectionQualityInfo
IsSubscribedTo(participantID livekit.ParticipantID) bool
// returns list of participant identities that the current participant is subscribed to
GetSubscribedParticipants() []livekit.ParticipantID
// permissions
CanPublish() bool
CanSubscribe() bool
CanPublishData() bool
Hidden() bool
IsRecorder() bool
SubscriberAsPrimary() bool
Start()
Close() error
// callbacks
OnStateChange(func(p Participant, oldState livekit.ParticipantInfo_State))
// OnTrackPublished - remote added a remoteTrack
OnTrackPublished(func(Participant, PublishedTrack))
// OnTrackUpdated - one of its publishedTracks changed in status
OnTrackUpdated(callback func(Participant, PublishedTrack))
OnMetadataUpdate(callback func(Participant))
OnDataPacket(callback func(Participant, *livekit.DataPacket))
OnClose(func(Participant, map[livekit.TrackID]livekit.ParticipantID))
// package methods
AddSubscribedTrack(st SubscribedTrack)
RemoveSubscribedTrack(st SubscribedTrack)
SubscriberPC() *webrtc.PeerConnection
UpdateSubscriptionPermissions(permissions *livekit.UpdateSubscriptionPermissions, resolver func(participantID livekit.ParticipantID) Participant) error
SubscriptionPermissionUpdate(publisherID livekit.ParticipantID, trackID livekit.TrackID, allowed bool)
DebugInfo() map[string]interface{}
}
type ProtocolVersion ¶
type ProtocolVersion int
func (ProtocolVersion) HandlesDataPackets ¶
func (v ProtocolVersion) HandlesDataPackets() bool
func (ProtocolVersion) SubscriberAsPrimary ¶ added in v0.13.0
func (v ProtocolVersion) SubscriberAsPrimary() bool
SubscriberAsPrimary indicates clients initiate subscriber connection as primary
func (ProtocolVersion) SupportsConnectionQuality ¶ added in v0.14.0
func (v ProtocolVersion) SupportsConnectionQuality() bool
SupportsConnectionQuality - avoid sending frequent ConnectionQuality updates for lower protocol versions
func (ProtocolVersion) SupportsPackedStreamId ¶
func (v ProtocolVersion) SupportsPackedStreamId() bool
func (ProtocolVersion) SupportsProtobuf ¶ added in v0.11.0
func (v ProtocolVersion) SupportsProtobuf() bool
func (ProtocolVersion) SupportsSpeakerChanged ¶ added in v0.13.0
func (v ProtocolVersion) SupportsSpeakerChanged() bool
SupportsSpeakerChanged - if client handles speaker info deltas, instead of a comprehensive list
func (ProtocolVersion) SupportsTransceiverReuse ¶ added in v0.13.3
func (v ProtocolVersion) SupportsTransceiverReuse() bool
SupportsTransceiverReuse - if transceiver reuse is supported, optimizes SDP size
type PublishedTrack ¶
type PublishedTrack interface {
MediaTrack
SignalCid() string
SdpCid() string
ToProto() *livekit.TrackInfo
// returns number of uptracks that are publishing, registered
NumUpTracks() (uint32, uint32)
PublishLossPercentage() uint32
Receiver() sfu.TrackReceiver
GetConnectionScore() float64
// callbacks
AddOnClose(func())
}
PublishedTrack is the main interface representing a track published to the room it's responsible for managing subscribers and forwarding data from the input track to all subscribers
type Room ¶ added in v0.15.0
type Room interface {
Name() livekit.RoomName
UpdateSubscriptions(participant Participant, trackIDs []livekit.TrackID, participantTracks []*livekit.ParticipantTracks, subscribe bool) error
UpdateSubscriptionPermissions(participant Participant, permissions *livekit.UpdateSubscriptionPermissions) error
}
Room is a container of participants, and can provide room level actions
type SubscribedTrack ¶
type SubscribedTrack interface {
OnBind(f func())
ID() livekit.TrackID
PublisherID() livekit.ParticipantID
PublisherIdentity() livekit.ParticipantIdentity
DownTrack() *sfu.DownTrack
MediaTrack() MediaTrack
IsMuted() bool
SetPublisherMuted(muted bool)
UpdateSubscriberSettings(settings *livekit.UpdateTrackSettings)
// selects appropriate video layer according to subscriber preferences
UpdateVideoLayer()
}
type TrackRemote ¶
type TrackRemote interface {
SSRC() webrtc.SSRC
StreamID() string
Kind() webrtc.RTPCodecType
Codec() webrtc.RTPCodecParameters
}
interface for properties of webrtc.TrackRemote