123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- syntax = "proto3";
- package livekit;
- option go_package = "github.com/livekit/protocol/livekit";
- option csharp_namespace = "LiveKit.Proto";
- option ruby_package = "LiveKit::Proto";
- import "livekit_models.proto";
- message SignalRequest {
- oneof message {
- // initial join exchange, for publisher
- SessionDescription offer = 1;
- // participant answering publisher offer
- SessionDescription answer = 2;
- TrickleRequest trickle = 3;
- AddTrackRequest add_track = 4;
- // mute the participant's published tracks
- MuteTrackRequest mute = 5;
- // Subscribe or unsubscribe from tracks
- UpdateSubscription subscription = 6;
- // Update settings of subscribed tracks
- UpdateTrackSettings track_setting = 7;
- // Immediately terminate session
- LeaveRequest leave = 8;
- // Set active published layers, deprecated in favor of automatic tracking
- // SetSimulcastLayers simulcast = 9;
- // Update published video layers
- UpdateVideoLayers update_layers = 10;
- // Update subscriber permissions
- SubscriptionPermission subscription_permission = 11;
- // sync client's subscribe state to server during reconnect
- SyncState sync_state = 12;
- // Simulate conditions, for client validations
- SimulateScenario simulate = 13;
- // client triggered ping to server
- int64 ping = 14;
- }
- }
- message SignalResponse {
- oneof message {
- // sent when join is accepted
- JoinResponse join = 1;
- // sent when server answers publisher
- SessionDescription answer = 2;
- // sent when server is sending subscriber an offer
- SessionDescription offer = 3;
- // sent when an ICE candidate is available
- TrickleRequest trickle = 4;
- // sent when participants in the room has changed
- ParticipantUpdate update = 5;
- // sent to the participant when their track has been published
- TrackPublishedResponse track_published = 6;
- // Immediately terminate session
- LeaveRequest leave = 8;
- // server initiated mute
- MuteTrackRequest mute = 9;
- // indicates changes to speaker status, including when they've gone to not speaking
- SpeakersChanged speakers_changed = 10;
- // sent when metadata of the room has changed
- RoomUpdate room_update = 11;
- // when connection quality changed
- ConnectionQualityUpdate connection_quality = 12;
- // when streamed tracks state changed, used to notify when any of the streams were paused due to
- // congestion
- StreamStateUpdate stream_state_update = 13;
- // when max subscribe quality changed, used by dynamic broadcasting to disable unused layers
- SubscribedQualityUpdate subscribed_quality_update = 14;
- // when subscription permission changed
- SubscriptionPermissionUpdate subscription_permission_update = 15;
- // update the token the client was using, to prevent an active client from using an expired token
- string refresh_token = 16;
- // server initiated track unpublish
- TrackUnpublishedResponse track_unpublished = 17;
- // respond to ping
- int64 pong = 18;
- }
- }
- enum SignalTarget {
- PUBLISHER = 0;
- SUBSCRIBER = 1;
- }
- message SimulcastCodec {
- string codec = 1;
- string cid = 2;
- bool enable_simulcast_layers = 3;
- }
- message AddTrackRequest {
- // client ID of track, to match it when RTC track is received
- string cid = 1;
- string name = 2;
- TrackType type = 3;
- // to be deprecated in favor of layers
- uint32 width = 4;
- uint32 height = 5;
- // true to add track and initialize to muted
- bool muted = 6;
- // true if DTX (Discontinuous Transmission) is disabled for audio
- bool disable_dtx = 7;
- TrackSource source = 8;
- repeated VideoLayer layers = 9;
- repeated SimulcastCodec simulcast_codecs = 10;
- // server ID of track, publish new codec to exist track
- string sid = 11;
- }
- message TrickleRequest {
- string candidateInit = 1;
- SignalTarget target = 2;
- }
- message MuteTrackRequest {
- string sid = 1;
- bool muted = 2;
- }
- message JoinResponse {
- Room room = 1;
- ParticipantInfo participant = 2;
- repeated ParticipantInfo other_participants = 3;
- string server_version = 4;
- repeated ICEServer ice_servers = 5;
- // use subscriber as the primary PeerConnection
- bool subscriber_primary = 6;
- // when the current server isn't available, return alternate url to retry connection
- // when this is set, the other fields will be largely empty
- string alternative_url = 7;
- ClientConfiguration client_configuration = 8;
- string server_region = 9;
- int32 ping_timeout = 10;
- int32 ping_interval = 11;
- }
- message TrackPublishedResponse {
- string cid = 1;
- TrackInfo track = 2;
- }
- message TrackUnpublishedResponse {
- string track_sid = 1;
- }
- message SessionDescription {
- string type = 1; // "answer" | "offer" | "pranswer" | "rollback"
- string sdp = 2;
- }
- message ParticipantUpdate {
- repeated ParticipantInfo participants = 1;
- }
- message UpdateSubscription {
- repeated string track_sids = 1;
- bool subscribe = 2;
- repeated ParticipantTracks participant_tracks = 3;
- }
- message UpdateTrackSettings {
- repeated string track_sids = 1;
- // when true, the track is placed in a paused state, with no new data returned
- bool disabled = 3;
- // deprecated in favor of width & height
- VideoQuality quality = 4;
- // for video, width to receive
- uint32 width = 5;
- // for video, height to receive
- uint32 height = 6;
- }
- message LeaveRequest {
- // sent when server initiates the disconnect due to server-restart
- // indicates clients should attempt full-reconnect sequence
- bool can_reconnect = 1;
- DisconnectReason reason = 2;
- }
- // message to indicate published video track dimensions are changing
- message UpdateVideoLayers {
- string track_sid = 1;
- repeated VideoLayer layers = 2;
- }
- message ICEServer {
- repeated string urls = 1;
- string username = 2;
- string credential = 3;
- }
- message SpeakersChanged {
- repeated SpeakerInfo speakers = 1;
- }
- message RoomUpdate {
- Room room = 1;
- }
- message ConnectionQualityInfo {
- string participant_sid = 1;
- ConnectionQuality quality = 2;
- float score = 3;
- }
- message ConnectionQualityUpdate {
- repeated ConnectionQualityInfo updates = 1;
- }
- enum StreamState {
- ACTIVE = 0;
- PAUSED = 1;
- }
- message StreamStateInfo {
- string participant_sid = 1;
- string track_sid = 2;
- StreamState state = 3;
- }
- message StreamStateUpdate {
- repeated StreamStateInfo stream_states = 1;
- }
- message SubscribedQuality {
- VideoQuality quality = 1;
- bool enabled = 2;
- }
- message SubscribedCodec {
- string codec = 1;
- repeated SubscribedQuality qualities = 2;
- }
- message SubscribedQualityUpdate {
- string track_sid = 1;
- repeated SubscribedQuality subscribed_qualities = 2;
- repeated SubscribedCodec subscribed_codecs = 3;
- }
- message TrackPermission {
- // permission could be granted either by participant sid or identity
- string participant_sid = 1;
- bool all_tracks = 2;
- repeated string track_sids = 3;
- string participant_identity = 4;
- }
- message SubscriptionPermission {
- bool all_participants = 1;
- repeated TrackPermission track_permissions = 2;
- }
- message SubscriptionPermissionUpdate {
- string participant_sid = 1;
- string track_sid = 2;
- bool allowed = 3;
- }
- message SyncState {
- SessionDescription answer = 1;
- UpdateSubscription subscription = 2;
- repeated TrackPublishedResponse publish_tracks = 3;
- repeated DataChannelInfo data_channels = 4;
- }
- message DataChannelInfo {
- string label = 1;
- uint32 id = 2;
- SignalTarget target = 3;
- }
- enum CandidateProtocol {
- UDP = 0;
- TCP = 1;
- }
- message SimulateScenario {
- oneof scenario {
- // simulate N seconds of speaker activity
- int32 speaker_update = 1;
- // simulate local node failure
- bool node_failure = 2;
- // simulate migration
- bool migration = 3;
- // server to send leave
- bool server_leave = 4;
- // switch candidate protocol to tcp
- CandidateProtocol switch_candidate_protocol = 5;
- }
- }
|