syntax = "proto3"; package livekit; option csharp_namespace = "LiveKit.Proto"; import "handle.proto"; // Allocate a new AudioFrameBuffer // This is not necessary required because the data structure is fairly simple // But keep the API consistent with VideoFrame message AllocAudioBufferRequest { uint32 sample_rate = 1; uint32 num_channels = 2; uint32 samples_per_channel = 3; } message AllocAudioBufferResponse { AudioFrameBufferInfo buffer = 1; } // Create a new AudioStream // AudioStream is used to receive audio frames from a track message NewAudioStreamRequest { FfiHandleId track_handle = 1; AudioStreamType type = 2; } message NewAudioStreamResponse { AudioStreamInfo stream = 1; } // Create a new AudioSource message NewAudioSourceRequest { AudioSourceType type = 1; optional AudioSourceOptions options = 2; } message NewAudioSourceResponse { AudioSourceInfo source = 1; } // Push a frame to an AudioSource message CaptureAudioFrameRequest { FfiHandleId source_handle = 1; FfiHandleId buffer_handle = 2; } message CaptureAudioFrameResponse {} // Create a new AudioResampler message NewAudioResamplerRequest {} message NewAudioResamplerResponse { FfiHandleId handle = 1; } // Remix and resample an audio frame message RemixAndResampleRequest { FfiHandleId resampler_handle = 1; FfiHandleId buffer_handle = 2; uint32 num_channels = 3; uint32 sample_rate = 4; } message RemixAndResampleResponse { AudioFrameBufferInfo buffer = 1; } /// /// AudioFrame buffer /// /// message AudioFrameBufferInfo { FfiHandleId handle = 1; uint64 data_ptr = 2; // *const i16 uint32 num_channels = 3; uint32 sample_rate = 4; uint32 samples_per_channel = 5; } /// /// AudioStream /// /// enum AudioStreamType { AUDIO_STREAM_NATIVE = 0; AUDIO_STREAM_HTML = 1; } message AudioStreamInfo { FfiHandleId handle = 1; AudioStreamType type = 2; } message AudioStreamEvent { FfiHandleId handle = 1; oneof message { AudioFrameReceived frame_received = 2; } } message AudioFrameReceived { AudioFrameBufferInfo frame = 1; } /// /// AudioSource /// /// message AudioSourceOptions { bool echo_cancellation = 1; bool noise_suppression = 2; bool auto_gain_control = 3; } enum AudioSourceType { AUDIO_SOURCE_NATIVE = 0; } message AudioSourceInfo { FfiHandleId handle = 1; AudioSourceType type = 2; }