LiveKit C++ SDK
Real-time audio/video SDK for C++
Loading...
Searching...
No Matches
room_event_types.h
1/*
2 * Copyright 2025 LiveKit
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an “AS IS” BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
19#include <cstdint>
20#include <map>
21#include <memory>
22#include <optional>
23#include <string>
24#include <vector>
25
26namespace livekit {
27
28// Forward declarations to avoid pulling in heavy headers.
29class Track;
30class Participant;
31class RemoteParticipant;
32class RemoteDataTrack;
33class LocalTrackPublication;
34class RemoteTrackPublication;
35class TrackPublication;
36
37enum class VideoCodec;
38enum class TrackSource;
39
43enum class ConnectionQuality {
44 Poor = 0,
45 Good,
46 Excellent,
47 Lost,
48};
49
53enum class ConnectionState {
54 Disconnected = 0,
55 Connected,
56 Reconnecting,
57};
58
65enum class DataPacketKind {
66 Lossy,
67 Reliable,
68};
69
75enum class EncryptionState {
76 New = 0,
77 Ok,
78 EncryptionFailed,
79 DecryptionFailed,
80 MissingKey,
81 KeyRatcheted,
82 InternalError,
83};
84
90enum class DisconnectReason {
91 Unknown = 0,
92 ClientInitiated,
93 DuplicateIdentity,
94 ServerShutdown,
95 ParticipantRemoved,
96 RoomDeleted,
97 StateMismatch,
98 JoinFailure,
99 Migration,
100 SignalClose,
101 RoomClosed,
102 UserUnavailable,
103 UserRejected,
104 SipTrunkFailure,
105 ConnectionTimeout,
106 MediaFailure
107};
108
114 std::vector<std::uint8_t> data;
115
117 std::optional<std::string> topic;
118};
119
132 std::uint32_t code = 0;
133
135 std::optional<std::string> digit;
136};
137
143 std::optional<std::string> sid;
144
146 std::string name;
147
149 std::string metadata;
150
153
156
158 std::uint32_t empty_timeout = 0;
159
162 std::uint32_t departure_timeout = 0;
163
165 std::uint32_t max_participants = 0;
166
168 std::int64_t creation_time = 0;
169
171 std::uint32_t num_participants = 0;
172
174 std::uint32_t num_publishers = 0;
175
177 bool active_recording = false;
178};
179
185 std::string key;
186
188 std::string value;
189
190 AttributeEntry() = default;
191
192 AttributeEntry(std::string k, std::string v)
193 : key(std::move(k)), value(std::move(v)) {}
194};
195
202 std::string stream_id;
203
205 std::int64_t timestamp = 0;
206
208 std::string mime_type;
209
211 std::string topic;
212
214 std::optional<std::uint64_t> total_length;
215
217 std::map<std::string, std::string> attributes;
218
222 enum class ContentType {
223 None,
224 Text,
225 Byte,
226 } content_type = ContentType::None;
227
231 enum class OperationType {
232 Create = 0,
233 Update = 1,
234 Delete = 2,
235 Reaction = 3,
236 };
237
239 std::optional<OperationType> operation_type;
240
242 std::optional<int> version;
243
245 std::optional<std::string> reply_to_stream_id;
246
248 std::vector<std::string> attached_stream_ids;
249
251 std::optional<bool> generated;
252
254 std::optional<std::string> name;
255};
256
262 std::string stream_id;
263
265 std::uint64_t chunk_index = 0;
266
268 std::vector<std::uint8_t> content;
269
271 std::optional<int> version;
272
274 std::vector<std::uint8_t> iv;
275};
276
282 std::string stream_id;
283
285 std::string reason;
286
288 std::map<std::string, std::string> attributes;
289};
290
296 std::uint64_t max_bitrate = 0;
297
299 double max_framerate = 0.0;
300};
301
307 std::uint64_t max_bitrate = 0;
308};
309
315 bool user_timestamp = false;
316
318 bool frame_id = false;
319};
320
326 std::optional<VideoEncodingOptions> video_encoding;
327
329 std::optional<AudioEncodingOptions> audio_encoding;
330
332 std::optional<VideoCodec> video_codec;
333
335 std::optional<bool> dtx;
336
338 std::optional<bool> red;
339
341 std::optional<bool> simulcast;
342
344 std::optional<TrackSource> source;
345
347 std::optional<std::string> stream;
348
350 std::optional<bool> preconnect_buffer;
351
354};
355
356// ---------------------------------------------------------
357// Event structs – public representations of RoomEvent.*
358// ---------------------------------------------------------
359
367
374
376 DisconnectReason reason = DisconnectReason::Unknown;
377};
378
384 std::shared_ptr<LocalTrackPublication> publication;
385
387 std::shared_ptr<Track> track;
388};
389
395 std::shared_ptr<LocalTrackPublication> publication;
396};
397
403 std::shared_ptr<Track> track;
404};
405
411 std::shared_ptr<RemoteTrackPublication> publication;
412
415};
416
422 std::shared_ptr<RemoteTrackPublication> publication;
423
426};
427
433 std::shared_ptr<Track> track;
434
436 std::shared_ptr<RemoteTrackPublication> publication;
437
440};
441
447 std::shared_ptr<Track> track;
448
450 std::shared_ptr<RemoteTrackPublication> publication;
451
454};
455
462
464 std::string track_sid;
465
467 std::string error;
468};
469
476
478 std::shared_ptr<TrackPublication> publication;
479};
480
487
489 std::shared_ptr<TrackPublication> publication;
490};
491
497 std::vector<Participant *> speakers;
498};
499
505 std::string old_metadata;
506
508 std::string new_metadata;
509};
510
516 std::string sid;
517};
518
525
527 std::string old_metadata;
528
530 std::string new_metadata;
531};
532
539
541 std::string old_name;
542
544 std::string new_name;
545};
546
553
555 std::vector<AttributeEntry> changed_attributes;
556};
557
568
575
577 ConnectionQuality quality = ConnectionQuality::Good;
578};
579
585 std::vector<std::uint8_t> data;
586
588 DataPacketKind kind = DataPacketKind::Reliable;
589
593
595 std::string topic;
596};
597
603 int code = 0;
604
606 std::string digit;
607
610};
611
617 ConnectionState state = ConnectionState::Disconnected;
618};
619
625 DisconnectReason reason = DisconnectReason::Unknown;
626};
627
632
637
641struct RoomEosEvent {};
642
653
664
675
681 DataPacketKind kind = DataPacketKind::Reliable;
682
684 std::uint64_t threshold = 0;
685};
686
692 std::uint64_t reader_handle = 0;
693
696};
697
703 std::uint64_t reader_handle = 0;
704
707};
708
716
724
730 std::vector<Participant *> participants;
731};
732
739
741 EncryptionState state = EncryptionState::New;
742};
743
753 std::shared_ptr<RemoteDataTrack> track;
754};
755
761 std::string sid;
762};
763
764} // namespace livekit
Definition participant.h:31
Definition remote_participant.h:29
Definition room_event_types.h:495
std::vector< Participant * > speakers
Definition room_event_types.h:497
Definition room_event_types.h:183
std::string value
Definition room_event_types.h:188
std::string key
Definition room_event_types.h:185
Definition room_event_types.h:305
std::uint64_t max_bitrate
Definition room_event_types.h:307
Definition room_event_types.h:690
std::string participant_identity
Definition room_event_types.h:695
std::uint64_t reader_handle
Definition room_event_types.h:692
Definition room_event_types.h:572
ConnectionQuality quality
Definition room_event_types.h:577
Participant * participant
Definition room_event_types.h:574
Definition room_event_types.h:615
ConnectionState state
Definition room_event_types.h:617
std::uint64_t threshold
Definition room_event_types.h:684
DataPacketKind kind
Definition room_event_types.h:681
Definition room_event_types.h:260
std::optional< int > version
Definition room_event_types.h:271
std::uint64_t chunk_index
Definition room_event_types.h:265
std::vector< std::uint8_t > iv
Definition room_event_types.h:274
std::string stream_id
Definition room_event_types.h:262
std::vector< std::uint8_t > content
Definition room_event_types.h:268
Definition room_event_types.h:657
std::string participant_identity
Definition room_event_types.h:659
DataStreamChunkData chunk
Definition room_event_types.h:662
Definition room_event_types.h:200
std::int64_t timestamp
Definition room_event_types.h:205
std::optional< std::string > reply_to_stream_id
Definition room_event_types.h:245
OperationType
Definition room_event_types.h:231
std::optional< OperationType > operation_type
Definition room_event_types.h:239
std::optional< std::string > name
Definition room_event_types.h:254
std::map< std::string, std::string > attributes
Definition room_event_types.h:217
ContentType
Definition room_event_types.h:222
std::string stream_id
Definition room_event_types.h:202
std::optional< bool > generated
Definition room_event_types.h:251
std::optional< std::uint64_t > total_length
Definition room_event_types.h:214
std::string mime_type
Definition room_event_types.h:208
std::optional< int > version
Definition room_event_types.h:242
std::vector< std::string > attached_stream_ids
Definition room_event_types.h:248
std::string topic
Definition room_event_types.h:211
Definition room_event_types.h:646
DataStreamHeaderData header
Definition room_event_types.h:651
std::string participant_identity
Definition room_event_types.h:648
Definition room_event_types.h:280
std::string stream_id
Definition room_event_types.h:282
std::map< std::string, std::string > attributes
Definition room_event_types.h:288
std::string reason
Definition room_event_types.h:285
Definition room_event_types.h:668
std::string participant_identity
Definition room_event_types.h:670
DataStreamTrailerData trailer
Definition room_event_types.h:673
Definition room_event_types.h:751
std::shared_ptr< RemoteDataTrack > track
Definition room_event_types.h:753
Definition room_event_types.h:759
std::string sid
Definition room_event_types.h:761
Definition room_event_types.h:623
DisconnectReason reason
Definition room_event_types.h:625
Definition room_event_types.h:736
EncryptionState state
Definition room_event_types.h:741
Participant * participant
Definition room_event_types.h:738
Definition room_event_types.h:382
std::shared_ptr< LocalTrackPublication > publication
Definition room_event_types.h:384
std::shared_ptr< Track > track
Definition room_event_types.h:387
Definition room_event_types.h:401
std::shared_ptr< Track > track
Definition room_event_types.h:403
Definition room_event_types.h:393
std::shared_ptr< LocalTrackPublication > publication
Definition room_event_types.h:395
Definition room_event_types.h:313
bool user_timestamp
Definition room_event_types.h:315
bool frame_id
Definition room_event_types.h:318
Definition room_event_types.h:550
std::vector< AttributeEntry > changed_attributes
Definition room_event_types.h:555
Participant * participant
Definition room_event_types.h:552
Definition room_event_types.h:363
RemoteParticipant * participant
Definition room_event_types.h:365
Definition room_event_types.h:371
RemoteParticipant * participant
Definition room_event_types.h:373
DisconnectReason reason
Definition room_event_types.h:376
Definition room_event_types.h:561
Participant * participant
Definition room_event_types.h:563
bool is_encrypted
Definition room_event_types.h:566
Definition room_event_types.h:522
std::string old_metadata
Definition room_event_types.h:527
Participant * participant
Definition room_event_types.h:524
std::string new_metadata
Definition room_event_types.h:530
Definition room_event_types.h:536
std::string old_name
Definition room_event_types.h:541
std::string new_name
Definition room_event_types.h:544
Participant * participant
Definition room_event_types.h:538
Definition room_event_types.h:728
std::vector< Participant * > participants
Definition room_event_types.h:730
Definition room_event_types.h:636
Definition room_event_types.h:631
Definition room_event_types.h:641
Definition room_event_types.h:141
std::string name
Definition room_event_types.h:146
std::uint32_t num_participants
Definition room_event_types.h:171
std::uint32_t departure_timeout
Definition room_event_types.h:162
std::uint32_t empty_timeout
Definition room_event_types.h:158
std::string metadata
Definition room_event_types.h:149
bool active_recording
Definition room_event_types.h:177
std::int64_t creation_time
Definition room_event_types.h:168
std::uint32_t num_publishers
Definition room_event_types.h:174
std::uint32_t max_participants
Definition room_event_types.h:165
std::uint64_t reliable_dc_buffered_amount_low_threshold
Definition room_event_types.h:155
std::uint64_t lossy_dc_buffered_amount_low_threshold
Definition room_event_types.h:152
std::optional< std::string > sid
Definition room_event_types.h:143
Definition room_event_types.h:503
std::string old_metadata
Definition room_event_types.h:505
std::string new_metadata
Definition room_event_types.h:508
Definition room_event_types.h:720
RoomInfoData info
Definition room_event_types.h:722
Definition room_event_types.h:514
std::string sid
Definition room_event_types.h:516
Definition room_event_types.h:712
RoomInfoData info
Definition room_event_types.h:714
Definition room_event_types.h:130
std::uint32_t code
Definition room_event_types.h:132
std::optional< std::string > digit
Definition room_event_types.h:135
Definition room_event_types.h:601
RemoteParticipant * participant
Definition room_event_types.h:609
int code
Definition room_event_types.h:603
std::string digit
Definition room_event_types.h:606
Definition room_event_types.h:701
std::string participant_identity
Definition room_event_types.h:706
std::uint64_t reader_handle
Definition room_event_types.h:703
Definition room_event_types.h:473
Participant * participant
Definition room_event_types.h:475
std::shared_ptr< TrackPublication > publication
Definition room_event_types.h:478
Definition room_event_types.h:324
std::optional< VideoEncodingOptions > video_encoding
Definition room_event_types.h:326
std::optional< bool > red
Definition room_event_types.h:338
PacketTrailerFeatures packet_trailer_features
Definition room_event_types.h:353
std::optional< bool > simulcast
Definition room_event_types.h:341
std::optional< std::string > stream
Definition room_event_types.h:347
std::optional< bool > dtx
Definition room_event_types.h:335
std::optional< VideoCodec > video_codec
Definition room_event_types.h:332
std::optional< AudioEncodingOptions > audio_encoding
Definition room_event_types.h:329
std::optional< TrackSource > source
Definition room_event_types.h:344
std::optional< bool > preconnect_buffer
Definition room_event_types.h:350
Definition room_event_types.h:409
std::shared_ptr< RemoteTrackPublication > publication
Definition room_event_types.h:411
RemoteParticipant * participant
Definition room_event_types.h:414
Definition room_event_types.h:431
std::shared_ptr< Track > track
Definition room_event_types.h:433
std::shared_ptr< RemoteTrackPublication > publication
Definition room_event_types.h:436
RemoteParticipant * participant
Definition room_event_types.h:439
Definition room_event_types.h:459
std::string error
Definition room_event_types.h:467
std::string track_sid
Definition room_event_types.h:464
RemoteParticipant * participant
Definition room_event_types.h:461
Definition room_event_types.h:484
Participant * participant
Definition room_event_types.h:486
std::shared_ptr< TrackPublication > publication
Definition room_event_types.h:489
Definition room_event_types.h:420
std::shared_ptr< RemoteTrackPublication > publication
Definition room_event_types.h:422
RemoteParticipant * participant
Definition room_event_types.h:425
Definition room_event_types.h:445
RemoteParticipant * participant
Definition room_event_types.h:453
std::shared_ptr< Track > track
Definition room_event_types.h:447
std::shared_ptr< RemoteTrackPublication > publication
Definition room_event_types.h:450
Definition room_event_types.h:583
std::vector< std::uint8_t > data
Definition room_event_types.h:585
RemoteParticipant * participant
Definition room_event_types.h:592
std::string topic
Definition room_event_types.h:595
DataPacketKind kind
Definition room_event_types.h:588
Definition room_event_types.h:112
std::vector< std::uint8_t > data
Definition room_event_types.h:114
std::optional< std::string > topic
Definition room_event_types.h:117
Definition room_event_types.h:294
double max_framerate
Definition room_event_types.h:299
std::uint64_t max_bitrate
Definition room_event_types.h:296