Namespace LiveKit.Proto
Classes
- AudioDeviceInfo
Information about an audio device.
- AudioFrameReflection
Holder for reflection information generated from audio_frame.proto
- ByteStreamOpenRequest
Opens an outgoing stream. Call must be balanced with a StreamCloseRequest.
- ByteStreamReaderReadAllRequest
Reads an incoming byte stream in its entirety.
- ByteStreamReaderReadIncrementalRequest
Reads an incoming byte stream incrementally.
- ByteStreamReaderWriteToFileRequest
Writes data from an incoming stream to a file as it arrives.
- ByteStreamWriterCloseRequest
Closes a stream writer.
- ByteStreamWriterWriteRequest
Writes data to a stream writer.
- CaptureAudioFrameRequest
Push a frame to an AudioSource The data provided must be available as long as the client receive the callback.
- CaptureVideoFrameRequest
Push a frame to a VideoSource
- ConnectCallback.Types
Container for nested types declared in the ConnectCallback message type.
- ConnectRequest
Connect to a new LiveKit room
- CreateAudioTrackRequest
Create a new AudioTrack from a AudioSource
- CreateVideoTrackRequest
Create a new VideoTrack from a VideoSource
- DataStream.Types
Container for nested types declared in the DataStream message type.
- DataStream.Types.ByteHeader
header properties specific to byte or file streams
- DataStream.Types.Header
main DataStream.Header that contains a oneof for specific headers
- DataStream.Types.TextHeader
header properties specific to text streams
- DataStreamReflection
Holder for reflection information generated from data_stream.proto
- DataTrackFrame
A frame published on a data track.
- DataTrackInfo
Information about a published data track.
- DataTrackOptions
Options for publishing a data track.
- DataTrackPublished
A remote participant published a data track.
- DataTrackReflection
Holder for reflection information generated from data_track.proto
- DataTrackStreamEOS
Stream has ended.
- DataTrackStreamEvent
Event emitted on an active stream.
- DataTrackStreamFrameReceived
A frame was received.
- DataTrackStreamReadRequest
Signal readiness to handle the next frame.
This allows the client to put backpressure on the internal receive buffer. Sending this request will cause the next frame to be sent via
DataTrackStreamFrameReceivedonce one is available.
- DataTrackSubscribeOptions
Reserved for future subscription options.
- DataTrackUnpublished
A remote participant unpublished a data track.
- DisconnectRequest
Disconnect from the a room
- DisposeRequest
Stop all rooms synchronously (Do we need async here?). e.g: This is used for the Unity Editor after each assemblies reload. TODO(theomonnom): Implement a debug mode where we can find all leaked handles?
- E2EeReflection
Holder for reflection information generated from e2ee.proto
- EnableRemoteTrackPublicationRequest
Enable/Disable a remote track publication
- EnableRemoteTrackRequest
Enable/Disable a remote track
- FfiEvent
To minimize complexity, participant events are not included in the protocol. It is easily deducible from the room events and it turned out that is is easier to implement on the ffi client side.
- FfiOwnedHandle
Safety
The foreign language is responsable for disposing handles Forgetting to dispose the handle may lead to memory leaks
Dropping a handle doesn't necessarily mean that the object is destroyed if it is still used on the FfiServer (Atomic reference counting)
When refering to a handle without owning it, we just use a uint32 without this message. (the variable name is suffixed with "_handle")
- FfiReflection
Holder for reflection information generated from ffi.proto
- FfiRequest
This is the input of livekit_ffi_request function We always expect a response (FFIResponse, even if it's empty)
- FfiResponse
This is the output of livekit_ffi_request function.
- GetAudioDevicesRequest
Get available audio devices.
Returns lists of available recording (microphone) and playout (speaker) devices.
Platform Notes
- Desktop (Windows/macOS/Linux): Returns all available devices with names and GUIDs.
- Mobile (iOS/Android): Returns only one "default" device with empty name and GUID. Device enumeration is not meaningful on mobile - use for device count only.
- GetSessionStatsCallback.Types
Container for nested types declared in the GetSessionStatsCallback message type.
- HandleReflection
Holder for reflection information generated from handle.proto
- LoadAudioFilterPluginRequest
Audio Filter Plugin
- LocalDataTrackIsPublishedRequest
Checks if the track is still published.
- LocalDataTrackTryPushRequest
Try pushing a frame to subscribers of the track.
- LocalDataTrackUnpublishRequest
Unpublishes the track.
- LocalTrackMuteRequest
Mute/UnMute a track
- LocalTrackRepublished
Fired when the SDK auto-republishes a local track during a full reconnect. The FfiPublication handle is preserved across the cycle — language bindings should look up the existing publication object by
previous_sid(its old SID), update its TrackPublicationInfo in place withinfo, and rekey it under the new SID. Apps holding a cached reference to the publication continue to see a valid object whose reads/writes hit current state.
- NewAudioResamplerRequest
Create a new AudioResampler
- NewAudioSourceRequest
Create a new AudioSource
- NewAudioStreamRequest
Create a new AudioStream AudioStream is used to receive audio frames from a track
- NewPlatformAudioRequest
Create a new PlatformAudio instance.
This enables the platform ADM for microphone capture and speaker playout. If another PlatformAudio instance exists, this reuses the same underlying ADM.
The returned handle must be kept alive while platform audio is needed. When all handles are released, the ADM is automatically disabled.
- NewVideoSourceRequest
Create a new VideoSource VideoSource is used to send video frame to a track
- NewVideoStreamRequest
Create a new VideoStream VideoStream is used to receive video frames from a track
- OwnedByteStreamReader
A reader for an incoming stream.
- OwnedDataTrackStream
Handle to an active data track subscription.
Dropping the handle will unsubscribe from the track.
- OwnedPlatformAudio
Owned PlatformAudio handle with info.
- OwnedTextStreamReader
A reader for an incoming stream.
- ParticipantPermission
copied from livekit-protocol/protocol/protobufs/livekit_models.proto and removed deprecated fields
- ParticipantReflection
Holder for reflection information generated from participant.proto
- PerformRpcCallback
FFI Callbacks
- PerformRpcRequest
FFI Requests
- PerformRpcResponse
FFI Responses
- PlatformAudioInfo
Information about a PlatformAudio instance.
- PublishDataRequest
Publish data to other participants
- PublishDataTrackRequest
Publish a data track
- PublishSipDtmfRequest
Publish Sip DTMF messages to other participants
- PublishTrackRequest
Publish a track to the room
- PublishTranscriptionRequest
Publish transcription messages to room
- RemixAndResampleRequest
Remix and resample an audio frame
- RemoteDataTrackIsPublishedRequest
Checks if the track is still published.
- RemoteDataTrackPipelineOptions
Track-level options that configure how the incoming-frame pipeline reassembles packets for a remote data track.
- RoomReflection
Holder for reflection information generated from room.proto
- RpcMethodInvocationEvent
FFI Events
- RpcReflection
Holder for reflection information generated from rpc.proto
- RtcStats.Types
Container for nested types declared in the RtcStats message type.
- RtcStats.Types.Track
Deprecated
- SetLocalAttributesRequest
Change the local participant's attributes
- SetLocalMetadataRequest
Change the local participant's metadata
- SetLocalNameRequest
Change the local participant's name
- SetPlayoutDeviceRequest
Set the playout device (speaker/headphones).
Call this before connecting to select which speaker to use for audio output. Use the GUID from AudioDeviceInfo for stable device selection across hot-plug events.
Platform Notes
- Desktop: Works as expected - selects from enumerated devices.
- Mobile (iOS/Android): No-op. Mobile platforms handle audio routing at the system level.
This will succeed but has no effect. For audio routing on mobile:
- iOS: Use AVAudioSession to control speaker/earpiece/Bluetooth routing
- Android: Use AudioManager.setSpeakerphoneOn() to switch outputs
- SetRecordingDeviceRequest
Set the recording device (microphone).
Call this before creating audio tracks to select which microphone to use. Use the GUID from AudioDeviceInfo for stable device selection across hot-plug events.
Platform Notes
- Desktop: Works as expected - selects from enumerated devices.
- Mobile (iOS/Android): No-op. Mobile platforms handle microphone selection at the system level. This will succeed but has no effect. Skip calling on mobile.
- SetRemoteTrackPublicationQualityRequest
For tracks that support simulcasting, adjust subscribed quality.
- SetSubscribedRequest
Change the "desire" to subs2ribe to a track
- StartRecordingRequest
Start recording from the microphone.
Recording is started automatically when PlatformAudio is created. Use this to resume recording after calling StopRecording. This also turns on the system's recording privacy indicator.
- StatsReflection
Holder for reflection information generated from stats.proto
- StopRecordingRequest
Stop recording from the microphone.
Use this to temporarily stop recording without disposing PlatformAudio. This will turn off the system's recording privacy indicator (e.g., on macOS/iOS). Call StartRecording to resume recording.
- StreamError
Error pertaining to a stream.
- StreamSendBytesRequest
Sends bytes over a data stream.
- StreamSendFileRequest
Sends the contents of a file over a data stream.
- StreamSendTextRequest
Sends text over a data stream.
- SubscribeDataTrackRequest
Subscribe to a data track.
- TextStreamInfo.Types
Container for nested types declared in the TextStreamInfo message type.
- TextStreamOpenRequest
Opens an outgoing text stream. Call must be balanced with a TextStreamCloseRequest.
- TextStreamReaderReadAllRequest
Reads an incoming text stream in its entirety.
- TextStreamReaderReadIncrementalRequest
Reads an incoming text stream incrementally.
- TextStreamWriterCloseRequest
Closes a text stream writer.
- TextStreamWriterWriteRequest
Writes text to a text stream writer.
- TrackPublicationReflection
Holder for reflection information generated from track_publication.proto
- TrackReflection
Holder for reflection information generated from track.proto
- TrackSubscribed
Publication isn't needed for subscription events on the FFI The FFI will retrieve the publication using the Track sid
- UnpublishTrackRequest
Unpublish a track from the room
- UpdateRemoteTrackPublicationDimensionRequest
update a remote track publication dimension
- VideoBufferInfo.Types
Container for nested types declared in the VideoBufferInfo message type.
- VideoFrameReflection
Holder for reflection information generated from video_frame.proto
- VideoStreamFromParticipantRequest
Request a video stream from a participant
Enums
- AudioStreamEvent.MessageOneofCase
Enum of possible cases for the "message" oneof.
- ByteStreamOpenCallback.ResultOneofCase
Enum of possible cases for the "result" oneof.
- ByteStreamReaderEvent.DetailOneofCase
Enum of possible cases for the "detail" oneof.
- ByteStreamReaderReadAllCallback.ResultOneofCase
Enum of possible cases for the "result" oneof.
- ByteStreamReaderWriteToFileCallback.ResultOneofCase
Enum of possible cases for the "result" oneof.
- ConnectCallback.MessageOneofCase
Enum of possible cases for the "message" oneof.
- DataPacketReceived.ValueOneofCase
Enum of possible cases for the "value" oneof.
- DataStream.Types.Header.ContentHeaderOneofCase
Enum of possible cases for the "content_header" oneof.
- DataStream.Types.OperationType
enum for operation types (specific to TextHeader)
- DataTrackStreamEvent.DetailOneofCase
Enum of possible cases for the "detail" oneof.
- E2eeRequest.MessageOneofCase
Enum of possible cases for the "message" oneof.
- E2eeResponse.MessageOneofCase
Enum of possible cases for the "message" oneof.
- FfiEvent.MessageOneofCase
Enum of possible cases for the "message" oneof.
- FfiRequest.MessageOneofCase
Enum of possible cases for the "message" oneof.
- FfiResponse.MessageOneofCase
Enum of possible cases for the "message" oneof.
- GetSessionStatsCallback.MessageOneofCase
Enum of possible cases for the "message" oneof.
- NewPlatformAudioResponse.MessageOneofCase
Enum of possible cases for the "message" oneof.
- NewSoxResamplerResponse.MessageOneofCase
Enum of possible cases for the "message" oneof.
- PublishDataTrackCallback.ResultOneofCase
Enum of possible cases for the "result" oneof.
- PublishTrackCallback.MessageOneofCase
Enum of possible cases for the "message" oneof.
- RoomEvent.MessageOneofCase
Enum of possible cases for the "message" oneof.
- RtcStats.StatsOneofCase
Enum of possible cases for the "stats" oneof.
- SendChatMessageCallback.MessageOneofCase
Enum of possible cases for the "message" oneof.
- SimulateScenarioKind
Simulate a reconnection scenario for testing. Mirrors the variants of
livekit::SimulateScenario. The Resume / FullReconnect variants are the relevant ones for verifying that resume preserves publications and full reconnect republishes them exactly once.
- StreamSendBytesCallback.ResultOneofCase
Enum of possible cases for the "result" oneof.
- StreamSendFileCallback.ResultOneofCase
Enum of possible cases for the "result" oneof.
- StreamSendTextCallback.ResultOneofCase
Enum of possible cases for the "result" oneof.
- TextStreamOpenCallback.ResultOneofCase
Enum of possible cases for the "result" oneof.
- TextStreamReaderEvent.DetailOneofCase
Enum of possible cases for the "detail" oneof.
- TextStreamReaderReadAllCallback.ResultOneofCase
Enum of possible cases for the "result" oneof.
- VideoBufferType
Values of this enum must not be changed It is used to serialize a rtc.VideoFrame on Python
- VideoConvertResponse.MessageOneofCase
Enum of possible cases for the "message" oneof.
- VideoQuality
Video quality for simulcasted tracks.
- VideoStreamEvent.MessageOneofCase
Enum of possible cases for the "message" oneof.