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 std::optional<VideoEncodingOptions> video_encoding;
316
318 std::optional<AudioEncodingOptions> audio_encoding;
319
321 std::optional<VideoCodec> video_codec;
322
324 std::optional<bool> dtx;
325
327 std::optional<bool> red;
328
330 std::optional<bool> simulcast;
331
333 std::optional<TrackSource> source;
334
336 std::optional<std::string> stream;
337
339 std::optional<bool> preconnect_buffer;
340};
341
342// ---------------------------------------------------------
343// Event structs – public representations of RoomEvent.*
344// ---------------------------------------------------------
345
353
360
362 DisconnectReason reason = DisconnectReason::Unknown;
363};
364
370 std::shared_ptr<LocalTrackPublication> publication;
371
373 std::shared_ptr<Track> track;
374};
375
381 std::shared_ptr<LocalTrackPublication> publication;
382};
383
389 std::shared_ptr<Track> track;
390};
391
397 std::shared_ptr<RemoteTrackPublication> publication;
398
401};
402
408 std::shared_ptr<RemoteTrackPublication> publication;
409
412};
413
419 std::shared_ptr<Track> track;
420
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
448
450 std::string track_sid;
451
453 std::string error;
454};
455
462
464 std::shared_ptr<TrackPublication> publication;
465};
466
473
475 std::shared_ptr<TrackPublication> publication;
476};
477
483 std::vector<Participant *> speakers;
484};
485
491 std::string old_metadata;
492
494 std::string new_metadata;
495};
496
502 std::string sid;
503};
504
511
513 std::string old_metadata;
514
516 std::string new_metadata;
517};
518
525
527 std::string old_name;
528
530 std::string new_name;
531};
532
539
541 std::vector<AttributeEntry> changed_attributes;
542};
543
554
561
563 ConnectionQuality quality = ConnectionQuality::Good;
564};
565
571 std::vector<std::uint8_t> data;
572
574 DataPacketKind kind = DataPacketKind::Reliable;
575
579
581 std::string topic;
582};
583
589 int code = 0;
590
592 std::string digit;
593
596};
597
603 ConnectionState state = ConnectionState::Disconnected;
604};
605
611 DisconnectReason reason = DisconnectReason::Unknown;
612};
613
618
623
627struct RoomEosEvent {};
628
639
650
661
667 DataPacketKind kind = DataPacketKind::Reliable;
668
670 std::uint64_t threshold = 0;
671};
672
678 std::uint64_t reader_handle = 0;
679
682};
683
689 std::uint64_t reader_handle = 0;
690
693};
694
702
710
716 std::vector<Participant *> participants;
717};
718
725
727 EncryptionState state = EncryptionState::New;
728};
729
739 std::shared_ptr<RemoteDataTrack> track;
740};
741
747 std::string sid;
748};
749
750} // namespace livekit
Definition participant.h:31
Definition remote_participant.h:29
Definition room_event_types.h:481
std::vector< Participant * > speakers
Definition room_event_types.h:483
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:676
std::string participant_identity
Definition room_event_types.h:681
std::uint64_t reader_handle
Definition room_event_types.h:678
Definition room_event_types.h:558
ConnectionQuality quality
Definition room_event_types.h:563
Participant * participant
Definition room_event_types.h:560
Definition room_event_types.h:601
ConnectionState state
Definition room_event_types.h:603
std::uint64_t threshold
Definition room_event_types.h:670
DataPacketKind kind
Definition room_event_types.h:667
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:643
std::string participant_identity
Definition room_event_types.h:645
DataStreamChunkData chunk
Definition room_event_types.h:648
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:632
DataStreamHeaderData header
Definition room_event_types.h:637
std::string participant_identity
Definition room_event_types.h:634
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:654
std::string participant_identity
Definition room_event_types.h:656
DataStreamTrailerData trailer
Definition room_event_types.h:659
Definition room_event_types.h:737
std::shared_ptr< RemoteDataTrack > track
Definition room_event_types.h:739
Definition room_event_types.h:745
std::string sid
Definition room_event_types.h:747
Definition room_event_types.h:609
DisconnectReason reason
Definition room_event_types.h:611
Definition room_event_types.h:722
EncryptionState state
Definition room_event_types.h:727
Participant * participant
Definition room_event_types.h:724
Definition room_event_types.h:368
std::shared_ptr< LocalTrackPublication > publication
Definition room_event_types.h:370
std::shared_ptr< Track > track
Definition room_event_types.h:373
Definition room_event_types.h:387
std::shared_ptr< Track > track
Definition room_event_types.h:389
Definition room_event_types.h:379
std::shared_ptr< LocalTrackPublication > publication
Definition room_event_types.h:381
Definition room_event_types.h:536
std::vector< AttributeEntry > changed_attributes
Definition room_event_types.h:541
Participant * participant
Definition room_event_types.h:538
Definition room_event_types.h:349
RemoteParticipant * participant
Definition room_event_types.h:351
Definition room_event_types.h:357
RemoteParticipant * participant
Definition room_event_types.h:359
DisconnectReason reason
Definition room_event_types.h:362
Definition room_event_types.h:547
Participant * participant
Definition room_event_types.h:549
bool is_encrypted
Definition room_event_types.h:552
Definition room_event_types.h:508
std::string old_metadata
Definition room_event_types.h:513
Participant * participant
Definition room_event_types.h:510
std::string new_metadata
Definition room_event_types.h:516
Definition room_event_types.h:522
std::string old_name
Definition room_event_types.h:527
std::string new_name
Definition room_event_types.h:530
Participant * participant
Definition room_event_types.h:524
Definition room_event_types.h:714
std::vector< Participant * > participants
Definition room_event_types.h:716
Definition room_event_types.h:622
Definition room_event_types.h:617
Definition room_event_types.h:627
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:489
std::string old_metadata
Definition room_event_types.h:491
std::string new_metadata
Definition room_event_types.h:494
Definition room_event_types.h:706
RoomInfoData info
Definition room_event_types.h:708
Definition room_event_types.h:500
std::string sid
Definition room_event_types.h:502
Definition room_event_types.h:698
RoomInfoData info
Definition room_event_types.h:700
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:587
RemoteParticipant * participant
Definition room_event_types.h:595
int code
Definition room_event_types.h:589
std::string digit
Definition room_event_types.h:592
Definition room_event_types.h:687
std::string participant_identity
Definition room_event_types.h:692
std::uint64_t reader_handle
Definition room_event_types.h:689
Definition room_event_types.h:459
Participant * participant
Definition room_event_types.h:461
std::shared_ptr< TrackPublication > publication
Definition room_event_types.h:464
Definition room_event_types.h:313
std::optional< VideoEncodingOptions > video_encoding
Definition room_event_types.h:315
std::optional< bool > red
Definition room_event_types.h:327
std::optional< bool > simulcast
Definition room_event_types.h:330
std::optional< std::string > stream
Definition room_event_types.h:336
std::optional< bool > dtx
Definition room_event_types.h:324
std::optional< VideoCodec > video_codec
Definition room_event_types.h:321
std::optional< AudioEncodingOptions > audio_encoding
Definition room_event_types.h:318
std::optional< TrackSource > source
Definition room_event_types.h:333
std::optional< bool > preconnect_buffer
Definition room_event_types.h:339
Definition room_event_types.h:395
std::shared_ptr< RemoteTrackPublication > publication
Definition room_event_types.h:397
RemoteParticipant * participant
Definition room_event_types.h:400
Definition room_event_types.h:417
std::shared_ptr< Track > track
Definition room_event_types.h:419
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
std::string error
Definition room_event_types.h:453
std::string track_sid
Definition room_event_types.h:450
RemoteParticipant * participant
Definition room_event_types.h:447
Definition room_event_types.h:470
Participant * participant
Definition room_event_types.h:472
std::shared_ptr< TrackPublication > publication
Definition room_event_types.h:475
Definition room_event_types.h:406
std::shared_ptr< RemoteTrackPublication > publication
Definition room_event_types.h:408
RemoteParticipant * participant
Definition room_event_types.h:411
Definition room_event_types.h:431
RemoteParticipant * participant
Definition room_event_types.h:439
std::shared_ptr< Track > track
Definition room_event_types.h:433
std::shared_ptr< RemoteTrackPublication > publication
Definition room_event_types.h:436
Definition room_event_types.h:569
std::vector< std::uint8_t > data
Definition room_event_types.h:571
RemoteParticipant * participant
Definition room_event_types.h:578
std::string topic
Definition room_event_types.h:581
DataPacketKind kind
Definition room_event_types.h:574
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