diff --git a/Runtime/Plugins/ffi-android-arm64/liblivekit_ffi.so b/Runtime/Plugins/ffi-android-arm64/liblivekit_ffi.so old mode 100755 new mode 100644 index cef2867c..2bddb7f9 --- a/Runtime/Plugins/ffi-android-arm64/liblivekit_ffi.so +++ b/Runtime/Plugins/ffi-android-arm64/liblivekit_ffi.so @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e447b3f76b78c20f910daa571207ec4ee4b6d45a2c148ab8e8c657e0e54e773b -size 18995600 +oid sha256:33d86561611775e822eab0f761f2fe6842468befe92b56f1b7186ed77d8a393a +size 18759032 diff --git a/Runtime/Plugins/ffi-android-arm64/libwebrtc.jar b/Runtime/Plugins/ffi-android-arm64/libwebrtc.jar index bb1b907d..9d9c8032 100644 --- a/Runtime/Plugins/ffi-android-arm64/libwebrtc.jar +++ b/Runtime/Plugins/ffi-android-arm64/libwebrtc.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa19eb2c8f7330b1e48355bcd1373fc2eebd9e28b70d329b817d86ff0fdb0466 -size 520889 +oid sha256:50d70e08969c3697f3551e9eac9293c1e50656367250ffcaf282ff61a1fc8dbf +size 520952 diff --git a/Runtime/Plugins/ffi-android-armv7/liblivekit_ffi.so b/Runtime/Plugins/ffi-android-armv7/liblivekit_ffi.so old mode 100755 new mode 100644 index a1af13cc..9383c53a --- a/Runtime/Plugins/ffi-android-armv7/liblivekit_ffi.so +++ b/Runtime/Plugins/ffi-android-armv7/liblivekit_ffi.so @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec3ff8fcf2f3e2e62040079bce27e23b8272b062a57cb428bdd0726d6dcb70bf -size 10864732 +oid sha256:d3f86f5a0df46b8de65d4a199b5b7a891a5a6ca8a509b1e88c3cd14391ebf261 +size 10712716 diff --git a/Runtime/Plugins/ffi-android-armv7/libwebrtc.jar b/Runtime/Plugins/ffi-android-armv7/libwebrtc.jar index 12a9527e..cf5d8f02 100644 --- a/Runtime/Plugins/ffi-android-armv7/libwebrtc.jar +++ b/Runtime/Plugins/ffi-android-armv7/libwebrtc.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6daf8d325ee9f13067c996889bc2306b0e90a1ad6f428972c1ee3f9139bef08c -size 520889 +oid sha256:2ac3b51d1a0ec1c59b38af901643fecb021d3b27240c29d2e6bd1cb995599c87 +size 520952 diff --git a/Runtime/Plugins/ffi-android-x86_64/liblivekit_ffi.so b/Runtime/Plugins/ffi-android-x86_64/liblivekit_ffi.so old mode 100755 new mode 100644 index 834ee00c..e67feb17 --- a/Runtime/Plugins/ffi-android-x86_64/liblivekit_ffi.so +++ b/Runtime/Plugins/ffi-android-x86_64/liblivekit_ffi.so @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f7c2b582c004bddf9b3efb867e43d54f33e80fccb3020cdb03ea8e071dbb02ab -size 23649944 +oid sha256:0ed0141f8694264f7e6f0e901ab16ad2a8ce63ee2473876ab379138f1dd1fb1e +size 23363968 diff --git a/Runtime/Plugins/ffi-android-x86_64/libwebrtc.jar b/Runtime/Plugins/ffi-android-x86_64/libwebrtc.jar index 8040f003..4c52ef27 100644 --- a/Runtime/Plugins/ffi-android-x86_64/libwebrtc.jar +++ b/Runtime/Plugins/ffi-android-x86_64/libwebrtc.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fff0ffb1b8bbc4eda66bac042a2d68a91eeae974b33b1200162bb513b2bbe01 -size 520889 +oid sha256:5ed2faf7da0884921345b43376deb647c311181eda9e8090367f04533e697736 +size 520952 diff --git a/Runtime/Plugins/ffi-ios-arm64/liblivekit_ffi.a b/Runtime/Plugins/ffi-ios-arm64/liblivekit_ffi.a index 233ba035..0292a63d 100644 --- a/Runtime/Plugins/ffi-ios-arm64/liblivekit_ffi.a +++ b/Runtime/Plugins/ffi-ios-arm64/liblivekit_ffi.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4d17138b8362b19de0710e277fef9a294abd534bb5da570c6c22d69969fd66b -size 484185448 +oid sha256:dbc9f4ec0732d7e3e35df0d55f17ece25ff111c424ada202573193ef9b0c160a +size 484209992 diff --git a/Runtime/Plugins/ffi-ios-sim-arm64/liblivekit_ffi.a b/Runtime/Plugins/ffi-ios-sim-arm64/liblivekit_ffi.a index 05597935..dd467ac0 100644 --- a/Runtime/Plugins/ffi-ios-sim-arm64/liblivekit_ffi.a +++ b/Runtime/Plugins/ffi-ios-sim-arm64/liblivekit_ffi.a @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:802199dcb4f4fa1d3f98841291e52be8977a8bb0a17ab0b551f8bfecbecf88d6 -size 486088328 +oid sha256:ebeee188f24715d9bc2d47208c6d7e1fca0afdd00da1ed108e9606d92492c42b +size 485868880 diff --git a/Runtime/Plugins/ffi-linux-x86_64/liblivekit_ffi.so b/Runtime/Plugins/ffi-linux-x86_64/liblivekit_ffi.so index b730aed3..4f0626d3 100644 --- a/Runtime/Plugins/ffi-linux-x86_64/liblivekit_ffi.so +++ b/Runtime/Plugins/ffi-linux-x86_64/liblivekit_ffi.so @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:604180fcf712364211f4b920ab3178e2ce1db8712e8dd67ccd7d8a072e396c0a -size 27183944 +oid sha256:3c3665a403837cc82880dc66438bf0f8d088d017da6123fec29ae3b1c4037871 +size 26936312 diff --git a/Runtime/Plugins/ffi-macos-arm64/liblivekit_ffi.dylib b/Runtime/Plugins/ffi-macos-arm64/liblivekit_ffi.dylib index 9854d51e..2f632911 100644 --- a/Runtime/Plugins/ffi-macos-arm64/liblivekit_ffi.dylib +++ b/Runtime/Plugins/ffi-macos-arm64/liblivekit_ffi.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f27cca65792654cc064865b48893195435908595dccb5560f7f931f3378fe36 -size 17597104 +oid sha256:65456565ea486fd5df4e4e332a5d3b68c86b859c7b62d026653fa4fdb539879c +size 17413360 diff --git a/Runtime/Plugins/ffi-macos-x86_64/liblivekit_ffi.dylib b/Runtime/Plugins/ffi-macos-x86_64/liblivekit_ffi.dylib index c940ea87..782b4bde 100644 --- a/Runtime/Plugins/ffi-macos-x86_64/liblivekit_ffi.dylib +++ b/Runtime/Plugins/ffi-macos-x86_64/liblivekit_ffi.dylib @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:460a9396e48773bece898160629dc636f5bec7f1869b7a8c89a42d3e37deccc4 -size 22396236 +oid sha256:3f7162abca7cf63ce1a9be76f60f99962ab9eaf5aeda252f99e5522155a77e64 +size 22185940 diff --git a/Runtime/Plugins/ffi-windows-arm64/livekit_ffi.dll b/Runtime/Plugins/ffi-windows-arm64/livekit_ffi.dll index 465074fb..9df75a98 100644 --- a/Runtime/Plugins/ffi-windows-arm64/livekit_ffi.dll +++ b/Runtime/Plugins/ffi-windows-arm64/livekit_ffi.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c8f32659987bbd8ddb877f6068dddc572bc3ea650dc4e8bfb976c2532c2fd17a -size 17870336 +oid sha256:460009ecc40d9aa77114176d7ad0d9274817cb118fd0277d96cd123b462c0956 +size 17930240 diff --git a/Runtime/Plugins/ffi-windows-x86_64/livekit_ffi.dll b/Runtime/Plugins/ffi-windows-x86_64/livekit_ffi.dll index ae72d4dc..6e1e2c04 100644 --- a/Runtime/Plugins/ffi-windows-x86_64/livekit_ffi.dll +++ b/Runtime/Plugins/ffi-windows-x86_64/livekit_ffi.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e7090a2d227495fd24931bf86d379a9ce87dd75310ed0c3c15a90f9551614a97 -size 24420352 +oid sha256:94a8498b2015ec67f8ae5d4a22487844a60d28e0e44203d8cc45aa5d3a2052a3 +size 24229888 diff --git a/Runtime/Plugins/iOS.meta b/Runtime/Plugins/iOS.meta new file mode 100644 index 00000000..bff0c975 --- /dev/null +++ b/Runtime/Plugins/iOS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f9dc9cc15b6914ff0bc3ccd2a0096200 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/iOS/LiveKitAudioSession.mm b/Runtime/Plugins/iOS/LiveKitAudioSession.mm new file mode 100644 index 00000000..e6c2b7b2 --- /dev/null +++ b/Runtime/Plugins/iOS/LiveKitAudioSession.mm @@ -0,0 +1,70 @@ +/* + * Copyright 2024 LiveKit, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +extern "C" { + +/// Configures the iOS audio session for VoIP/WebRTC use. +/// This sets AVAudioSessionCategoryPlayAndRecord with VoiceChat mode, +/// which enables the VPIO (Voice Processing IO) AudioUnit for: +/// - Hardware echo cancellation (AEC) +/// - Automatic gain control (AGC) +/// - Noise suppression (NS) +/// +/// Call this before creating PlatformAudio to ensure WebRTC can +/// properly initialize the microphone and speaker. +void LiveKit_ConfigureAudioSessionForVoIP() { + AVAudioSession* session = [AVAudioSession sharedInstance]; + NSError* error = nil; + + // Configure for VoIP with echo cancellation + BOOL success = [session setCategory:AVAudioSessionCategoryPlayAndRecord + mode:AVAudioSessionModeVoiceChat + options:AVAudioSessionCategoryOptionDefaultToSpeaker | + AVAudioSessionCategoryOptionAllowBluetooth | + AVAudioSessionCategoryOptionAllowBluetoothA2DP + error:&error]; + + if (!success || error) { + NSLog(@"LiveKit: Failed to configure VoIP audio session: %@", error.localizedDescription); + return; + } + + // Activate the audio session + success = [session setActive:YES error:&error]; + if (!success || error) { + NSLog(@"LiveKit: Failed to activate audio session: %@", error.localizedDescription); + return; + } + + NSLog(@"LiveKit: Audio session configured for VoIP (PlayAndRecord + VoiceChat mode)"); +} + +/// Restores the audio session to the default ambient category. +/// Call this when PlatformAudio is disposed if you want to restore +/// the original audio behavior. +void LiveKit_RestoreDefaultAudioSession() { + AVAudioSession* session = [AVAudioSession sharedInstance]; + NSError* error = nil; + + [session setCategory:AVAudioSessionCategoryAmbient error:&error]; + if (error) { + NSLog(@"LiveKit: Failed to restore default audio session: %@", error.localizedDescription); + } +} + +} diff --git a/Runtime/Plugins/iOS/LiveKitAudioSession.mm.meta b/Runtime/Plugins/iOS/LiveKitAudioSession.mm.meta new file mode 100644 index 00000000..8a957390 --- /dev/null +++ b/Runtime/Plugins/iOS/LiveKitAudioSession.mm.meta @@ -0,0 +1,42 @@ +fileFormatVersion: 2 +guid: 27d51b1df7f4b469a8a9c97f2349face +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + VisionOS: VisionOS + second: + enabled: 1 + settings: {} + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Plugins/iOS/liblivekit_ffi.a b/Runtime/Plugins/iOS/liblivekit_ffi.a new file mode 100644 index 00000000..f6e59d9e --- /dev/null +++ b/Runtime/Plugins/iOS/liblivekit_ffi.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07f507aab5a0a241d674b81460dee4a2d99b0996debb3d07a92bf41f63be783d +size 564011360 diff --git a/Runtime/Plugins/iOS/liblivekit_ffi.a.meta b/Runtime/Plugins/iOS/liblivekit_ffi.a.meta new file mode 100644 index 00000000..3534c748 --- /dev/null +++ b/Runtime/Plugins/iOS/liblivekit_ffi.a.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: 96afae52e55d443c796a803ca8331e93 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/DataTrack.cs b/Runtime/Scripts/DataTrack.cs index 7854f2a3..97ded28b 100644 --- a/Runtime/Scripts/DataTrack.cs +++ b/Runtime/Scripts/DataTrack.cs @@ -390,8 +390,8 @@ private void OnSubscriptionEvent(DataTrackStreamEvent callback) break; case DataTrackStreamEvent.DetailOneofCase.Eos: SubscribeDataTrackError error = null; - if (callback.Eos.HasError) - error = new SubscribeDataTrackError(callback.Eos.Error); + if (callback.Eos.Error != null) + error = new SubscribeDataTrackError(callback.Eos.Error.Message); IsEos = true; _currentInstruction?.SetEos(error); Cleanup(); diff --git a/Runtime/Scripts/Internal/FFIClients/FfiRequestExtensions.cs b/Runtime/Scripts/Internal/FFIClients/FfiRequestExtensions.cs index 93caf2db..89b23c11 100644 --- a/Runtime/Scripts/Internal/FFIClients/FfiRequestExtensions.cs +++ b/Runtime/Scripts/Internal/FFIClients/FfiRequestExtensions.cs @@ -149,6 +149,19 @@ public static void Inject(this FfiRequest ffiRequest, T request) case RemixAndResampleRequest remixAndResampleRequest: ffiRequest.RemixAndResample = remixAndResampleRequest; break; + // PlatformAudio + case NewPlatformAudioRequest newPlatformAudioRequest: + ffiRequest.NewPlatformAudio = newPlatformAudioRequest; + break; + case GetAudioDevicesRequest getAudioDevicesRequest: + ffiRequest.GetAudioDevices = getAudioDevicesRequest; + break; + case SetRecordingDeviceRequest setRecordingDeviceRequest: + ffiRequest.SetRecordingDevice = setRecordingDeviceRequest; + break; + case SetPlayoutDeviceRequest setPlayoutDeviceRequest: + ffiRequest.SetPlayoutDevice = setPlayoutDeviceRequest; + break; case LocalTrackMuteRequest localTrackMuteRequest: ffiRequest.LocalTrackMute = localTrackMuteRequest; break; diff --git a/Runtime/Scripts/PlatformAudio.cs b/Runtime/Scripts/PlatformAudio.cs new file mode 100644 index 00000000..326a5405 --- /dev/null +++ b/Runtime/Scripts/PlatformAudio.cs @@ -0,0 +1,371 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using LiveKit.Proto; +using LiveKit.Internal; +using LiveKit.Internal.FFIClients.Requests; + +namespace LiveKit +{ +#if UNITY_IOS && !UNITY_EDITOR + internal static class IOSAudioSessionHelper + { + /// + /// Configures the iOS audio session for VoIP/WebRTC. + /// Must be called before creating PlatformAudio. + /// + [DllImport("__Internal")] + internal static extern void LiveKit_ConfigureAudioSessionForVoIP(); + + /// + /// Restores the iOS audio session to ambient mode. + /// + [DllImport("__Internal")] + internal static extern void LiveKit_RestoreDefaultAudioSession(); + } +#endif + + /// + /// Information about an audio device (microphone or speaker). + /// + public struct AudioDevice + { + /// Device index (0-based). Note: indices can change when devices are added/removed. + public uint Index; + /// Device name as reported by the operating system. + public string Name; + /// + /// Platform-specific unique device identifier (GUID). + /// This is stable across device additions/removals and should be preferred + /// over index for device selection. + /// + public string Guid; + } + + /// + /// Platform audio device management using WebRTC's Audio Device Module (ADM). + /// + /// PlatformAudio provides access to the platform's audio devices (microphones and + /// speakers) and enables automatic audio capture and playback through WebRTC's ADM. + /// + /// Key features: + /// - Echo cancellation (AEC) + /// - Automatic gain control (AGC) + /// - Noise suppression (NS) + /// - Automatic speaker playout for remote audio + /// + /// Usage: + /// 1. Create a PlatformAudio instance (enables ADM) + /// 2. Optionally enumerate and select devices + /// 3. Create audio tracks using PlatformAudioSource + /// 4. Remote audio automatically plays through speakers + /// + /// + /// + /// // Create PlatformAudio (enables ADM) + /// var platformAudio = new PlatformAudio(); + /// + /// // Enumerate devices + /// var (recording, playout) = platformAudio.GetDevices(); + /// foreach (var device in recording) + /// Debug.Log($"Mic {device.Index}: {device.Name}"); + /// + /// // Select devices + /// platformAudio.SetRecordingDevice(0); + /// platformAudio.SetPlayoutDevice(0); + /// + /// // Create audio source and track + /// var source = new PlatformAudioSource(platformAudio); + /// var track = LocalAudioTrack.CreateAudioTrack("microphone", source, room); + /// + /// // Publish track + /// await room.LocalParticipant.PublishTrack(track, options); + /// + /// // Dispose when done + /// platformAudio.Dispose(); + /// + /// + public sealed class PlatformAudio : IDisposable + { + internal readonly FfiHandle Handle; + private readonly PlatformAudioInfo _info; + private bool _disposed = false; + + /// + /// Number of available recording (microphone) devices. + /// + public int RecordingDeviceCount => _info.RecordingDeviceCount; + + /// + /// Number of available playout (speaker) devices. + /// + public int PlayoutDeviceCount => _info.PlayoutDeviceCount; + + /// + /// Creates a new PlatformAudio instance, enabling the platform ADM. + /// + /// This must be called before creating any PlatformAudioSource or connecting + /// to a room if you want automatic speaker playout for remote audio. + /// + /// On iOS, this automatically configures the audio session for VoIP mode + /// (PlayAndRecord category with VoiceChat mode) to enable hardware echo + /// cancellation and microphone input. + /// + /// + /// Thrown if the platform ADM could not be initialized (e.g., no audio devices, + /// missing permissions). + /// + public PlatformAudio() + { +#if UNITY_IOS && !UNITY_EDITOR + // Configure iOS audio session for VoIP before initializing WebRTC ADM. + // This sets PlayAndRecord category with VoiceChat mode for hardware AEC. + IOSAudioSessionHelper.LiveKit_ConfigureAudioSessionForVoIP(); +#endif + + using var request = FFIBridge.Instance.NewRequest(); + using var response = request.Send(); + FfiResponse res = response; + + if (res.NewPlatformAudio.MessageCase == NewPlatformAudioResponse.MessageOneofCase.Error) + throw new InvalidOperationException($"Failed to create PlatformAudio: {res.NewPlatformAudio.Error}"); + + var platformAudio = res.NewPlatformAudio.PlatformAudio; + Handle = FfiHandle.FromOwnedHandle(platformAudio.Handle); + _info = platformAudio.Info; + + Utils.Debug($"PlatformAudio created: {RecordingDeviceCount} recording devices, {PlayoutDeviceCount} playout devices"); + } + + /// + /// Gets the lists of available recording and playout devices. + /// + /// + /// A tuple containing: + /// - Recording: List of available microphones + /// - Playout: List of available speakers/headphones + /// + /// + /// Thrown if device enumeration failed. + /// + public (List Recording, List Playout) GetDevices() + { + using var request = FFIBridge.Instance.NewRequest(); + request.request.PlatformAudioHandle = (ulong)Handle.DangerousGetHandle(); + + using var response = request.Send(); + FfiResponse res = response; + + if (res.GetAudioDevices.HasError && !string.IsNullOrEmpty(res.GetAudioDevices.Error)) + throw new InvalidOperationException($"Failed to get audio devices: {res.GetAudioDevices.Error}"); + + var recording = new List(); + foreach (var device in res.GetAudioDevices.RecordingDevices) + { + recording.Add(new AudioDevice { + Index = device.Index, + Name = device.Name, + Guid = device.HasGuid ? device.Guid : null + }); + } + + var playout = new List(); + foreach (var device in res.GetAudioDevices.PlayoutDevices) + { + playout.Add(new AudioDevice { + Index = device.Index, + Name = device.Name, + Guid = device.HasGuid ? device.Guid : null + }); + } + + return (recording, playout); + } + + /// + /// Sets the recording device (microphone) by index. + /// + /// Call this before creating audio tracks to select which microphone to use. + /// Device indices are 0-based and must be less than RecordingDeviceCount. + /// + /// Note: Prefer SetRecordingDevice(string deviceId) for robust device selection across hot-plug events. + /// + /// Device index from GetDevices().Recording + /// + /// Thrown if the device index is invalid or the operation failed. + /// + public void SetRecordingDevice(uint index) + { + // Look up the device GUID by index + var (recording, _) = GetDevices(); + if (index >= recording.Count) + throw new InvalidOperationException($"Recording device index {index} out of range (max: {recording.Count - 1})"); + + var deviceId = recording[(int)index].Guid; + if (string.IsNullOrEmpty(deviceId)) + throw new InvalidOperationException($"Recording device at index {index} has no GUID"); + + SetRecordingDevice(deviceId); + Utils.Debug($"PlatformAudio: set recording device to index {index} (GUID: {deviceId})"); + } + + /// + /// Sets the recording device (microphone) by device ID (GUID). + /// + /// This is the preferred method for device selection as device IDs are stable + /// across device hot-plug events, unlike indices which can change. + /// + /// Device ID/GUID from GetDevices().Recording[i].Guid + /// + /// Thrown if the device is not found or the operation failed. + /// + public void SetRecordingDevice(string deviceId) + { + using var request = FFIBridge.Instance.NewRequest(); + request.request.PlatformAudioHandle = (ulong)Handle.DangerousGetHandle(); + request.request.DeviceId = deviceId; + + using var response = request.Send(); + FfiResponse res = response; + + if (res.SetRecordingDevice.HasError && !string.IsNullOrEmpty(res.SetRecordingDevice.Error)) + throw new InvalidOperationException($"Failed to set recording device: {res.SetRecordingDevice.Error}"); + + Utils.Debug($"PlatformAudio: set recording device to {deviceId}"); + } + + /// + /// Sets the recording device (microphone) by GUID. + /// + /// Device GUID from GetDevices().Recording[i].Guid + /// + /// Thrown if the device is not found or the operation failed. + /// + [Obsolete("Use SetRecordingDevice(string deviceId) instead")] + public void SetRecordingDeviceByGuid(string guid) => SetRecordingDevice(guid); + + /// + /// Sets the playout device (speaker/headphones) by index. + /// + /// Call this before connecting to select which speaker to use for remote audio. + /// Device indices are 0-based and must be less than PlayoutDeviceCount. + /// + /// Note: Prefer SetPlayoutDevice(string deviceId) for robust device selection across hot-plug events. + /// + /// Device index from GetDevices().Playout + /// + /// Thrown if the device index is invalid or the operation failed. + /// + public void SetPlayoutDevice(uint index) + { + // Look up the device GUID by index + var (_, playout) = GetDevices(); + if (index >= playout.Count) + throw new InvalidOperationException($"Playout device index {index} out of range (max: {playout.Count - 1})"); + + var deviceId = playout[(int)index].Guid; + if (string.IsNullOrEmpty(deviceId)) + throw new InvalidOperationException($"Playout device at index {index} has no GUID"); + + SetPlayoutDevice(deviceId); + Utils.Debug($"PlatformAudio: set playout device to index {index} (GUID: {deviceId})"); + } + + /// + /// Sets the playout device (speaker/headphones) by device ID (GUID). + /// + /// This is the preferred method for device selection as device IDs are stable + /// across device hot-plug events, unlike indices which can change. + /// + /// Device ID/GUID from GetDevices().Playout[i].Guid + /// + /// Thrown if the device is not found or the operation failed. + /// + public void SetPlayoutDevice(string deviceId) + { + using var request = FFIBridge.Instance.NewRequest(); + request.request.PlatformAudioHandle = (ulong)Handle.DangerousGetHandle(); + request.request.DeviceId = deviceId; + + using var response = request.Send(); + FfiResponse res = response; + + if (res.SetPlayoutDevice.HasError && !string.IsNullOrEmpty(res.SetPlayoutDevice.Error)) + throw new InvalidOperationException($"Failed to set playout device: {res.SetPlayoutDevice.Error}"); + + Utils.Debug($"PlatformAudio: set playout device to {deviceId}"); + } + + /// + /// Sets the playout device (speaker/headphones) by GUID. + /// + /// Device GUID from GetDevices().Playout[i].Guid + /// + /// Thrown if the device is not found or the operation failed. + /// + [Obsolete("Use SetPlayoutDevice(string deviceId) instead")] + public void SetPlayoutDeviceByGuid(string guid) => SetPlayoutDevice(guid); + + /// + /// Starts recording from the microphone. + /// + /// Recording is started automatically when PlatformAudio is created. + /// Use this to resume recording after calling StopRecording. + /// This turns on the system's recording privacy indicator (e.g., on macOS/iOS). + /// + /// + /// Thrown if the operation failed. + /// + public void StartRecording() + { + using var request = FFIBridge.Instance.NewRequest(); + request.request.PlatformAudioHandle = (ulong)Handle.DangerousGetHandle(); + + using var response = request.Send(); + FfiResponse res = response; + + if (res.StartRecording.HasError && !string.IsNullOrEmpty(res.StartRecording.Error)) + throw new InvalidOperationException($"Failed to start recording: {res.StartRecording.Error}"); + + Utils.Debug("PlatformAudio: started recording"); + } + + /// + /// Stops recording from the microphone. + /// + /// Use this to temporarily stop recording without disposing PlatformAudio. + /// This turns off the system's recording privacy indicator (e.g., on macOS/iOS). + /// Call StartRecording to resume recording. + /// + /// + /// Thrown if the operation failed. + /// + public void StopRecording() + { + using var request = FFIBridge.Instance.NewRequest(); + request.request.PlatformAudioHandle = (ulong)Handle.DangerousGetHandle(); + + using var response = request.Send(); + FfiResponse res = response; + + if (res.StopRecording.HasError && !string.IsNullOrEmpty(res.StopRecording.Error)) + throw new InvalidOperationException($"Failed to stop recording: {res.StopRecording.Error}"); + + Utils.Debug("PlatformAudio: stopped recording"); + } + + /// + /// Releases the PlatformAudio resources. + /// + /// When disposed, the platform ADM may be disabled if this was the last + /// PlatformAudio instance. + /// + public void Dispose() + { + if (_disposed) return; + Handle.Dispose(); + _disposed = true; + Utils.Debug("PlatformAudio disposed"); + } + } +} diff --git a/Runtime/Scripts/PlatformAudio.cs.meta b/Runtime/Scripts/PlatformAudio.cs.meta new file mode 100644 index 00000000..6fadaf57 --- /dev/null +++ b/Runtime/Scripts/PlatformAudio.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 84e509f50b0674233812310ab67ccd9c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/PlatformAudioSource.cs b/Runtime/Scripts/PlatformAudioSource.cs new file mode 100644 index 00000000..f0be42b5 --- /dev/null +++ b/Runtime/Scripts/PlatformAudioSource.cs @@ -0,0 +1,161 @@ +using System; +using LiveKit.Proto; +using LiveKit.Internal; +using LiveKit.Internal.FFIClients.Requests; + +namespace LiveKit +{ + /// + /// Options for audio processing when creating a PlatformAudioSource. + /// + public struct AudioProcessingOptions + { + /// Enable echo cancellation (AEC). Default: true. + public bool EchoCancellation; + /// Enable noise suppression (NS). Default: true. + public bool NoiseSuppression; + /// Enable automatic gain control (AGC). Default: true. + public bool AutoGainControl; + /// Prefer hardware audio processing (e.g., iOS VPIO). Lower latency. Default: true. + public bool PreferHardware; + + /// + /// Default audio processing options with all processing enabled and hardware preferred. + /// + public static AudioProcessingOptions Default => new AudioProcessingOptions + { + EchoCancellation = true, + NoiseSuppression = true, + AutoGainControl = true, + PreferHardware = true + }; + } + + /// + /// Audio source that captures from the platform microphone via WebRTC's ADM. + /// + /// Unlike MicrophoneSource which uses Unity's Microphone API and manually pushes + /// audio frames, PlatformAudioSource lets WebRTC's ADM handle capture directly. + /// This provides: + /// - Echo cancellation (AEC) that works with speaker playout + /// - Lower latency (single audio path, no Unity intermediate) + /// - Automatic gain control and noise suppression + /// + /// Requires PlatformAudio to be created first to enable the ADM. + /// + /// + /// + /// // Create PlatformAudio first (enables ADM) + /// var platformAudio = new PlatformAudio(); + /// + /// // Create audio source with default options + /// var source = new PlatformAudioSource(platformAudio); + /// + /// // Or with custom options + /// var options = new AudioProcessingOptions { + /// EchoCancellation = true, + /// NoiseSuppression = true, + /// AutoGainControl = true, + /// PreferHardware = true + /// }; + /// var source = new PlatformAudioSource(platformAudio, options); + /// + /// // Create and publish track + /// var track = LocalAudioTrack.CreateAudioTrack("microphone", source, room); + /// await room.LocalParticipant.PublishTrack(track, options); + /// + /// + public sealed class PlatformAudioSource : IRtcSource, IDisposable + { + internal readonly FfiHandle Handle; + private readonly PlatformAudio _platformAudio; + private bool _disposed = false; + private bool _muted = false; + + /// + /// Whether the audio source is muted. + /// + public override bool Muted => _muted; + + /// + /// Creates a new platform audio source with default audio processing options. + /// + /// The source will capture audio from the microphone selected via + /// PlatformAudio.SetRecordingDevice(), or the default device if none selected. + /// + /// + /// The PlatformAudio instance. Must be kept alive while this source is in use. + /// + /// + /// Thrown if platformAudio is null. + /// + public PlatformAudioSource(PlatformAudio platformAudio) + : this(platformAudio, AudioProcessingOptions.Default) + { + } + + /// + /// Creates a new platform audio source with custom audio processing options. + /// + /// The source will capture audio from the microphone selected via + /// PlatformAudio.SetRecordingDevice(), or the default device if none selected. + /// + /// + /// The PlatformAudio instance. Must be kept alive while this source is in use. + /// + /// Audio processing options to configure on the ADM. + /// + /// Thrown if platformAudio is null. + /// + public PlatformAudioSource(PlatformAudio platformAudio, AudioProcessingOptions options) + { + if (platformAudio == null) + throw new ArgumentNullException(nameof(platformAudio)); + + _platformAudio = platformAudio; + + using var request = FFIBridge.Instance.NewRequest(); + var newAudioSource = request.request; + newAudioSource.Type = AudioSourceType.AudioSourcePlatform; + newAudioSource.NumChannels = 2; + newAudioSource.SampleRate = 48000; + + // Pass the platform audio handle so the Rust side can configure audio processing + newAudioSource.PlatformAudioHandle = (ulong)platformAudio.Handle.DangerousGetHandle(); + + // Configure audio processing options + newAudioSource.Options = request.TempResource(); + newAudioSource.Options.EchoCancellation = options.EchoCancellation; + newAudioSource.Options.AutoGainControl = options.AutoGainControl; + newAudioSource.Options.NoiseSuppression = options.NoiseSuppression; + newAudioSource.Options.PreferHardware = options.PreferHardware; + + using var response = request.Send(); + FfiResponse res = response; + + Handle = FfiHandle.FromOwnedHandle(res.NewAudioSource.Source.Handle); + Utils.Debug($"PlatformAudioSource created: handle={Handle.DangerousGetHandle()}, AEC={options.EchoCancellation}, NS={options.NoiseSuppression}, AGC={options.AutoGainControl}, HW={options.PreferHardware}"); + } + + /// + /// Mutes or unmutes the audio source. + /// + /// True to mute, false to unmute. + public override void SetMute(bool muted) + { + _muted = muted; + Utils.Debug($"PlatformAudioSource: muted={muted}"); + } + + /// + /// Releases the audio source resources. + /// + public void Dispose() + { + if (_disposed) return; + Handle.Dispose(); + _disposed = true; + Utils.Debug("PlatformAudioSource disposed"); + } + } +} diff --git a/Runtime/Scripts/PlatformAudioSource.cs.meta b/Runtime/Scripts/PlatformAudioSource.cs.meta new file mode 100644 index 00000000..c05fe981 --- /dev/null +++ b/Runtime/Scripts/PlatformAudioSource.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f15bdf32fdae64d69ba90ab6cabc47d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/Proto/AudioFrame.cs b/Runtime/Scripts/Proto/AudioFrame.cs index f28a9d5a..f9a585b3 100644 --- a/Runtime/Scripts/Proto/AudioFrame.cs +++ b/Runtime/Scripts/Proto/AudioFrame.cs @@ -41,101 +41,126 @@ static AudioFrameReflection() { "b19maWx0ZXJfb3B0aW9ucxgIIAEoCRIVCg1mcmFtZV9zaXplX21zGAkgASgN", "EhkKEXF1ZXVlX3NpemVfZnJhbWVzGAogASgNIlUKIkF1ZGlvU3RyZWFtRnJv", "bVBhcnRpY2lwYW50UmVzcG9uc2USLwoGc3RyZWFtGAEgAigLMh8ubGl2ZWtp", - "dC5wcm90by5Pd25lZEF1ZGlvU3RyZWFtIrsBChVOZXdBdWRpb1NvdXJjZVJl", + "dC5wcm90by5Pd25lZEF1ZGlvU3RyZWFtItoBChVOZXdBdWRpb1NvdXJjZVJl", "cXVlc3QSLAoEdHlwZRgBIAIoDjIeLmxpdmVraXQucHJvdG8uQXVkaW9Tb3Vy", "Y2VUeXBlEjIKB29wdGlvbnMYAiABKAsyIS5saXZla2l0LnByb3RvLkF1ZGlv", "U291cmNlT3B0aW9ucxITCgtzYW1wbGVfcmF0ZRgDIAIoDRIUCgxudW1fY2hh", - "bm5lbHMYBCACKA0SFQoNcXVldWVfc2l6ZV9tcxgFIAEoDSJJChZOZXdBdWRp", - "b1NvdXJjZVJlc3BvbnNlEi8KBnNvdXJjZRgBIAIoCzIfLmxpdmVraXQucHJv", - "dG8uT3duZWRBdWRpb1NvdXJjZSKAAQoYQ2FwdHVyZUF1ZGlvRnJhbWVSZXF1", - "ZXN0EhUKDXNvdXJjZV9oYW5kbGUYASACKAQSMwoGYnVmZmVyGAIgAigLMiMu", - "bGl2ZWtpdC5wcm90by5BdWRpb0ZyYW1lQnVmZmVySW5mbxIYChByZXF1ZXN0", - "X2FzeW5jX2lkGAMgASgEIi0KGUNhcHR1cmVBdWRpb0ZyYW1lUmVzcG9uc2US", - "EAoIYXN5bmNfaWQYASACKAQiPAoZQ2FwdHVyZUF1ZGlvRnJhbWVDYWxsYmFj", - "axIQCghhc3luY19pZBgBIAIoBBINCgVlcnJvchgCIAEoCSIwChdDbGVhckF1", - "ZGlvQnVmZmVyUmVxdWVzdBIVCg1zb3VyY2VfaGFuZGxlGAEgAigEIhoKGENs", - "ZWFyQXVkaW9CdWZmZXJSZXNwb25zZSIaChhOZXdBdWRpb1Jlc2FtcGxlclJl", - "cXVlc3QiUgoZTmV3QXVkaW9SZXNhbXBsZXJSZXNwb25zZRI1CglyZXNhbXBs", - "ZXIYASACKAsyIi5saXZla2l0LnByb3RvLk93bmVkQXVkaW9SZXNhbXBsZXIi", - "kwEKF1JlbWl4QW5kUmVzYW1wbGVSZXF1ZXN0EhgKEHJlc2FtcGxlcl9oYW5k", - "bGUYASACKAQSMwoGYnVmZmVyGAIgAigLMiMubGl2ZWtpdC5wcm90by5BdWRp", - "b0ZyYW1lQnVmZmVySW5mbxIUCgxudW1fY2hhbm5lbHMYAyACKA0SEwoLc2Ft", - "cGxlX3JhdGUYBCACKA0iUAoYUmVtaXhBbmRSZXNhbXBsZVJlc3BvbnNlEjQK", - "BmJ1ZmZlchgBIAIoCzIkLmxpdmVraXQucHJvdG8uT3duZWRBdWRpb0ZyYW1l", - "QnVmZmVyIpUBCg1OZXdBcG1SZXF1ZXN0Eh4KFmVjaG9fY2FuY2VsbGVyX2Vu", - "YWJsZWQYASACKAgSHwoXZ2Fpbl9jb250cm9sbGVyX2VuYWJsZWQYAiACKAgS", - "IAoYaGlnaF9wYXNzX2ZpbHRlcl9lbmFibGVkGAMgAigIEiEKGW5vaXNlX3N1", - "cHByZXNzaW9uX2VuYWJsZWQYBCACKAgiNgoOTmV3QXBtUmVzcG9uc2USJAoD", - "YXBtGAEgAigLMhcubGl2ZWtpdC5wcm90by5Pd25lZEFwbSJ4ChdBcG1Qcm9j", - "ZXNzU3RyZWFtUmVxdWVzdBISCgphcG1faGFuZGxlGAEgAigEEhAKCGRhdGFf", - "cHRyGAIgAigEEgwKBHNpemUYAyACKA0SEwoLc2FtcGxlX3JhdGUYBCACKA0S", - "FAoMbnVtX2NoYW5uZWxzGAUgAigNIikKGEFwbVByb2Nlc3NTdHJlYW1SZXNw", - "b25zZRINCgVlcnJvchgBIAEoCSJ/Ch5BcG1Qcm9jZXNzUmV2ZXJzZVN0cmVh", - "bVJlcXVlc3QSEgoKYXBtX2hhbmRsZRgBIAIoBBIQCghkYXRhX3B0chgCIAIo", - "BBIMCgRzaXplGAMgAigNEhMKC3NhbXBsZV9yYXRlGAQgAigNEhQKDG51bV9j", - "aGFubmVscxgFIAIoDSIwCh9BcG1Qcm9jZXNzUmV2ZXJzZVN0cmVhbVJlc3Bv", - "bnNlEg0KBWVycm9yGAEgASgJIkAKGEFwbVNldFN0cmVhbURlbGF5UmVxdWVz", - "dBISCgphcG1faGFuZGxlGAEgAigEEhAKCGRlbGF5X21zGAIgAigFIioKGUFw", - "bVNldFN0cmVhbURlbGF5UmVzcG9uc2USDQoFZXJyb3IYASABKAkinAIKFk5l", - "d1NveFJlc2FtcGxlclJlcXVlc3QSEgoKaW5wdXRfcmF0ZRgBIAIoARITCgtv", - "dXRwdXRfcmF0ZRgCIAIoARIUCgxudW1fY2hhbm5lbHMYAyACKA0SPAoPaW5w", - "dXRfZGF0YV90eXBlGAQgAigOMiMubGl2ZWtpdC5wcm90by5Tb3hSZXNhbXBs", - "ZXJEYXRhVHlwZRI9ChBvdXRwdXRfZGF0YV90eXBlGAUgAigOMiMubGl2ZWtp", - "dC5wcm90by5Tb3hSZXNhbXBsZXJEYXRhVHlwZRI3Cg5xdWFsaXR5X3JlY2lw", - "ZRgGIAIoDjIfLmxpdmVraXQucHJvdG8uU294UXVhbGl0eVJlY2lwZRINCgVm", - "bGFncxgHIAEoDSJsChdOZXdTb3hSZXNhbXBsZXJSZXNwb25zZRI1CglyZXNh", - "bXBsZXIYASABKAsyIC5saXZla2l0LnByb3RvLk93bmVkU294UmVzYW1wbGVy", - "SAASDwoFZXJyb3IYAiABKAlIAEIJCgdtZXNzYWdlIlMKF1B1c2hTb3hSZXNh", - "bXBsZXJSZXF1ZXN0EhgKEHJlc2FtcGxlcl9oYW5kbGUYASACKAQSEAoIZGF0", - "YV9wdHIYAiACKAQSDAoEc2l6ZRgDIAIoDSJLChhQdXNoU294UmVzYW1wbGVy", - "UmVzcG9uc2USEgoKb3V0cHV0X3B0chgBIAIoBBIMCgRzaXplGAIgAigNEg0K", - "BWVycm9yGAMgASgJIjQKGEZsdXNoU294UmVzYW1wbGVyUmVxdWVzdBIYChBy", - "ZXNhbXBsZXJfaGFuZGxlGAEgAigEIkwKGUZsdXNoU294UmVzYW1wbGVyUmVz", - "cG9uc2USEgoKb3V0cHV0X3B0chgBIAIoBBIMCgRzaXplGAIgAigNEg0KBWVy", - "cm9yGAMgASgJInAKFEF1ZGlvRnJhbWVCdWZmZXJJbmZvEhAKCGRhdGFfcHRy", - "GAEgAigEEhQKDG51bV9jaGFubmVscxgCIAIoDRITCgtzYW1wbGVfcmF0ZRgD", - "IAIoDRIbChNzYW1wbGVzX3Blcl9jaGFubmVsGAQgAigNInkKFU93bmVkQXVk", - "aW9GcmFtZUJ1ZmZlchItCgZoYW5kbGUYASACKAsyHS5saXZla2l0LnByb3Rv", - "LkZmaU93bmVkSGFuZGxlEjEKBGluZm8YAiACKAsyIy5saXZla2l0LnByb3Rv", - "LkF1ZGlvRnJhbWVCdWZmZXJJbmZvIj8KD0F1ZGlvU3RyZWFtSW5mbxIsCgR0", - "eXBlGAEgAigOMh4ubGl2ZWtpdC5wcm90by5BdWRpb1N0cmVhbVR5cGUibwoQ", - "T3duZWRBdWRpb1N0cmVhbRItCgZoYW5kbGUYASACKAsyHS5saXZla2l0LnBy", - "b3RvLkZmaU93bmVkSGFuZGxlEiwKBGluZm8YAiACKAsyHi5saXZla2l0LnBy", - "b3RvLkF1ZGlvU3RyZWFtSW5mbyKfAQoQQXVkaW9TdHJlYW1FdmVudBIVCg1z", - "dHJlYW1faGFuZGxlGAEgAigEEjsKDmZyYW1lX3JlY2VpdmVkGAIgASgLMiEu", - "bGl2ZWtpdC5wcm90by5BdWRpb0ZyYW1lUmVjZWl2ZWRIABIsCgNlb3MYAyAB", - "KAsyHS5saXZla2l0LnByb3RvLkF1ZGlvU3RyZWFtRU9TSABCCQoHbWVzc2Fn", - "ZSJJChJBdWRpb0ZyYW1lUmVjZWl2ZWQSMwoFZnJhbWUYASACKAsyJC5saXZl", - "a2l0LnByb3RvLk93bmVkQXVkaW9GcmFtZUJ1ZmZlciIQCg5BdWRpb1N0cmVh", - "bUVPUyJlChJBdWRpb1NvdXJjZU9wdGlvbnMSGQoRZWNob19jYW5jZWxsYXRp", - "b24YASACKAgSGQoRbm9pc2Vfc3VwcHJlc3Npb24YAiACKAgSGQoRYXV0b19n", - "YWluX2NvbnRyb2wYAyACKAgiPwoPQXVkaW9Tb3VyY2VJbmZvEiwKBHR5cGUY", - "AiACKA4yHi5saXZla2l0LnByb3RvLkF1ZGlvU291cmNlVHlwZSJvChBPd25l", - "ZEF1ZGlvU291cmNlEi0KBmhhbmRsZRgBIAIoCzIdLmxpdmVraXQucHJvdG8u", - "RmZpT3duZWRIYW5kbGUSLAoEaW5mbxgCIAIoCzIeLmxpdmVraXQucHJvdG8u", - "QXVkaW9Tb3VyY2VJbmZvIhQKEkF1ZGlvUmVzYW1wbGVySW5mbyJ1ChNPd25l", - "ZEF1ZGlvUmVzYW1wbGVyEi0KBmhhbmRsZRgBIAIoCzIdLmxpdmVraXQucHJv", - "dG8uRmZpT3duZWRIYW5kbGUSLwoEaW5mbxgCIAIoCzIhLmxpdmVraXQucHJv", - "dG8uQXVkaW9SZXNhbXBsZXJJbmZvIjkKCE93bmVkQXBtEi0KBmhhbmRsZRgB", - "IAIoCzIdLmxpdmVraXQucHJvdG8uRmZpT3duZWRIYW5kbGUiEgoQU294UmVz", - "YW1wbGVySW5mbyJxChFPd25lZFNveFJlc2FtcGxlchItCgZoYW5kbGUYASAC", - "KAsyHS5saXZla2l0LnByb3RvLkZmaU93bmVkSGFuZGxlEi0KBGluZm8YAiAC", - "KAsyHy5saXZla2l0LnByb3RvLlNveFJlc2FtcGxlckluZm8iXAocTG9hZEF1", - "ZGlvRmlsdGVyUGx1Z2luUmVxdWVzdBITCgtwbHVnaW5fcGF0aBgBIAIoCRIU", - "CgxkZXBlbmRlbmNpZXMYAiADKAkSEQoJbW9kdWxlX2lkGAMgAigJIi4KHUxv", - "YWRBdWRpb0ZpbHRlclBsdWdpblJlc3BvbnNlEg0KBWVycm9yGAEgASgJKkoK", - "FFNveFJlc2FtcGxlckRhdGFUeXBlEhgKFFNPWFJfREFUQVRZUEVfSU5UMTZJ", - "EAASGAoUU09YUl9EQVRBVFlQRV9JTlQxNlMQASqLAQoQU294UXVhbGl0eVJl", - "Y2lwZRIWChJTT1hSX1FVQUxJVFlfUVVJQ0sQABIUChBTT1hSX1FVQUxJVFlf", - "TE9XEAESFwoTU09YUl9RVUFMSVRZX01FRElVTRACEhUKEVNPWFJfUVVBTElU", - "WV9ISUdIEAMSGQoVU09YUl9RVUFMSVRZX1ZFUllISUdIEAQqlwEKC1NveEZs", - "YWdCaXRzEhYKElNPWFJfUk9MTE9GRl9TTUFMTBAAEhcKE1NPWFJfUk9MTE9G", - "Rl9NRURJVU0QARIVChFTT1hSX1JPTExPRkZfTk9ORRACEhgKFFNPWFJfSElH", - "SF9QUkVDX0NMT0NLEAMSGQoVU09YUl9ET1VCTEVfUFJFQ0lTSU9OEAQSCwoH", - "U09YUl9WUhAFKkEKD0F1ZGlvU3RyZWFtVHlwZRIXChNBVURJT19TVFJFQU1f", - "TkFUSVZFEAASFQoRQVVESU9fU1RSRUFNX0hUTUwQASoqCg9BdWRpb1NvdXJj", - "ZVR5cGUSFwoTQVVESU9fU09VUkNFX05BVElWRRAAQhCqAg1MaXZlS2l0LlBy", - "b3Rv")); + "bm5lbHMYBCACKA0SFQoNcXVldWVfc2l6ZV9tcxgFIAEoDRIdChVwbGF0Zm9y", + "bV9hdWRpb19oYW5kbGUYBiABKAQiSQoWTmV3QXVkaW9Tb3VyY2VSZXNwb25z", + "ZRIvCgZzb3VyY2UYASACKAsyHy5saXZla2l0LnByb3RvLk93bmVkQXVkaW9T", + "b3VyY2UigAEKGENhcHR1cmVBdWRpb0ZyYW1lUmVxdWVzdBIVCg1zb3VyY2Vf", + "aGFuZGxlGAEgAigEEjMKBmJ1ZmZlchgCIAIoCzIjLmxpdmVraXQucHJvdG8u", + "QXVkaW9GcmFtZUJ1ZmZlckluZm8SGAoQcmVxdWVzdF9hc3luY19pZBgDIAEo", + "BCItChlDYXB0dXJlQXVkaW9GcmFtZVJlc3BvbnNlEhAKCGFzeW5jX2lkGAEg", + "AigEIjwKGUNhcHR1cmVBdWRpb0ZyYW1lQ2FsbGJhY2sSEAoIYXN5bmNfaWQY", + "ASACKAQSDQoFZXJyb3IYAiABKAkiMAoXQ2xlYXJBdWRpb0J1ZmZlclJlcXVl", + "c3QSFQoNc291cmNlX2hhbmRsZRgBIAIoBCIaChhDbGVhckF1ZGlvQnVmZmVy", + "UmVzcG9uc2UiGgoYTmV3QXVkaW9SZXNhbXBsZXJSZXF1ZXN0IlIKGU5ld0F1", + "ZGlvUmVzYW1wbGVyUmVzcG9uc2USNQoJcmVzYW1wbGVyGAEgAigLMiIubGl2", + "ZWtpdC5wcm90by5Pd25lZEF1ZGlvUmVzYW1wbGVyIpMBChdSZW1peEFuZFJl", + "c2FtcGxlUmVxdWVzdBIYChByZXNhbXBsZXJfaGFuZGxlGAEgAigEEjMKBmJ1", + "ZmZlchgCIAIoCzIjLmxpdmVraXQucHJvdG8uQXVkaW9GcmFtZUJ1ZmZlcklu", + "Zm8SFAoMbnVtX2NoYW5uZWxzGAMgAigNEhMKC3NhbXBsZV9yYXRlGAQgAigN", + "IlAKGFJlbWl4QW5kUmVzYW1wbGVSZXNwb25zZRI0CgZidWZmZXIYASACKAsy", + "JC5saXZla2l0LnByb3RvLk93bmVkQXVkaW9GcmFtZUJ1ZmZlciKVAQoNTmV3", + "QXBtUmVxdWVzdBIeChZlY2hvX2NhbmNlbGxlcl9lbmFibGVkGAEgAigIEh8K", + "F2dhaW5fY29udHJvbGxlcl9lbmFibGVkGAIgAigIEiAKGGhpZ2hfcGFzc19m", + "aWx0ZXJfZW5hYmxlZBgDIAIoCBIhChlub2lzZV9zdXBwcmVzc2lvbl9lbmFi", + "bGVkGAQgAigIIjYKDk5ld0FwbVJlc3BvbnNlEiQKA2FwbRgBIAIoCzIXLmxp", + "dmVraXQucHJvdG8uT3duZWRBcG0ieAoXQXBtUHJvY2Vzc1N0cmVhbVJlcXVl", + "c3QSEgoKYXBtX2hhbmRsZRgBIAIoBBIQCghkYXRhX3B0chgCIAIoBBIMCgRz", + "aXplGAMgAigNEhMKC3NhbXBsZV9yYXRlGAQgAigNEhQKDG51bV9jaGFubmVs", + "cxgFIAIoDSIpChhBcG1Qcm9jZXNzU3RyZWFtUmVzcG9uc2USDQoFZXJyb3IY", + "ASABKAkifwoeQXBtUHJvY2Vzc1JldmVyc2VTdHJlYW1SZXF1ZXN0EhIKCmFw", + "bV9oYW5kbGUYASACKAQSEAoIZGF0YV9wdHIYAiACKAQSDAoEc2l6ZRgDIAIo", + "DRITCgtzYW1wbGVfcmF0ZRgEIAIoDRIUCgxudW1fY2hhbm5lbHMYBSACKA0i", + "MAofQXBtUHJvY2Vzc1JldmVyc2VTdHJlYW1SZXNwb25zZRINCgVlcnJvchgB", + "IAEoCSJAChhBcG1TZXRTdHJlYW1EZWxheVJlcXVlc3QSEgoKYXBtX2hhbmRs", + "ZRgBIAIoBBIQCghkZWxheV9tcxgCIAIoBSIqChlBcG1TZXRTdHJlYW1EZWxh", + "eVJlc3BvbnNlEg0KBWVycm9yGAEgASgJIpwCChZOZXdTb3hSZXNhbXBsZXJS", + "ZXF1ZXN0EhIKCmlucHV0X3JhdGUYASACKAESEwoLb3V0cHV0X3JhdGUYAiAC", + "KAESFAoMbnVtX2NoYW5uZWxzGAMgAigNEjwKD2lucHV0X2RhdGFfdHlwZRgE", + "IAIoDjIjLmxpdmVraXQucHJvdG8uU294UmVzYW1wbGVyRGF0YVR5cGUSPQoQ", + "b3V0cHV0X2RhdGFfdHlwZRgFIAIoDjIjLmxpdmVraXQucHJvdG8uU294UmVz", + "YW1wbGVyRGF0YVR5cGUSNwoOcXVhbGl0eV9yZWNpcGUYBiACKA4yHy5saXZl", + "a2l0LnByb3RvLlNveFF1YWxpdHlSZWNpcGUSDQoFZmxhZ3MYByABKA0ibAoX", + "TmV3U294UmVzYW1wbGVyUmVzcG9uc2USNQoJcmVzYW1wbGVyGAEgASgLMiAu", + "bGl2ZWtpdC5wcm90by5Pd25lZFNveFJlc2FtcGxlckgAEg8KBWVycm9yGAIg", + "ASgJSABCCQoHbWVzc2FnZSJTChdQdXNoU294UmVzYW1wbGVyUmVxdWVzdBIY", + "ChByZXNhbXBsZXJfaGFuZGxlGAEgAigEEhAKCGRhdGFfcHRyGAIgAigEEgwK", + "BHNpemUYAyACKA0iSwoYUHVzaFNveFJlc2FtcGxlclJlc3BvbnNlEhIKCm91", + "dHB1dF9wdHIYASACKAQSDAoEc2l6ZRgCIAIoDRINCgVlcnJvchgDIAEoCSI0", + "ChhGbHVzaFNveFJlc2FtcGxlclJlcXVlc3QSGAoQcmVzYW1wbGVyX2hhbmRs", + "ZRgBIAIoBCJMChlGbHVzaFNveFJlc2FtcGxlclJlc3BvbnNlEhIKCm91dHB1", + "dF9wdHIYASACKAQSDAoEc2l6ZRgCIAIoDRINCgVlcnJvchgDIAEoCSJwChRB", + "dWRpb0ZyYW1lQnVmZmVySW5mbxIQCghkYXRhX3B0chgBIAIoBBIUCgxudW1f", + "Y2hhbm5lbHMYAiACKA0SEwoLc2FtcGxlX3JhdGUYAyACKA0SGwoTc2FtcGxl", + "c19wZXJfY2hhbm5lbBgEIAIoDSJ5ChVPd25lZEF1ZGlvRnJhbWVCdWZmZXIS", + "LQoGaGFuZGxlGAEgAigLMh0ubGl2ZWtpdC5wcm90by5GZmlPd25lZEhhbmRs", + "ZRIxCgRpbmZvGAIgAigLMiMubGl2ZWtpdC5wcm90by5BdWRpb0ZyYW1lQnVm", + "ZmVySW5mbyI/Cg9BdWRpb1N0cmVhbUluZm8SLAoEdHlwZRgBIAIoDjIeLmxp", + "dmVraXQucHJvdG8uQXVkaW9TdHJlYW1UeXBlIm8KEE93bmVkQXVkaW9TdHJl", + "YW0SLQoGaGFuZGxlGAEgAigLMh0ubGl2ZWtpdC5wcm90by5GZmlPd25lZEhh", + "bmRsZRIsCgRpbmZvGAIgAigLMh4ubGl2ZWtpdC5wcm90by5BdWRpb1N0cmVh", + "bUluZm8inwEKEEF1ZGlvU3RyZWFtRXZlbnQSFQoNc3RyZWFtX2hhbmRsZRgB", + "IAIoBBI7Cg5mcmFtZV9yZWNlaXZlZBgCIAEoCzIhLmxpdmVraXQucHJvdG8u", + "QXVkaW9GcmFtZVJlY2VpdmVkSAASLAoDZW9zGAMgASgLMh0ubGl2ZWtpdC5w", + "cm90by5BdWRpb1N0cmVhbUVPU0gAQgkKB21lc3NhZ2UiSQoSQXVkaW9GcmFt", + "ZVJlY2VpdmVkEjMKBWZyYW1lGAEgAigLMiQubGl2ZWtpdC5wcm90by5Pd25l", + "ZEF1ZGlvRnJhbWVCdWZmZXIiEAoOQXVkaW9TdHJlYW1FT1MifgoSQXVkaW9T", + "b3VyY2VPcHRpb25zEhkKEWVjaG9fY2FuY2VsbGF0aW9uGAEgAigIEhkKEW5v", + "aXNlX3N1cHByZXNzaW9uGAIgAigIEhkKEWF1dG9fZ2Fpbl9jb250cm9sGAMg", + "AigIEhcKD3ByZWZlcl9oYXJkd2FyZRgEIAEoCCI/Cg9BdWRpb1NvdXJjZUlu", + "Zm8SLAoEdHlwZRgCIAIoDjIeLmxpdmVraXQucHJvdG8uQXVkaW9Tb3VyY2VU", + "eXBlIm8KEE93bmVkQXVkaW9Tb3VyY2USLQoGaGFuZGxlGAEgAigLMh0ubGl2", + "ZWtpdC5wcm90by5GZmlPd25lZEhhbmRsZRIsCgRpbmZvGAIgAigLMh4ubGl2", + "ZWtpdC5wcm90by5BdWRpb1NvdXJjZUluZm8iFAoSQXVkaW9SZXNhbXBsZXJJ", + "bmZvInUKE093bmVkQXVkaW9SZXNhbXBsZXISLQoGaGFuZGxlGAEgAigLMh0u", + "bGl2ZWtpdC5wcm90by5GZmlPd25lZEhhbmRsZRIvCgRpbmZvGAIgAigLMiEu", + "bGl2ZWtpdC5wcm90by5BdWRpb1Jlc2FtcGxlckluZm8iOQoIT3duZWRBcG0S", + "LQoGaGFuZGxlGAEgAigLMh0ubGl2ZWtpdC5wcm90by5GZmlPd25lZEhhbmRs", + "ZSISChBTb3hSZXNhbXBsZXJJbmZvInEKEU93bmVkU294UmVzYW1wbGVyEi0K", + "BmhhbmRsZRgBIAIoCzIdLmxpdmVraXQucHJvdG8uRmZpT3duZWRIYW5kbGUS", + "LQoEaW5mbxgCIAIoCzIfLmxpdmVraXQucHJvdG8uU294UmVzYW1wbGVySW5m", + "byJcChxMb2FkQXVkaW9GaWx0ZXJQbHVnaW5SZXF1ZXN0EhMKC3BsdWdpbl9w", + "YXRoGAEgAigJEhQKDGRlcGVuZGVuY2llcxgCIAMoCRIRCgltb2R1bGVfaWQY", + "AyACKAkiLgodTG9hZEF1ZGlvRmlsdGVyUGx1Z2luUmVzcG9uc2USDQoFZXJy", + "b3IYASABKAkiPAoPQXVkaW9EZXZpY2VJbmZvEg0KBWluZGV4GAEgAigNEgwK", + "BG5hbWUYAiACKAkSDAoEZ3VpZBgDIAEoCSJRChFQbGF0Zm9ybUF1ZGlvSW5m", + "bxIeChZyZWNvcmRpbmdfZGV2aWNlX2NvdW50GAEgAigFEhwKFHBsYXlvdXRf", + "ZGV2aWNlX2NvdW50GAIgAigFInMKEk93bmVkUGxhdGZvcm1BdWRpbxItCgZo", + "YW5kbGUYASACKAsyHS5saXZla2l0LnByb3RvLkZmaU93bmVkSGFuZGxlEi4K", + "BGluZm8YAiACKAsyIC5saXZla2l0LnByb3RvLlBsYXRmb3JtQXVkaW9JbmZv", + "IhkKF05ld1BsYXRmb3JtQXVkaW9SZXF1ZXN0InMKGE5ld1BsYXRmb3JtQXVk", + "aW9SZXNwb25zZRI7Cg5wbGF0Zm9ybV9hdWRpbxgBIAEoCzIhLmxpdmVraXQu", + "cHJvdG8uT3duZWRQbGF0Zm9ybUF1ZGlvSAASDwoFZXJyb3IYAiABKAlIAEIJ", + "CgdtZXNzYWdlIjcKFkdldEF1ZGlvRGV2aWNlc1JlcXVlc3QSHQoVcGxhdGZv", + "cm1fYXVkaW9faGFuZGxlGAEgAigEIpwBChdHZXRBdWRpb0RldmljZXNSZXNw", + "b25zZRI3Cg9wbGF5b3V0X2RldmljZXMYASADKAsyHi5saXZla2l0LnByb3Rv", + "LkF1ZGlvRGV2aWNlSW5mbxI5ChFyZWNvcmRpbmdfZGV2aWNlcxgCIAMoCzIe", + "LmxpdmVraXQucHJvdG8uQXVkaW9EZXZpY2VJbmZvEg0KBWVycm9yGAMgASgJ", + "Ik0KGVNldFJlY29yZGluZ0RldmljZVJlcXVlc3QSHQoVcGxhdGZvcm1fYXVk", + "aW9faGFuZGxlGAEgAigEEhEKCWRldmljZV9pZBgCIAIoCSIrChpTZXRSZWNv", + "cmRpbmdEZXZpY2VSZXNwb25zZRINCgVlcnJvchgBIAEoCSJLChdTZXRQbGF5", + "b3V0RGV2aWNlUmVxdWVzdBIdChVwbGF0Zm9ybV9hdWRpb19oYW5kbGUYASAC", + "KAQSEQoJZGV2aWNlX2lkGAIgAigJIikKGFNldFBsYXlvdXREZXZpY2VSZXNw", + "b25zZRINCgVlcnJvchgBIAEoCSI2ChVTdGFydFJlY29yZGluZ1JlcXVlc3QS", + "HQoVcGxhdGZvcm1fYXVkaW9faGFuZGxlGAEgAigEIicKFlN0YXJ0UmVjb3Jk", + "aW5nUmVzcG9uc2USDQoFZXJyb3IYASABKAkiNQoUU3RvcFJlY29yZGluZ1Jl", + "cXVlc3QSHQoVcGxhdGZvcm1fYXVkaW9faGFuZGxlGAEgAigEIiYKFVN0b3BS", + "ZWNvcmRpbmdSZXNwb25zZRINCgVlcnJvchgBIAEoCSpKChRTb3hSZXNhbXBs", + "ZXJEYXRhVHlwZRIYChRTT1hSX0RBVEFUWVBFX0lOVDE2SRAAEhgKFFNPWFJf", + "REFUQVRZUEVfSU5UMTZTEAEqiwEKEFNveFF1YWxpdHlSZWNpcGUSFgoSU09Y", + "Ul9RVUFMSVRZX1FVSUNLEAASFAoQU09YUl9RVUFMSVRZX0xPVxABEhcKE1NP", + "WFJfUVVBTElUWV9NRURJVU0QAhIVChFTT1hSX1FVQUxJVFlfSElHSBADEhkK", + "FVNPWFJfUVVBTElUWV9WRVJZSElHSBAEKpcBCgtTb3hGbGFnQml0cxIWChJT", + "T1hSX1JPTExPRkZfU01BTEwQABIXChNTT1hSX1JPTExPRkZfTUVESVVNEAES", + "FQoRU09YUl9ST0xMT0ZGX05PTkUQAhIYChRTT1hSX0hJR0hfUFJFQ19DTE9D", + "SxADEhkKFVNPWFJfRE9VQkxFX1BSRUNJU0lPThAEEgsKB1NPWFJfVlIQBSpB", + "Cg9BdWRpb1N0cmVhbVR5cGUSFwoTQVVESU9fU1RSRUFNX05BVElWRRAAEhUK", + "EUFVRElPX1NUUkVBTV9IVE1MEAEqRQoPQXVkaW9Tb3VyY2VUeXBlEhcKE0FV", + "RElPX1NPVVJDRV9OQVRJVkUQABIZChVBVURJT19TT1VSQ0VfUExBVEZPUk0Q", + "AUIQqgINTGl2ZUtpdC5Qcm90bw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::LiveKit.Proto.HandleReflection.Descriptor, global::LiveKit.Proto.TrackReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::LiveKit.Proto.SoxResamplerDataType), typeof(global::LiveKit.Proto.SoxQualityRecipe), typeof(global::LiveKit.Proto.SoxFlagBits), typeof(global::LiveKit.Proto.AudioStreamType), typeof(global::LiveKit.Proto.AudioSourceType), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -143,7 +168,7 @@ static AudioFrameReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.NewAudioStreamResponse), global::LiveKit.Proto.NewAudioStreamResponse.Parser, new[]{ "Stream" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.AudioStreamFromParticipantRequest), global::LiveKit.Proto.AudioStreamFromParticipantRequest.Parser, new[]{ "ParticipantHandle", "Type", "TrackSource", "SampleRate", "NumChannels", "AudioFilterModuleId", "AudioFilterOptions", "FrameSizeMs", "QueueSizeFrames" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.AudioStreamFromParticipantResponse), global::LiveKit.Proto.AudioStreamFromParticipantResponse.Parser, new[]{ "Stream" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.NewAudioSourceRequest), global::LiveKit.Proto.NewAudioSourceRequest.Parser, new[]{ "Type", "Options", "SampleRate", "NumChannels", "QueueSizeMs" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.NewAudioSourceRequest), global::LiveKit.Proto.NewAudioSourceRequest.Parser, new[]{ "Type", "Options", "SampleRate", "NumChannels", "QueueSizeMs", "PlatformAudioHandle" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.NewAudioSourceResponse), global::LiveKit.Proto.NewAudioSourceResponse.Parser, new[]{ "Source" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.CaptureAudioFrameRequest), global::LiveKit.Proto.CaptureAudioFrameRequest.Parser, new[]{ "SourceHandle", "Buffer", "RequestAsyncId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.CaptureAudioFrameResponse), global::LiveKit.Proto.CaptureAudioFrameResponse.Parser, new[]{ "AsyncId" }, null, null, null, null), @@ -175,7 +200,7 @@ static AudioFrameReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.AudioStreamEvent), global::LiveKit.Proto.AudioStreamEvent.Parser, new[]{ "StreamHandle", "FrameReceived", "Eos" }, new[]{ "Message" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.AudioFrameReceived), global::LiveKit.Proto.AudioFrameReceived.Parser, new[]{ "Frame" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.AudioStreamEOS), global::LiveKit.Proto.AudioStreamEOS.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.AudioSourceOptions), global::LiveKit.Proto.AudioSourceOptions.Parser, new[]{ "EchoCancellation", "NoiseSuppression", "AutoGainControl" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.AudioSourceOptions), global::LiveKit.Proto.AudioSourceOptions.Parser, new[]{ "EchoCancellation", "NoiseSuppression", "AutoGainControl", "PreferHardware" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.AudioSourceInfo), global::LiveKit.Proto.AudioSourceInfo.Parser, new[]{ "Type" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedAudioSource), global::LiveKit.Proto.OwnedAudioSource.Parser, new[]{ "Handle", "Info" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.AudioResamplerInfo), global::LiveKit.Proto.AudioResamplerInfo.Parser, null, null, null, null, null), @@ -184,7 +209,22 @@ static AudioFrameReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.SoxResamplerInfo), global::LiveKit.Proto.SoxResamplerInfo.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedSoxResampler), global::LiveKit.Proto.OwnedSoxResampler.Parser, new[]{ "Handle", "Info" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LoadAudioFilterPluginRequest), global::LiveKit.Proto.LoadAudioFilterPluginRequest.Parser, new[]{ "PluginPath", "Dependencies", "ModuleId" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LoadAudioFilterPluginResponse), global::LiveKit.Proto.LoadAudioFilterPluginResponse.Parser, new[]{ "Error" }, null, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LoadAudioFilterPluginResponse), global::LiveKit.Proto.LoadAudioFilterPluginResponse.Parser, new[]{ "Error" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.AudioDeviceInfo), global::LiveKit.Proto.AudioDeviceInfo.Parser, new[]{ "Index", "Name", "Guid" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.PlatformAudioInfo), global::LiveKit.Proto.PlatformAudioInfo.Parser, new[]{ "RecordingDeviceCount", "PlayoutDeviceCount" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedPlatformAudio), global::LiveKit.Proto.OwnedPlatformAudio.Parser, new[]{ "Handle", "Info" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.NewPlatformAudioRequest), global::LiveKit.Proto.NewPlatformAudioRequest.Parser, null, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.NewPlatformAudioResponse), global::LiveKit.Proto.NewPlatformAudioResponse.Parser, new[]{ "PlatformAudio", "Error" }, new[]{ "Message" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.GetAudioDevicesRequest), global::LiveKit.Proto.GetAudioDevicesRequest.Parser, new[]{ "PlatformAudioHandle" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.GetAudioDevicesResponse), global::LiveKit.Proto.GetAudioDevicesResponse.Parser, new[]{ "PlayoutDevices", "RecordingDevices", "Error" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.SetRecordingDeviceRequest), global::LiveKit.Proto.SetRecordingDeviceRequest.Parser, new[]{ "PlatformAudioHandle", "DeviceId" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.SetRecordingDeviceResponse), global::LiveKit.Proto.SetRecordingDeviceResponse.Parser, new[]{ "Error" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.SetPlayoutDeviceRequest), global::LiveKit.Proto.SetPlayoutDeviceRequest.Parser, new[]{ "PlatformAudioHandle", "DeviceId" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.SetPlayoutDeviceResponse), global::LiveKit.Proto.SetPlayoutDeviceResponse.Parser, new[]{ "Error" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.StartRecordingRequest), global::LiveKit.Proto.StartRecordingRequest.Parser, new[]{ "PlatformAudioHandle" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.StartRecordingResponse), global::LiveKit.Proto.StartRecordingResponse.Parser, new[]{ "Error" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.StopRecordingRequest), global::LiveKit.Proto.StopRecordingRequest.Parser, new[]{ "PlatformAudioHandle" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.StopRecordingResponse), global::LiveKit.Proto.StopRecordingResponse.Parser, new[]{ "Error" }, null, null, null, null) })); } #endregion @@ -240,7 +280,15 @@ public enum AudioStreamType { } public enum AudioSourceType { + /// + /// Push-based audio source - manually capture frames via CaptureAudioFrameRequest + /// [pbr::OriginalName("AUDIO_SOURCE_NATIVE")] AudioSourceNative = 0, + /// + /// Platform ADM-based audio source - captures from microphone automatically + /// Requires PlatformAudio to be created first to enable ADM recording + /// + [pbr::OriginalName("AUDIO_SOURCE_PLATFORM")] AudioSourcePlatform = 1, } #endregion @@ -1940,6 +1988,7 @@ public NewAudioSourceRequest(NewAudioSourceRequest other) : this() { sampleRate_ = other.sampleRate_; numChannels_ = other.numChannels_; queueSizeMs_ = other.queueSizeMs_; + platformAudioHandle_ = other.platformAudioHandle_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -2069,6 +2118,37 @@ public void ClearQueueSizeMs() { _hasBits0 &= ~8; } + /// Field number for the "platform_audio_handle" field. + public const int PlatformAudioHandleFieldNumber = 6; + private readonly static ulong PlatformAudioHandleDefaultValue = 0UL; + + private ulong platformAudioHandle_; + /// + /// For AudioSourcePlatform: the PlatformAudio handle to configure audio processing on. + /// If provided with options, audio processing will be configured on the PlatformAudio. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong PlatformAudioHandle { + get { if ((_hasBits0 & 16) != 0) { return platformAudioHandle_; } else { return PlatformAudioHandleDefaultValue; } } + set { + _hasBits0 |= 16; + platformAudioHandle_ = value; + } + } + /// Gets whether the "platform_audio_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPlatformAudioHandle { + get { return (_hasBits0 & 16) != 0; } + } + /// Clears the value of the "platform_audio_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPlatformAudioHandle() { + _hasBits0 &= ~16; + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -2089,6 +2169,7 @@ public bool Equals(NewAudioSourceRequest other) { if (SampleRate != other.SampleRate) return false; if (NumChannels != other.NumChannels) return false; if (QueueSizeMs != other.QueueSizeMs) return false; + if (PlatformAudioHandle != other.PlatformAudioHandle) return false; return Equals(_unknownFields, other._unknownFields); } @@ -2101,6 +2182,7 @@ public override int GetHashCode() { if (HasSampleRate) hash ^= SampleRate.GetHashCode(); if (HasNumChannels) hash ^= NumChannels.GetHashCode(); if (HasQueueSizeMs) hash ^= QueueSizeMs.GetHashCode(); + if (HasPlatformAudioHandle) hash ^= PlatformAudioHandle.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -2139,6 +2221,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(40); output.WriteUInt32(QueueSizeMs); } + if (HasPlatformAudioHandle) { + output.WriteRawTag(48); + output.WriteUInt64(PlatformAudioHandle); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -2169,6 +2255,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(40); output.WriteUInt32(QueueSizeMs); } + if (HasPlatformAudioHandle) { + output.WriteRawTag(48); + output.WriteUInt64(PlatformAudioHandle); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -2194,6 +2284,9 @@ public int CalculateSize() { if (HasQueueSizeMs) { size += 1 + pb::CodedOutputStream.ComputeUInt32Size(QueueSizeMs); } + if (HasPlatformAudioHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(PlatformAudioHandle); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -2224,6 +2317,9 @@ public void MergeFrom(NewAudioSourceRequest other) { if (other.HasQueueSizeMs) { QueueSizeMs = other.QueueSizeMs; } + if (other.HasPlatformAudioHandle) { + PlatformAudioHandle = other.PlatformAudioHandle; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -2266,6 +2362,10 @@ public void MergeFrom(pb::CodedInputStream input) { QueueSizeMs = input.ReadUInt32(); break; } + case 48: { + PlatformAudioHandle = input.ReadUInt64(); + break; + } } } #endif @@ -2308,6 +2408,10 @@ public void MergeFrom(pb::CodedInputStream input) { QueueSizeMs = input.ReadUInt32(); break; } + case 48: { + PlatformAudioHandle = input.ReadUInt64(); + break; + } } } } @@ -10842,6 +10946,7 @@ public AudioSourceOptions(AudioSourceOptions other) : this() { echoCancellation_ = other.echoCancellation_; noiseSuppression_ = other.noiseSuppression_; autoGainControl_ = other.autoGainControl_; + preferHardware_ = other.preferHardware_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -10932,6 +11037,37 @@ public void ClearAutoGainControl() { _hasBits0 &= ~4; } + /// Field number for the "prefer_hardware" field. + public const int PreferHardwareFieldNumber = 4; + private readonly static bool PreferHardwareDefaultValue = false; + + private bool preferHardware_; + /// + /// Prefer hardware audio processing (e.g., iOS VPIO). Lower latency. + /// Only applies to AudioSourcePlatform. Default: true. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool PreferHardware { + get { if ((_hasBits0 & 8) != 0) { return preferHardware_; } else { return PreferHardwareDefaultValue; } } + set { + _hasBits0 |= 8; + preferHardware_ = value; + } + } + /// Gets whether the "prefer_hardware" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPreferHardware { + get { return (_hasBits0 & 8) != 0; } + } + /// Clears the value of the "prefer_hardware" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPreferHardware() { + _hasBits0 &= ~8; + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -10950,6 +11086,7 @@ public bool Equals(AudioSourceOptions other) { if (EchoCancellation != other.EchoCancellation) return false; if (NoiseSuppression != other.NoiseSuppression) return false; if (AutoGainControl != other.AutoGainControl) return false; + if (PreferHardware != other.PreferHardware) return false; return Equals(_unknownFields, other._unknownFields); } @@ -10960,6 +11097,7 @@ public override int GetHashCode() { if (HasEchoCancellation) hash ^= EchoCancellation.GetHashCode(); if (HasNoiseSuppression) hash ^= NoiseSuppression.GetHashCode(); if (HasAutoGainControl) hash ^= AutoGainControl.GetHashCode(); + if (HasPreferHardware) hash ^= PreferHardware.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -10990,6 +11128,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(24); output.WriteBool(AutoGainControl); } + if (HasPreferHardware) { + output.WriteRawTag(32); + output.WriteBool(PreferHardware); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -11012,6 +11154,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(24); output.WriteBool(AutoGainControl); } + if (HasPreferHardware) { + output.WriteRawTag(32); + output.WriteBool(PreferHardware); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -11031,6 +11177,9 @@ public int CalculateSize() { if (HasAutoGainControl) { size += 1 + 1; } + if (HasPreferHardware) { + size += 1 + 1; + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -11052,6 +11201,9 @@ public void MergeFrom(AudioSourceOptions other) { if (other.HasAutoGainControl) { AutoGainControl = other.AutoGainControl; } + if (other.HasPreferHardware) { + PreferHardware = other.PreferHardware; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -11083,6 +11235,10 @@ public void MergeFrom(pb::CodedInputStream input) { AutoGainControl = input.ReadBool(); break; } + case 32: { + PreferHardware = input.ReadBool(); + break; + } } } #endif @@ -11114,6 +11270,10 @@ public void MergeFrom(pb::CodedInputStream input) { AutoGainControl = input.ReadBool(); break; } + case 32: { + PreferHardware = input.ReadBool(); + break; + } } } } @@ -13137,6 +13297,3713 @@ public void MergeFrom(pb::CodedInputStream input) { } + /// + /// Information about an audio device. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class AudioDeviceInfo : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AudioDeviceInfo()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[46]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public AudioDeviceInfo() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public AudioDeviceInfo(AudioDeviceInfo other) : this() { + _hasBits0 = other._hasBits0; + index_ = other.index_; + name_ = other.name_; + guid_ = other.guid_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public AudioDeviceInfo Clone() { + return new AudioDeviceInfo(this); + } + + /// Field number for the "index" field. + public const int IndexFieldNumber = 1; + private readonly static uint IndexDefaultValue = 0; + + private uint index_; + /// + /// Device index (0-based). Note: indices can change when devices are added/removed. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Index { + get { if ((_hasBits0 & 1) != 0) { return index_; } else { return IndexDefaultValue; } } + set { + _hasBits0 |= 1; + index_ = value; + } + } + /// Gets whether the "index" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIndex { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "index" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIndex() { + _hasBits0 &= ~1; + } + + /// Field number for the "name" field. + public const int NameFieldNumber = 2; + private readonly static string NameDefaultValue = ""; + + private string name_; + /// + /// Device name as reported by the operating system. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Name { + get { return name_ ?? NameDefaultValue; } + set { + name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "name" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasName { + get { return name_ != null; } + } + /// Clears the value of the "name" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearName() { + name_ = null; + } + + /// Field number for the "guid" field. + public const int GuidFieldNumber = 3; + private readonly static string GuidDefaultValue = ""; + + private string guid_; + /// + /// Platform-specific unique device identifier (GUID). + /// This is stable across device additions/removals and should be preferred + /// over index for device selection. Format varies by platform: + /// - Windows: Device interface path + /// - macOS: AudioObjectID as string + /// - Linux: ALSA/PulseAudio device identifier + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Guid { + get { return guid_ ?? GuidDefaultValue; } + set { + guid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "guid" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGuid { + get { return guid_ != null; } + } + /// Clears the value of the "guid" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGuid() { + guid_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as AudioDeviceInfo); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(AudioDeviceInfo other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Index != other.Index) return false; + if (Name != other.Name) return false; + if (Guid != other.Guid) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasIndex) hash ^= Index.GetHashCode(); + if (HasName) hash ^= Name.GetHashCode(); + if (HasGuid) hash ^= Guid.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasIndex) { + output.WriteRawTag(8); + output.WriteUInt32(Index); + } + if (HasName) { + output.WriteRawTag(18); + output.WriteString(Name); + } + if (HasGuid) { + output.WriteRawTag(26); + output.WriteString(Guid); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasIndex) { + output.WriteRawTag(8); + output.WriteUInt32(Index); + } + if (HasName) { + output.WriteRawTag(18); + output.WriteString(Name); + } + if (HasGuid) { + output.WriteRawTag(26); + output.WriteString(Guid); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasIndex) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Index); + } + if (HasName) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); + } + if (HasGuid) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Guid); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(AudioDeviceInfo other) { + if (other == null) { + return; + } + if (other.HasIndex) { + Index = other.Index; + } + if (other.HasName) { + Name = other.Name; + } + if (other.HasGuid) { + Guid = other.Guid; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Index = input.ReadUInt32(); + break; + } + case 18: { + Name = input.ReadString(); + break; + } + case 26: { + Guid = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Index = input.ReadUInt32(); + break; + } + case 18: { + Name = input.ReadString(); + break; + } + case 26: { + Guid = input.ReadString(); + break; + } + } + } + } + #endif + + } + + /// + /// Information about a PlatformAudio instance. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class PlatformAudioInfo : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PlatformAudioInfo()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[47]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public PlatformAudioInfo() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public PlatformAudioInfo(PlatformAudioInfo other) : this() { + _hasBits0 = other._hasBits0; + recordingDeviceCount_ = other.recordingDeviceCount_; + playoutDeviceCount_ = other.playoutDeviceCount_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public PlatformAudioInfo Clone() { + return new PlatformAudioInfo(this); + } + + /// Field number for the "recording_device_count" field. + public const int RecordingDeviceCountFieldNumber = 1; + private readonly static int RecordingDeviceCountDefaultValue = 0; + + private int recordingDeviceCount_; + /// + /// Number of available recording (microphone) devices. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int RecordingDeviceCount { + get { if ((_hasBits0 & 1) != 0) { return recordingDeviceCount_; } else { return RecordingDeviceCountDefaultValue; } } + set { + _hasBits0 |= 1; + recordingDeviceCount_ = value; + } + } + /// Gets whether the "recording_device_count" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasRecordingDeviceCount { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "recording_device_count" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearRecordingDeviceCount() { + _hasBits0 &= ~1; + } + + /// Field number for the "playout_device_count" field. + public const int PlayoutDeviceCountFieldNumber = 2; + private readonly static int PlayoutDeviceCountDefaultValue = 0; + + private int playoutDeviceCount_; + /// + /// Number of available playout (speaker) devices. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int PlayoutDeviceCount { + get { if ((_hasBits0 & 2) != 0) { return playoutDeviceCount_; } else { return PlayoutDeviceCountDefaultValue; } } + set { + _hasBits0 |= 2; + playoutDeviceCount_ = value; + } + } + /// Gets whether the "playout_device_count" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPlayoutDeviceCount { + get { return (_hasBits0 & 2) != 0; } + } + /// Clears the value of the "playout_device_count" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPlayoutDeviceCount() { + _hasBits0 &= ~2; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as PlatformAudioInfo); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(PlatformAudioInfo other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (RecordingDeviceCount != other.RecordingDeviceCount) return false; + if (PlayoutDeviceCount != other.PlayoutDeviceCount) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasRecordingDeviceCount) hash ^= RecordingDeviceCount.GetHashCode(); + if (HasPlayoutDeviceCount) hash ^= PlayoutDeviceCount.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasRecordingDeviceCount) { + output.WriteRawTag(8); + output.WriteInt32(RecordingDeviceCount); + } + if (HasPlayoutDeviceCount) { + output.WriteRawTag(16); + output.WriteInt32(PlayoutDeviceCount); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasRecordingDeviceCount) { + output.WriteRawTag(8); + output.WriteInt32(RecordingDeviceCount); + } + if (HasPlayoutDeviceCount) { + output.WriteRawTag(16); + output.WriteInt32(PlayoutDeviceCount); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasRecordingDeviceCount) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(RecordingDeviceCount); + } + if (HasPlayoutDeviceCount) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(PlayoutDeviceCount); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(PlatformAudioInfo other) { + if (other == null) { + return; + } + if (other.HasRecordingDeviceCount) { + RecordingDeviceCount = other.RecordingDeviceCount; + } + if (other.HasPlayoutDeviceCount) { + PlayoutDeviceCount = other.PlayoutDeviceCount; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + RecordingDeviceCount = input.ReadInt32(); + break; + } + case 16: { + PlayoutDeviceCount = input.ReadInt32(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + RecordingDeviceCount = input.ReadInt32(); + break; + } + case 16: { + PlayoutDeviceCount = input.ReadInt32(); + break; + } + } + } + } + #endif + + } + + /// + /// Owned PlatformAudio handle with info. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class OwnedPlatformAudio : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OwnedPlatformAudio()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[48]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedPlatformAudio() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedPlatformAudio(OwnedPlatformAudio other) : this() { + handle_ = other.handle_ != null ? other.handle_.Clone() : null; + info_ = other.info_ != null ? other.info_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedPlatformAudio Clone() { + return new OwnedPlatformAudio(this); + } + + /// Field number for the "handle" field. + public const int HandleFieldNumber = 1; + private global::LiveKit.Proto.FfiOwnedHandle handle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.FfiOwnedHandle Handle { + get { return handle_; } + set { + handle_ = value; + } + } + + /// Field number for the "info" field. + public const int InfoFieldNumber = 2; + private global::LiveKit.Proto.PlatformAudioInfo info_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.PlatformAudioInfo Info { + get { return info_; } + set { + info_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as OwnedPlatformAudio); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(OwnedPlatformAudio other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Handle, other.Handle)) return false; + if (!object.Equals(Info, other.Info)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (handle_ != null) hash ^= Handle.GetHashCode(); + if (info_ != null) hash ^= Info.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (handle_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Handle); + } + if (info_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Info); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (handle_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Handle); + } + if (info_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Info); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (handle_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Handle); + } + if (info_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Info); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(OwnedPlatformAudio other) { + if (other == null) { + return; + } + if (other.handle_ != null) { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + Handle.MergeFrom(other.Handle); + } + if (other.info_ != null) { + if (info_ == null) { + Info = new global::LiveKit.Proto.PlatformAudioInfo(); + } + Info.MergeFrom(other.Info); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + input.ReadMessage(Handle); + break; + } + case 18: { + if (info_ == null) { + Info = new global::LiveKit.Proto.PlatformAudioInfo(); + } + input.ReadMessage(Info); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + input.ReadMessage(Handle); + break; + } + case 18: { + if (info_ == null) { + Info = new global::LiveKit.Proto.PlatformAudioInfo(); + } + input.ReadMessage(Info); + break; + } + } + } + } + #endif + + } + + /// + /// 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. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class NewPlatformAudioRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NewPlatformAudioRequest()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[49]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public NewPlatformAudioRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public NewPlatformAudioRequest(NewPlatformAudioRequest other) : this() { + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public NewPlatformAudioRequest Clone() { + return new NewPlatformAudioRequest(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as NewPlatformAudioRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(NewPlatformAudioRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(NewPlatformAudioRequest other) { + if (other == null) { + return; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class NewPlatformAudioResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NewPlatformAudioResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[50]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public NewPlatformAudioResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public NewPlatformAudioResponse(NewPlatformAudioResponse other) : this() { + switch (other.MessageCase) { + case MessageOneofCase.PlatformAudio: + PlatformAudio = other.PlatformAudio.Clone(); + break; + case MessageOneofCase.Error: + Error = other.Error; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public NewPlatformAudioResponse Clone() { + return new NewPlatformAudioResponse(this); + } + + /// Field number for the "platform_audio" field. + public const int PlatformAudioFieldNumber = 1; + /// + /// The PlatformAudio handle on success. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.OwnedPlatformAudio PlatformAudio { + get { return messageCase_ == MessageOneofCase.PlatformAudio ? (global::LiveKit.Proto.OwnedPlatformAudio) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.PlatformAudio; + } + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 2; + /// + /// Error message if creation failed. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return HasError ? (string) message_ : ""; } + set { + message_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + messageCase_ = MessageOneofCase.Error; + } + } + /// Gets whether the "error" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasError { + get { return messageCase_ == MessageOneofCase.Error; } + } + /// Clears the value of the oneof if it's currently set to "error" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearError() { + if (HasError) { + ClearMessage(); + } + } + + private object message_; + /// Enum of possible cases for the "message" oneof. + public enum MessageOneofCase { + None = 0, + PlatformAudio = 1, + Error = 2, + } + private MessageOneofCase messageCase_ = MessageOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public MessageOneofCase MessageCase { + get { return messageCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMessage() { + messageCase_ = MessageOneofCase.None; + message_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as NewPlatformAudioResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(NewPlatformAudioResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(PlatformAudio, other.PlatformAudio)) return false; + if (Error != other.Error) return false; + if (MessageCase != other.MessageCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (messageCase_ == MessageOneofCase.PlatformAudio) hash ^= PlatformAudio.GetHashCode(); + if (HasError) hash ^= Error.GetHashCode(); + hash ^= (int) messageCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (messageCase_ == MessageOneofCase.PlatformAudio) { + output.WriteRawTag(10); + output.WriteMessage(PlatformAudio); + } + if (HasError) { + output.WriteRawTag(18); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (messageCase_ == MessageOneofCase.PlatformAudio) { + output.WriteRawTag(10); + output.WriteMessage(PlatformAudio); + } + if (HasError) { + output.WriteRawTag(18); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (messageCase_ == MessageOneofCase.PlatformAudio) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlatformAudio); + } + if (HasError) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(NewPlatformAudioResponse other) { + if (other == null) { + return; + } + switch (other.MessageCase) { + case MessageOneofCase.PlatformAudio: + if (PlatformAudio == null) { + PlatformAudio = new global::LiveKit.Proto.OwnedPlatformAudio(); + } + PlatformAudio.MergeFrom(other.PlatformAudio); + break; + case MessageOneofCase.Error: + Error = other.Error; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + global::LiveKit.Proto.OwnedPlatformAudio subBuilder = new global::LiveKit.Proto.OwnedPlatformAudio(); + if (messageCase_ == MessageOneofCase.PlatformAudio) { + subBuilder.MergeFrom(PlatformAudio); + } + input.ReadMessage(subBuilder); + PlatformAudio = subBuilder; + break; + } + case 18: { + Error = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + global::LiveKit.Proto.OwnedPlatformAudio subBuilder = new global::LiveKit.Proto.OwnedPlatformAudio(); + if (messageCase_ == MessageOneofCase.PlatformAudio) { + subBuilder.MergeFrom(PlatformAudio); + } + input.ReadMessage(subBuilder); + PlatformAudio = subBuilder; + break; + } + case 18: { + Error = input.ReadString(); + break; + } + } + } + } + #endif + + } + + /// + /// Get available audio devices. + /// + /// Returns lists of available recording (microphone) and playout (speaker) devices. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class GetAudioDevicesRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetAudioDevicesRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[51]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GetAudioDevicesRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GetAudioDevicesRequest(GetAudioDevicesRequest other) : this() { + _hasBits0 = other._hasBits0; + platformAudioHandle_ = other.platformAudioHandle_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GetAudioDevicesRequest Clone() { + return new GetAudioDevicesRequest(this); + } + + /// Field number for the "platform_audio_handle" field. + public const int PlatformAudioHandleFieldNumber = 1; + private readonly static ulong PlatformAudioHandleDefaultValue = 0UL; + + private ulong platformAudioHandle_; + /// + /// The PlatformAudio handle. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong PlatformAudioHandle { + get { if ((_hasBits0 & 1) != 0) { return platformAudioHandle_; } else { return PlatformAudioHandleDefaultValue; } } + set { + _hasBits0 |= 1; + platformAudioHandle_ = value; + } + } + /// Gets whether the "platform_audio_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPlatformAudioHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "platform_audio_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPlatformAudioHandle() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as GetAudioDevicesRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(GetAudioDevicesRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (PlatformAudioHandle != other.PlatformAudioHandle) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasPlatformAudioHandle) hash ^= PlatformAudioHandle.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasPlatformAudioHandle) { + output.WriteRawTag(8); + output.WriteUInt64(PlatformAudioHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasPlatformAudioHandle) { + output.WriteRawTag(8); + output.WriteUInt64(PlatformAudioHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasPlatformAudioHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(PlatformAudioHandle); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(GetAudioDevicesRequest other) { + if (other == null) { + return; + } + if (other.HasPlatformAudioHandle) { + PlatformAudioHandle = other.PlatformAudioHandle; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + PlatformAudioHandle = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + PlatformAudioHandle = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class GetAudioDevicesResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetAudioDevicesResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[52]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GetAudioDevicesResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GetAudioDevicesResponse(GetAudioDevicesResponse other) : this() { + playoutDevices_ = other.playoutDevices_.Clone(); + recordingDevices_ = other.recordingDevices_.Clone(); + error_ = other.error_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GetAudioDevicesResponse Clone() { + return new GetAudioDevicesResponse(this); + } + + /// Field number for the "playout_devices" field. + public const int PlayoutDevicesFieldNumber = 1; + private static readonly pb::FieldCodec _repeated_playoutDevices_codec + = pb::FieldCodec.ForMessage(10, global::LiveKit.Proto.AudioDeviceInfo.Parser); + private readonly pbc::RepeatedField playoutDevices_ = new pbc::RepeatedField(); + /// + /// Available playout devices (speakers/headphones). + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField PlayoutDevices { + get { return playoutDevices_; } + } + + /// Field number for the "recording_devices" field. + public const int RecordingDevicesFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_recordingDevices_codec + = pb::FieldCodec.ForMessage(18, global::LiveKit.Proto.AudioDeviceInfo.Parser); + private readonly pbc::RepeatedField recordingDevices_ = new pbc::RepeatedField(); + /// + /// Available recording devices (microphones). + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField RecordingDevices { + get { return recordingDevices_; } + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 3; + private readonly static string ErrorDefaultValue = ""; + + private string error_; + /// + /// Error message if enumeration failed, empty/absent on success. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return error_ ?? ErrorDefaultValue; } + set { + error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "error" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasError { + get { return error_ != null; } + } + /// Clears the value of the "error" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearError() { + error_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as GetAudioDevicesResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(GetAudioDevicesResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if(!playoutDevices_.Equals(other.playoutDevices_)) return false; + if(!recordingDevices_.Equals(other.recordingDevices_)) return false; + if (Error != other.Error) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + hash ^= playoutDevices_.GetHashCode(); + hash ^= recordingDevices_.GetHashCode(); + if (HasError) hash ^= Error.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + playoutDevices_.WriteTo(output, _repeated_playoutDevices_codec); + recordingDevices_.WriteTo(output, _repeated_recordingDevices_codec); + if (HasError) { + output.WriteRawTag(26); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + playoutDevices_.WriteTo(ref output, _repeated_playoutDevices_codec); + recordingDevices_.WriteTo(ref output, _repeated_recordingDevices_codec); + if (HasError) { + output.WriteRawTag(26); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + size += playoutDevices_.CalculateSize(_repeated_playoutDevices_codec); + size += recordingDevices_.CalculateSize(_repeated_recordingDevices_codec); + if (HasError) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(GetAudioDevicesResponse other) { + if (other == null) { + return; + } + playoutDevices_.Add(other.playoutDevices_); + recordingDevices_.Add(other.recordingDevices_); + if (other.HasError) { + Error = other.Error; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + playoutDevices_.AddEntriesFrom(input, _repeated_playoutDevices_codec); + break; + } + case 18: { + recordingDevices_.AddEntriesFrom(input, _repeated_recordingDevices_codec); + break; + } + case 26: { + Error = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + playoutDevices_.AddEntriesFrom(ref input, _repeated_playoutDevices_codec); + break; + } + case 18: { + recordingDevices_.AddEntriesFrom(ref input, _repeated_recordingDevices_codec); + break; + } + case 26: { + Error = input.ReadString(); + break; + } + } + } + } + #endif + + } + + /// + /// 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. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class SetRecordingDeviceRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SetRecordingDeviceRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[53]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetRecordingDeviceRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetRecordingDeviceRequest(SetRecordingDeviceRequest other) : this() { + _hasBits0 = other._hasBits0; + platformAudioHandle_ = other.platformAudioHandle_; + deviceId_ = other.deviceId_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetRecordingDeviceRequest Clone() { + return new SetRecordingDeviceRequest(this); + } + + /// Field number for the "platform_audio_handle" field. + public const int PlatformAudioHandleFieldNumber = 1; + private readonly static ulong PlatformAudioHandleDefaultValue = 0UL; + + private ulong platformAudioHandle_; + /// + /// The PlatformAudio handle. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong PlatformAudioHandle { + get { if ((_hasBits0 & 1) != 0) { return platformAudioHandle_; } else { return PlatformAudioHandleDefaultValue; } } + set { + _hasBits0 |= 1; + platformAudioHandle_ = value; + } + } + /// Gets whether the "platform_audio_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPlatformAudioHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "platform_audio_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPlatformAudioHandle() { + _hasBits0 &= ~1; + } + + /// Field number for the "device_id" field. + public const int DeviceIdFieldNumber = 2; + private readonly static string DeviceIdDefaultValue = ""; + + private string deviceId_; + /// + /// Device GUID from AudioDeviceInfo.guid - stable across device additions/removals. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string DeviceId { + get { return deviceId_ ?? DeviceIdDefaultValue; } + set { + deviceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "device_id" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasDeviceId { + get { return deviceId_ != null; } + } + /// Clears the value of the "device_id" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearDeviceId() { + deviceId_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SetRecordingDeviceRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SetRecordingDeviceRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (PlatformAudioHandle != other.PlatformAudioHandle) return false; + if (DeviceId != other.DeviceId) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasPlatformAudioHandle) hash ^= PlatformAudioHandle.GetHashCode(); + if (HasDeviceId) hash ^= DeviceId.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasPlatformAudioHandle) { + output.WriteRawTag(8); + output.WriteUInt64(PlatformAudioHandle); + } + if (HasDeviceId) { + output.WriteRawTag(18); + output.WriteString(DeviceId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasPlatformAudioHandle) { + output.WriteRawTag(8); + output.WriteUInt64(PlatformAudioHandle); + } + if (HasDeviceId) { + output.WriteRawTag(18); + output.WriteString(DeviceId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasPlatformAudioHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(PlatformAudioHandle); + } + if (HasDeviceId) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(DeviceId); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SetRecordingDeviceRequest other) { + if (other == null) { + return; + } + if (other.HasPlatformAudioHandle) { + PlatformAudioHandle = other.PlatformAudioHandle; + } + if (other.HasDeviceId) { + DeviceId = other.DeviceId; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + PlatformAudioHandle = input.ReadUInt64(); + break; + } + case 18: { + DeviceId = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + PlatformAudioHandle = input.ReadUInt64(); + break; + } + case 18: { + DeviceId = input.ReadString(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class SetRecordingDeviceResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SetRecordingDeviceResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[54]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetRecordingDeviceResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetRecordingDeviceResponse(SetRecordingDeviceResponse other) : this() { + error_ = other.error_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetRecordingDeviceResponse Clone() { + return new SetRecordingDeviceResponse(this); + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 1; + private readonly static string ErrorDefaultValue = ""; + + private string error_; + /// + /// Error message if the operation failed: + /// - "Device not found" if GUID doesn't match any device + /// - Other platform-specific errors + /// Empty/absent on success. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return error_ ?? ErrorDefaultValue; } + set { + error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "error" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasError { + get { return error_ != null; } + } + /// Clears the value of the "error" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearError() { + error_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SetRecordingDeviceResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SetRecordingDeviceResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Error != other.Error) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasError) hash ^= Error.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasError) { + output.WriteRawTag(10); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasError) { + output.WriteRawTag(10); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasError) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SetRecordingDeviceResponse other) { + if (other == null) { + return; + } + if (other.HasError) { + Error = other.Error; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Error = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Error = input.ReadString(); + break; + } + } + } + } + #endif + + } + + /// + /// 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. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class SetPlayoutDeviceRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SetPlayoutDeviceRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[55]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetPlayoutDeviceRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetPlayoutDeviceRequest(SetPlayoutDeviceRequest other) : this() { + _hasBits0 = other._hasBits0; + platformAudioHandle_ = other.platformAudioHandle_; + deviceId_ = other.deviceId_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetPlayoutDeviceRequest Clone() { + return new SetPlayoutDeviceRequest(this); + } + + /// Field number for the "platform_audio_handle" field. + public const int PlatformAudioHandleFieldNumber = 1; + private readonly static ulong PlatformAudioHandleDefaultValue = 0UL; + + private ulong platformAudioHandle_; + /// + /// The PlatformAudio handle. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong PlatformAudioHandle { + get { if ((_hasBits0 & 1) != 0) { return platformAudioHandle_; } else { return PlatformAudioHandleDefaultValue; } } + set { + _hasBits0 |= 1; + platformAudioHandle_ = value; + } + } + /// Gets whether the "platform_audio_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPlatformAudioHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "platform_audio_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPlatformAudioHandle() { + _hasBits0 &= ~1; + } + + /// Field number for the "device_id" field. + public const int DeviceIdFieldNumber = 2; + private readonly static string DeviceIdDefaultValue = ""; + + private string deviceId_; + /// + /// Device GUID from AudioDeviceInfo.guid - stable across device additions/removals. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string DeviceId { + get { return deviceId_ ?? DeviceIdDefaultValue; } + set { + deviceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "device_id" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasDeviceId { + get { return deviceId_ != null; } + } + /// Clears the value of the "device_id" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearDeviceId() { + deviceId_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SetPlayoutDeviceRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SetPlayoutDeviceRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (PlatformAudioHandle != other.PlatformAudioHandle) return false; + if (DeviceId != other.DeviceId) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasPlatformAudioHandle) hash ^= PlatformAudioHandle.GetHashCode(); + if (HasDeviceId) hash ^= DeviceId.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasPlatformAudioHandle) { + output.WriteRawTag(8); + output.WriteUInt64(PlatformAudioHandle); + } + if (HasDeviceId) { + output.WriteRawTag(18); + output.WriteString(DeviceId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasPlatformAudioHandle) { + output.WriteRawTag(8); + output.WriteUInt64(PlatformAudioHandle); + } + if (HasDeviceId) { + output.WriteRawTag(18); + output.WriteString(DeviceId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasPlatformAudioHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(PlatformAudioHandle); + } + if (HasDeviceId) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(DeviceId); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SetPlayoutDeviceRequest other) { + if (other == null) { + return; + } + if (other.HasPlatformAudioHandle) { + PlatformAudioHandle = other.PlatformAudioHandle; + } + if (other.HasDeviceId) { + DeviceId = other.DeviceId; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + PlatformAudioHandle = input.ReadUInt64(); + break; + } + case 18: { + DeviceId = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + PlatformAudioHandle = input.ReadUInt64(); + break; + } + case 18: { + DeviceId = input.ReadString(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class SetPlayoutDeviceResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SetPlayoutDeviceResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[56]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetPlayoutDeviceResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetPlayoutDeviceResponse(SetPlayoutDeviceResponse other) : this() { + error_ = other.error_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetPlayoutDeviceResponse Clone() { + return new SetPlayoutDeviceResponse(this); + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 1; + private readonly static string ErrorDefaultValue = ""; + + private string error_; + /// + /// Error message if the operation failed: + /// - "Device not found" if GUID doesn't match any device + /// - Other platform-specific errors + /// Empty/absent on success. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return error_ ?? ErrorDefaultValue; } + set { + error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "error" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasError { + get { return error_ != null; } + } + /// Clears the value of the "error" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearError() { + error_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SetPlayoutDeviceResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SetPlayoutDeviceResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Error != other.Error) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasError) hash ^= Error.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasError) { + output.WriteRawTag(10); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasError) { + output.WriteRawTag(10); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasError) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SetPlayoutDeviceResponse other) { + if (other == null) { + return; + } + if (other.HasError) { + Error = other.Error; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Error = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Error = input.ReadString(); + break; + } + } + } + } + #endif + + } + + /// + /// 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. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class StartRecordingRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new StartRecordingRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[57]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StartRecordingRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StartRecordingRequest(StartRecordingRequest other) : this() { + _hasBits0 = other._hasBits0; + platformAudioHandle_ = other.platformAudioHandle_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StartRecordingRequest Clone() { + return new StartRecordingRequest(this); + } + + /// Field number for the "platform_audio_handle" field. + public const int PlatformAudioHandleFieldNumber = 1; + private readonly static ulong PlatformAudioHandleDefaultValue = 0UL; + + private ulong platformAudioHandle_; + /// + /// The PlatformAudio handle. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong PlatformAudioHandle { + get { if ((_hasBits0 & 1) != 0) { return platformAudioHandle_; } else { return PlatformAudioHandleDefaultValue; } } + set { + _hasBits0 |= 1; + platformAudioHandle_ = value; + } + } + /// Gets whether the "platform_audio_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPlatformAudioHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "platform_audio_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPlatformAudioHandle() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as StartRecordingRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(StartRecordingRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (PlatformAudioHandle != other.PlatformAudioHandle) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasPlatformAudioHandle) hash ^= PlatformAudioHandle.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasPlatformAudioHandle) { + output.WriteRawTag(8); + output.WriteUInt64(PlatformAudioHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasPlatformAudioHandle) { + output.WriteRawTag(8); + output.WriteUInt64(PlatformAudioHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasPlatformAudioHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(PlatformAudioHandle); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(StartRecordingRequest other) { + if (other == null) { + return; + } + if (other.HasPlatformAudioHandle) { + PlatformAudioHandle = other.PlatformAudioHandle; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + PlatformAudioHandle = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + PlatformAudioHandle = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class StartRecordingResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new StartRecordingResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[58]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StartRecordingResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StartRecordingResponse(StartRecordingResponse other) : this() { + error_ = other.error_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StartRecordingResponse Clone() { + return new StartRecordingResponse(this); + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 1; + private readonly static string ErrorDefaultValue = ""; + + private string error_; + /// + /// Error message if the operation failed. + /// Empty/absent on success. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return error_ ?? ErrorDefaultValue; } + set { + error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "error" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasError { + get { return error_ != null; } + } + /// Clears the value of the "error" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearError() { + error_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as StartRecordingResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(StartRecordingResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Error != other.Error) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasError) hash ^= Error.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasError) { + output.WriteRawTag(10); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasError) { + output.WriteRawTag(10); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasError) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(StartRecordingResponse other) { + if (other == null) { + return; + } + if (other.HasError) { + Error = other.Error; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Error = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Error = input.ReadString(); + break; + } + } + } + } + #endif + + } + + /// + /// 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. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class StopRecordingRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new StopRecordingRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[59]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StopRecordingRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StopRecordingRequest(StopRecordingRequest other) : this() { + _hasBits0 = other._hasBits0; + platformAudioHandle_ = other.platformAudioHandle_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StopRecordingRequest Clone() { + return new StopRecordingRequest(this); + } + + /// Field number for the "platform_audio_handle" field. + public const int PlatformAudioHandleFieldNumber = 1; + private readonly static ulong PlatformAudioHandleDefaultValue = 0UL; + + private ulong platformAudioHandle_; + /// + /// The PlatformAudio handle. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong PlatformAudioHandle { + get { if ((_hasBits0 & 1) != 0) { return platformAudioHandle_; } else { return PlatformAudioHandleDefaultValue; } } + set { + _hasBits0 |= 1; + platformAudioHandle_ = value; + } + } + /// Gets whether the "platform_audio_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPlatformAudioHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "platform_audio_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPlatformAudioHandle() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as StopRecordingRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(StopRecordingRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (PlatformAudioHandle != other.PlatformAudioHandle) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasPlatformAudioHandle) hash ^= PlatformAudioHandle.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasPlatformAudioHandle) { + output.WriteRawTag(8); + output.WriteUInt64(PlatformAudioHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasPlatformAudioHandle) { + output.WriteRawTag(8); + output.WriteUInt64(PlatformAudioHandle); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasPlatformAudioHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(PlatformAudioHandle); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(StopRecordingRequest other) { + if (other == null) { + return; + } + if (other.HasPlatformAudioHandle) { + PlatformAudioHandle = other.PlatformAudioHandle; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + PlatformAudioHandle = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + PlatformAudioHandle = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class StopRecordingResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new StopRecordingResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.AudioFrameReflection.Descriptor.MessageTypes[60]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StopRecordingResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StopRecordingResponse(StopRecordingResponse other) : this() { + error_ = other.error_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StopRecordingResponse Clone() { + return new StopRecordingResponse(this); + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 1; + private readonly static string ErrorDefaultValue = ""; + + private string error_; + /// + /// Error message if the operation failed. + /// Empty/absent on success. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return error_ ?? ErrorDefaultValue; } + set { + error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "error" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasError { + get { return error_ != null; } + } + /// Clears the value of the "error" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearError() { + error_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as StopRecordingResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(StopRecordingResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Error != other.Error) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasError) hash ^= Error.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasError) { + output.WriteRawTag(10); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasError) { + output.WriteRawTag(10); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasError) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(StopRecordingResponse other) { + if (other == null) { + return; + } + if (other.HasError) { + Error = other.Error; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Error = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Error = input.ReadString(); + break; + } + } + } + } + #endif + + } + #endregion } diff --git a/Runtime/Scripts/Proto/DataTrack.cs b/Runtime/Scripts/Proto/DataTrack.cs index 32ce5889..de0a6934 100644 --- a/Runtime/Scripts/Proto/DataTrack.cs +++ b/Runtime/Scripts/Proto/DataTrack.cs @@ -76,43 +76,44 @@ static DataTrackReflection() { "by5EYXRhVHJhY2tTdHJlYW1GcmFtZVJlY2VpdmVkSAASMAoDZW9zGAMgASgL", "MiEubGl2ZWtpdC5wcm90by5EYXRhVHJhY2tTdHJlYW1FT1NIAEIICgZkZXRh", "aWwiTAocRGF0YVRyYWNrU3RyZWFtRnJhbWVSZWNlaXZlZBIsCgVmcmFtZRgB", - "IAIoCzIdLmxpdmVraXQucHJvdG8uRGF0YVRyYWNrRnJhbWUiIwoSRGF0YVRy", - "YWNrU3RyZWFtRU9TEg0KBWVycm9yGAEgASgJKocDChJEYXRhVHJhY2tFcnJv", - "ckNvZGUSIQodREFUQV9UUkFDS19FUlJPUl9DT0RFX1VOS05PV04QABIoCiRE", - "QVRBX1RSQUNLX0VSUk9SX0NPREVfSU5WQUxJRF9IQU5ETEUQARIuCipEQVRB", - "X1RSQUNLX0VSUk9SX0NPREVfRFVQTElDQVRFX1RSQUNLX05BTUUQAhIrCidE", - "QVRBX1RSQUNLX0VSUk9SX0NPREVfVFJBQ0tfVU5QVUJMSVNIRUQQAxIlCiFE", - "QVRBX1RSQUNLX0VSUk9SX0NPREVfQlVGRkVSX0ZVTEwQBBItCilEQVRBX1RS", - "QUNLX0VSUk9SX0NPREVfU1VCU0NSSVBUSU9OX0NMT1NFRBAFEiMKH0RBVEFf", - "VFJBQ0tfRVJST1JfQ09ERV9DQU5DRUxMRUQQBhIoCiREQVRBX1RSQUNLX0VS", - "Uk9SX0NPREVfUFJPVE9DT0xfRVJST1IQBxIiCh5EQVRBX1RSQUNLX0VSUk9S", - "X0NPREVfSU5URVJOQUwQCCrzAwoZUHVibGlzaERhdGFUcmFja0Vycm9yQ29k", - "ZRIpCiVQVUJMSVNIX0RBVEFfVFJBQ0tfRVJST1JfQ09ERV9VTktOT1dOEAAS", - "MAosUFVCTElTSF9EQVRBX1RSQUNLX0VSUk9SX0NPREVfSU5WQUxJRF9IQU5E", - "TEUQARIwCixQVUJMSVNIX0RBVEFfVFJBQ0tfRVJST1JfQ09ERV9EVVBMSUNB", - "VEVfTkFNRRACEikKJVBVQkxJU0hfREFUQV9UUkFDS19FUlJPUl9DT0RFX1RJ", - "TUVPVVQQAxIuCipQVUJMSVNIX0RBVEFfVFJBQ0tfRVJST1JfQ09ERV9ESVND", - "T05ORUNURUQQBBItCilQVUJMSVNIX0RBVEFfVFJBQ0tfRVJST1JfQ09ERV9O", - "T1RfQUxMT1dFRBAFEi4KKlBVQkxJU0hfREFUQV9UUkFDS19FUlJPUl9DT0RF", - "X0lOVkFMSURfTkFNRRAGEi8KK1BVQkxJU0hfREFUQV9UUkFDS19FUlJPUl9D", - "T0RFX0xJTUlUX1JFQUNIRUQQBxIwCixQVUJMSVNIX0RBVEFfVFJBQ0tfRVJS", - "T1JfQ09ERV9QUk9UT0NPTF9FUlJPUhAIEioKJlBVQkxJU0hfREFUQV9UUkFD", - "S19FUlJPUl9DT0RFX0lOVEVSTkFMEAkqrwIKHkxvY2FsRGF0YVRyYWNrVHJ5", - "UHVzaEVycm9yQ29kZRIwCixMT0NBTF9EQVRBX1RSQUNLX1RSWV9QVVNIX0VS", - "Uk9SX0NPREVfVU5LTk9XThAAEjcKM0xPQ0FMX0RBVEFfVFJBQ0tfVFJZX1BV", - "U0hfRVJST1JfQ09ERV9JTlZBTElEX0hBTkRMRRABEjoKNkxPQ0FMX0RBVEFf", - "VFJBQ0tfVFJZX1BVU0hfRVJST1JfQ09ERV9UUkFDS19VTlBVQkxJU0hFRBAC", - "EjMKL0xPQ0FMX0RBVEFfVFJBQ0tfVFJZX1BVU0hfRVJST1JfQ09ERV9RVUVV", - "RV9GVUxMEAMSMQotTE9DQUxfREFUQV9UUkFDS19UUllfUFVTSF9FUlJPUl9D", - "T0RFX0lOVEVSTkFMEAQq8AIKG1N1YnNjcmliZURhdGFUcmFja0Vycm9yQ29k", - "ZRIrCidTVUJTQ1JJQkVfREFUQV9UUkFDS19FUlJPUl9DT0RFX1VOS05PV04Q", - "ABIyCi5TVUJTQ1JJQkVfREFUQV9UUkFDS19FUlJPUl9DT0RFX0lOVkFMSURf", - "SEFORExFEAESLworU1VCU0NSSUJFX0RBVEFfVFJBQ0tfRVJST1JfQ09ERV9V", - "TlBVQkxJU0hFRBACEisKJ1NVQlNDUklCRV9EQVRBX1RSQUNLX0VSUk9SX0NP", - "REVfVElNRU9VVBADEjAKLFNVQlNDUklCRV9EQVRBX1RSQUNLX0VSUk9SX0NP", - "REVfRElTQ09OTkVDVEVEEAQSMgouU1VCU0NSSUJFX0RBVEFfVFJBQ0tfRVJS", - "T1JfQ09ERV9QUk9UT0NPTF9FUlJPUhAFEiwKKFNVQlNDUklCRV9EQVRBX1RS", - "QUNLX0VSUk9SX0NPREVfSU5URVJOQUwQBkIQqgINTGl2ZUtpdC5Qcm90bw==")); + "IAIoCzIdLmxpdmVraXQucHJvdG8uRGF0YVRyYWNrRnJhbWUiSwoSRGF0YVRy", + "YWNrU3RyZWFtRU9TEjUKBWVycm9yGAEgASgLMiYubGl2ZWtpdC5wcm90by5T", + "dWJzY3JpYmVEYXRhVHJhY2tFcnJvciqHAwoSRGF0YVRyYWNrRXJyb3JDb2Rl", + "EiEKHURBVEFfVFJBQ0tfRVJST1JfQ09ERV9VTktOT1dOEAASKAokREFUQV9U", + "UkFDS19FUlJPUl9DT0RFX0lOVkFMSURfSEFORExFEAESLgoqREFUQV9UUkFD", + "S19FUlJPUl9DT0RFX0RVUExJQ0FURV9UUkFDS19OQU1FEAISKwonREFUQV9U", + "UkFDS19FUlJPUl9DT0RFX1RSQUNLX1VOUFVCTElTSEVEEAMSJQohREFUQV9U", + "UkFDS19FUlJPUl9DT0RFX0JVRkZFUl9GVUxMEAQSLQopREFUQV9UUkFDS19F", + "UlJPUl9DT0RFX1NVQlNDUklQVElPTl9DTE9TRUQQBRIjCh9EQVRBX1RSQUNL", + "X0VSUk9SX0NPREVfQ0FOQ0VMTEVEEAYSKAokREFUQV9UUkFDS19FUlJPUl9D", + "T0RFX1BST1RPQ09MX0VSUk9SEAcSIgoeREFUQV9UUkFDS19FUlJPUl9DT0RF", + "X0lOVEVSTkFMEAgq8wMKGVB1Ymxpc2hEYXRhVHJhY2tFcnJvckNvZGUSKQol", + "UFVCTElTSF9EQVRBX1RSQUNLX0VSUk9SX0NPREVfVU5LTk9XThAAEjAKLFBV", + "QkxJU0hfREFUQV9UUkFDS19FUlJPUl9DT0RFX0lOVkFMSURfSEFORExFEAES", + "MAosUFVCTElTSF9EQVRBX1RSQUNLX0VSUk9SX0NPREVfRFVQTElDQVRFX05B", + "TUUQAhIpCiVQVUJMSVNIX0RBVEFfVFJBQ0tfRVJST1JfQ09ERV9USU1FT1VU", + "EAMSLgoqUFVCTElTSF9EQVRBX1RSQUNLX0VSUk9SX0NPREVfRElTQ09OTkVD", + "VEVEEAQSLQopUFVCTElTSF9EQVRBX1RSQUNLX0VSUk9SX0NPREVfTk9UX0FM", + "TE9XRUQQBRIuCipQVUJMSVNIX0RBVEFfVFJBQ0tfRVJST1JfQ09ERV9JTlZB", + "TElEX05BTUUQBhIvCitQVUJMSVNIX0RBVEFfVFJBQ0tfRVJST1JfQ09ERV9M", + "SU1JVF9SRUFDSEVEEAcSMAosUFVCTElTSF9EQVRBX1RSQUNLX0VSUk9SX0NP", + "REVfUFJPVE9DT0xfRVJST1IQCBIqCiZQVUJMSVNIX0RBVEFfVFJBQ0tfRVJS", + "T1JfQ09ERV9JTlRFUk5BTBAJKq8CCh5Mb2NhbERhdGFUcmFja1RyeVB1c2hF", + "cnJvckNvZGUSMAosTE9DQUxfREFUQV9UUkFDS19UUllfUFVTSF9FUlJPUl9D", + "T0RFX1VOS05PV04QABI3CjNMT0NBTF9EQVRBX1RSQUNLX1RSWV9QVVNIX0VS", + "Uk9SX0NPREVfSU5WQUxJRF9IQU5ETEUQARI6CjZMT0NBTF9EQVRBX1RSQUNL", + "X1RSWV9QVVNIX0VSUk9SX0NPREVfVFJBQ0tfVU5QVUJMSVNIRUQQAhIzCi9M", + "T0NBTF9EQVRBX1RSQUNLX1RSWV9QVVNIX0VSUk9SX0NPREVfUVVFVUVfRlVM", + "TBADEjEKLUxPQ0FMX0RBVEFfVFJBQ0tfVFJZX1BVU0hfRVJST1JfQ09ERV9J", + "TlRFUk5BTBAEKvACChtTdWJzY3JpYmVEYXRhVHJhY2tFcnJvckNvZGUSKwon", + "U1VCU0NSSUJFX0RBVEFfVFJBQ0tfRVJST1JfQ09ERV9VTktOT1dOEAASMgou", + "U1VCU0NSSUJFX0RBVEFfVFJBQ0tfRVJST1JfQ09ERV9JTlZBTElEX0hBTkRM", + "RRABEi8KK1NVQlNDUklCRV9EQVRBX1RSQUNLX0VSUk9SX0NPREVfVU5QVUJM", + "SVNIRUQQAhIrCidTVUJTQ1JJQkVfREFUQV9UUkFDS19FUlJPUl9DT0RFX1RJ", + "TUVPVVQQAxIwCixTVUJTQ1JJQkVfREFUQV9UUkFDS19FUlJPUl9DT0RFX0RJ", + "U0NPTk5FQ1RFRBAEEjIKLlNVQlNDUklCRV9EQVRBX1RSQUNLX0VSUk9SX0NP", + "REVfUFJPVE9DT0xfRVJST1IQBRIsCihTVUJTQ1JJQkVfREFUQV9UUkFDS19F", + "UlJPUl9DT0RFX0lOVEVSTkFMEAZCEKoCDUxpdmVLaXQuUHJvdG8=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::LiveKit.Proto.HandleReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::LiveKit.Proto.DataTrackErrorCode), typeof(global::LiveKit.Proto.PublishDataTrackErrorCode), typeof(global::LiveKit.Proto.LocalDataTrackTryPushErrorCode), typeof(global::LiveKit.Proto.SubscribeDataTrackErrorCode), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -7120,7 +7121,7 @@ public DataTrackStreamEOS() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public DataTrackStreamEOS(DataTrackStreamEOS other) : this() { - error_ = other.error_; + error_ = other.error_ != null ? other.error_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -7132,33 +7133,19 @@ public DataTrackStreamEOS Clone() { /// Field number for the "error" field. public const int ErrorFieldNumber = 1; - private readonly static string ErrorDefaultValue = ""; - - private string error_; + private global::LiveKit.Proto.SubscribeDataTrackError error_; /// - /// If the track could not be subscribed to, a message describing the error. - /// Absent if the stream ended normally. + /// Present if stream ended before any frames were emitted due to subscription establishment failing. + /// Absent if the stream ended normally (i.e., due to the track being unpublished). /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string Error { - get { return error_ ?? ErrorDefaultValue; } + public global::LiveKit.Proto.SubscribeDataTrackError Error { + get { return error_; } set { - error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + error_ = value; } } - /// Gets whether the "error" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasError { - get { return error_ != null; } - } - /// Clears the value of the "error" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearError() { - error_ = null; - } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -7175,7 +7162,7 @@ public bool Equals(DataTrackStreamEOS other) { if (ReferenceEquals(other, this)) { return true; } - if (Error != other.Error) return false; + if (!object.Equals(Error, other.Error)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -7183,7 +7170,7 @@ public bool Equals(DataTrackStreamEOS other) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; - if (HasError) hash ^= Error.GetHashCode(); + if (error_ != null) hash ^= Error.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -7202,9 +7189,9 @@ public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else - if (HasError) { + if (error_ != null) { output.WriteRawTag(10); - output.WriteString(Error); + output.WriteMessage(Error); } if (_unknownFields != null) { _unknownFields.WriteTo(output); @@ -7216,9 +7203,9 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (HasError) { + if (error_ != null) { output.WriteRawTag(10); - output.WriteString(Error); + output.WriteMessage(Error); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); @@ -7230,8 +7217,8 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; - if (HasError) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + if (error_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Error); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); @@ -7245,8 +7232,11 @@ public void MergeFrom(DataTrackStreamEOS other) { if (other == null) { return; } - if (other.HasError) { - Error = other.Error; + if (other.error_ != null) { + if (error_ == null) { + Error = new global::LiveKit.Proto.SubscribeDataTrackError(); + } + Error.MergeFrom(other.Error); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -7268,7 +7258,10 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { - Error = input.ReadString(); + if (error_ == null) { + Error = new global::LiveKit.Proto.SubscribeDataTrackError(); + } + input.ReadMessage(Error); break; } } @@ -7291,7 +7284,10 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { - Error = input.ReadString(); + if (error_ == null) { + Error = new global::LiveKit.Proto.SubscribeDataTrackError(); + } + input.ReadMessage(Error); break; } } diff --git a/Runtime/Scripts/Proto/Ffi.cs b/Runtime/Scripts/Proto/Ffi.cs index b0a8bdbb..e669961f 100644 --- a/Runtime/Scripts/Proto/Ffi.cs +++ b/Runtime/Scripts/Proto/Ffi.cs @@ -27,7 +27,7 @@ static FfiReflection() { "CglmZmkucHJvdG8SDWxpdmVraXQucHJvdG8aCmUyZWUucHJvdG8aC3RyYWNr", "LnByb3RvGhd0cmFja19wdWJsaWNhdGlvbi5wcm90bxoKcm9vbS5wcm90bxoR", "dmlkZW9fZnJhbWUucHJvdG8aEWF1ZGlvX2ZyYW1lLnByb3RvGglycGMucHJv", - "dG8aEWRhdGFfc3RyZWFtLnByb3RvGhBkYXRhX3RyYWNrLnByb3RvIqAqCgpG", + "dG8aEWRhdGFfc3RyZWFtLnByb3RvGhBkYXRhX3RyYWNrLnByb3RvIv8tCgpG", "ZmlSZXF1ZXN0EjAKB2Rpc3Bvc2UYAiABKAsyHS5saXZla2l0LnByb3RvLkRp", "c3Bvc2VSZXF1ZXN0SAASMAoHY29ubmVjdBgDIAEoCzIdLmxpdmVraXQucHJv", "dG8uQ29ubmVjdFJlcXVlc3RIABI2CgpkaXNjb25uZWN0GAQgASgLMiAubGl2", @@ -147,191 +147,214 @@ static FfiReflection() { "ZXN0SAASWgoecmVtb3RlX2RhdGFfdHJhY2tfaXNfcHVibGlzaGVkGEogASgL", "MjAubGl2ZWtpdC5wcm90by5SZW1vdGVEYXRhVHJhY2tJc1B1Ymxpc2hlZFJl", "cXVlc3RIABJLChZkYXRhX3RyYWNrX3N0cmVhbV9yZWFkGEsgASgLMikubGl2", - "ZWtpdC5wcm90by5EYXRhVHJhY2tTdHJlYW1SZWFkUmVxdWVzdEgAQgkKB21l", - "c3NhZ2UipioKC0ZmaVJlc3BvbnNlEjEKB2Rpc3Bvc2UYAiABKAsyHi5saXZl", - "a2l0LnByb3RvLkRpc3Bvc2VSZXNwb25zZUgAEjEKB2Nvbm5lY3QYAyABKAsy", - "Hi5saXZla2l0LnByb3RvLkNvbm5lY3RSZXNwb25zZUgAEjcKCmRpc2Nvbm5l", - "Y3QYBCABKAsyIS5saXZla2l0LnByb3RvLkRpc2Nvbm5lY3RSZXNwb25zZUgA", - "EjwKDXB1Ymxpc2hfdHJhY2sYBSABKAsyIy5saXZla2l0LnByb3RvLlB1Ymxp", - "c2hUcmFja1Jlc3BvbnNlSAASQAoPdW5wdWJsaXNoX3RyYWNrGAYgASgLMiUu", - "bGl2ZWtpdC5wcm90by5VbnB1Ymxpc2hUcmFja1Jlc3BvbnNlSAASOgoMcHVi", - "bGlzaF9kYXRhGAcgASgLMiIubGl2ZWtpdC5wcm90by5QdWJsaXNoRGF0YVJl", - "c3BvbnNlSAASPgoOc2V0X3N1YnNjcmliZWQYCCABKAsyJC5saXZla2l0LnBy", - "b3RvLlNldFN1YnNjcmliZWRSZXNwb25zZUgAEkUKEnNldF9sb2NhbF9tZXRh", - "ZGF0YRgJIAEoCzInLmxpdmVraXQucHJvdG8uU2V0TG9jYWxNZXRhZGF0YVJl", - "c3BvbnNlSAASPQoOc2V0X2xvY2FsX25hbWUYCiABKAsyIy5saXZla2l0LnBy", - "b3RvLlNldExvY2FsTmFtZVJlc3BvbnNlSAASSQoUc2V0X2xvY2FsX2F0dHJp", - "YnV0ZXMYCyABKAsyKS5saXZla2l0LnByb3RvLlNldExvY2FsQXR0cmlidXRl", - "c1Jlc3BvbnNlSAASQwoRZ2V0X3Nlc3Npb25fc3RhdHMYDCABKAsyJi5saXZl", - "a2l0LnByb3RvLkdldFNlc3Npb25TdGF0c1Jlc3BvbnNlSAASTAoVcHVibGlz", - "aF90cmFuc2NyaXB0aW9uGA0gASgLMisubGl2ZWtpdC5wcm90by5QdWJsaXNo", - "VHJhbnNjcmlwdGlvblJlc3BvbnNlSAASQQoQcHVibGlzaF9zaXBfZHRtZhgO", - "IAEoCzIlLmxpdmVraXQucHJvdG8uUHVibGlzaFNpcER0bWZSZXNwb25zZUgA", - "EkUKEmNyZWF0ZV92aWRlb190cmFjaxgPIAEoCzInLmxpdmVraXQucHJvdG8u", - "Q3JlYXRlVmlkZW9UcmFja1Jlc3BvbnNlSAASRQoSY3JlYXRlX2F1ZGlvX3Ry", - "YWNrGBAgASgLMicubGl2ZWtpdC5wcm90by5DcmVhdGVBdWRpb1RyYWNrUmVz", - "cG9uc2VIABJBChBsb2NhbF90cmFja19tdXRlGBEgASgLMiUubGl2ZWtpdC5w", - "cm90by5Mb2NhbFRyYWNrTXV0ZVJlc3BvbnNlSAASRwoTZW5hYmxlX3JlbW90", - "ZV90cmFjaxgSIAEoCzIoLmxpdmVraXQucHJvdG8uRW5hYmxlUmVtb3RlVHJh", - "Y2tSZXNwb25zZUgAEjQKCWdldF9zdGF0cxgTIAEoCzIfLmxpdmVraXQucHJv", - "dG8uR2V0U3RhdHNSZXNwb25zZUgAEmQKInNldF90cmFja19zdWJzY3JpcHRp", - "b25fcGVybWlzc2lvbnMYLyABKAsyNi5saXZla2l0LnByb3RvLlNldFRyYWNr", - "U3Vic2NyaXB0aW9uUGVybWlzc2lvbnNSZXNwb25zZUgAEkEKEG5ld192aWRl", - "b19zdHJlYW0YFCABKAsyJS5saXZla2l0LnByb3RvLk5ld1ZpZGVvU3RyZWFt", - "UmVzcG9uc2VIABJBChBuZXdfdmlkZW9fc291cmNlGBUgASgLMiUubGl2ZWtp", - "dC5wcm90by5OZXdWaWRlb1NvdXJjZVJlc3BvbnNlSAASRwoTY2FwdHVyZV92", - "aWRlb19mcmFtZRgWIAEoCzIoLmxpdmVraXQucHJvdG8uQ2FwdHVyZVZpZGVv", - "RnJhbWVSZXNwb25zZUgAEjwKDXZpZGVvX2NvbnZlcnQYFyABKAsyIy5saXZl", - "a2l0LnByb3RvLlZpZGVvQ29udmVydFJlc3BvbnNlSAASWgoddmlkZW9fc3Ry", - "ZWFtX2Zyb21fcGFydGljaXBhbnQYGCABKAsyMS5saXZla2l0LnByb3RvLlZp", - "ZGVvU3RyZWFtRnJvbVBhcnRpY2lwYW50UmVzcG9uc2VIABJBChBuZXdfYXVk", - "aW9fc3RyZWFtGBkgASgLMiUubGl2ZWtpdC5wcm90by5OZXdBdWRpb1N0cmVh", - "bVJlc3BvbnNlSAASQQoQbmV3X2F1ZGlvX3NvdXJjZRgaIAEoCzIlLmxpdmVr", - "aXQucHJvdG8uTmV3QXVkaW9Tb3VyY2VSZXNwb25zZUgAEkcKE2NhcHR1cmVf", - "YXVkaW9fZnJhbWUYGyABKAsyKC5saXZla2l0LnByb3RvLkNhcHR1cmVBdWRp", - "b0ZyYW1lUmVzcG9uc2VIABJFChJjbGVhcl9hdWRpb19idWZmZXIYHCABKAsy", - "Jy5saXZla2l0LnByb3RvLkNsZWFyQXVkaW9CdWZmZXJSZXNwb25zZUgAEkcK", - "E25ld19hdWRpb19yZXNhbXBsZXIYHSABKAsyKC5saXZla2l0LnByb3RvLk5l", - "d0F1ZGlvUmVzYW1wbGVyUmVzcG9uc2VIABJFChJyZW1peF9hbmRfcmVzYW1w", - "bGUYHiABKAsyJy5saXZla2l0LnByb3RvLlJlbWl4QW5kUmVzYW1wbGVSZXNw", - "b25zZUgAEloKHWF1ZGlvX3N0cmVhbV9mcm9tX3BhcnRpY2lwYW50GB8gASgL", - "MjEubGl2ZWtpdC5wcm90by5BdWRpb1N0cmVhbUZyb21QYXJ0aWNpcGFudFJl", - "c3BvbnNlSAASKwoEZTJlZRggIAEoCzIbLmxpdmVraXQucHJvdG8uRTJlZVJl", - "c3BvbnNlSAASQwoRbmV3X3NveF9yZXNhbXBsZXIYISABKAsyJi5saXZla2l0", - "LnByb3RvLk5ld1NveFJlc2FtcGxlclJlc3BvbnNlSAASRQoScHVzaF9zb3hf", - "cmVzYW1wbGVyGCIgASgLMicubGl2ZWtpdC5wcm90by5QdXNoU294UmVzYW1w", - "bGVyUmVzcG9uc2VIABJHChNmbHVzaF9zb3hfcmVzYW1wbGVyGCMgASgLMigu", - "bGl2ZWtpdC5wcm90by5GbHVzaFNveFJlc2FtcGxlclJlc3BvbnNlSAASQwoR", - "c2VuZF9jaGF0X21lc3NhZ2UYJCABKAsyJi5saXZla2l0LnByb3RvLlNlbmRD", - "aGF0TWVzc2FnZVJlc3BvbnNlSAASOAoLcGVyZm9ybV9ycGMYJSABKAsyIS5s", - "aXZla2l0LnByb3RvLlBlcmZvcm1ScGNSZXNwb25zZUgAEkcKE3JlZ2lzdGVy", - "X3JwY19tZXRob2QYJiABKAsyKC5saXZla2l0LnByb3RvLlJlZ2lzdGVyUnBj", - "TWV0aG9kUmVzcG9uc2VIABJLChV1bnJlZ2lzdGVyX3JwY19tZXRob2QYJyAB", - "KAsyKi5saXZla2l0LnByb3RvLlVucmVnaXN0ZXJScGNNZXRob2RSZXNwb25z", - "ZUgAElwKHnJwY19tZXRob2RfaW52b2NhdGlvbl9yZXNwb25zZRgoIAEoCzIy", - "LmxpdmVraXQucHJvdG8uUnBjTWV0aG9kSW52b2NhdGlvblJlc3BvbnNlUmVz", - "cG9uc2VIABJeCh9lbmFibGVfcmVtb3RlX3RyYWNrX3B1YmxpY2F0aW9uGCkg", - "ASgLMjMubGl2ZWtpdC5wcm90by5FbmFibGVSZW1vdGVUcmFja1B1YmxpY2F0", - "aW9uUmVzcG9uc2VIABJxCil1cGRhdGVfcmVtb3RlX3RyYWNrX3B1YmxpY2F0", - "aW9uX2RpbWVuc2lvbhgqIAEoCzI8LmxpdmVraXQucHJvdG8uVXBkYXRlUmVt", - "b3RlVHJhY2tQdWJsaWNhdGlvbkRpbWVuc2lvblJlc3BvbnNlSAASRQoSc2Vu", - "ZF9zdHJlYW1faGVhZGVyGCsgASgLMicubGl2ZWtpdC5wcm90by5TZW5kU3Ry", - "ZWFtSGVhZGVyUmVzcG9uc2VIABJDChFzZW5kX3N0cmVhbV9jaHVuaxgsIAEo", - "CzImLmxpdmVraXQucHJvdG8uU2VuZFN0cmVhbUNodW5rUmVzcG9uc2VIABJH", - "ChNzZW5kX3N0cmVhbV90cmFpbGVyGC0gASgLMigubGl2ZWtpdC5wcm90by5T", - "ZW5kU3RyZWFtVHJhaWxlclJlc3BvbnNlSAASeQouc2V0X2RhdGFfY2hhbm5l", - "bF9idWZmZXJlZF9hbW91bnRfbG93X3RocmVzaG9sZBguIAEoCzI/LmxpdmVr", - "aXQucHJvdG8uU2V0RGF0YUNoYW5uZWxCdWZmZXJlZEFtb3VudExvd1RocmVz", - "aG9sZFJlc3BvbnNlSAASUAoYbG9hZF9hdWRpb19maWx0ZXJfcGx1Z2luGDAg", - "ASgLMiwubGl2ZWtpdC5wcm90by5Mb2FkQXVkaW9GaWx0ZXJQbHVnaW5SZXNw", - "b25zZUgAEjAKB25ld19hcG0YMSABKAsyHS5saXZla2l0LnByb3RvLk5ld0Fw", - "bVJlc3BvbnNlSAASRQoSYXBtX3Byb2Nlc3Nfc3RyZWFtGDIgASgLMicubGl2", - "ZWtpdC5wcm90by5BcG1Qcm9jZXNzU3RyZWFtUmVzcG9uc2VIABJUChphcG1f", - "cHJvY2Vzc19yZXZlcnNlX3N0cmVhbRgzIAEoCzIuLmxpdmVraXQucHJvdG8u", - "QXBtUHJvY2Vzc1JldmVyc2VTdHJlYW1SZXNwb25zZUgAEkgKFGFwbV9zZXRf", - "c3RyZWFtX2RlbGF5GDQgASgLMigubGl2ZWtpdC5wcm90by5BcG1TZXRTdHJl", - "YW1EZWxheVJlc3BvbnNlSAASVwoVYnl0ZV9yZWFkX2luY3JlbWVudGFsGDUg", - "ASgLMjYubGl2ZWtpdC5wcm90by5CeXRlU3RyZWFtUmVhZGVyUmVhZEluY3Jl", - "bWVudGFsUmVzcG9uc2VIABJHCg1ieXRlX3JlYWRfYWxsGDYgASgLMi4ubGl2", - "ZWtpdC5wcm90by5CeXRlU3RyZWFtUmVhZGVyUmVhZEFsbFJlc3BvbnNlSAAS", - "UAoSYnl0ZV93cml0ZV90b19maWxlGDcgASgLMjIubGl2ZWtpdC5wcm90by5C", - "eXRlU3RyZWFtUmVhZGVyV3JpdGVUb0ZpbGVSZXNwb25zZUgAElcKFXRleHRf", - "cmVhZF9pbmNyZW1lbnRhbBg4IAEoCzI2LmxpdmVraXQucHJvdG8uVGV4dFN0", - "cmVhbVJlYWRlclJlYWRJbmNyZW1lbnRhbFJlc3BvbnNlSAASRwoNdGV4dF9y", - "ZWFkX2FsbBg5IAEoCzIuLmxpdmVraXQucHJvdG8uVGV4dFN0cmVhbVJlYWRl", - "clJlYWRBbGxSZXNwb25zZUgAEjoKCXNlbmRfZmlsZRg6IAEoCzIlLmxpdmVr", - "aXQucHJvdG8uU3RyZWFtU2VuZEZpbGVSZXNwb25zZUgAEjoKCXNlbmRfdGV4", - "dBg7IAEoCzIlLmxpdmVraXQucHJvdG8uU3RyZWFtU2VuZFRleHRSZXNwb25z", - "ZUgAEkEKEGJ5dGVfc3RyZWFtX29wZW4YPCABKAsyJS5saXZla2l0LnByb3Rv", - "LkJ5dGVTdHJlYW1PcGVuUmVzcG9uc2VIABJJChFieXRlX3N0cmVhbV93cml0", - "ZRg9IAEoCzIsLmxpdmVraXQucHJvdG8uQnl0ZVN0cmVhbVdyaXRlcldyaXRl", - "UmVzcG9uc2VIABJJChFieXRlX3N0cmVhbV9jbG9zZRg+IAEoCzIsLmxpdmVr", - "aXQucHJvdG8uQnl0ZVN0cmVhbVdyaXRlckNsb3NlUmVzcG9uc2VIABJBChB0", - "ZXh0X3N0cmVhbV9vcGVuGD8gASgLMiUubGl2ZWtpdC5wcm90by5UZXh0U3Ry", - "ZWFtT3BlblJlc3BvbnNlSAASSQoRdGV4dF9zdHJlYW1fd3JpdGUYQCABKAsy", - "LC5saXZla2l0LnByb3RvLlRleHRTdHJlYW1Xcml0ZXJXcml0ZVJlc3BvbnNl", - "SAASSQoRdGV4dF9zdHJlYW1fY2xvc2UYQSABKAsyLC5saXZla2l0LnByb3Rv", - "LlRleHRTdHJlYW1Xcml0ZXJDbG9zZVJlc3BvbnNlSAASPAoKc2VuZF9ieXRl", - "cxhCIAEoCzImLmxpdmVraXQucHJvdG8uU3RyZWFtU2VuZEJ5dGVzUmVzcG9u", - "c2VIABJnCiRzZXRfcmVtb3RlX3RyYWNrX3B1YmxpY2F0aW9uX3F1YWxpdHkY", - "QyABKAsyNy5saXZla2l0LnByb3RvLlNldFJlbW90ZVRyYWNrUHVibGljYXRp", - "b25RdWFsaXR5UmVzcG9uc2VIABJFChJwdWJsaXNoX2RhdGFfdHJhY2sYRCAB", - "KAsyJy5saXZla2l0LnByb3RvLlB1Ymxpc2hEYXRhVHJhY2tSZXNwb25zZUgA", - "ElEKGWxvY2FsX2RhdGFfdHJhY2tfdHJ5X3B1c2gYRSABKAsyLC5saXZla2l0", - "LnByb3RvLkxvY2FsRGF0YVRyYWNrVHJ5UHVzaFJlc3BvbnNlSAASVAoabG9j", - "YWxfZGF0YV90cmFja191bnB1Ymxpc2gYRiABKAsyLi5saXZla2l0LnByb3Rv", - "LkxvY2FsRGF0YVRyYWNrVW5wdWJsaXNoUmVzcG9uc2VIABJZCh1sb2NhbF9k", - "YXRhX3RyYWNrX2lzX3B1Ymxpc2hlZBhHIAEoCzIwLmxpdmVraXQucHJvdG8u", - "TG9jYWxEYXRhVHJhY2tJc1B1Ymxpc2hlZFJlc3BvbnNlSAASSQoUc3Vic2Ny", - "aWJlX2RhdGFfdHJhY2sYSCABKAsyKS5saXZla2l0LnByb3RvLlN1YnNjcmli", - "ZURhdGFUcmFja1Jlc3BvbnNlSAASWwoecmVtb3RlX2RhdGFfdHJhY2tfaXNf", - "cHVibGlzaGVkGEkgASgLMjEubGl2ZWtpdC5wcm90by5SZW1vdGVEYXRhVHJh", - "Y2tJc1B1Ymxpc2hlZFJlc3BvbnNlSAASTAoWZGF0YV90cmFja19zdHJlYW1f", - "cmVhZBhKIAEoCzIqLmxpdmVraXQucHJvdG8uRGF0YVRyYWNrU3RyZWFtUmVh", - "ZFJlc3BvbnNlSABCCQoHbWVzc2FnZSKUFgoIRmZpRXZlbnQSLgoKcm9vbV9l", - "dmVudBgBIAEoCzIYLmxpdmVraXQucHJvdG8uUm9vbUV2ZW50SAASMAoLdHJh", - "Y2tfZXZlbnQYAiABKAsyGS5saXZla2l0LnByb3RvLlRyYWNrRXZlbnRIABI9", - "ChJ2aWRlb19zdHJlYW1fZXZlbnQYAyABKAsyHy5saXZla2l0LnByb3RvLlZp", - "ZGVvU3RyZWFtRXZlbnRIABI9ChJhdWRpb19zdHJlYW1fZXZlbnQYBCABKAsy", - "Hy5saXZla2l0LnByb3RvLkF1ZGlvU3RyZWFtRXZlbnRIABIxCgdjb25uZWN0", - "GAUgASgLMh4ubGl2ZWtpdC5wcm90by5Db25uZWN0Q2FsbGJhY2tIABI3Cgpk", - "aXNjb25uZWN0GAcgASgLMiEubGl2ZWtpdC5wcm90by5EaXNjb25uZWN0Q2Fs", - "bGJhY2tIABIxCgdkaXNwb3NlGAggASgLMh4ubGl2ZWtpdC5wcm90by5EaXNw", - "b3NlQ2FsbGJhY2tIABI8Cg1wdWJsaXNoX3RyYWNrGAkgASgLMiMubGl2ZWtp", - "dC5wcm90by5QdWJsaXNoVHJhY2tDYWxsYmFja0gAEkAKD3VucHVibGlzaF90", - "cmFjaxgKIAEoCzIlLmxpdmVraXQucHJvdG8uVW5wdWJsaXNoVHJhY2tDYWxs", - "YmFja0gAEjoKDHB1Ymxpc2hfZGF0YRgLIAEoCzIiLmxpdmVraXQucHJvdG8u", - "UHVibGlzaERhdGFDYWxsYmFja0gAEkwKFXB1Ymxpc2hfdHJhbnNjcmlwdGlv", - "bhgMIAEoCzIrLmxpdmVraXQucHJvdG8uUHVibGlzaFRyYW5zY3JpcHRpb25D", - "YWxsYmFja0gAEkcKE2NhcHR1cmVfYXVkaW9fZnJhbWUYDSABKAsyKC5saXZl", - "a2l0LnByb3RvLkNhcHR1cmVBdWRpb0ZyYW1lQ2FsbGJhY2tIABJFChJzZXRf", - "bG9jYWxfbWV0YWRhdGEYDiABKAsyJy5saXZla2l0LnByb3RvLlNldExvY2Fs", - "TWV0YWRhdGFDYWxsYmFja0gAEj0KDnNldF9sb2NhbF9uYW1lGA8gASgLMiMu", - "bGl2ZWtpdC5wcm90by5TZXRMb2NhbE5hbWVDYWxsYmFja0gAEkkKFHNldF9s", - "b2NhbF9hdHRyaWJ1dGVzGBAgASgLMikubGl2ZWtpdC5wcm90by5TZXRMb2Nh", - "bEF0dHJpYnV0ZXNDYWxsYmFja0gAEjQKCWdldF9zdGF0cxgRIAEoCzIfLmxp", - "dmVraXQucHJvdG8uR2V0U3RhdHNDYWxsYmFja0gAEicKBGxvZ3MYEiABKAsy", - "Fy5saXZla2l0LnByb3RvLkxvZ0JhdGNoSAASQwoRZ2V0X3Nlc3Npb25fc3Rh", - "dHMYEyABKAsyJi5saXZla2l0LnByb3RvLkdldFNlc3Npb25TdGF0c0NhbGxi", - "YWNrSAASJQoFcGFuaWMYFCABKAsyFC5saXZla2l0LnByb3RvLlBhbmljSAAS", - "QQoQcHVibGlzaF9zaXBfZHRtZhgVIAEoCzIlLmxpdmVraXQucHJvdG8uUHVi", - "bGlzaFNpcER0bWZDYWxsYmFja0gAEj4KDGNoYXRfbWVzc2FnZRgWIAEoCzIm", - "LmxpdmVraXQucHJvdG8uU2VuZENoYXRNZXNzYWdlQ2FsbGJhY2tIABI4Cgtw", - "ZXJmb3JtX3JwYxgXIAEoCzIhLmxpdmVraXQucHJvdG8uUGVyZm9ybVJwY0Nh", - "bGxiYWNrSAASSAoVcnBjX21ldGhvZF9pbnZvY2F0aW9uGBggASgLMicubGl2", - "ZWtpdC5wcm90by5ScGNNZXRob2RJbnZvY2F0aW9uRXZlbnRIABJFChJzZW5k", - "X3N0cmVhbV9oZWFkZXIYGSABKAsyJy5saXZla2l0LnByb3RvLlNlbmRTdHJl", - "YW1IZWFkZXJDYWxsYmFja0gAEkMKEXNlbmRfc3RyZWFtX2NodW5rGBogASgL", - "MiYubGl2ZWtpdC5wcm90by5TZW5kU3RyZWFtQ2h1bmtDYWxsYmFja0gAEkcK", - "E3NlbmRfc3RyZWFtX3RyYWlsZXIYGyABKAsyKC5saXZla2l0LnByb3RvLlNl", - "bmRTdHJlYW1UcmFpbGVyQ2FsbGJhY2tIABJIChhieXRlX3N0cmVhbV9yZWFk", - "ZXJfZXZlbnQYHCABKAsyJC5saXZla2l0LnByb3RvLkJ5dGVTdHJlYW1SZWFk", - "ZXJFdmVudEgAElUKG2J5dGVfc3RyZWFtX3JlYWRlcl9yZWFkX2FsbBgdIAEo", - "CzIuLmxpdmVraXQucHJvdG8uQnl0ZVN0cmVhbVJlYWRlclJlYWRBbGxDYWxs", - "YmFja0gAEl4KIGJ5dGVfc3RyZWFtX3JlYWRlcl93cml0ZV90b19maWxlGB4g", - "ASgLMjIubGl2ZWtpdC5wcm90by5CeXRlU3RyZWFtUmVhZGVyV3JpdGVUb0Zp", - "bGVDYWxsYmFja0gAEkEKEGJ5dGVfc3RyZWFtX29wZW4YHyABKAsyJS5saXZl", - "a2l0LnByb3RvLkJ5dGVTdHJlYW1PcGVuQ2FsbGJhY2tIABJQChhieXRlX3N0", - "cmVhbV93cml0ZXJfd3JpdGUYICABKAsyLC5saXZla2l0LnByb3RvLkJ5dGVT", - "dHJlYW1Xcml0ZXJXcml0ZUNhbGxiYWNrSAASUAoYYnl0ZV9zdHJlYW1fd3Jp", - "dGVyX2Nsb3NlGCEgASgLMiwubGl2ZWtpdC5wcm90by5CeXRlU3RyZWFtV3Jp", - "dGVyQ2xvc2VDYWxsYmFja0gAEjoKCXNlbmRfZmlsZRgiIAEoCzIlLmxpdmVr", - "aXQucHJvdG8uU3RyZWFtU2VuZEZpbGVDYWxsYmFja0gAEkgKGHRleHRfc3Ry", - "ZWFtX3JlYWRlcl9ldmVudBgjIAEoCzIkLmxpdmVraXQucHJvdG8uVGV4dFN0", - "cmVhbVJlYWRlckV2ZW50SAASVQobdGV4dF9zdHJlYW1fcmVhZGVyX3JlYWRf", - "YWxsGCQgASgLMi4ubGl2ZWtpdC5wcm90by5UZXh0U3RyZWFtUmVhZGVyUmVh", - "ZEFsbENhbGxiYWNrSAASQQoQdGV4dF9zdHJlYW1fb3BlbhglIAEoCzIlLmxp", - "dmVraXQucHJvdG8uVGV4dFN0cmVhbU9wZW5DYWxsYmFja0gAElAKGHRleHRf", - "c3RyZWFtX3dyaXRlcl93cml0ZRgmIAEoCzIsLmxpdmVraXQucHJvdG8uVGV4", - "dFN0cmVhbVdyaXRlcldyaXRlQ2FsbGJhY2tIABJQChh0ZXh0X3N0cmVhbV93", - "cml0ZXJfY2xvc2UYJyABKAsyLC5saXZla2l0LnByb3RvLlRleHRTdHJlYW1X", - "cml0ZXJDbG9zZUNhbGxiYWNrSAASOgoJc2VuZF90ZXh0GCggASgLMiUubGl2", - "ZWtpdC5wcm90by5TdHJlYW1TZW5kVGV4dENhbGxiYWNrSAASPAoKc2VuZF9i", - "eXRlcxgpIAEoCzImLmxpdmVraXQucHJvdG8uU3RyZWFtU2VuZEJ5dGVzQ2Fs", - "bGJhY2tIABJFChJwdWJsaXNoX2RhdGFfdHJhY2sYKiABKAsyJy5saXZla2l0", - "LnByb3RvLlB1Ymxpc2hEYXRhVHJhY2tDYWxsYmFja0gAEkYKF2RhdGFfdHJh", - "Y2tfc3RyZWFtX2V2ZW50GCsgASgLMiMubGl2ZWtpdC5wcm90by5EYXRhVHJh", - "Y2tTdHJlYW1FdmVudEgAQgkKB21lc3NhZ2UiHwoORGlzcG9zZVJlcXVlc3QS", + "ZWtpdC5wcm90by5EYXRhVHJhY2tTdHJlYW1SZWFkUmVxdWVzdEgAEkMKEXNp", + "bXVsYXRlX3NjZW5hcmlvGEwgASgLMiYubGl2ZWtpdC5wcm90by5TaW11bGF0", + "ZVNjZW5hcmlvUmVxdWVzdEgAEkQKEm5ld19wbGF0Zm9ybV9hdWRpbxhNIAEo", + "CzImLmxpdmVraXQucHJvdG8uTmV3UGxhdGZvcm1BdWRpb1JlcXVlc3RIABJC", + "ChFnZXRfYXVkaW9fZGV2aWNlcxhOIAEoCzIlLmxpdmVraXQucHJvdG8uR2V0", + "QXVkaW9EZXZpY2VzUmVxdWVzdEgAEkgKFHNldF9yZWNvcmRpbmdfZGV2aWNl", + "GE8gASgLMigubGl2ZWtpdC5wcm90by5TZXRSZWNvcmRpbmdEZXZpY2VSZXF1", + "ZXN0SAASRAoSc2V0X3BsYXlvdXRfZGV2aWNlGFAgASgLMiYubGl2ZWtpdC5w", + "cm90by5TZXRQbGF5b3V0RGV2aWNlUmVxdWVzdEgAEj8KD3N0YXJ0X3JlY29y", + "ZGluZxhRIAEoCzIkLmxpdmVraXQucHJvdG8uU3RhcnRSZWNvcmRpbmdSZXF1", + "ZXN0SAASPQoOc3RvcF9yZWNvcmRpbmcYUiABKAsyIy5saXZla2l0LnByb3Rv", + "LlN0b3BSZWNvcmRpbmdSZXF1ZXN0SABCCQoHbWVzc2FnZSKMLgoLRmZpUmVz", + "cG9uc2USMQoHZGlzcG9zZRgCIAEoCzIeLmxpdmVraXQucHJvdG8uRGlzcG9z", + "ZVJlc3BvbnNlSAASMQoHY29ubmVjdBgDIAEoCzIeLmxpdmVraXQucHJvdG8u", + "Q29ubmVjdFJlc3BvbnNlSAASNwoKZGlzY29ubmVjdBgEIAEoCzIhLmxpdmVr", + "aXQucHJvdG8uRGlzY29ubmVjdFJlc3BvbnNlSAASPAoNcHVibGlzaF90cmFj", + "axgFIAEoCzIjLmxpdmVraXQucHJvdG8uUHVibGlzaFRyYWNrUmVzcG9uc2VI", + "ABJACg91bnB1Ymxpc2hfdHJhY2sYBiABKAsyJS5saXZla2l0LnByb3RvLlVu", + "cHVibGlzaFRyYWNrUmVzcG9uc2VIABI6CgxwdWJsaXNoX2RhdGEYByABKAsy", + "Ii5saXZla2l0LnByb3RvLlB1Ymxpc2hEYXRhUmVzcG9uc2VIABI+Cg5zZXRf", + "c3Vic2NyaWJlZBgIIAEoCzIkLmxpdmVraXQucHJvdG8uU2V0U3Vic2NyaWJl", + "ZFJlc3BvbnNlSAASRQoSc2V0X2xvY2FsX21ldGFkYXRhGAkgASgLMicubGl2", + "ZWtpdC5wcm90by5TZXRMb2NhbE1ldGFkYXRhUmVzcG9uc2VIABI9Cg5zZXRf", + "bG9jYWxfbmFtZRgKIAEoCzIjLmxpdmVraXQucHJvdG8uU2V0TG9jYWxOYW1l", + "UmVzcG9uc2VIABJJChRzZXRfbG9jYWxfYXR0cmlidXRlcxgLIAEoCzIpLmxp", + "dmVraXQucHJvdG8uU2V0TG9jYWxBdHRyaWJ1dGVzUmVzcG9uc2VIABJDChFn", + "ZXRfc2Vzc2lvbl9zdGF0cxgMIAEoCzImLmxpdmVraXQucHJvdG8uR2V0U2Vz", + "c2lvblN0YXRzUmVzcG9uc2VIABJMChVwdWJsaXNoX3RyYW5zY3JpcHRpb24Y", + "DSABKAsyKy5saXZla2l0LnByb3RvLlB1Ymxpc2hUcmFuc2NyaXB0aW9uUmVz", + "cG9uc2VIABJBChBwdWJsaXNoX3NpcF9kdG1mGA4gASgLMiUubGl2ZWtpdC5w", + "cm90by5QdWJsaXNoU2lwRHRtZlJlc3BvbnNlSAASRQoSY3JlYXRlX3ZpZGVv", + "X3RyYWNrGA8gASgLMicubGl2ZWtpdC5wcm90by5DcmVhdGVWaWRlb1RyYWNr", + "UmVzcG9uc2VIABJFChJjcmVhdGVfYXVkaW9fdHJhY2sYECABKAsyJy5saXZl", + "a2l0LnByb3RvLkNyZWF0ZUF1ZGlvVHJhY2tSZXNwb25zZUgAEkEKEGxvY2Fs", + "X3RyYWNrX211dGUYESABKAsyJS5saXZla2l0LnByb3RvLkxvY2FsVHJhY2tN", + "dXRlUmVzcG9uc2VIABJHChNlbmFibGVfcmVtb3RlX3RyYWNrGBIgASgLMigu", + "bGl2ZWtpdC5wcm90by5FbmFibGVSZW1vdGVUcmFja1Jlc3BvbnNlSAASNAoJ", + "Z2V0X3N0YXRzGBMgASgLMh8ubGl2ZWtpdC5wcm90by5HZXRTdGF0c1Jlc3Bv", + "bnNlSAASZAoic2V0X3RyYWNrX3N1YnNjcmlwdGlvbl9wZXJtaXNzaW9ucxgv", + "IAEoCzI2LmxpdmVraXQucHJvdG8uU2V0VHJhY2tTdWJzY3JpcHRpb25QZXJt", + "aXNzaW9uc1Jlc3BvbnNlSAASQQoQbmV3X3ZpZGVvX3N0cmVhbRgUIAEoCzIl", + "LmxpdmVraXQucHJvdG8uTmV3VmlkZW9TdHJlYW1SZXNwb25zZUgAEkEKEG5l", + "d192aWRlb19zb3VyY2UYFSABKAsyJS5saXZla2l0LnByb3RvLk5ld1ZpZGVv", + "U291cmNlUmVzcG9uc2VIABJHChNjYXB0dXJlX3ZpZGVvX2ZyYW1lGBYgASgL", + "MigubGl2ZWtpdC5wcm90by5DYXB0dXJlVmlkZW9GcmFtZVJlc3BvbnNlSAAS", + "PAoNdmlkZW9fY29udmVydBgXIAEoCzIjLmxpdmVraXQucHJvdG8uVmlkZW9D", + "b252ZXJ0UmVzcG9uc2VIABJaCh12aWRlb19zdHJlYW1fZnJvbV9wYXJ0aWNp", + "cGFudBgYIAEoCzIxLmxpdmVraXQucHJvdG8uVmlkZW9TdHJlYW1Gcm9tUGFy", + "dGljaXBhbnRSZXNwb25zZUgAEkEKEG5ld19hdWRpb19zdHJlYW0YGSABKAsy", + "JS5saXZla2l0LnByb3RvLk5ld0F1ZGlvU3RyZWFtUmVzcG9uc2VIABJBChBu", + "ZXdfYXVkaW9fc291cmNlGBogASgLMiUubGl2ZWtpdC5wcm90by5OZXdBdWRp", + "b1NvdXJjZVJlc3BvbnNlSAASRwoTY2FwdHVyZV9hdWRpb19mcmFtZRgbIAEo", + "CzIoLmxpdmVraXQucHJvdG8uQ2FwdHVyZUF1ZGlvRnJhbWVSZXNwb25zZUgA", + "EkUKEmNsZWFyX2F1ZGlvX2J1ZmZlchgcIAEoCzInLmxpdmVraXQucHJvdG8u", + "Q2xlYXJBdWRpb0J1ZmZlclJlc3BvbnNlSAASRwoTbmV3X2F1ZGlvX3Jlc2Ft", + "cGxlchgdIAEoCzIoLmxpdmVraXQucHJvdG8uTmV3QXVkaW9SZXNhbXBsZXJS", + "ZXNwb25zZUgAEkUKEnJlbWl4X2FuZF9yZXNhbXBsZRgeIAEoCzInLmxpdmVr", + "aXQucHJvdG8uUmVtaXhBbmRSZXNhbXBsZVJlc3BvbnNlSAASWgodYXVkaW9f", + "c3RyZWFtX2Zyb21fcGFydGljaXBhbnQYHyABKAsyMS5saXZla2l0LnByb3Rv", + "LkF1ZGlvU3RyZWFtRnJvbVBhcnRpY2lwYW50UmVzcG9uc2VIABIrCgRlMmVl", + "GCAgASgLMhsubGl2ZWtpdC5wcm90by5FMmVlUmVzcG9uc2VIABJDChFuZXdf", + "c294X3Jlc2FtcGxlchghIAEoCzImLmxpdmVraXQucHJvdG8uTmV3U294UmVz", + "YW1wbGVyUmVzcG9uc2VIABJFChJwdXNoX3NveF9yZXNhbXBsZXIYIiABKAsy", + "Jy5saXZla2l0LnByb3RvLlB1c2hTb3hSZXNhbXBsZXJSZXNwb25zZUgAEkcK", + "E2ZsdXNoX3NveF9yZXNhbXBsZXIYIyABKAsyKC5saXZla2l0LnByb3RvLkZs", + "dXNoU294UmVzYW1wbGVyUmVzcG9uc2VIABJDChFzZW5kX2NoYXRfbWVzc2Fn", + "ZRgkIAEoCzImLmxpdmVraXQucHJvdG8uU2VuZENoYXRNZXNzYWdlUmVzcG9u", + "c2VIABI4CgtwZXJmb3JtX3JwYxglIAEoCzIhLmxpdmVraXQucHJvdG8uUGVy", + "Zm9ybVJwY1Jlc3BvbnNlSAASRwoTcmVnaXN0ZXJfcnBjX21ldGhvZBgmIAEo", + "CzIoLmxpdmVraXQucHJvdG8uUmVnaXN0ZXJScGNNZXRob2RSZXNwb25zZUgA", + "EksKFXVucmVnaXN0ZXJfcnBjX21ldGhvZBgnIAEoCzIqLmxpdmVraXQucHJv", + "dG8uVW5yZWdpc3RlclJwY01ldGhvZFJlc3BvbnNlSAASXAoecnBjX21ldGhv", + "ZF9pbnZvY2F0aW9uX3Jlc3BvbnNlGCggASgLMjIubGl2ZWtpdC5wcm90by5S", + "cGNNZXRob2RJbnZvY2F0aW9uUmVzcG9uc2VSZXNwb25zZUgAEl4KH2VuYWJs", + "ZV9yZW1vdGVfdHJhY2tfcHVibGljYXRpb24YKSABKAsyMy5saXZla2l0LnBy", + "b3RvLkVuYWJsZVJlbW90ZVRyYWNrUHVibGljYXRpb25SZXNwb25zZUgAEnEK", + "KXVwZGF0ZV9yZW1vdGVfdHJhY2tfcHVibGljYXRpb25fZGltZW5zaW9uGCog", + "ASgLMjwubGl2ZWtpdC5wcm90by5VcGRhdGVSZW1vdGVUcmFja1B1YmxpY2F0", + "aW9uRGltZW5zaW9uUmVzcG9uc2VIABJFChJzZW5kX3N0cmVhbV9oZWFkZXIY", + "KyABKAsyJy5saXZla2l0LnByb3RvLlNlbmRTdHJlYW1IZWFkZXJSZXNwb25z", + "ZUgAEkMKEXNlbmRfc3RyZWFtX2NodW5rGCwgASgLMiYubGl2ZWtpdC5wcm90", + "by5TZW5kU3RyZWFtQ2h1bmtSZXNwb25zZUgAEkcKE3NlbmRfc3RyZWFtX3Ry", + "YWlsZXIYLSABKAsyKC5saXZla2l0LnByb3RvLlNlbmRTdHJlYW1UcmFpbGVy", + "UmVzcG9uc2VIABJ5Ci5zZXRfZGF0YV9jaGFubmVsX2J1ZmZlcmVkX2Ftb3Vu", + "dF9sb3dfdGhyZXNob2xkGC4gASgLMj8ubGl2ZWtpdC5wcm90by5TZXREYXRh", + "Q2hhbm5lbEJ1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkUmVzcG9uc2VIABJQ", + "Chhsb2FkX2F1ZGlvX2ZpbHRlcl9wbHVnaW4YMCABKAsyLC5saXZla2l0LnBy", + "b3RvLkxvYWRBdWRpb0ZpbHRlclBsdWdpblJlc3BvbnNlSAASMAoHbmV3X2Fw", + "bRgxIAEoCzIdLmxpdmVraXQucHJvdG8uTmV3QXBtUmVzcG9uc2VIABJFChJh", + "cG1fcHJvY2Vzc19zdHJlYW0YMiABKAsyJy5saXZla2l0LnByb3RvLkFwbVBy", + "b2Nlc3NTdHJlYW1SZXNwb25zZUgAElQKGmFwbV9wcm9jZXNzX3JldmVyc2Vf", + "c3RyZWFtGDMgASgLMi4ubGl2ZWtpdC5wcm90by5BcG1Qcm9jZXNzUmV2ZXJz", + "ZVN0cmVhbVJlc3BvbnNlSAASSAoUYXBtX3NldF9zdHJlYW1fZGVsYXkYNCAB", + "KAsyKC5saXZla2l0LnByb3RvLkFwbVNldFN0cmVhbURlbGF5UmVzcG9uc2VI", + "ABJXChVieXRlX3JlYWRfaW5jcmVtZW50YWwYNSABKAsyNi5saXZla2l0LnBy", + "b3RvLkJ5dGVTdHJlYW1SZWFkZXJSZWFkSW5jcmVtZW50YWxSZXNwb25zZUgA", + "EkcKDWJ5dGVfcmVhZF9hbGwYNiABKAsyLi5saXZla2l0LnByb3RvLkJ5dGVT", + "dHJlYW1SZWFkZXJSZWFkQWxsUmVzcG9uc2VIABJQChJieXRlX3dyaXRlX3Rv", + "X2ZpbGUYNyABKAsyMi5saXZla2l0LnByb3RvLkJ5dGVTdHJlYW1SZWFkZXJX", + "cml0ZVRvRmlsZVJlc3BvbnNlSAASVwoVdGV4dF9yZWFkX2luY3JlbWVudGFs", + "GDggASgLMjYubGl2ZWtpdC5wcm90by5UZXh0U3RyZWFtUmVhZGVyUmVhZElu", + "Y3JlbWVudGFsUmVzcG9uc2VIABJHCg10ZXh0X3JlYWRfYWxsGDkgASgLMi4u", + "bGl2ZWtpdC5wcm90by5UZXh0U3RyZWFtUmVhZGVyUmVhZEFsbFJlc3BvbnNl", + "SAASOgoJc2VuZF9maWxlGDogASgLMiUubGl2ZWtpdC5wcm90by5TdHJlYW1T", + "ZW5kRmlsZVJlc3BvbnNlSAASOgoJc2VuZF90ZXh0GDsgASgLMiUubGl2ZWtp", + "dC5wcm90by5TdHJlYW1TZW5kVGV4dFJlc3BvbnNlSAASQQoQYnl0ZV9zdHJl", + "YW1fb3Blbhg8IAEoCzIlLmxpdmVraXQucHJvdG8uQnl0ZVN0cmVhbU9wZW5S", + "ZXNwb25zZUgAEkkKEWJ5dGVfc3RyZWFtX3dyaXRlGD0gASgLMiwubGl2ZWtp", + "dC5wcm90by5CeXRlU3RyZWFtV3JpdGVyV3JpdGVSZXNwb25zZUgAEkkKEWJ5", + "dGVfc3RyZWFtX2Nsb3NlGD4gASgLMiwubGl2ZWtpdC5wcm90by5CeXRlU3Ry", + "ZWFtV3JpdGVyQ2xvc2VSZXNwb25zZUgAEkEKEHRleHRfc3RyZWFtX29wZW4Y", + "PyABKAsyJS5saXZla2l0LnByb3RvLlRleHRTdHJlYW1PcGVuUmVzcG9uc2VI", + "ABJJChF0ZXh0X3N0cmVhbV93cml0ZRhAIAEoCzIsLmxpdmVraXQucHJvdG8u", + "VGV4dFN0cmVhbVdyaXRlcldyaXRlUmVzcG9uc2VIABJJChF0ZXh0X3N0cmVh", + "bV9jbG9zZRhBIAEoCzIsLmxpdmVraXQucHJvdG8uVGV4dFN0cmVhbVdyaXRl", + "ckNsb3NlUmVzcG9uc2VIABI8CgpzZW5kX2J5dGVzGEIgASgLMiYubGl2ZWtp", + "dC5wcm90by5TdHJlYW1TZW5kQnl0ZXNSZXNwb25zZUgAEmcKJHNldF9yZW1v", + "dGVfdHJhY2tfcHVibGljYXRpb25fcXVhbGl0eRhDIAEoCzI3LmxpdmVraXQu", + "cHJvdG8uU2V0UmVtb3RlVHJhY2tQdWJsaWNhdGlvblF1YWxpdHlSZXNwb25z", + "ZUgAEkUKEnB1Ymxpc2hfZGF0YV90cmFjaxhEIAEoCzInLmxpdmVraXQucHJv", + "dG8uUHVibGlzaERhdGFUcmFja1Jlc3BvbnNlSAASUQoZbG9jYWxfZGF0YV90", + "cmFja190cnlfcHVzaBhFIAEoCzIsLmxpdmVraXQucHJvdG8uTG9jYWxEYXRh", + "VHJhY2tUcnlQdXNoUmVzcG9uc2VIABJUChpsb2NhbF9kYXRhX3RyYWNrX3Vu", + "cHVibGlzaBhGIAEoCzIuLmxpdmVraXQucHJvdG8uTG9jYWxEYXRhVHJhY2tV", + "bnB1Ymxpc2hSZXNwb25zZUgAElkKHWxvY2FsX2RhdGFfdHJhY2tfaXNfcHVi", + "bGlzaGVkGEcgASgLMjAubGl2ZWtpdC5wcm90by5Mb2NhbERhdGFUcmFja0lz", + "UHVibGlzaGVkUmVzcG9uc2VIABJJChRzdWJzY3JpYmVfZGF0YV90cmFjaxhI", + "IAEoCzIpLmxpdmVraXQucHJvdG8uU3Vic2NyaWJlRGF0YVRyYWNrUmVzcG9u", + "c2VIABJbCh5yZW1vdGVfZGF0YV90cmFja19pc19wdWJsaXNoZWQYSSABKAsy", + "MS5saXZla2l0LnByb3RvLlJlbW90ZURhdGFUcmFja0lzUHVibGlzaGVkUmVz", + "cG9uc2VIABJMChZkYXRhX3RyYWNrX3N0cmVhbV9yZWFkGEogASgLMioubGl2", + "ZWtpdC5wcm90by5EYXRhVHJhY2tTdHJlYW1SZWFkUmVzcG9uc2VIABJEChFz", + "aW11bGF0ZV9zY2VuYXJpbxhLIAEoCzInLmxpdmVraXQucHJvdG8uU2ltdWxh", + "dGVTY2VuYXJpb1Jlc3BvbnNlSAASRQoSbmV3X3BsYXRmb3JtX2F1ZGlvGEwg", + "ASgLMicubGl2ZWtpdC5wcm90by5OZXdQbGF0Zm9ybUF1ZGlvUmVzcG9uc2VI", + "ABJDChFnZXRfYXVkaW9fZGV2aWNlcxhNIAEoCzImLmxpdmVraXQucHJvdG8u", + "R2V0QXVkaW9EZXZpY2VzUmVzcG9uc2VIABJJChRzZXRfcmVjb3JkaW5nX2Rl", + "dmljZRhOIAEoCzIpLmxpdmVraXQucHJvdG8uU2V0UmVjb3JkaW5nRGV2aWNl", + "UmVzcG9uc2VIABJFChJzZXRfcGxheW91dF9kZXZpY2UYTyABKAsyJy5saXZl", + "a2l0LnByb3RvLlNldFBsYXlvdXREZXZpY2VSZXNwb25zZUgAEkAKD3N0YXJ0", + "X3JlY29yZGluZxhQIAEoCzIlLmxpdmVraXQucHJvdG8uU3RhcnRSZWNvcmRp", + "bmdSZXNwb25zZUgAEj4KDnN0b3BfcmVjb3JkaW5nGFEgASgLMiQubGl2ZWtp", + "dC5wcm90by5TdG9wUmVjb3JkaW5nUmVzcG9uc2VIAEIJCgdtZXNzYWdlItoW", + "CghGZmlFdmVudBIuCgpyb29tX2V2ZW50GAEgASgLMhgubGl2ZWtpdC5wcm90", + "by5Sb29tRXZlbnRIABIwCgt0cmFja19ldmVudBgCIAEoCzIZLmxpdmVraXQu", + "cHJvdG8uVHJhY2tFdmVudEgAEj0KEnZpZGVvX3N0cmVhbV9ldmVudBgDIAEo", + "CzIfLmxpdmVraXQucHJvdG8uVmlkZW9TdHJlYW1FdmVudEgAEj0KEmF1ZGlv", + "X3N0cmVhbV9ldmVudBgEIAEoCzIfLmxpdmVraXQucHJvdG8uQXVkaW9TdHJl", + "YW1FdmVudEgAEjEKB2Nvbm5lY3QYBSABKAsyHi5saXZla2l0LnByb3RvLkNv", + "bm5lY3RDYWxsYmFja0gAEjcKCmRpc2Nvbm5lY3QYByABKAsyIS5saXZla2l0", + "LnByb3RvLkRpc2Nvbm5lY3RDYWxsYmFja0gAEjEKB2Rpc3Bvc2UYCCABKAsy", + "Hi5saXZla2l0LnByb3RvLkRpc3Bvc2VDYWxsYmFja0gAEjwKDXB1Ymxpc2hf", + "dHJhY2sYCSABKAsyIy5saXZla2l0LnByb3RvLlB1Ymxpc2hUcmFja0NhbGxi", + "YWNrSAASQAoPdW5wdWJsaXNoX3RyYWNrGAogASgLMiUubGl2ZWtpdC5wcm90", + "by5VbnB1Ymxpc2hUcmFja0NhbGxiYWNrSAASOgoMcHVibGlzaF9kYXRhGAsg", + "ASgLMiIubGl2ZWtpdC5wcm90by5QdWJsaXNoRGF0YUNhbGxiYWNrSAASTAoV", + "cHVibGlzaF90cmFuc2NyaXB0aW9uGAwgASgLMisubGl2ZWtpdC5wcm90by5Q", + "dWJsaXNoVHJhbnNjcmlwdGlvbkNhbGxiYWNrSAASRwoTY2FwdHVyZV9hdWRp", + "b19mcmFtZRgNIAEoCzIoLmxpdmVraXQucHJvdG8uQ2FwdHVyZUF1ZGlvRnJh", + "bWVDYWxsYmFja0gAEkUKEnNldF9sb2NhbF9tZXRhZGF0YRgOIAEoCzInLmxp", + "dmVraXQucHJvdG8uU2V0TG9jYWxNZXRhZGF0YUNhbGxiYWNrSAASPQoOc2V0", + "X2xvY2FsX25hbWUYDyABKAsyIy5saXZla2l0LnByb3RvLlNldExvY2FsTmFt", + "ZUNhbGxiYWNrSAASSQoUc2V0X2xvY2FsX2F0dHJpYnV0ZXMYECABKAsyKS5s", + "aXZla2l0LnByb3RvLlNldExvY2FsQXR0cmlidXRlc0NhbGxiYWNrSAASNAoJ", + "Z2V0X3N0YXRzGBEgASgLMh8ubGl2ZWtpdC5wcm90by5HZXRTdGF0c0NhbGxi", + "YWNrSAASJwoEbG9ncxgSIAEoCzIXLmxpdmVraXQucHJvdG8uTG9nQmF0Y2hI", + "ABJDChFnZXRfc2Vzc2lvbl9zdGF0cxgTIAEoCzImLmxpdmVraXQucHJvdG8u", + "R2V0U2Vzc2lvblN0YXRzQ2FsbGJhY2tIABIlCgVwYW5pYxgUIAEoCzIULmxp", + "dmVraXQucHJvdG8uUGFuaWNIABJBChBwdWJsaXNoX3NpcF9kdG1mGBUgASgL", + "MiUubGl2ZWtpdC5wcm90by5QdWJsaXNoU2lwRHRtZkNhbGxiYWNrSAASPgoM", + "Y2hhdF9tZXNzYWdlGBYgASgLMiYubGl2ZWtpdC5wcm90by5TZW5kQ2hhdE1l", + "c3NhZ2VDYWxsYmFja0gAEjgKC3BlcmZvcm1fcnBjGBcgASgLMiEubGl2ZWtp", + "dC5wcm90by5QZXJmb3JtUnBjQ2FsbGJhY2tIABJIChVycGNfbWV0aG9kX2lu", + "dm9jYXRpb24YGCABKAsyJy5saXZla2l0LnByb3RvLlJwY01ldGhvZEludm9j", + "YXRpb25FdmVudEgAEkUKEnNlbmRfc3RyZWFtX2hlYWRlchgZIAEoCzInLmxp", + "dmVraXQucHJvdG8uU2VuZFN0cmVhbUhlYWRlckNhbGxiYWNrSAASQwoRc2Vu", + "ZF9zdHJlYW1fY2h1bmsYGiABKAsyJi5saXZla2l0LnByb3RvLlNlbmRTdHJl", + "YW1DaHVua0NhbGxiYWNrSAASRwoTc2VuZF9zdHJlYW1fdHJhaWxlchgbIAEo", + "CzIoLmxpdmVraXQucHJvdG8uU2VuZFN0cmVhbVRyYWlsZXJDYWxsYmFja0gA", + "EkgKGGJ5dGVfc3RyZWFtX3JlYWRlcl9ldmVudBgcIAEoCzIkLmxpdmVraXQu", + "cHJvdG8uQnl0ZVN0cmVhbVJlYWRlckV2ZW50SAASVQobYnl0ZV9zdHJlYW1f", + "cmVhZGVyX3JlYWRfYWxsGB0gASgLMi4ubGl2ZWtpdC5wcm90by5CeXRlU3Ry", + "ZWFtUmVhZGVyUmVhZEFsbENhbGxiYWNrSAASXgogYnl0ZV9zdHJlYW1fcmVh", + "ZGVyX3dyaXRlX3RvX2ZpbGUYHiABKAsyMi5saXZla2l0LnByb3RvLkJ5dGVT", + "dHJlYW1SZWFkZXJXcml0ZVRvRmlsZUNhbGxiYWNrSAASQQoQYnl0ZV9zdHJl", + "YW1fb3BlbhgfIAEoCzIlLmxpdmVraXQucHJvdG8uQnl0ZVN0cmVhbU9wZW5D", + "YWxsYmFja0gAElAKGGJ5dGVfc3RyZWFtX3dyaXRlcl93cml0ZRggIAEoCzIs", + "LmxpdmVraXQucHJvdG8uQnl0ZVN0cmVhbVdyaXRlcldyaXRlQ2FsbGJhY2tI", + "ABJQChhieXRlX3N0cmVhbV93cml0ZXJfY2xvc2UYISABKAsyLC5saXZla2l0", + "LnByb3RvLkJ5dGVTdHJlYW1Xcml0ZXJDbG9zZUNhbGxiYWNrSAASOgoJc2Vu", + "ZF9maWxlGCIgASgLMiUubGl2ZWtpdC5wcm90by5TdHJlYW1TZW5kRmlsZUNh", + "bGxiYWNrSAASSAoYdGV4dF9zdHJlYW1fcmVhZGVyX2V2ZW50GCMgASgLMiQu", + "bGl2ZWtpdC5wcm90by5UZXh0U3RyZWFtUmVhZGVyRXZlbnRIABJVCht0ZXh0", + "X3N0cmVhbV9yZWFkZXJfcmVhZF9hbGwYJCABKAsyLi5saXZla2l0LnByb3Rv", + "LlRleHRTdHJlYW1SZWFkZXJSZWFkQWxsQ2FsbGJhY2tIABJBChB0ZXh0X3N0", + "cmVhbV9vcGVuGCUgASgLMiUubGl2ZWtpdC5wcm90by5UZXh0U3RyZWFtT3Bl", + "bkNhbGxiYWNrSAASUAoYdGV4dF9zdHJlYW1fd3JpdGVyX3dyaXRlGCYgASgL", + "MiwubGl2ZWtpdC5wcm90by5UZXh0U3RyZWFtV3JpdGVyV3JpdGVDYWxsYmFj", + "a0gAElAKGHRleHRfc3RyZWFtX3dyaXRlcl9jbG9zZRgnIAEoCzIsLmxpdmVr", + "aXQucHJvdG8uVGV4dFN0cmVhbVdyaXRlckNsb3NlQ2FsbGJhY2tIABI6Cglz", + "ZW5kX3RleHQYKCABKAsyJS5saXZla2l0LnByb3RvLlN0cmVhbVNlbmRUZXh0", + "Q2FsbGJhY2tIABI8CgpzZW5kX2J5dGVzGCkgASgLMiYubGl2ZWtpdC5wcm90", + "by5TdHJlYW1TZW5kQnl0ZXNDYWxsYmFja0gAEkUKEnB1Ymxpc2hfZGF0YV90", + "cmFjaxgqIAEoCzInLmxpdmVraXQucHJvdG8uUHVibGlzaERhdGFUcmFja0Nh", + "bGxiYWNrSAASRgoXZGF0YV90cmFja19zdHJlYW1fZXZlbnQYKyABKAsyIy5s", + "aXZla2l0LnByb3RvLkRhdGFUcmFja1N0cmVhbUV2ZW50SAASRAoRc2ltdWxh", + "dGVfc2NlbmFyaW8YLCABKAsyJy5saXZla2l0LnByb3RvLlNpbXVsYXRlU2Nl", + "bmFyaW9DYWxsYmFja0gAQgkKB21lc3NhZ2UiHwoORGlzcG9zZVJlcXVlc3QS", "DQoFYXN5bmMYASACKAgiIwoPRGlzcG9zZVJlc3BvbnNlEhAKCGFzeW5jX2lk", "GAEgASgEIiMKD0Rpc3Bvc2VDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBCKF", "AQoJTG9nUmVjb3JkEiYKBWxldmVsGAEgAigOMhcubGl2ZWtpdC5wcm90by5M", @@ -345,9 +368,9 @@ static FfiReflection() { descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::LiveKit.Proto.E2EeReflection.Descriptor, global::LiveKit.Proto.TrackReflection.Descriptor, global::LiveKit.Proto.TrackPublicationReflection.Descriptor, global::LiveKit.Proto.RoomReflection.Descriptor, global::LiveKit.Proto.VideoFrameReflection.Descriptor, global::LiveKit.Proto.AudioFrameReflection.Descriptor, global::LiveKit.Proto.RpcReflection.Descriptor, global::LiveKit.Proto.DataStreamReflection.Descriptor, global::LiveKit.Proto.DataTrackReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::LiveKit.Proto.LogLevel), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FfiRequest), global::LiveKit.Proto.FfiRequest.Parser, new[]{ "Dispose", "Connect", "Disconnect", "PublishTrack", "UnpublishTrack", "PublishData", "SetSubscribed", "SetLocalMetadata", "SetLocalName", "SetLocalAttributes", "GetSessionStats", "PublishTranscription", "PublishSipDtmf", "CreateVideoTrack", "CreateAudioTrack", "LocalTrackMute", "EnableRemoteTrack", "GetStats", "SetTrackSubscriptionPermissions", "NewVideoStream", "NewVideoSource", "CaptureVideoFrame", "VideoConvert", "VideoStreamFromParticipant", "NewAudioStream", "NewAudioSource", "CaptureAudioFrame", "ClearAudioBuffer", "NewAudioResampler", "RemixAndResample", "E2Ee", "AudioStreamFromParticipant", "NewSoxResampler", "PushSoxResampler", "FlushSoxResampler", "SendChatMessage", "EditChatMessage", "PerformRpc", "RegisterRpcMethod", "UnregisterRpcMethod", "RpcMethodInvocationResponse", "EnableRemoteTrackPublication", "UpdateRemoteTrackPublicationDimension", "SendStreamHeader", "SendStreamChunk", "SendStreamTrailer", "SetDataChannelBufferedAmountLowThreshold", "LoadAudioFilterPlugin", "NewApm", "ApmProcessStream", "ApmProcessReverseStream", "ApmSetStreamDelay", "ByteReadIncremental", "ByteReadAll", "ByteWriteToFile", "TextReadIncremental", "TextReadAll", "SendFile", "SendText", "ByteStreamOpen", "ByteStreamWrite", "ByteStreamClose", "TextStreamOpen", "TextStreamWrite", "TextStreamClose", "SendBytes", "SetRemoteTrackPublicationQuality", "PublishDataTrack", "LocalDataTrackTryPush", "LocalDataTrackUnpublish", "LocalDataTrackIsPublished", "SubscribeDataTrack", "RemoteDataTrackIsPublished", "DataTrackStreamRead" }, new[]{ "Message" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FfiResponse), global::LiveKit.Proto.FfiResponse.Parser, new[]{ "Dispose", "Connect", "Disconnect", "PublishTrack", "UnpublishTrack", "PublishData", "SetSubscribed", "SetLocalMetadata", "SetLocalName", "SetLocalAttributes", "GetSessionStats", "PublishTranscription", "PublishSipDtmf", "CreateVideoTrack", "CreateAudioTrack", "LocalTrackMute", "EnableRemoteTrack", "GetStats", "SetTrackSubscriptionPermissions", "NewVideoStream", "NewVideoSource", "CaptureVideoFrame", "VideoConvert", "VideoStreamFromParticipant", "NewAudioStream", "NewAudioSource", "CaptureAudioFrame", "ClearAudioBuffer", "NewAudioResampler", "RemixAndResample", "AudioStreamFromParticipant", "E2Ee", "NewSoxResampler", "PushSoxResampler", "FlushSoxResampler", "SendChatMessage", "PerformRpc", "RegisterRpcMethod", "UnregisterRpcMethod", "RpcMethodInvocationResponse", "EnableRemoteTrackPublication", "UpdateRemoteTrackPublicationDimension", "SendStreamHeader", "SendStreamChunk", "SendStreamTrailer", "SetDataChannelBufferedAmountLowThreshold", "LoadAudioFilterPlugin", "NewApm", "ApmProcessStream", "ApmProcessReverseStream", "ApmSetStreamDelay", "ByteReadIncremental", "ByteReadAll", "ByteWriteToFile", "TextReadIncremental", "TextReadAll", "SendFile", "SendText", "ByteStreamOpen", "ByteStreamWrite", "ByteStreamClose", "TextStreamOpen", "TextStreamWrite", "TextStreamClose", "SendBytes", "SetRemoteTrackPublicationQuality", "PublishDataTrack", "LocalDataTrackTryPush", "LocalDataTrackUnpublish", "LocalDataTrackIsPublished", "SubscribeDataTrack", "RemoteDataTrackIsPublished", "DataTrackStreamRead" }, new[]{ "Message" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FfiEvent), global::LiveKit.Proto.FfiEvent.Parser, new[]{ "RoomEvent", "TrackEvent", "VideoStreamEvent", "AudioStreamEvent", "Connect", "Disconnect", "Dispose", "PublishTrack", "UnpublishTrack", "PublishData", "PublishTranscription", "CaptureAudioFrame", "SetLocalMetadata", "SetLocalName", "SetLocalAttributes", "GetStats", "Logs", "GetSessionStats", "Panic", "PublishSipDtmf", "ChatMessage", "PerformRpc", "RpcMethodInvocation", "SendStreamHeader", "SendStreamChunk", "SendStreamTrailer", "ByteStreamReaderEvent", "ByteStreamReaderReadAll", "ByteStreamReaderWriteToFile", "ByteStreamOpen", "ByteStreamWriterWrite", "ByteStreamWriterClose", "SendFile", "TextStreamReaderEvent", "TextStreamReaderReadAll", "TextStreamOpen", "TextStreamWriterWrite", "TextStreamWriterClose", "SendText", "SendBytes", "PublishDataTrack", "DataTrackStreamEvent" }, new[]{ "Message" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FfiRequest), global::LiveKit.Proto.FfiRequest.Parser, new[]{ "Dispose", "Connect", "Disconnect", "PublishTrack", "UnpublishTrack", "PublishData", "SetSubscribed", "SetLocalMetadata", "SetLocalName", "SetLocalAttributes", "GetSessionStats", "PublishTranscription", "PublishSipDtmf", "CreateVideoTrack", "CreateAudioTrack", "LocalTrackMute", "EnableRemoteTrack", "GetStats", "SetTrackSubscriptionPermissions", "NewVideoStream", "NewVideoSource", "CaptureVideoFrame", "VideoConvert", "VideoStreamFromParticipant", "NewAudioStream", "NewAudioSource", "CaptureAudioFrame", "ClearAudioBuffer", "NewAudioResampler", "RemixAndResample", "E2Ee", "AudioStreamFromParticipant", "NewSoxResampler", "PushSoxResampler", "FlushSoxResampler", "SendChatMessage", "EditChatMessage", "PerformRpc", "RegisterRpcMethod", "UnregisterRpcMethod", "RpcMethodInvocationResponse", "EnableRemoteTrackPublication", "UpdateRemoteTrackPublicationDimension", "SendStreamHeader", "SendStreamChunk", "SendStreamTrailer", "SetDataChannelBufferedAmountLowThreshold", "LoadAudioFilterPlugin", "NewApm", "ApmProcessStream", "ApmProcessReverseStream", "ApmSetStreamDelay", "ByteReadIncremental", "ByteReadAll", "ByteWriteToFile", "TextReadIncremental", "TextReadAll", "SendFile", "SendText", "ByteStreamOpen", "ByteStreamWrite", "ByteStreamClose", "TextStreamOpen", "TextStreamWrite", "TextStreamClose", "SendBytes", "SetRemoteTrackPublicationQuality", "PublishDataTrack", "LocalDataTrackTryPush", "LocalDataTrackUnpublish", "LocalDataTrackIsPublished", "SubscribeDataTrack", "RemoteDataTrackIsPublished", "DataTrackStreamRead", "SimulateScenario", "NewPlatformAudio", "GetAudioDevices", "SetRecordingDevice", "SetPlayoutDevice", "StartRecording", "StopRecording" }, new[]{ "Message" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FfiResponse), global::LiveKit.Proto.FfiResponse.Parser, new[]{ "Dispose", "Connect", "Disconnect", "PublishTrack", "UnpublishTrack", "PublishData", "SetSubscribed", "SetLocalMetadata", "SetLocalName", "SetLocalAttributes", "GetSessionStats", "PublishTranscription", "PublishSipDtmf", "CreateVideoTrack", "CreateAudioTrack", "LocalTrackMute", "EnableRemoteTrack", "GetStats", "SetTrackSubscriptionPermissions", "NewVideoStream", "NewVideoSource", "CaptureVideoFrame", "VideoConvert", "VideoStreamFromParticipant", "NewAudioStream", "NewAudioSource", "CaptureAudioFrame", "ClearAudioBuffer", "NewAudioResampler", "RemixAndResample", "AudioStreamFromParticipant", "E2Ee", "NewSoxResampler", "PushSoxResampler", "FlushSoxResampler", "SendChatMessage", "PerformRpc", "RegisterRpcMethod", "UnregisterRpcMethod", "RpcMethodInvocationResponse", "EnableRemoteTrackPublication", "UpdateRemoteTrackPublicationDimension", "SendStreamHeader", "SendStreamChunk", "SendStreamTrailer", "SetDataChannelBufferedAmountLowThreshold", "LoadAudioFilterPlugin", "NewApm", "ApmProcessStream", "ApmProcessReverseStream", "ApmSetStreamDelay", "ByteReadIncremental", "ByteReadAll", "ByteWriteToFile", "TextReadIncremental", "TextReadAll", "SendFile", "SendText", "ByteStreamOpen", "ByteStreamWrite", "ByteStreamClose", "TextStreamOpen", "TextStreamWrite", "TextStreamClose", "SendBytes", "SetRemoteTrackPublicationQuality", "PublishDataTrack", "LocalDataTrackTryPush", "LocalDataTrackUnpublish", "LocalDataTrackIsPublished", "SubscribeDataTrack", "RemoteDataTrackIsPublished", "DataTrackStreamRead", "SimulateScenario", "NewPlatformAudio", "GetAudioDevices", "SetRecordingDevice", "SetPlayoutDevice", "StartRecording", "StopRecording" }, new[]{ "Message" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FfiEvent), global::LiveKit.Proto.FfiEvent.Parser, new[]{ "RoomEvent", "TrackEvent", "VideoStreamEvent", "AudioStreamEvent", "Connect", "Disconnect", "Dispose", "PublishTrack", "UnpublishTrack", "PublishData", "PublishTranscription", "CaptureAudioFrame", "SetLocalMetadata", "SetLocalName", "SetLocalAttributes", "GetStats", "Logs", "GetSessionStats", "Panic", "PublishSipDtmf", "ChatMessage", "PerformRpc", "RpcMethodInvocation", "SendStreamHeader", "SendStreamChunk", "SendStreamTrailer", "ByteStreamReaderEvent", "ByteStreamReaderReadAll", "ByteStreamReaderWriteToFile", "ByteStreamOpen", "ByteStreamWriterWrite", "ByteStreamWriterClose", "SendFile", "TextStreamReaderEvent", "TextStreamReaderReadAll", "TextStreamOpen", "TextStreamWriterWrite", "TextStreamWriterClose", "SendText", "SendBytes", "PublishDataTrack", "DataTrackStreamEvent", "SimulateScenario" }, new[]{ "Message" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DisposeRequest), global::LiveKit.Proto.DisposeRequest.Parser, new[]{ "Async" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DisposeResponse), global::LiveKit.Proto.DisposeResponse.Parser, new[]{ "AsyncId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DisposeCallback), global::LiveKit.Proto.DisposeCallback.Parser, new[]{ "AsyncId" }, null, null, null, null), @@ -633,6 +656,27 @@ public FfiRequest(FfiRequest other) : this() { case MessageOneofCase.DataTrackStreamRead: DataTrackStreamRead = other.DataTrackStreamRead.Clone(); break; + case MessageOneofCase.SimulateScenario: + SimulateScenario = other.SimulateScenario.Clone(); + break; + case MessageOneofCase.NewPlatformAudio: + NewPlatformAudio = other.NewPlatformAudio.Clone(); + break; + case MessageOneofCase.GetAudioDevices: + GetAudioDevices = other.GetAudioDevices.Clone(); + break; + case MessageOneofCase.SetRecordingDevice: + SetRecordingDevice = other.SetRecordingDevice.Clone(); + break; + case MessageOneofCase.SetPlayoutDevice: + SetPlayoutDevice = other.SetPlayoutDevice.Clone(); + break; + case MessageOneofCase.StartRecording: + StartRecording = other.StartRecording.Clone(); + break; + case MessageOneofCase.StopRecording: + StopRecording = other.StopRecording.Clone(); + break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -1568,6 +1612,96 @@ public FfiRequest Clone() { } } + /// Field number for the "simulate_scenario" field. + public const int SimulateScenarioFieldNumber = 76; + /// + /// Reconnection / chaos testing + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.SimulateScenarioRequest SimulateScenario { + get { return messageCase_ == MessageOneofCase.SimulateScenario ? (global::LiveKit.Proto.SimulateScenarioRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.SimulateScenario; + } + } + + /// Field number for the "new_platform_audio" field. + public const int NewPlatformAudioFieldNumber = 77; + /// + /// Platform Audio (ADM) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.NewPlatformAudioRequest NewPlatformAudio { + get { return messageCase_ == MessageOneofCase.NewPlatformAudio ? (global::LiveKit.Proto.NewPlatformAudioRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.NewPlatformAudio; + } + } + + /// Field number for the "get_audio_devices" field. + public const int GetAudioDevicesFieldNumber = 78; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.GetAudioDevicesRequest GetAudioDevices { + get { return messageCase_ == MessageOneofCase.GetAudioDevices ? (global::LiveKit.Proto.GetAudioDevicesRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.GetAudioDevices; + } + } + + /// Field number for the "set_recording_device" field. + public const int SetRecordingDeviceFieldNumber = 79; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.SetRecordingDeviceRequest SetRecordingDevice { + get { return messageCase_ == MessageOneofCase.SetRecordingDevice ? (global::LiveKit.Proto.SetRecordingDeviceRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.SetRecordingDevice; + } + } + + /// Field number for the "set_playout_device" field. + public const int SetPlayoutDeviceFieldNumber = 80; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.SetPlayoutDeviceRequest SetPlayoutDevice { + get { return messageCase_ == MessageOneofCase.SetPlayoutDevice ? (global::LiveKit.Proto.SetPlayoutDeviceRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.SetPlayoutDevice; + } + } + + /// Field number for the "start_recording" field. + public const int StartRecordingFieldNumber = 81; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.StartRecordingRequest StartRecording { + get { return messageCase_ == MessageOneofCase.StartRecording ? (global::LiveKit.Proto.StartRecordingRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.StartRecording; + } + } + + /// Field number for the "stop_recording" field. + public const int StopRecordingFieldNumber = 82; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.StopRecordingRequest StopRecording { + get { return messageCase_ == MessageOneofCase.StopRecording ? (global::LiveKit.Proto.StopRecordingRequest) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.StopRecording; + } + } + private object message_; /// Enum of possible cases for the "message" oneof. public enum MessageOneofCase { @@ -1646,6 +1780,13 @@ public enum MessageOneofCase { SubscribeDataTrack = 73, RemoteDataTrackIsPublished = 74, DataTrackStreamRead = 75, + SimulateScenario = 76, + NewPlatformAudio = 77, + GetAudioDevices = 78, + SetRecordingDevice = 79, + SetPlayoutDevice = 80, + StartRecording = 81, + StopRecording = 82, } private MessageOneofCase messageCase_ = MessageOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1750,6 +1891,13 @@ public bool Equals(FfiRequest other) { if (!object.Equals(SubscribeDataTrack, other.SubscribeDataTrack)) return false; if (!object.Equals(RemoteDataTrackIsPublished, other.RemoteDataTrackIsPublished)) return false; if (!object.Equals(DataTrackStreamRead, other.DataTrackStreamRead)) return false; + if (!object.Equals(SimulateScenario, other.SimulateScenario)) return false; + if (!object.Equals(NewPlatformAudio, other.NewPlatformAudio)) return false; + if (!object.Equals(GetAudioDevices, other.GetAudioDevices)) return false; + if (!object.Equals(SetRecordingDevice, other.SetRecordingDevice)) return false; + if (!object.Equals(SetPlayoutDevice, other.SetPlayoutDevice)) return false; + if (!object.Equals(StartRecording, other.StartRecording)) return false; + if (!object.Equals(StopRecording, other.StopRecording)) return false; if (MessageCase != other.MessageCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -1832,6 +1980,13 @@ public override int GetHashCode() { if (messageCase_ == MessageOneofCase.SubscribeDataTrack) hash ^= SubscribeDataTrack.GetHashCode(); if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) hash ^= RemoteDataTrackIsPublished.GetHashCode(); if (messageCase_ == MessageOneofCase.DataTrackStreamRead) hash ^= DataTrackStreamRead.GetHashCode(); + if (messageCase_ == MessageOneofCase.SimulateScenario) hash ^= SimulateScenario.GetHashCode(); + if (messageCase_ == MessageOneofCase.NewPlatformAudio) hash ^= NewPlatformAudio.GetHashCode(); + if (messageCase_ == MessageOneofCase.GetAudioDevices) hash ^= GetAudioDevices.GetHashCode(); + if (messageCase_ == MessageOneofCase.SetRecordingDevice) hash ^= SetRecordingDevice.GetHashCode(); + if (messageCase_ == MessageOneofCase.SetPlayoutDevice) hash ^= SetPlayoutDevice.GetHashCode(); + if (messageCase_ == MessageOneofCase.StartRecording) hash ^= StartRecording.GetHashCode(); + if (messageCase_ == MessageOneofCase.StopRecording) hash ^= StopRecording.GetHashCode(); hash ^= (int) messageCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -2147,6 +2302,34 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(218, 4); output.WriteMessage(DataTrackStreamRead); } + if (messageCase_ == MessageOneofCase.SimulateScenario) { + output.WriteRawTag(226, 4); + output.WriteMessage(SimulateScenario); + } + if (messageCase_ == MessageOneofCase.NewPlatformAudio) { + output.WriteRawTag(234, 4); + output.WriteMessage(NewPlatformAudio); + } + if (messageCase_ == MessageOneofCase.GetAudioDevices) { + output.WriteRawTag(242, 4); + output.WriteMessage(GetAudioDevices); + } + if (messageCase_ == MessageOneofCase.SetRecordingDevice) { + output.WriteRawTag(250, 4); + output.WriteMessage(SetRecordingDevice); + } + if (messageCase_ == MessageOneofCase.SetPlayoutDevice) { + output.WriteRawTag(130, 5); + output.WriteMessage(SetPlayoutDevice); + } + if (messageCase_ == MessageOneofCase.StartRecording) { + output.WriteRawTag(138, 5); + output.WriteMessage(StartRecording); + } + if (messageCase_ == MessageOneofCase.StopRecording) { + output.WriteRawTag(146, 5); + output.WriteMessage(StopRecording); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -2453,6 +2636,34 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(218, 4); output.WriteMessage(DataTrackStreamRead); } + if (messageCase_ == MessageOneofCase.SimulateScenario) { + output.WriteRawTag(226, 4); + output.WriteMessage(SimulateScenario); + } + if (messageCase_ == MessageOneofCase.NewPlatformAudio) { + output.WriteRawTag(234, 4); + output.WriteMessage(NewPlatformAudio); + } + if (messageCase_ == MessageOneofCase.GetAudioDevices) { + output.WriteRawTag(242, 4); + output.WriteMessage(GetAudioDevices); + } + if (messageCase_ == MessageOneofCase.SetRecordingDevice) { + output.WriteRawTag(250, 4); + output.WriteMessage(SetRecordingDevice); + } + if (messageCase_ == MessageOneofCase.SetPlayoutDevice) { + output.WriteRawTag(130, 5); + output.WriteMessage(SetPlayoutDevice); + } + if (messageCase_ == MessageOneofCase.StartRecording) { + output.WriteRawTag(138, 5); + output.WriteMessage(StartRecording); + } + if (messageCase_ == MessageOneofCase.StopRecording) { + output.WriteRawTag(146, 5); + output.WriteMessage(StopRecording); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -2685,6 +2896,27 @@ public int CalculateSize() { if (messageCase_ == MessageOneofCase.DataTrackStreamRead) { size += 2 + pb::CodedOutputStream.ComputeMessageSize(DataTrackStreamRead); } + if (messageCase_ == MessageOneofCase.SimulateScenario) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(SimulateScenario); + } + if (messageCase_ == MessageOneofCase.NewPlatformAudio) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(NewPlatformAudio); + } + if (messageCase_ == MessageOneofCase.GetAudioDevices) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(GetAudioDevices); + } + if (messageCase_ == MessageOneofCase.SetRecordingDevice) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(SetRecordingDevice); + } + if (messageCase_ == MessageOneofCase.SetPlayoutDevice) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(SetPlayoutDevice); + } + if (messageCase_ == MessageOneofCase.StartRecording) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(StartRecording); + } + if (messageCase_ == MessageOneofCase.StopRecording) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(StopRecording); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -3142,6 +3374,48 @@ public void MergeFrom(FfiRequest other) { } DataTrackStreamRead.MergeFrom(other.DataTrackStreamRead); break; + case MessageOneofCase.SimulateScenario: + if (SimulateScenario == null) { + SimulateScenario = new global::LiveKit.Proto.SimulateScenarioRequest(); + } + SimulateScenario.MergeFrom(other.SimulateScenario); + break; + case MessageOneofCase.NewPlatformAudio: + if (NewPlatformAudio == null) { + NewPlatformAudio = new global::LiveKit.Proto.NewPlatformAudioRequest(); + } + NewPlatformAudio.MergeFrom(other.NewPlatformAudio); + break; + case MessageOneofCase.GetAudioDevices: + if (GetAudioDevices == null) { + GetAudioDevices = new global::LiveKit.Proto.GetAudioDevicesRequest(); + } + GetAudioDevices.MergeFrom(other.GetAudioDevices); + break; + case MessageOneofCase.SetRecordingDevice: + if (SetRecordingDevice == null) { + SetRecordingDevice = new global::LiveKit.Proto.SetRecordingDeviceRequest(); + } + SetRecordingDevice.MergeFrom(other.SetRecordingDevice); + break; + case MessageOneofCase.SetPlayoutDevice: + if (SetPlayoutDevice == null) { + SetPlayoutDevice = new global::LiveKit.Proto.SetPlayoutDeviceRequest(); + } + SetPlayoutDevice.MergeFrom(other.SetPlayoutDevice); + break; + case MessageOneofCase.StartRecording: + if (StartRecording == null) { + StartRecording = new global::LiveKit.Proto.StartRecordingRequest(); + } + StartRecording.MergeFrom(other.StartRecording); + break; + case MessageOneofCase.StopRecording: + if (StopRecording == null) { + StopRecording = new global::LiveKit.Proto.StopRecordingRequest(); + } + StopRecording.MergeFrom(other.StopRecording); + break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); @@ -3829,6 +4103,69 @@ public void MergeFrom(pb::CodedInputStream input) { DataTrackStreamRead = subBuilder; break; } + case 610: { + global::LiveKit.Proto.SimulateScenarioRequest subBuilder = new global::LiveKit.Proto.SimulateScenarioRequest(); + if (messageCase_ == MessageOneofCase.SimulateScenario) { + subBuilder.MergeFrom(SimulateScenario); + } + input.ReadMessage(subBuilder); + SimulateScenario = subBuilder; + break; + } + case 618: { + global::LiveKit.Proto.NewPlatformAudioRequest subBuilder = new global::LiveKit.Proto.NewPlatformAudioRequest(); + if (messageCase_ == MessageOneofCase.NewPlatformAudio) { + subBuilder.MergeFrom(NewPlatformAudio); + } + input.ReadMessage(subBuilder); + NewPlatformAudio = subBuilder; + break; + } + case 626: { + global::LiveKit.Proto.GetAudioDevicesRequest subBuilder = new global::LiveKit.Proto.GetAudioDevicesRequest(); + if (messageCase_ == MessageOneofCase.GetAudioDevices) { + subBuilder.MergeFrom(GetAudioDevices); + } + input.ReadMessage(subBuilder); + GetAudioDevices = subBuilder; + break; + } + case 634: { + global::LiveKit.Proto.SetRecordingDeviceRequest subBuilder = new global::LiveKit.Proto.SetRecordingDeviceRequest(); + if (messageCase_ == MessageOneofCase.SetRecordingDevice) { + subBuilder.MergeFrom(SetRecordingDevice); + } + input.ReadMessage(subBuilder); + SetRecordingDevice = subBuilder; + break; + } + case 642: { + global::LiveKit.Proto.SetPlayoutDeviceRequest subBuilder = new global::LiveKit.Proto.SetPlayoutDeviceRequest(); + if (messageCase_ == MessageOneofCase.SetPlayoutDevice) { + subBuilder.MergeFrom(SetPlayoutDevice); + } + input.ReadMessage(subBuilder); + SetPlayoutDevice = subBuilder; + break; + } + case 650: { + global::LiveKit.Proto.StartRecordingRequest subBuilder = new global::LiveKit.Proto.StartRecordingRequest(); + if (messageCase_ == MessageOneofCase.StartRecording) { + subBuilder.MergeFrom(StartRecording); + } + input.ReadMessage(subBuilder); + StartRecording = subBuilder; + break; + } + case 658: { + global::LiveKit.Proto.StopRecordingRequest subBuilder = new global::LiveKit.Proto.StopRecordingRequest(); + if (messageCase_ == MessageOneofCase.StopRecording) { + subBuilder.MergeFrom(StopRecording); + } + input.ReadMessage(subBuilder); + StopRecording = subBuilder; + break; + } } } #endif @@ -4514,6 +4851,69 @@ public void MergeFrom(pb::CodedInputStream input) { DataTrackStreamRead = subBuilder; break; } + case 610: { + global::LiveKit.Proto.SimulateScenarioRequest subBuilder = new global::LiveKit.Proto.SimulateScenarioRequest(); + if (messageCase_ == MessageOneofCase.SimulateScenario) { + subBuilder.MergeFrom(SimulateScenario); + } + input.ReadMessage(subBuilder); + SimulateScenario = subBuilder; + break; + } + case 618: { + global::LiveKit.Proto.NewPlatformAudioRequest subBuilder = new global::LiveKit.Proto.NewPlatformAudioRequest(); + if (messageCase_ == MessageOneofCase.NewPlatformAudio) { + subBuilder.MergeFrom(NewPlatformAudio); + } + input.ReadMessage(subBuilder); + NewPlatformAudio = subBuilder; + break; + } + case 626: { + global::LiveKit.Proto.GetAudioDevicesRequest subBuilder = new global::LiveKit.Proto.GetAudioDevicesRequest(); + if (messageCase_ == MessageOneofCase.GetAudioDevices) { + subBuilder.MergeFrom(GetAudioDevices); + } + input.ReadMessage(subBuilder); + GetAudioDevices = subBuilder; + break; + } + case 634: { + global::LiveKit.Proto.SetRecordingDeviceRequest subBuilder = new global::LiveKit.Proto.SetRecordingDeviceRequest(); + if (messageCase_ == MessageOneofCase.SetRecordingDevice) { + subBuilder.MergeFrom(SetRecordingDevice); + } + input.ReadMessage(subBuilder); + SetRecordingDevice = subBuilder; + break; + } + case 642: { + global::LiveKit.Proto.SetPlayoutDeviceRequest subBuilder = new global::LiveKit.Proto.SetPlayoutDeviceRequest(); + if (messageCase_ == MessageOneofCase.SetPlayoutDevice) { + subBuilder.MergeFrom(SetPlayoutDevice); + } + input.ReadMessage(subBuilder); + SetPlayoutDevice = subBuilder; + break; + } + case 650: { + global::LiveKit.Proto.StartRecordingRequest subBuilder = new global::LiveKit.Proto.StartRecordingRequest(); + if (messageCase_ == MessageOneofCase.StartRecording) { + subBuilder.MergeFrom(StartRecording); + } + input.ReadMessage(subBuilder); + StartRecording = subBuilder; + break; + } + case 658: { + global::LiveKit.Proto.StopRecordingRequest subBuilder = new global::LiveKit.Proto.StopRecordingRequest(); + if (messageCase_ == MessageOneofCase.StopRecording) { + subBuilder.MergeFrom(StopRecording); + } + input.ReadMessage(subBuilder); + StopRecording = subBuilder; + break; + } } } } @@ -4779,6 +5179,27 @@ public FfiResponse(FfiResponse other) : this() { case MessageOneofCase.DataTrackStreamRead: DataTrackStreamRead = other.DataTrackStreamRead.Clone(); break; + case MessageOneofCase.SimulateScenario: + SimulateScenario = other.SimulateScenario.Clone(); + break; + case MessageOneofCase.NewPlatformAudio: + NewPlatformAudio = other.NewPlatformAudio.Clone(); + break; + case MessageOneofCase.GetAudioDevices: + GetAudioDevices = other.GetAudioDevices.Clone(); + break; + case MessageOneofCase.SetRecordingDevice: + SetRecordingDevice = other.SetRecordingDevice.Clone(); + break; + case MessageOneofCase.SetPlayoutDevice: + SetPlayoutDevice = other.SetPlayoutDevice.Clone(); + break; + case MessageOneofCase.StartRecording: + StartRecording = other.StartRecording.Clone(); + break; + case MessageOneofCase.StopRecording: + StopRecording = other.StopRecording.Clone(); + break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -5702,6 +6123,96 @@ public FfiResponse Clone() { } } + /// Field number for the "simulate_scenario" field. + public const int SimulateScenarioFieldNumber = 75; + /// + /// Reconnection / chaos testing + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.SimulateScenarioResponse SimulateScenario { + get { return messageCase_ == MessageOneofCase.SimulateScenario ? (global::LiveKit.Proto.SimulateScenarioResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.SimulateScenario; + } + } + + /// Field number for the "new_platform_audio" field. + public const int NewPlatformAudioFieldNumber = 76; + /// + /// Platform Audio (ADM) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.NewPlatformAudioResponse NewPlatformAudio { + get { return messageCase_ == MessageOneofCase.NewPlatformAudio ? (global::LiveKit.Proto.NewPlatformAudioResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.NewPlatformAudio; + } + } + + /// Field number for the "get_audio_devices" field. + public const int GetAudioDevicesFieldNumber = 77; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.GetAudioDevicesResponse GetAudioDevices { + get { return messageCase_ == MessageOneofCase.GetAudioDevices ? (global::LiveKit.Proto.GetAudioDevicesResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.GetAudioDevices; + } + } + + /// Field number for the "set_recording_device" field. + public const int SetRecordingDeviceFieldNumber = 78; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.SetRecordingDeviceResponse SetRecordingDevice { + get { return messageCase_ == MessageOneofCase.SetRecordingDevice ? (global::LiveKit.Proto.SetRecordingDeviceResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.SetRecordingDevice; + } + } + + /// Field number for the "set_playout_device" field. + public const int SetPlayoutDeviceFieldNumber = 79; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.SetPlayoutDeviceResponse SetPlayoutDevice { + get { return messageCase_ == MessageOneofCase.SetPlayoutDevice ? (global::LiveKit.Proto.SetPlayoutDeviceResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.SetPlayoutDevice; + } + } + + /// Field number for the "start_recording" field. + public const int StartRecordingFieldNumber = 80; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.StartRecordingResponse StartRecording { + get { return messageCase_ == MessageOneofCase.StartRecording ? (global::LiveKit.Proto.StartRecordingResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.StartRecording; + } + } + + /// Field number for the "stop_recording" field. + public const int StopRecordingFieldNumber = 81; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.StopRecordingResponse StopRecording { + get { return messageCase_ == MessageOneofCase.StopRecording ? (global::LiveKit.Proto.StopRecordingResponse) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.StopRecording; + } + } + private object message_; /// Enum of possible cases for the "message" oneof. public enum MessageOneofCase { @@ -5779,6 +6290,13 @@ public enum MessageOneofCase { SubscribeDataTrack = 72, RemoteDataTrackIsPublished = 73, DataTrackStreamRead = 74, + SimulateScenario = 75, + NewPlatformAudio = 76, + GetAudioDevices = 77, + SetRecordingDevice = 78, + SetPlayoutDevice = 79, + StartRecording = 80, + StopRecording = 81, } private MessageOneofCase messageCase_ = MessageOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5882,6 +6400,13 @@ public bool Equals(FfiResponse other) { if (!object.Equals(SubscribeDataTrack, other.SubscribeDataTrack)) return false; if (!object.Equals(RemoteDataTrackIsPublished, other.RemoteDataTrackIsPublished)) return false; if (!object.Equals(DataTrackStreamRead, other.DataTrackStreamRead)) return false; + if (!object.Equals(SimulateScenario, other.SimulateScenario)) return false; + if (!object.Equals(NewPlatformAudio, other.NewPlatformAudio)) return false; + if (!object.Equals(GetAudioDevices, other.GetAudioDevices)) return false; + if (!object.Equals(SetRecordingDevice, other.SetRecordingDevice)) return false; + if (!object.Equals(SetPlayoutDevice, other.SetPlayoutDevice)) return false; + if (!object.Equals(StartRecording, other.StartRecording)) return false; + if (!object.Equals(StopRecording, other.StopRecording)) return false; if (MessageCase != other.MessageCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -5963,6 +6488,13 @@ public override int GetHashCode() { if (messageCase_ == MessageOneofCase.SubscribeDataTrack) hash ^= SubscribeDataTrack.GetHashCode(); if (messageCase_ == MessageOneofCase.RemoteDataTrackIsPublished) hash ^= RemoteDataTrackIsPublished.GetHashCode(); if (messageCase_ == MessageOneofCase.DataTrackStreamRead) hash ^= DataTrackStreamRead.GetHashCode(); + if (messageCase_ == MessageOneofCase.SimulateScenario) hash ^= SimulateScenario.GetHashCode(); + if (messageCase_ == MessageOneofCase.NewPlatformAudio) hash ^= NewPlatformAudio.GetHashCode(); + if (messageCase_ == MessageOneofCase.GetAudioDevices) hash ^= GetAudioDevices.GetHashCode(); + if (messageCase_ == MessageOneofCase.SetRecordingDevice) hash ^= SetRecordingDevice.GetHashCode(); + if (messageCase_ == MessageOneofCase.SetPlayoutDevice) hash ^= SetPlayoutDevice.GetHashCode(); + if (messageCase_ == MessageOneofCase.StartRecording) hash ^= StartRecording.GetHashCode(); + if (messageCase_ == MessageOneofCase.StopRecording) hash ^= StopRecording.GetHashCode(); hash ^= (int) messageCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -6274,6 +6806,34 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(210, 4); output.WriteMessage(DataTrackStreamRead); } + if (messageCase_ == MessageOneofCase.SimulateScenario) { + output.WriteRawTag(218, 4); + output.WriteMessage(SimulateScenario); + } + if (messageCase_ == MessageOneofCase.NewPlatformAudio) { + output.WriteRawTag(226, 4); + output.WriteMessage(NewPlatformAudio); + } + if (messageCase_ == MessageOneofCase.GetAudioDevices) { + output.WriteRawTag(234, 4); + output.WriteMessage(GetAudioDevices); + } + if (messageCase_ == MessageOneofCase.SetRecordingDevice) { + output.WriteRawTag(242, 4); + output.WriteMessage(SetRecordingDevice); + } + if (messageCase_ == MessageOneofCase.SetPlayoutDevice) { + output.WriteRawTag(250, 4); + output.WriteMessage(SetPlayoutDevice); + } + if (messageCase_ == MessageOneofCase.StartRecording) { + output.WriteRawTag(130, 5); + output.WriteMessage(StartRecording); + } + if (messageCase_ == MessageOneofCase.StopRecording) { + output.WriteRawTag(138, 5); + output.WriteMessage(StopRecording); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -6576,6 +7136,34 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(210, 4); output.WriteMessage(DataTrackStreamRead); } + if (messageCase_ == MessageOneofCase.SimulateScenario) { + output.WriteRawTag(218, 4); + output.WriteMessage(SimulateScenario); + } + if (messageCase_ == MessageOneofCase.NewPlatformAudio) { + output.WriteRawTag(226, 4); + output.WriteMessage(NewPlatformAudio); + } + if (messageCase_ == MessageOneofCase.GetAudioDevices) { + output.WriteRawTag(234, 4); + output.WriteMessage(GetAudioDevices); + } + if (messageCase_ == MessageOneofCase.SetRecordingDevice) { + output.WriteRawTag(242, 4); + output.WriteMessage(SetRecordingDevice); + } + if (messageCase_ == MessageOneofCase.SetPlayoutDevice) { + output.WriteRawTag(250, 4); + output.WriteMessage(SetPlayoutDevice); + } + if (messageCase_ == MessageOneofCase.StartRecording) { + output.WriteRawTag(130, 5); + output.WriteMessage(StartRecording); + } + if (messageCase_ == MessageOneofCase.StopRecording) { + output.WriteRawTag(138, 5); + output.WriteMessage(StopRecording); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -6805,6 +7393,27 @@ public int CalculateSize() { if (messageCase_ == MessageOneofCase.DataTrackStreamRead) { size += 2 + pb::CodedOutputStream.ComputeMessageSize(DataTrackStreamRead); } + if (messageCase_ == MessageOneofCase.SimulateScenario) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(SimulateScenario); + } + if (messageCase_ == MessageOneofCase.NewPlatformAudio) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(NewPlatformAudio); + } + if (messageCase_ == MessageOneofCase.GetAudioDevices) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(GetAudioDevices); + } + if (messageCase_ == MessageOneofCase.SetRecordingDevice) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(SetRecordingDevice); + } + if (messageCase_ == MessageOneofCase.SetPlayoutDevice) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(SetPlayoutDevice); + } + if (messageCase_ == MessageOneofCase.StartRecording) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(StartRecording); + } + if (messageCase_ == MessageOneofCase.StopRecording) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(StopRecording); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -7256,6 +7865,48 @@ public void MergeFrom(FfiResponse other) { } DataTrackStreamRead.MergeFrom(other.DataTrackStreamRead); break; + case MessageOneofCase.SimulateScenario: + if (SimulateScenario == null) { + SimulateScenario = new global::LiveKit.Proto.SimulateScenarioResponse(); + } + SimulateScenario.MergeFrom(other.SimulateScenario); + break; + case MessageOneofCase.NewPlatformAudio: + if (NewPlatformAudio == null) { + NewPlatformAudio = new global::LiveKit.Proto.NewPlatformAudioResponse(); + } + NewPlatformAudio.MergeFrom(other.NewPlatformAudio); + break; + case MessageOneofCase.GetAudioDevices: + if (GetAudioDevices == null) { + GetAudioDevices = new global::LiveKit.Proto.GetAudioDevicesResponse(); + } + GetAudioDevices.MergeFrom(other.GetAudioDevices); + break; + case MessageOneofCase.SetRecordingDevice: + if (SetRecordingDevice == null) { + SetRecordingDevice = new global::LiveKit.Proto.SetRecordingDeviceResponse(); + } + SetRecordingDevice.MergeFrom(other.SetRecordingDevice); + break; + case MessageOneofCase.SetPlayoutDevice: + if (SetPlayoutDevice == null) { + SetPlayoutDevice = new global::LiveKit.Proto.SetPlayoutDeviceResponse(); + } + SetPlayoutDevice.MergeFrom(other.SetPlayoutDevice); + break; + case MessageOneofCase.StartRecording: + if (StartRecording == null) { + StartRecording = new global::LiveKit.Proto.StartRecordingResponse(); + } + StartRecording.MergeFrom(other.StartRecording); + break; + case MessageOneofCase.StopRecording: + if (StopRecording == null) { + StopRecording = new global::LiveKit.Proto.StopRecordingResponse(); + } + StopRecording.MergeFrom(other.StopRecording); + break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); @@ -7934,6 +8585,69 @@ public void MergeFrom(pb::CodedInputStream input) { DataTrackStreamRead = subBuilder; break; } + case 602: { + global::LiveKit.Proto.SimulateScenarioResponse subBuilder = new global::LiveKit.Proto.SimulateScenarioResponse(); + if (messageCase_ == MessageOneofCase.SimulateScenario) { + subBuilder.MergeFrom(SimulateScenario); + } + input.ReadMessage(subBuilder); + SimulateScenario = subBuilder; + break; + } + case 610: { + global::LiveKit.Proto.NewPlatformAudioResponse subBuilder = new global::LiveKit.Proto.NewPlatformAudioResponse(); + if (messageCase_ == MessageOneofCase.NewPlatformAudio) { + subBuilder.MergeFrom(NewPlatformAudio); + } + input.ReadMessage(subBuilder); + NewPlatformAudio = subBuilder; + break; + } + case 618: { + global::LiveKit.Proto.GetAudioDevicesResponse subBuilder = new global::LiveKit.Proto.GetAudioDevicesResponse(); + if (messageCase_ == MessageOneofCase.GetAudioDevices) { + subBuilder.MergeFrom(GetAudioDevices); + } + input.ReadMessage(subBuilder); + GetAudioDevices = subBuilder; + break; + } + case 626: { + global::LiveKit.Proto.SetRecordingDeviceResponse subBuilder = new global::LiveKit.Proto.SetRecordingDeviceResponse(); + if (messageCase_ == MessageOneofCase.SetRecordingDevice) { + subBuilder.MergeFrom(SetRecordingDevice); + } + input.ReadMessage(subBuilder); + SetRecordingDevice = subBuilder; + break; + } + case 634: { + global::LiveKit.Proto.SetPlayoutDeviceResponse subBuilder = new global::LiveKit.Proto.SetPlayoutDeviceResponse(); + if (messageCase_ == MessageOneofCase.SetPlayoutDevice) { + subBuilder.MergeFrom(SetPlayoutDevice); + } + input.ReadMessage(subBuilder); + SetPlayoutDevice = subBuilder; + break; + } + case 642: { + global::LiveKit.Proto.StartRecordingResponse subBuilder = new global::LiveKit.Proto.StartRecordingResponse(); + if (messageCase_ == MessageOneofCase.StartRecording) { + subBuilder.MergeFrom(StartRecording); + } + input.ReadMessage(subBuilder); + StartRecording = subBuilder; + break; + } + case 650: { + global::LiveKit.Proto.StopRecordingResponse subBuilder = new global::LiveKit.Proto.StopRecordingResponse(); + if (messageCase_ == MessageOneofCase.StopRecording) { + subBuilder.MergeFrom(StopRecording); + } + input.ReadMessage(subBuilder); + StopRecording = subBuilder; + break; + } } } #endif @@ -8610,6 +9324,69 @@ public void MergeFrom(pb::CodedInputStream input) { DataTrackStreamRead = subBuilder; break; } + case 602: { + global::LiveKit.Proto.SimulateScenarioResponse subBuilder = new global::LiveKit.Proto.SimulateScenarioResponse(); + if (messageCase_ == MessageOneofCase.SimulateScenario) { + subBuilder.MergeFrom(SimulateScenario); + } + input.ReadMessage(subBuilder); + SimulateScenario = subBuilder; + break; + } + case 610: { + global::LiveKit.Proto.NewPlatformAudioResponse subBuilder = new global::LiveKit.Proto.NewPlatformAudioResponse(); + if (messageCase_ == MessageOneofCase.NewPlatformAudio) { + subBuilder.MergeFrom(NewPlatformAudio); + } + input.ReadMessage(subBuilder); + NewPlatformAudio = subBuilder; + break; + } + case 618: { + global::LiveKit.Proto.GetAudioDevicesResponse subBuilder = new global::LiveKit.Proto.GetAudioDevicesResponse(); + if (messageCase_ == MessageOneofCase.GetAudioDevices) { + subBuilder.MergeFrom(GetAudioDevices); + } + input.ReadMessage(subBuilder); + GetAudioDevices = subBuilder; + break; + } + case 626: { + global::LiveKit.Proto.SetRecordingDeviceResponse subBuilder = new global::LiveKit.Proto.SetRecordingDeviceResponse(); + if (messageCase_ == MessageOneofCase.SetRecordingDevice) { + subBuilder.MergeFrom(SetRecordingDevice); + } + input.ReadMessage(subBuilder); + SetRecordingDevice = subBuilder; + break; + } + case 634: { + global::LiveKit.Proto.SetPlayoutDeviceResponse subBuilder = new global::LiveKit.Proto.SetPlayoutDeviceResponse(); + if (messageCase_ == MessageOneofCase.SetPlayoutDevice) { + subBuilder.MergeFrom(SetPlayoutDevice); + } + input.ReadMessage(subBuilder); + SetPlayoutDevice = subBuilder; + break; + } + case 642: { + global::LiveKit.Proto.StartRecordingResponse subBuilder = new global::LiveKit.Proto.StartRecordingResponse(); + if (messageCase_ == MessageOneofCase.StartRecording) { + subBuilder.MergeFrom(StartRecording); + } + input.ReadMessage(subBuilder); + StartRecording = subBuilder; + break; + } + case 650: { + global::LiveKit.Proto.StopRecordingResponse subBuilder = new global::LiveKit.Proto.StopRecordingResponse(); + if (messageCase_ == MessageOneofCase.StopRecording) { + subBuilder.MergeFrom(StopRecording); + } + input.ReadMessage(subBuilder); + StopRecording = subBuilder; + break; + } } } } @@ -8784,6 +9561,9 @@ public FfiEvent(FfiEvent other) : this() { case MessageOneofCase.DataTrackStreamEvent: DataTrackStreamEvent = other.DataTrackStreamEvent.Clone(); break; + case MessageOneofCase.SimulateScenario: + SimulateScenario = other.SimulateScenario.Clone(); + break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -9311,6 +10091,18 @@ public FfiEvent Clone() { } } + /// Field number for the "simulate_scenario" field. + public const int SimulateScenarioFieldNumber = 44; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.SimulateScenarioCallback SimulateScenario { + get { return messageCase_ == MessageOneofCase.SimulateScenario ? (global::LiveKit.Proto.SimulateScenarioCallback) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.SimulateScenario; + } + } + private object message_; /// Enum of possible cases for the "message" oneof. public enum MessageOneofCase { @@ -9357,6 +10149,7 @@ public enum MessageOneofCase { SendBytes = 41, PublishDataTrack = 42, DataTrackStreamEvent = 43, + SimulateScenario = 44, } private MessageOneofCase messageCase_ = MessageOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9429,6 +10222,7 @@ public bool Equals(FfiEvent other) { if (!object.Equals(SendBytes, other.SendBytes)) return false; if (!object.Equals(PublishDataTrack, other.PublishDataTrack)) return false; if (!object.Equals(DataTrackStreamEvent, other.DataTrackStreamEvent)) return false; + if (!object.Equals(SimulateScenario, other.SimulateScenario)) return false; if (MessageCase != other.MessageCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -9479,6 +10273,7 @@ public override int GetHashCode() { if (messageCase_ == MessageOneofCase.SendBytes) hash ^= SendBytes.GetHashCode(); if (messageCase_ == MessageOneofCase.PublishDataTrack) hash ^= PublishDataTrack.GetHashCode(); if (messageCase_ == MessageOneofCase.DataTrackStreamEvent) hash ^= DataTrackStreamEvent.GetHashCode(); + if (messageCase_ == MessageOneofCase.SimulateScenario) hash ^= SimulateScenario.GetHashCode(); hash ^= (int) messageCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -9666,6 +10461,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(218, 2); output.WriteMessage(DataTrackStreamEvent); } + if (messageCase_ == MessageOneofCase.SimulateScenario) { + output.WriteRawTag(226, 2); + output.WriteMessage(SimulateScenario); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -9844,6 +10643,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(218, 2); output.WriteMessage(DataTrackStreamEvent); } + if (messageCase_ == MessageOneofCase.SimulateScenario) { + output.WriteRawTag(226, 2); + output.WriteMessage(SimulateScenario); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -9980,6 +10783,9 @@ public int CalculateSize() { if (messageCase_ == MessageOneofCase.DataTrackStreamEvent) { size += 2 + pb::CodedOutputStream.ComputeMessageSize(DataTrackStreamEvent); } + if (messageCase_ == MessageOneofCase.SimulateScenario) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(SimulateScenario); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -10245,6 +11051,12 @@ public void MergeFrom(FfiEvent other) { } DataTrackStreamEvent.MergeFrom(other.DataTrackStreamEvent); break; + case MessageOneofCase.SimulateScenario: + if (SimulateScenario == null) { + SimulateScenario = new global::LiveKit.Proto.SimulateScenarioCallback(); + } + SimulateScenario.MergeFrom(other.SimulateScenario); + break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); @@ -10644,6 +11456,15 @@ public void MergeFrom(pb::CodedInputStream input) { DataTrackStreamEvent = subBuilder; break; } + case 354: { + global::LiveKit.Proto.SimulateScenarioCallback subBuilder = new global::LiveKit.Proto.SimulateScenarioCallback(); + if (messageCase_ == MessageOneofCase.SimulateScenario) { + subBuilder.MergeFrom(SimulateScenario); + } + input.ReadMessage(subBuilder); + SimulateScenario = subBuilder; + break; + } } } #endif @@ -11041,6 +11862,15 @@ public void MergeFrom(pb::CodedInputStream input) { DataTrackStreamEvent = subBuilder; break; } + case 354: { + global::LiveKit.Proto.SimulateScenarioCallback subBuilder = new global::LiveKit.Proto.SimulateScenarioCallback(); + if (messageCase_ == MessageOneofCase.SimulateScenario) { + subBuilder.MergeFrom(SimulateScenario); + } + input.ReadMessage(subBuilder); + SimulateScenario = subBuilder; + break; + } } } } diff --git a/Runtime/Scripts/Proto/Room.cs b/Runtime/Scripts/Proto/Room.cs index c9e129d7..245e8a35 100644 --- a/Runtime/Scripts/Proto/Room.cs +++ b/Runtime/Scripts/Proto/Room.cs @@ -45,170 +45,179 @@ static RoomReflection() { "dF9hc3luY19pZBgCIAEoBBIvCgZyZWFzb24YAyABKA4yHy5saXZla2l0LnBy", "b3RvLkRpc2Nvbm5lY3RSZWFzb24iJgoSRGlzY29ubmVjdFJlc3BvbnNlEhAK", "CGFzeW5jX2lkGAEgAigEIiYKEkRpc2Nvbm5lY3RDYWxsYmFjaxIQCghhc3lu", - "Y19pZBgBIAIoBCKcAQoTUHVibGlzaFRyYWNrUmVxdWVzdBIgChhsb2NhbF9w", - "YXJ0aWNpcGFudF9oYW5kbGUYASACKAQSFAoMdHJhY2tfaGFuZGxlGAIgAigE", - "EjMKB29wdGlvbnMYAyACKAsyIi5saXZla2l0LnByb3RvLlRyYWNrUHVibGlz", - "aE9wdGlvbnMSGAoQcmVxdWVzdF9hc3luY19pZBgEIAEoBCIoChRQdWJsaXNo", - "VHJhY2tSZXNwb25zZRIQCghhc3luY19pZBgBIAIoBCKBAQoUUHVibGlzaFRy", - "YWNrQ2FsbGJhY2sSEAoIYXN5bmNfaWQYASACKAQSDwoFZXJyb3IYAiABKAlI", - "ABI7CgtwdWJsaWNhdGlvbhgDIAEoCzIkLmxpdmVraXQucHJvdG8uT3duZWRU", - "cmFja1B1YmxpY2F0aW9uSABCCQoHbWVzc2FnZSKBAQoVVW5wdWJsaXNoVHJh", - "Y2tSZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hhbmRsZRgBIAIoBBIR", - "Cgl0cmFja19zaWQYAiACKAkSGQoRc3RvcF9vbl91bnB1Ymxpc2gYAyACKAgS", - "GAoQcmVxdWVzdF9hc3luY19pZBgEIAEoBCIqChZVbnB1Ymxpc2hUcmFja1Jl", - "c3BvbnNlEhAKCGFzeW5jX2lkGAEgAigEIjkKFlVucHVibGlzaFRyYWNrQ2Fs", - "bGJhY2sSEAoIYXN5bmNfaWQYASACKAQSDQoFZXJyb3IYAiABKAki0wEKElB1", - "Ymxpc2hEYXRhUmVxdWVzdBIgChhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUY", - "ASACKAQSEAoIZGF0YV9wdHIYAiACKAQSEAoIZGF0YV9sZW4YAyACKAQSEAoI", - "cmVsaWFibGUYBCACKAgSHAoQZGVzdGluYXRpb25fc2lkcxgFIAMoCUICGAES", - "DQoFdG9waWMYBiABKAkSHgoWZGVzdGluYXRpb25faWRlbnRpdGllcxgHIAMo", - "CRIYChByZXF1ZXN0X2FzeW5jX2lkGAggASgEIicKE1B1Ymxpc2hEYXRhUmVz", - "cG9uc2USEAoIYXN5bmNfaWQYASACKAQiNgoTUHVibGlzaERhdGFDYWxsYmFj", - "axIQCghhc3luY19pZBgBIAIoBBINCgVlcnJvchgCIAEoCSLAAQobUHVibGlz", - "aFRyYW5zY3JpcHRpb25SZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hh", - "bmRsZRgBIAIoBBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgCIAIoCRIQCgh0", - "cmFja19pZBgDIAIoCRI1CghzZWdtZW50cxgEIAMoCzIjLmxpdmVraXQucHJv", - "dG8uVHJhbnNjcmlwdGlvblNlZ21lbnQSGAoQcmVxdWVzdF9hc3luY19pZBgF", - "IAEoBCIwChxQdWJsaXNoVHJhbnNjcmlwdGlvblJlc3BvbnNlEhAKCGFzeW5j", - "X2lkGAEgAigEIj8KHFB1Ymxpc2hUcmFuc2NyaXB0aW9uQ2FsbGJhY2sSEAoI", - "YXN5bmNfaWQYASACKAQSDQoFZXJyb3IYAiABKAkikAEKFVB1Ymxpc2hTaXBE", - "dG1mUmVxdWVzdBIgChhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUYASACKAQS", - "DAoEY29kZRgCIAIoDRINCgVkaWdpdBgDIAIoCRIeChZkZXN0aW5hdGlvbl9p", - "ZGVudGl0aWVzGAQgAygJEhgKEHJlcXVlc3RfYXN5bmNfaWQYBSABKAQiKgoW", - "UHVibGlzaFNpcER0bWZSZXNwb25zZRIQCghhc3luY19pZBgBIAIoBCI5ChZQ", - "dWJsaXNoU2lwRHRtZkNhbGxiYWNrEhAKCGFzeW5jX2lkGAEgAigEEg0KBWVy", - "cm9yGAIgASgJImcKF1NldExvY2FsTWV0YWRhdGFSZXF1ZXN0EiAKGGxvY2Fs", - "X3BhcnRpY2lwYW50X2hhbmRsZRgBIAIoBBIQCghtZXRhZGF0YRgCIAIoCRIY", - "ChByZXF1ZXN0X2FzeW5jX2lkGAMgASgEIiwKGFNldExvY2FsTWV0YWRhdGFS", - "ZXNwb25zZRIQCghhc3luY19pZBgBIAIoBCI7ChhTZXRMb2NhbE1ldGFkYXRh", - "Q2FsbGJhY2sSEAoIYXN5bmNfaWQYASACKAQSDQoFZXJyb3IYAiABKAkingEK", - "FlNlbmRDaGF0TWVzc2FnZVJlcXVlc3QSIAoYbG9jYWxfcGFydGljaXBhbnRf", - "aGFuZGxlGAEgAigEEg8KB21lc3NhZ2UYAiACKAkSHgoWZGVzdGluYXRpb25f", - "aWRlbnRpdGllcxgDIAMoCRIXCg9zZW5kZXJfaWRlbnRpdHkYBCABKAkSGAoQ", - "cmVxdWVzdF9hc3luY19pZBgFIAEoBCLWAQoWRWRpdENoYXRNZXNzYWdlUmVx", - "dWVzdBIgChhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUYASACKAQSEQoJZWRp", - "dF90ZXh0GAIgAigJEjQKEG9yaWdpbmFsX21lc3NhZ2UYAyACKAsyGi5saXZl", - "a2l0LnByb3RvLkNoYXRNZXNzYWdlEh4KFmRlc3RpbmF0aW9uX2lkZW50aXRp", - "ZXMYBCADKAkSFwoPc2VuZGVyX2lkZW50aXR5GAUgASgJEhgKEHJlcXVlc3Rf", - "YXN5bmNfaWQYBiABKAQiKwoXU2VuZENoYXRNZXNzYWdlUmVzcG9uc2USEAoI", - "YXN5bmNfaWQYASACKAQiewoXU2VuZENoYXRNZXNzYWdlQ2FsbGJhY2sSEAoI", - "YXN5bmNfaWQYASACKAQSDwoFZXJyb3IYAiABKAlIABIyCgxjaGF0X21lc3Nh", - "Z2UYAyABKAsyGi5saXZla2l0LnByb3RvLkNoYXRNZXNzYWdlSABCCQoHbWVz", - "c2FnZSKLAQoZU2V0TG9jYWxBdHRyaWJ1dGVzUmVxdWVzdBIgChhsb2NhbF9w", - "YXJ0aWNpcGFudF9oYW5kbGUYASACKAQSMgoKYXR0cmlidXRlcxgCIAMoCzIe", - "LmxpdmVraXQucHJvdG8uQXR0cmlidXRlc0VudHJ5EhgKEHJlcXVlc3RfYXN5", - "bmNfaWQYAyABKAQiLQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAIoCRIN", - "CgV2YWx1ZRgCIAIoCSIuChpTZXRMb2NhbEF0dHJpYnV0ZXNSZXNwb25zZRIQ", - "Cghhc3luY19pZBgBIAIoBCI9ChpTZXRMb2NhbEF0dHJpYnV0ZXNDYWxsYmFj", - "axIQCghhc3luY19pZBgBIAIoBBINCgVlcnJvchgCIAEoCSJfChNTZXRMb2Nh", - "bE5hbWVSZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hhbmRsZRgBIAIo", - "BBIMCgRuYW1lGAIgAigJEhgKEHJlcXVlc3RfYXN5bmNfaWQYAyABKAQiKAoU", - "U2V0TG9jYWxOYW1lUmVzcG9uc2USEAoIYXN5bmNfaWQYASACKAQiNwoUU2V0", - "TG9jYWxOYW1lQ2FsbGJhY2sSEAoIYXN5bmNfaWQYASACKAQSDQoFZXJyb3IY", - "AiABKAkiRQoUU2V0U3Vic2NyaWJlZFJlcXVlc3QSEQoJc3Vic2NyaWJlGAEg", - "AigIEhoKEnB1YmxpY2F0aW9uX2hhbmRsZRgCIAIoBCIXChVTZXRTdWJzY3Jp", - "YmVkUmVzcG9uc2UiRwoWR2V0U2Vzc2lvblN0YXRzUmVxdWVzdBITCgtyb29t", - "X2hhbmRsZRgBIAIoBBIYChByZXF1ZXN0X2FzeW5jX2lkGAIgASgEIisKF0dl", - "dFNlc3Npb25TdGF0c1Jlc3BvbnNlEhAKCGFzeW5jX2lkGAEgAigEIvcBChdH", - "ZXRTZXNzaW9uU3RhdHNDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBBIPCgVl", - "cnJvchgCIAEoCUgAEj8KBnJlc3VsdBgDIAEoCzItLmxpdmVraXQucHJvdG8u", - "R2V0U2Vzc2lvblN0YXRzQ2FsbGJhY2suUmVzdWx0SAAabQoGUmVzdWx0EjAK", - "D3B1Ymxpc2hlcl9zdGF0cxgBIAMoCzIXLmxpdmVraXQucHJvdG8uUnRjU3Rh", - "dHMSMQoQc3Vic2NyaWJlcl9zdGF0cxgCIAMoCzIXLmxpdmVraXQucHJvdG8u", - "UnRjU3RhdHNCCQoHbWVzc2FnZSI7Cg1WaWRlb0VuY29kaW5nEhMKC21heF9i", - "aXRyYXRlGAEgAigEEhUKDW1heF9mcmFtZXJhdGUYAiACKAEiJAoNQXVkaW9F", - "bmNvZGluZxITCgttYXhfYml0cmF0ZRgBIAIoBCK1AgoTVHJhY2tQdWJsaXNo", - "T3B0aW9ucxI0Cg52aWRlb19lbmNvZGluZxgBIAEoCzIcLmxpdmVraXQucHJv", - "dG8uVmlkZW9FbmNvZGluZxI0Cg5hdWRpb19lbmNvZGluZxgCIAEoCzIcLmxp", - "dmVraXQucHJvdG8uQXVkaW9FbmNvZGluZxIuCgt2aWRlb19jb2RlYxgDIAEo", - "DjIZLmxpdmVraXQucHJvdG8uVmlkZW9Db2RlYxILCgNkdHgYBCABKAgSCwoD", - "cmVkGAUgASgIEhEKCXNpbXVsY2FzdBgGIAEoCBIqCgZzb3VyY2UYByABKA4y", - "Gi5saXZla2l0LnByb3RvLlRyYWNrU291cmNlEg4KBnN0cmVhbRgIIAEoCRIZ", - "ChFwcmVjb25uZWN0X2J1ZmZlchgJIAEoCCI9CglJY2VTZXJ2ZXISDAoEdXJs", - "cxgBIAMoCRIQCgh1c2VybmFtZRgCIAEoCRIQCghwYXNzd29yZBgDIAEoCSLE", - "AQoJUnRjQ29uZmlnEjsKEmljZV90cmFuc3BvcnRfdHlwZRgBIAEoDjIfLmxp", - "dmVraXQucHJvdG8uSWNlVHJhbnNwb3J0VHlwZRJLChpjb250aW51YWxfZ2F0", - "aGVyaW5nX3BvbGljeRgCIAEoDjInLmxpdmVraXQucHJvdG8uQ29udGludWFs", - "R2F0aGVyaW5nUG9saWN5Ei0KC2ljZV9zZXJ2ZXJzGAMgAygLMhgubGl2ZWtp", - "dC5wcm90by5JY2VTZXJ2ZXIirgIKC1Jvb21PcHRpb25zEhYKDmF1dG9fc3Vi", - "c2NyaWJlGAEgASgIEhcKD2FkYXB0aXZlX3N0cmVhbRgCIAEoCBIQCghkeW5h", - "Y2FzdBgDIAEoCBIsCgRlMmVlGAQgASgLMhoubGl2ZWtpdC5wcm90by5FMmVl", - "T3B0aW9uc0ICGAESLAoKcnRjX2NvbmZpZxgFIAEoCzIYLmxpdmVraXQucHJv", - "dG8uUnRjQ29uZmlnEhQKDGpvaW5fcmV0cmllcxgGIAEoDRIuCgplbmNyeXB0", - "aW9uGAcgASgLMhoubGl2ZWtpdC5wcm90by5FMmVlT3B0aW9ucxIeChZzaW5n", - "bGVfcGVlcl9jb25uZWN0aW9uGAggASgIEhoKEmNvbm5lY3RfdGltZW91dF9t", - "cxgJIAEoBCJ3ChRUcmFuc2NyaXB0aW9uU2VnbWVudBIKCgJpZBgBIAIoCRIM", - "CgR0ZXh0GAIgAigJEhIKCnN0YXJ0X3RpbWUYAyACKAQSEAoIZW5kX3RpbWUY", - "BCACKAQSDQoFZmluYWwYBSACKAgSEAoIbGFuZ3VhZ2UYBiACKAkiMAoKQnVm", - "ZmVySW5mbxIQCghkYXRhX3B0chgBIAIoBBIQCghkYXRhX2xlbhgCIAIoBCJl", - "CgtPd25lZEJ1ZmZlchItCgZoYW5kbGUYASACKAsyHS5saXZla2l0LnByb3Rv", - "LkZmaU93bmVkSGFuZGxlEicKBGRhdGEYAiACKAsyGS5saXZla2l0LnByb3Rv", - "LkJ1ZmZlckluZm8ihRcKCVJvb21FdmVudBITCgtyb29tX2hhbmRsZRgBIAIo", - "BBJEChVwYXJ0aWNpcGFudF9jb25uZWN0ZWQYAiABKAsyIy5saXZla2l0LnBy", - "b3RvLlBhcnRpY2lwYW50Q29ubmVjdGVkSAASSgoYcGFydGljaXBhbnRfZGlz", - "Y29ubmVjdGVkGAMgASgLMiYubGl2ZWtpdC5wcm90by5QYXJ0aWNpcGFudERp", - "c2Nvbm5lY3RlZEgAEkMKFWxvY2FsX3RyYWNrX3B1Ymxpc2hlZBgEIAEoCzIi", - "LmxpdmVraXQucHJvdG8uTG9jYWxUcmFja1B1Ymxpc2hlZEgAEkcKF2xvY2Fs", - "X3RyYWNrX3VucHVibGlzaGVkGAUgASgLMiQubGl2ZWtpdC5wcm90by5Mb2Nh", - "bFRyYWNrVW5wdWJsaXNoZWRIABJFChZsb2NhbF90cmFja19zdWJzY3JpYmVk", - "GAYgASgLMiMubGl2ZWtpdC5wcm90by5Mb2NhbFRyYWNrU3Vic2NyaWJlZEgA", - "EjgKD3RyYWNrX3B1Ymxpc2hlZBgHIAEoCzIdLmxpdmVraXQucHJvdG8uVHJh", - "Y2tQdWJsaXNoZWRIABI8ChF0cmFja191bnB1Ymxpc2hlZBgIIAEoCzIfLmxp", - "dmVraXQucHJvdG8uVHJhY2tVbnB1Ymxpc2hlZEgAEjoKEHRyYWNrX3N1YnNj", - "cmliZWQYCSABKAsyHi5saXZla2l0LnByb3RvLlRyYWNrU3Vic2NyaWJlZEgA", - "Ej4KEnRyYWNrX3Vuc3Vic2NyaWJlZBgKIAEoCzIgLmxpdmVraXQucHJvdG8u", - "VHJhY2tVbnN1YnNjcmliZWRIABJLChl0cmFja19zdWJzY3JpcHRpb25fZmFp", - "bGVkGAsgASgLMiYubGl2ZWtpdC5wcm90by5UcmFja1N1YnNjcmlwdGlvbkZh", - "aWxlZEgAEjAKC3RyYWNrX211dGVkGAwgASgLMhkubGl2ZWtpdC5wcm90by5U", - "cmFja011dGVkSAASNAoNdHJhY2tfdW5tdXRlZBgNIAEoCzIbLmxpdmVraXQu", - "cHJvdG8uVHJhY2tVbm11dGVkSAASRwoXYWN0aXZlX3NwZWFrZXJzX2NoYW5n", - "ZWQYDiABKAsyJC5saXZla2l0LnByb3RvLkFjdGl2ZVNwZWFrZXJzQ2hhbmdl", - "ZEgAEkMKFXJvb21fbWV0YWRhdGFfY2hhbmdlZBgPIAEoCzIiLmxpdmVraXQu", - "cHJvdG8uUm9vbU1ldGFkYXRhQ2hhbmdlZEgAEjkKEHJvb21fc2lkX2NoYW5n", - "ZWQYECABKAsyHS5saXZla2l0LnByb3RvLlJvb21TaWRDaGFuZ2VkSAASUQoc", - "cGFydGljaXBhbnRfbWV0YWRhdGFfY2hhbmdlZBgRIAEoCzIpLmxpdmVraXQu", - "cHJvdG8uUGFydGljaXBhbnRNZXRhZGF0YUNoYW5nZWRIABJJChhwYXJ0aWNp", - "cGFudF9uYW1lX2NoYW5nZWQYEiABKAsyJS5saXZla2l0LnByb3RvLlBhcnRp", - "Y2lwYW50TmFtZUNoYW5nZWRIABJVCh5wYXJ0aWNpcGFudF9hdHRyaWJ1dGVz", - "X2NoYW5nZWQYEyABKAsyKy5saXZla2l0LnByb3RvLlBhcnRpY2lwYW50QXR0", - "cmlidXRlc0NoYW5nZWRIABJNChpjb25uZWN0aW9uX3F1YWxpdHlfY2hhbmdl", - "ZBgUIAEoCzInLmxpdmVraXQucHJvdG8uQ29ubmVjdGlvblF1YWxpdHlDaGFu", - "Z2VkSAASSQoYY29ubmVjdGlvbl9zdGF0ZV9jaGFuZ2VkGBUgASgLMiUubGl2", - "ZWtpdC5wcm90by5Db25uZWN0aW9uU3RhdGVDaGFuZ2VkSAASMwoMZGlzY29u", - "bmVjdGVkGBYgASgLMhsubGl2ZWtpdC5wcm90by5EaXNjb25uZWN0ZWRIABIz", - "CgxyZWNvbm5lY3RpbmcYFyABKAsyGy5saXZla2l0LnByb3RvLlJlY29ubmVj", - "dGluZ0gAEjEKC3JlY29ubmVjdGVkGBggASgLMhoubGl2ZWtpdC5wcm90by5S", - "ZWNvbm5lY3RlZEgAEj0KEmUyZWVfc3RhdGVfY2hhbmdlZBgZIAEoCzIfLmxp", - "dmVraXQucHJvdG8uRTJlZVN0YXRlQ2hhbmdlZEgAEiUKA2VvcxgaIAEoCzIW", - "LmxpdmVraXQucHJvdG8uUm9vbUVPU0gAEkEKFGRhdGFfcGFja2V0X3JlY2Vp", - "dmVkGBsgASgLMiEubGl2ZWtpdC5wcm90by5EYXRhUGFja2V0UmVjZWl2ZWRI", - "ABJGChZ0cmFuc2NyaXB0aW9uX3JlY2VpdmVkGBwgASgLMiQubGl2ZWtpdC5w", - "cm90by5UcmFuc2NyaXB0aW9uUmVjZWl2ZWRIABI6CgxjaGF0X21lc3NhZ2UY", - "HSABKAsyIi5saXZla2l0LnByb3RvLkNoYXRNZXNzYWdlUmVjZWl2ZWRIABJJ", - "ChZzdHJlYW1faGVhZGVyX3JlY2VpdmVkGB4gASgLMicubGl2ZWtpdC5wcm90", - "by5EYXRhU3RyZWFtSGVhZGVyUmVjZWl2ZWRIABJHChVzdHJlYW1fY2h1bmtf", - "cmVjZWl2ZWQYHyABKAsyJi5saXZla2l0LnByb3RvLkRhdGFTdHJlYW1DaHVu", - "a1JlY2VpdmVkSAASSwoXc3RyZWFtX3RyYWlsZXJfcmVjZWl2ZWQYICABKAsy", - "KC5saXZla2l0LnByb3RvLkRhdGFTdHJlYW1UcmFpbGVyUmVjZWl2ZWRIABJp", - "CiJkYXRhX2NoYW5uZWxfbG93X3RocmVzaG9sZF9jaGFuZ2VkGCEgASgLMjsu", - "bGl2ZWtpdC5wcm90by5EYXRhQ2hhbm5lbEJ1ZmZlcmVkQW1vdW50TG93VGhy", - "ZXNob2xkQ2hhbmdlZEgAEj0KEmJ5dGVfc3RyZWFtX29wZW5lZBgiIAEoCzIf", - "LmxpdmVraXQucHJvdG8uQnl0ZVN0cmVhbU9wZW5lZEgAEj0KEnRleHRfc3Ry", - "ZWFtX29wZW5lZBgjIAEoCzIfLmxpdmVraXQucHJvdG8uVGV4dFN0cmVhbU9w", - "ZW5lZEgAEi8KDHJvb21fdXBkYXRlZBgkIAEoCzIXLmxpdmVraXQucHJvdG8u", - "Um9vbUluZm9IABIoCgVtb3ZlZBglIAEoCzIXLmxpdmVraXQucHJvdG8uUm9v", - "bUluZm9IABJCChRwYXJ0aWNpcGFudHNfdXBkYXRlZBgmIAEoCzIiLmxpdmVr", - "aXQucHJvdG8uUGFydGljaXBhbnRzVXBkYXRlZEgAEmIKJXBhcnRpY2lwYW50", - "X2VuY3J5cHRpb25fc3RhdHVzX2NoYW5nZWQYJyABKAsyMS5saXZla2l0LnBy", - "b3RvLlBhcnRpY2lwYW50RW5jcnlwdGlvblN0YXR1c0NoYW5nZWRIABJVCh5w", - "YXJ0aWNpcGFudF9wZXJtaXNzaW9uX2NoYW5nZWQYKSABKAsyKy5saXZla2l0", - "LnByb3RvLlBhcnRpY2lwYW50UGVybWlzc2lvbkNoYW5nZWRIABI4Cg90b2tl", - "bl9yZWZyZXNoZWQYKCABKAsyHS5saXZla2l0LnByb3RvLlRva2VuUmVmcmVz", - "aGVkSAASPgoScGFydGljaXBhbnRfYWN0aXZlGCogASgLMiAubGl2ZWtpdC5w", - "cm90by5QYXJ0aWNpcGFudEFjdGl2ZUgAEkEKFGRhdGFfdHJhY2tfcHVibGlz", - "aGVkGCsgASgLMiEubGl2ZWtpdC5wcm90by5EYXRhVHJhY2tQdWJsaXNoZWRI", - "ABJFChZkYXRhX3RyYWNrX3VucHVibGlzaGVkGCwgASgLMiMubGl2ZWtpdC5w", - "cm90by5EYXRhVHJhY2tVbnB1Ymxpc2hlZEgAQgkKB21lc3NhZ2UiyQIKCFJv", + "Y19pZBgBIAIoBCJ/ChdTaW11bGF0ZVNjZW5hcmlvUmVxdWVzdBITCgtyb29t", + "X2hhbmRsZRgBIAIoBBI1CghzY2VuYXJpbxgCIAIoDjIjLmxpdmVraXQucHJv", + "dG8uU2ltdWxhdGVTY2VuYXJpb0tpbmQSGAoQcmVxdWVzdF9hc3luY19pZBgD", + "IAEoBCIsChhTaW11bGF0ZVNjZW5hcmlvUmVzcG9uc2USEAoIYXN5bmNfaWQY", + "ASACKAQiOwoYU2ltdWxhdGVTY2VuYXJpb0NhbGxiYWNrEhAKCGFzeW5jX2lk", + "GAEgAigEEg0KBWVycm9yGAIgASgJIpwBChNQdWJsaXNoVHJhY2tSZXF1ZXN0", + "EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hhbmRsZRgBIAIoBBIUCgx0cmFja19o", + "YW5kbGUYAiACKAQSMwoHb3B0aW9ucxgDIAIoCzIiLmxpdmVraXQucHJvdG8u", + "VHJhY2tQdWJsaXNoT3B0aW9ucxIYChByZXF1ZXN0X2FzeW5jX2lkGAQgASgE", + "IigKFFB1Ymxpc2hUcmFja1Jlc3BvbnNlEhAKCGFzeW5jX2lkGAEgAigEIoEB", + "ChRQdWJsaXNoVHJhY2tDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBBIPCgVl", + "cnJvchgCIAEoCUgAEjsKC3B1YmxpY2F0aW9uGAMgASgLMiQubGl2ZWtpdC5w", + "cm90by5Pd25lZFRyYWNrUHVibGljYXRpb25IAEIJCgdtZXNzYWdlIoEBChVV", + "bnB1Ymxpc2hUcmFja1JlcXVlc3QSIAoYbG9jYWxfcGFydGljaXBhbnRfaGFu", + "ZGxlGAEgAigEEhEKCXRyYWNrX3NpZBgCIAIoCRIZChFzdG9wX29uX3VucHVi", + "bGlzaBgDIAIoCBIYChByZXF1ZXN0X2FzeW5jX2lkGAQgASgEIioKFlVucHVi", + "bGlzaFRyYWNrUmVzcG9uc2USEAoIYXN5bmNfaWQYASACKAQiOQoWVW5wdWJs", + "aXNoVHJhY2tDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBBINCgVlcnJvchgC", + "IAEoCSLTAQoSUHVibGlzaERhdGFSZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lw", + "YW50X2hhbmRsZRgBIAIoBBIQCghkYXRhX3B0chgCIAIoBBIQCghkYXRhX2xl", + "bhgDIAIoBBIQCghyZWxpYWJsZRgEIAIoCBIcChBkZXN0aW5hdGlvbl9zaWRz", + "GAUgAygJQgIYARINCgV0b3BpYxgGIAEoCRIeChZkZXN0aW5hdGlvbl9pZGVu", + "dGl0aWVzGAcgAygJEhgKEHJlcXVlc3RfYXN5bmNfaWQYCCABKAQiJwoTUHVi", + "bGlzaERhdGFSZXNwb25zZRIQCghhc3luY19pZBgBIAIoBCI2ChNQdWJsaXNo", + "RGF0YUNhbGxiYWNrEhAKCGFzeW5jX2lkGAEgAigEEg0KBWVycm9yGAIgASgJ", + "IsABChtQdWJsaXNoVHJhbnNjcmlwdGlvblJlcXVlc3QSIAoYbG9jYWxfcGFy", + "dGljaXBhbnRfaGFuZGxlGAEgAigEEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5", + "GAIgAigJEhAKCHRyYWNrX2lkGAMgAigJEjUKCHNlZ21lbnRzGAQgAygLMiMu", + "bGl2ZWtpdC5wcm90by5UcmFuc2NyaXB0aW9uU2VnbWVudBIYChByZXF1ZXN0", + "X2FzeW5jX2lkGAUgASgEIjAKHFB1Ymxpc2hUcmFuc2NyaXB0aW9uUmVzcG9u", + "c2USEAoIYXN5bmNfaWQYASACKAQiPwocUHVibGlzaFRyYW5zY3JpcHRpb25D", + "YWxsYmFjaxIQCghhc3luY19pZBgBIAIoBBINCgVlcnJvchgCIAEoCSKQAQoV", + "UHVibGlzaFNpcER0bWZSZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hh", + "bmRsZRgBIAIoBBIMCgRjb2RlGAIgAigNEg0KBWRpZ2l0GAMgAigJEh4KFmRl", + "c3RpbmF0aW9uX2lkZW50aXRpZXMYBCADKAkSGAoQcmVxdWVzdF9hc3luY19p", + "ZBgFIAEoBCIqChZQdWJsaXNoU2lwRHRtZlJlc3BvbnNlEhAKCGFzeW5jX2lk", + "GAEgAigEIjkKFlB1Ymxpc2hTaXBEdG1mQ2FsbGJhY2sSEAoIYXN5bmNfaWQY", + "ASACKAQSDQoFZXJyb3IYAiABKAkiZwoXU2V0TG9jYWxNZXRhZGF0YVJlcXVl", + "c3QSIAoYbG9jYWxfcGFydGljaXBhbnRfaGFuZGxlGAEgAigEEhAKCG1ldGFk", + "YXRhGAIgAigJEhgKEHJlcXVlc3RfYXN5bmNfaWQYAyABKAQiLAoYU2V0TG9j", + "YWxNZXRhZGF0YVJlc3BvbnNlEhAKCGFzeW5jX2lkGAEgAigEIjsKGFNldExv", + "Y2FsTWV0YWRhdGFDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBBINCgVlcnJv", + "chgCIAEoCSKeAQoWU2VuZENoYXRNZXNzYWdlUmVxdWVzdBIgChhsb2NhbF9w", + "YXJ0aWNpcGFudF9oYW5kbGUYASACKAQSDwoHbWVzc2FnZRgCIAIoCRIeChZk", + "ZXN0aW5hdGlvbl9pZGVudGl0aWVzGAMgAygJEhcKD3NlbmRlcl9pZGVudGl0", + "eRgEIAEoCRIYChByZXF1ZXN0X2FzeW5jX2lkGAUgASgEItYBChZFZGl0Q2hh", + "dE1lc3NhZ2VSZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hhbmRsZRgB", + "IAIoBBIRCgllZGl0X3RleHQYAiACKAkSNAoQb3JpZ2luYWxfbWVzc2FnZRgD", + "IAIoCzIaLmxpdmVraXQucHJvdG8uQ2hhdE1lc3NhZ2USHgoWZGVzdGluYXRp", + "b25faWRlbnRpdGllcxgEIAMoCRIXCg9zZW5kZXJfaWRlbnRpdHkYBSABKAkS", + "GAoQcmVxdWVzdF9hc3luY19pZBgGIAEoBCIrChdTZW5kQ2hhdE1lc3NhZ2VS", + "ZXNwb25zZRIQCghhc3luY19pZBgBIAIoBCJ7ChdTZW5kQ2hhdE1lc3NhZ2VD", + "YWxsYmFjaxIQCghhc3luY19pZBgBIAIoBBIPCgVlcnJvchgCIAEoCUgAEjIK", + "DGNoYXRfbWVzc2FnZRgDIAEoCzIaLmxpdmVraXQucHJvdG8uQ2hhdE1lc3Nh", + "Z2VIAEIJCgdtZXNzYWdlIosBChlTZXRMb2NhbEF0dHJpYnV0ZXNSZXF1ZXN0", + "EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hhbmRsZRgBIAIoBBIyCgphdHRyaWJ1", + "dGVzGAIgAygLMh4ubGl2ZWtpdC5wcm90by5BdHRyaWJ1dGVzRW50cnkSGAoQ", + "cmVxdWVzdF9hc3luY19pZBgDIAEoBCItCg9BdHRyaWJ1dGVzRW50cnkSCwoD", + "a2V5GAEgAigJEg0KBXZhbHVlGAIgAigJIi4KGlNldExvY2FsQXR0cmlidXRl", + "c1Jlc3BvbnNlEhAKCGFzeW5jX2lkGAEgAigEIj0KGlNldExvY2FsQXR0cmli", + "dXRlc0NhbGxiYWNrEhAKCGFzeW5jX2lkGAEgAigEEg0KBWVycm9yGAIgASgJ", + "Il8KE1NldExvY2FsTmFtZVJlcXVlc3QSIAoYbG9jYWxfcGFydGljaXBhbnRf", + "aGFuZGxlGAEgAigEEgwKBG5hbWUYAiACKAkSGAoQcmVxdWVzdF9hc3luY19p", + "ZBgDIAEoBCIoChRTZXRMb2NhbE5hbWVSZXNwb25zZRIQCghhc3luY19pZBgB", + "IAIoBCI3ChRTZXRMb2NhbE5hbWVDYWxsYmFjaxIQCghhc3luY19pZBgBIAIo", + "BBINCgVlcnJvchgCIAEoCSJFChRTZXRTdWJzY3JpYmVkUmVxdWVzdBIRCglz", + "dWJzY3JpYmUYASACKAgSGgoScHVibGljYXRpb25faGFuZGxlGAIgAigEIhcK", + "FVNldFN1YnNjcmliZWRSZXNwb25zZSJHChZHZXRTZXNzaW9uU3RhdHNSZXF1", + "ZXN0EhMKC3Jvb21faGFuZGxlGAEgAigEEhgKEHJlcXVlc3RfYXN5bmNfaWQY", + "AiABKAQiKwoXR2V0U2Vzc2lvblN0YXRzUmVzcG9uc2USEAoIYXN5bmNfaWQY", + "ASACKAQi9wEKF0dldFNlc3Npb25TdGF0c0NhbGxiYWNrEhAKCGFzeW5jX2lk", + "GAEgAigEEg8KBWVycm9yGAIgASgJSAASPwoGcmVzdWx0GAMgASgLMi0ubGl2", + "ZWtpdC5wcm90by5HZXRTZXNzaW9uU3RhdHNDYWxsYmFjay5SZXN1bHRIABpt", + "CgZSZXN1bHQSMAoPcHVibGlzaGVyX3N0YXRzGAEgAygLMhcubGl2ZWtpdC5w", + "cm90by5SdGNTdGF0cxIxChBzdWJzY3JpYmVyX3N0YXRzGAIgAygLMhcubGl2", + "ZWtpdC5wcm90by5SdGNTdGF0c0IJCgdtZXNzYWdlIjsKDVZpZGVvRW5jb2Rp", + "bmcSEwoLbWF4X2JpdHJhdGUYASACKAQSFQoNbWF4X2ZyYW1lcmF0ZRgCIAIo", + "ASIkCg1BdWRpb0VuY29kaW5nEhMKC21heF9iaXRyYXRlGAEgAigEIpUDChNU", + "cmFja1B1Ymxpc2hPcHRpb25zEjQKDnZpZGVvX2VuY29kaW5nGAEgASgLMhwu", + "bGl2ZWtpdC5wcm90by5WaWRlb0VuY29kaW5nEjQKDmF1ZGlvX2VuY29kaW5n", + "GAIgASgLMhwubGl2ZWtpdC5wcm90by5BdWRpb0VuY29kaW5nEi4KC3ZpZGVv", + "X2NvZGVjGAMgASgOMhkubGl2ZWtpdC5wcm90by5WaWRlb0NvZGVjEgsKA2R0", + "eBgEIAEoCBILCgNyZWQYBSABKAgSEQoJc2ltdWxjYXN0GAYgASgIEioKBnNv", + "dXJjZRgHIAEoDjIaLmxpdmVraXQucHJvdG8uVHJhY2tTb3VyY2USDgoGc3Ry", + "ZWFtGAggASgJEhkKEXByZWNvbm5lY3RfYnVmZmVyGAkgASgIEkQKF3BhY2tl", + "dF90cmFpbGVyX2ZlYXR1cmVzGAogAygOMiMubGl2ZWtpdC5wcm90by5QYWNr", + "ZXRUcmFpbGVyRmVhdHVyZRIYChBzY2FsYWJpbGl0eV9tb2RlGAsgASgJIj0K", + "CUljZVNlcnZlchIMCgR1cmxzGAEgAygJEhAKCHVzZXJuYW1lGAIgASgJEhAK", + "CHBhc3N3b3JkGAMgASgJIsQBCglSdGNDb25maWcSOwoSaWNlX3RyYW5zcG9y", + "dF90eXBlGAEgASgOMh8ubGl2ZWtpdC5wcm90by5JY2VUcmFuc3BvcnRUeXBl", + "EksKGmNvbnRpbnVhbF9nYXRoZXJpbmdfcG9saWN5GAIgASgOMicubGl2ZWtp", + "dC5wcm90by5Db250aW51YWxHYXRoZXJpbmdQb2xpY3kSLQoLaWNlX3NlcnZl", + "cnMYAyADKAsyGC5saXZla2l0LnByb3RvLkljZVNlcnZlciKuAgoLUm9vbU9w", + "dGlvbnMSFgoOYXV0b19zdWJzY3JpYmUYASABKAgSFwoPYWRhcHRpdmVfc3Ry", + "ZWFtGAIgASgIEhAKCGR5bmFjYXN0GAMgASgIEiwKBGUyZWUYBCABKAsyGi5s", + "aXZla2l0LnByb3RvLkUyZWVPcHRpb25zQgIYARIsCgpydGNfY29uZmlnGAUg", + "ASgLMhgubGl2ZWtpdC5wcm90by5SdGNDb25maWcSFAoMam9pbl9yZXRyaWVz", + "GAYgASgNEi4KCmVuY3J5cHRpb24YByABKAsyGi5saXZla2l0LnByb3RvLkUy", + "ZWVPcHRpb25zEh4KFnNpbmdsZV9wZWVyX2Nvbm5lY3Rpb24YCCABKAgSGgoS", + "Y29ubmVjdF90aW1lb3V0X21zGAkgASgEIncKFFRyYW5zY3JpcHRpb25TZWdt", + "ZW50EgoKAmlkGAEgAigJEgwKBHRleHQYAiACKAkSEgoKc3RhcnRfdGltZRgD", + "IAIoBBIQCghlbmRfdGltZRgEIAIoBBINCgVmaW5hbBgFIAIoCBIQCghsYW5n", + "dWFnZRgGIAIoCSIwCgpCdWZmZXJJbmZvEhAKCGRhdGFfcHRyGAEgAigEEhAK", + "CGRhdGFfbGVuGAIgAigEImUKC093bmVkQnVmZmVyEi0KBmhhbmRsZRgBIAIo", + "CzIdLmxpdmVraXQucHJvdG8uRmZpT3duZWRIYW5kbGUSJwoEZGF0YRgCIAIo", + "CzIZLmxpdmVraXQucHJvdG8uQnVmZmVySW5mbyLOFwoJUm9vbUV2ZW50EhMK", + "C3Jvb21faGFuZGxlGAEgAigEEkQKFXBhcnRpY2lwYW50X2Nvbm5lY3RlZBgC", + "IAEoCzIjLmxpdmVraXQucHJvdG8uUGFydGljaXBhbnRDb25uZWN0ZWRIABJK", + "ChhwYXJ0aWNpcGFudF9kaXNjb25uZWN0ZWQYAyABKAsyJi5saXZla2l0LnBy", + "b3RvLlBhcnRpY2lwYW50RGlzY29ubmVjdGVkSAASQwoVbG9jYWxfdHJhY2tf", + "cHVibGlzaGVkGAQgASgLMiIubGl2ZWtpdC5wcm90by5Mb2NhbFRyYWNrUHVi", + "bGlzaGVkSAASRwoXbG9jYWxfdHJhY2tfdW5wdWJsaXNoZWQYBSABKAsyJC5s", + "aXZla2l0LnByb3RvLkxvY2FsVHJhY2tVbnB1Ymxpc2hlZEgAEkUKFmxvY2Fs", + "X3RyYWNrX3N1YnNjcmliZWQYBiABKAsyIy5saXZla2l0LnByb3RvLkxvY2Fs", + "VHJhY2tTdWJzY3JpYmVkSAASOAoPdHJhY2tfcHVibGlzaGVkGAcgASgLMh0u", + "bGl2ZWtpdC5wcm90by5UcmFja1B1Ymxpc2hlZEgAEjwKEXRyYWNrX3VucHVi", + "bGlzaGVkGAggASgLMh8ubGl2ZWtpdC5wcm90by5UcmFja1VucHVibGlzaGVk", + "SAASOgoQdHJhY2tfc3Vic2NyaWJlZBgJIAEoCzIeLmxpdmVraXQucHJvdG8u", + "VHJhY2tTdWJzY3JpYmVkSAASPgoSdHJhY2tfdW5zdWJzY3JpYmVkGAogASgL", + "MiAubGl2ZWtpdC5wcm90by5UcmFja1Vuc3Vic2NyaWJlZEgAEksKGXRyYWNr", + "X3N1YnNjcmlwdGlvbl9mYWlsZWQYCyABKAsyJi5saXZla2l0LnByb3RvLlRy", + "YWNrU3Vic2NyaXB0aW9uRmFpbGVkSAASMAoLdHJhY2tfbXV0ZWQYDCABKAsy", + "GS5saXZla2l0LnByb3RvLlRyYWNrTXV0ZWRIABI0Cg10cmFja191bm11dGVk", + "GA0gASgLMhsubGl2ZWtpdC5wcm90by5UcmFja1VubXV0ZWRIABJHChdhY3Rp", + "dmVfc3BlYWtlcnNfY2hhbmdlZBgOIAEoCzIkLmxpdmVraXQucHJvdG8uQWN0", + "aXZlU3BlYWtlcnNDaGFuZ2VkSAASQwoVcm9vbV9tZXRhZGF0YV9jaGFuZ2Vk", + "GA8gASgLMiIubGl2ZWtpdC5wcm90by5Sb29tTWV0YWRhdGFDaGFuZ2VkSAAS", + "OQoQcm9vbV9zaWRfY2hhbmdlZBgQIAEoCzIdLmxpdmVraXQucHJvdG8uUm9v", + "bVNpZENoYW5nZWRIABJRChxwYXJ0aWNpcGFudF9tZXRhZGF0YV9jaGFuZ2Vk", + "GBEgASgLMikubGl2ZWtpdC5wcm90by5QYXJ0aWNpcGFudE1ldGFkYXRhQ2hh", + "bmdlZEgAEkkKGHBhcnRpY2lwYW50X25hbWVfY2hhbmdlZBgSIAEoCzIlLmxp", + "dmVraXQucHJvdG8uUGFydGljaXBhbnROYW1lQ2hhbmdlZEgAElUKHnBhcnRp", + "Y2lwYW50X2F0dHJpYnV0ZXNfY2hhbmdlZBgTIAEoCzIrLmxpdmVraXQucHJv", + "dG8uUGFydGljaXBhbnRBdHRyaWJ1dGVzQ2hhbmdlZEgAEk0KGmNvbm5lY3Rp", + "b25fcXVhbGl0eV9jaGFuZ2VkGBQgASgLMicubGl2ZWtpdC5wcm90by5Db25u", + "ZWN0aW9uUXVhbGl0eUNoYW5nZWRIABJJChhjb25uZWN0aW9uX3N0YXRlX2No", + "YW5nZWQYFSABKAsyJS5saXZla2l0LnByb3RvLkNvbm5lY3Rpb25TdGF0ZUNo", + "YW5nZWRIABIzCgxkaXNjb25uZWN0ZWQYFiABKAsyGy5saXZla2l0LnByb3Rv", + "LkRpc2Nvbm5lY3RlZEgAEjMKDHJlY29ubmVjdGluZxgXIAEoCzIbLmxpdmVr", + "aXQucHJvdG8uUmVjb25uZWN0aW5nSAASMQoLcmVjb25uZWN0ZWQYGCABKAsy", + "Gi5saXZla2l0LnByb3RvLlJlY29ubmVjdGVkSAASPQoSZTJlZV9zdGF0ZV9j", + "aGFuZ2VkGBkgASgLMh8ubGl2ZWtpdC5wcm90by5FMmVlU3RhdGVDaGFuZ2Vk", + "SAASJQoDZW9zGBogASgLMhYubGl2ZWtpdC5wcm90by5Sb29tRU9TSAASQQoU", + "ZGF0YV9wYWNrZXRfcmVjZWl2ZWQYGyABKAsyIS5saXZla2l0LnByb3RvLkRh", + "dGFQYWNrZXRSZWNlaXZlZEgAEkYKFnRyYW5zY3JpcHRpb25fcmVjZWl2ZWQY", + "HCABKAsyJC5saXZla2l0LnByb3RvLlRyYW5zY3JpcHRpb25SZWNlaXZlZEgA", + "EjoKDGNoYXRfbWVzc2FnZRgdIAEoCzIiLmxpdmVraXQucHJvdG8uQ2hhdE1l", + "c3NhZ2VSZWNlaXZlZEgAEkkKFnN0cmVhbV9oZWFkZXJfcmVjZWl2ZWQYHiAB", + "KAsyJy5saXZla2l0LnByb3RvLkRhdGFTdHJlYW1IZWFkZXJSZWNlaXZlZEgA", + "EkcKFXN0cmVhbV9jaHVua19yZWNlaXZlZBgfIAEoCzImLmxpdmVraXQucHJv", + "dG8uRGF0YVN0cmVhbUNodW5rUmVjZWl2ZWRIABJLChdzdHJlYW1fdHJhaWxl", + "cl9yZWNlaXZlZBggIAEoCzIoLmxpdmVraXQucHJvdG8uRGF0YVN0cmVhbVRy", + "YWlsZXJSZWNlaXZlZEgAEmkKImRhdGFfY2hhbm5lbF9sb3dfdGhyZXNob2xk", + "X2NoYW5nZWQYISABKAsyOy5saXZla2l0LnByb3RvLkRhdGFDaGFubmVsQnVm", + "ZmVyZWRBbW91bnRMb3dUaHJlc2hvbGRDaGFuZ2VkSAASPQoSYnl0ZV9zdHJl", + "YW1fb3BlbmVkGCIgASgLMh8ubGl2ZWtpdC5wcm90by5CeXRlU3RyZWFtT3Bl", + "bmVkSAASPQoSdGV4dF9zdHJlYW1fb3BlbmVkGCMgASgLMh8ubGl2ZWtpdC5w", + "cm90by5UZXh0U3RyZWFtT3BlbmVkSAASLwoMcm9vbV91cGRhdGVkGCQgASgL", + "MhcubGl2ZWtpdC5wcm90by5Sb29tSW5mb0gAEigKBW1vdmVkGCUgASgLMhcu", + "bGl2ZWtpdC5wcm90by5Sb29tSW5mb0gAEkIKFHBhcnRpY2lwYW50c191cGRh", + "dGVkGCYgASgLMiIubGl2ZWtpdC5wcm90by5QYXJ0aWNpcGFudHNVcGRhdGVk", + "SAASYgolcGFydGljaXBhbnRfZW5jcnlwdGlvbl9zdGF0dXNfY2hhbmdlZBgn", + "IAEoCzIxLmxpdmVraXQucHJvdG8uUGFydGljaXBhbnRFbmNyeXB0aW9uU3Rh", + "dHVzQ2hhbmdlZEgAElUKHnBhcnRpY2lwYW50X3Blcm1pc3Npb25fY2hhbmdl", + "ZBgpIAEoCzIrLmxpdmVraXQucHJvdG8uUGFydGljaXBhbnRQZXJtaXNzaW9u", + "Q2hhbmdlZEgAEjgKD3Rva2VuX3JlZnJlc2hlZBgoIAEoCzIdLmxpdmVraXQu", + "cHJvdG8uVG9rZW5SZWZyZXNoZWRIABI+ChJwYXJ0aWNpcGFudF9hY3RpdmUY", + "KiABKAsyIC5saXZla2l0LnByb3RvLlBhcnRpY2lwYW50QWN0aXZlSAASQQoU", + "ZGF0YV90cmFja19wdWJsaXNoZWQYKyABKAsyIS5saXZla2l0LnByb3RvLkRh", + "dGFUcmFja1B1Ymxpc2hlZEgAEkUKFmRhdGFfdHJhY2tfdW5wdWJsaXNoZWQY", + "LCABKAsyIy5saXZla2l0LnByb3RvLkRhdGFUcmFja1VucHVibGlzaGVkSAAS", + "RwoXbG9jYWxfdHJhY2tfcmVwdWJsaXNoZWQYLSABKAsyJC5saXZla2l0LnBy", + "b3RvLkxvY2FsVHJhY2tSZXB1Ymxpc2hlZEgAQgkKB21lc3NhZ2UiyQIKCFJv", "b21JbmZvEgsKA3NpZBgBIAEoCRIMCgRuYW1lGAIgAigJEhAKCG1ldGFkYXRh", "GAMgAigJEi4KJmxvc3N5X2RjX2J1ZmZlcmVkX2Ftb3VudF9sb3dfdGhyZXNo", "b2xkGAQgAigEEjEKKXJlbGlhYmxlX2RjX2J1ZmZlcmVkX2Ftb3VudF9sb3df", @@ -227,133 +236,141 @@ static RoomReflection() { "ASACKAkSOgoRZGlzY29ubmVjdF9yZWFzb24YAiACKA4yHy5saXZla2l0LnBy", "b3RvLkRpc2Nvbm5lY3RSZWFzb24iKAoTTG9jYWxUcmFja1B1Ymxpc2hlZBIR", "Cgl0cmFja19zaWQYASACKAkiMAoVTG9jYWxUcmFja1VucHVibGlzaGVkEhcK", - "D3B1YmxpY2F0aW9uX3NpZBgBIAIoCSIpChRMb2NhbFRyYWNrU3Vic2NyaWJl", - "ZBIRCgl0cmFja19zaWQYAiACKAkiaQoOVHJhY2tQdWJsaXNoZWQSHAoUcGFy", - "dGljaXBhbnRfaWRlbnRpdHkYASACKAkSOQoLcHVibGljYXRpb24YAiACKAsy", - "JC5saXZla2l0LnByb3RvLk93bmVkVHJhY2tQdWJsaWNhdGlvbiJJChBUcmFj", - "a1VucHVibGlzaGVkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAEgAigJEhcK", - "D3B1YmxpY2F0aW9uX3NpZBgCIAIoCSJZCg9UcmFja1N1YnNjcmliZWQSHAoU", - "cGFydGljaXBhbnRfaWRlbnRpdHkYASACKAkSKAoFdHJhY2sYAiACKAsyGS5s", - "aXZla2l0LnByb3RvLk93bmVkVHJhY2siRAoRVHJhY2tVbnN1YnNjcmliZWQS", - "HAoUcGFydGljaXBhbnRfaWRlbnRpdHkYASACKAkSEQoJdHJhY2tfc2lkGAIg", - "AigJIlkKF1RyYWNrU3Vic2NyaXB0aW9uRmFpbGVkEhwKFHBhcnRpY2lwYW50", - "X2lkZW50aXR5GAEgAigJEhEKCXRyYWNrX3NpZBgCIAIoCRINCgVlcnJvchgD", - "IAIoCSI9CgpUcmFja011dGVkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAEg", - "AigJEhEKCXRyYWNrX3NpZBgCIAIoCSI/CgxUcmFja1VubXV0ZWQSHAoUcGFy", - "dGljaXBhbnRfaWRlbnRpdHkYASACKAkSEQoJdHJhY2tfc2lkGAIgAigJIl8K", - "EEUyZWVTdGF0ZUNoYW5nZWQSHAoUcGFydGljaXBhbnRfaWRlbnRpdHkYASAC", - "KAkSLQoFc3RhdGUYAiACKA4yHi5saXZla2l0LnByb3RvLkVuY3J5cHRpb25T", - "dGF0ZSI3ChVBY3RpdmVTcGVha2Vyc0NoYW5nZWQSHgoWcGFydGljaXBhbnRf", - "aWRlbnRpdGllcxgBIAMoCSInChNSb29tTWV0YWRhdGFDaGFuZ2VkEhAKCG1l", - "dGFkYXRhGAEgAigJIh0KDlJvb21TaWRDaGFuZ2VkEgsKA3NpZBgBIAIoCSJM", - "ChpQYXJ0aWNpcGFudE1ldGFkYXRhQ2hhbmdlZBIcChRwYXJ0aWNpcGFudF9p", - "ZGVudGl0eRgBIAIoCRIQCghtZXRhZGF0YRgCIAIoCSKsAQocUGFydGljaXBh", - "bnRBdHRyaWJ1dGVzQ2hhbmdlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgB", - "IAIoCRIyCgphdHRyaWJ1dGVzGAIgAygLMh4ubGl2ZWtpdC5wcm90by5BdHRy", - "aWJ1dGVzRW50cnkSOgoSY2hhbmdlZF9hdHRyaWJ1dGVzGAMgAygLMh4ubGl2", - "ZWtpdC5wcm90by5BdHRyaWJ1dGVzRW50cnkiWAoiUGFydGljaXBhbnRFbmNy", - "eXB0aW9uU3RhdHVzQ2hhbmdlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgB", - "IAIoCRIUCgxpc19lbmNyeXB0ZWQYAiACKAgiRAoWUGFydGljaXBhbnROYW1l", - "Q2hhbmdlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRIMCgRuYW1l", - "GAIgAigJInYKHFBhcnRpY2lwYW50UGVybWlzc2lvbkNoYW5nZWQSHAoUcGFy", - "dGljaXBhbnRfaWRlbnRpdHkYASACKAkSOAoKcGVybWlzc2lvbhgCIAEoCzIk", - "LmxpdmVraXQucHJvdG8uUGFydGljaXBhbnRQZXJtaXNzaW9uImsKGENvbm5l", - "Y3Rpb25RdWFsaXR5Q2hhbmdlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgB", - "IAIoCRIxCgdxdWFsaXR5GAIgAigOMiAubGl2ZWtpdC5wcm90by5Db25uZWN0", - "aW9uUXVhbGl0eSJFCgpVc2VyUGFja2V0EigKBGRhdGEYASACKAsyGi5saXZl", - "a2l0LnByb3RvLk93bmVkQnVmZmVyEg0KBXRvcGljGAIgASgJInkKC0NoYXRN", - "ZXNzYWdlEgoKAmlkGAEgAigJEhEKCXRpbWVzdGFtcBgCIAIoAxIPCgdtZXNz", - "YWdlGAMgAigJEhYKDmVkaXRfdGltZXN0YW1wGAQgASgDEg8KB2RlbGV0ZWQY", - "BSABKAgSEQoJZ2VuZXJhdGVkGAYgASgIImAKE0NoYXRNZXNzYWdlUmVjZWl2", - "ZWQSKwoHbWVzc2FnZRgBIAIoCzIaLmxpdmVraXQucHJvdG8uQ2hhdE1lc3Nh", - "Z2USHAoUcGFydGljaXBhbnRfaWRlbnRpdHkYAiACKAkiJgoHU2lwRFRNRhIM", - "CgRjb2RlGAEgAigNEg0KBWRpZ2l0GAIgASgJIr8BChJEYXRhUGFja2V0UmVj", - "ZWl2ZWQSKwoEa2luZBgBIAIoDjIdLmxpdmVraXQucHJvdG8uRGF0YVBhY2tl", - "dEtpbmQSHAoUcGFydGljaXBhbnRfaWRlbnRpdHkYAiACKAkSKQoEdXNlchgE", - "IAEoCzIZLmxpdmVraXQucHJvdG8uVXNlclBhY2tldEgAEioKCHNpcF9kdG1m", - "GAUgASgLMhYubGl2ZWtpdC5wcm90by5TaXBEVE1GSABCBwoFdmFsdWUifwoV", - "VHJhbnNjcmlwdGlvblJlY2VpdmVkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5", - "GAEgASgJEhEKCXRyYWNrX3NpZBgCIAEoCRI1CghzZWdtZW50cxgDIAMoCzIj", - "LmxpdmVraXQucHJvdG8uVHJhbnNjcmlwdGlvblNlZ21lbnQiRwoWQ29ubmVj", - "dGlvblN0YXRlQ2hhbmdlZBItCgVzdGF0ZRgBIAIoDjIeLmxpdmVraXQucHJv", - "dG8uQ29ubmVjdGlvblN0YXRlIgsKCUNvbm5lY3RlZCI/CgxEaXNjb25uZWN0", - "ZWQSLwoGcmVhc29uGAEgAigOMh8ubGl2ZWtpdC5wcm90by5EaXNjb25uZWN0", - "UmVhc29uIg4KDFJlY29ubmVjdGluZyINCgtSZWNvbm5lY3RlZCIfCg5Ub2tl", - "blJlZnJlc2hlZBINCgV0b2tlbhgBIAIoCSIJCgdSb29tRU9TIo4HCgpEYXRh", - "U3RyZWFtGqoBCgpUZXh0SGVhZGVyEj8KDm9wZXJhdGlvbl90eXBlGAEgAigO", - "MicubGl2ZWtpdC5wcm90by5EYXRhU3RyZWFtLk9wZXJhdGlvblR5cGUSDwoH", - "dmVyc2lvbhgCIAEoBRIaChJyZXBseV90b19zdHJlYW1faWQYAyABKAkSGwoT", - "YXR0YWNoZWRfc3RyZWFtX2lkcxgEIAMoCRIRCglnZW5lcmF0ZWQYBSABKAga", - "GgoKQnl0ZUhlYWRlchIMCgRuYW1lGAEgAigJGusCCgZIZWFkZXISEQoJc3Ry", - "ZWFtX2lkGAEgAigJEhEKCXRpbWVzdGFtcBgCIAIoAxIRCgltaW1lX3R5cGUY", - "AyACKAkSDQoFdG9waWMYBCACKAkSFAoMdG90YWxfbGVuZ3RoGAUgASgEEkQK", - "CmF0dHJpYnV0ZXMYBiADKAsyMC5saXZla2l0LnByb3RvLkRhdGFTdHJlYW0u", - "SGVhZGVyLkF0dHJpYnV0ZXNFbnRyeRI7Cgt0ZXh0X2hlYWRlchgHIAEoCzIk", - "LmxpdmVraXQucHJvdG8uRGF0YVN0cmVhbS5UZXh0SGVhZGVySAASOwoLYnl0", - "ZV9oZWFkZXIYCCABKAsyJC5saXZla2l0LnByb3RvLkRhdGFTdHJlYW0uQnl0", - "ZUhlYWRlckgAGjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoF", - "dmFsdWUYAiABKAk6AjgBQhAKDmNvbnRlbnRfaGVhZGVyGl0KBUNodW5rEhEK", - "CXN0cmVhbV9pZBgBIAIoCRITCgtjaHVua19pbmRleBgCIAIoBBIPCgdjb250", - "ZW50GAMgAigMEg8KB3ZlcnNpb24YBCABKAUSCgoCaXYYBSABKAwapgEKB1Ry", - "YWlsZXISEQoJc3RyZWFtX2lkGAEgAigJEg4KBnJlYXNvbhgCIAIoCRJFCgph", - "dHRyaWJ1dGVzGAMgAygLMjEubGl2ZWtpdC5wcm90by5EYXRhU3RyZWFtLlRy", - "YWlsZXIuQXR0cmlidXRlc0VudHJ5GjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNr", - "ZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkEKDU9wZXJhdGlvblR5cGUS", - "CgoGQ1JFQVRFEAASCgoGVVBEQVRFEAESCgoGREVMRVRFEAISDAoIUkVBQ1RJ", - "T04QAyJqChhEYXRhU3RyZWFtSGVhZGVyUmVjZWl2ZWQSHAoUcGFydGljaXBh", - "bnRfaWRlbnRpdHkYASACKAkSMAoGaGVhZGVyGAIgAigLMiAubGl2ZWtpdC5w", - "cm90by5EYXRhU3RyZWFtLkhlYWRlciJnChdEYXRhU3RyZWFtQ2h1bmtSZWNl", - "aXZlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRIuCgVjaHVuaxgC", - "IAIoCzIfLmxpdmVraXQucHJvdG8uRGF0YVN0cmVhbS5DaHVuayJtChlEYXRh", - "U3RyZWFtVHJhaWxlclJlY2VpdmVkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5", - "GAEgAigJEjIKB3RyYWlsZXIYAiACKAsyIS5saXZla2l0LnByb3RvLkRhdGFT", - "dHJlYW0uVHJhaWxlciLAAQoXU2VuZFN0cmVhbUhlYWRlclJlcXVlc3QSIAoY", - "bG9jYWxfcGFydGljaXBhbnRfaGFuZGxlGAEgAigEEjAKBmhlYWRlchgCIAIo", - "CzIgLmxpdmVraXQucHJvdG8uRGF0YVN0cmVhbS5IZWFkZXISHgoWZGVzdGlu", - "YXRpb25faWRlbnRpdGllcxgDIAMoCRIXCg9zZW5kZXJfaWRlbnRpdHkYBCAC", - "KAkSGAoQcmVxdWVzdF9hc3luY19pZBgFIAEoBCK9AQoWU2VuZFN0cmVhbUNo", - "dW5rUmVxdWVzdBIgChhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUYASACKAQS", - "LgoFY2h1bmsYAiACKAsyHy5saXZla2l0LnByb3RvLkRhdGFTdHJlYW0uQ2h1", - "bmsSHgoWZGVzdGluYXRpb25faWRlbnRpdGllcxgDIAMoCRIXCg9zZW5kZXJf", - "aWRlbnRpdHkYBCACKAkSGAoQcmVxdWVzdF9hc3luY19pZBgFIAEoBCLDAQoY", - "U2VuZFN0cmVhbVRyYWlsZXJSZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50", - "X2hhbmRsZRgBIAIoBBIyCgd0cmFpbGVyGAIgAigLMiEubGl2ZWtpdC5wcm90", - "by5EYXRhU3RyZWFtLlRyYWlsZXISHgoWZGVzdGluYXRpb25faWRlbnRpdGll", - "cxgDIAMoCRIXCg9zZW5kZXJfaWRlbnRpdHkYBCACKAkSGAoQcmVxdWVzdF9h", - "c3luY19pZBgFIAEoBCIsChhTZW5kU3RyZWFtSGVhZGVyUmVzcG9uc2USEAoI", - "YXN5bmNfaWQYASACKAQiKwoXU2VuZFN0cmVhbUNodW5rUmVzcG9uc2USEAoI", - "YXN5bmNfaWQYASACKAQiLQoZU2VuZFN0cmVhbVRyYWlsZXJSZXNwb25zZRIQ", - "Cghhc3luY19pZBgBIAIoBCI7ChhTZW5kU3RyZWFtSGVhZGVyQ2FsbGJhY2sS", - "EAoIYXN5bmNfaWQYASACKAQSDQoFZXJyb3IYAiABKAkiOgoXU2VuZFN0cmVh", - "bUNodW5rQ2FsbGJhY2sSEAoIYXN5bmNfaWQYASACKAQSDQoFZXJyb3IYAiAB", - "KAkiPAoZU2VuZFN0cmVhbVRyYWlsZXJDYWxsYmFjaxIQCghhc3luY19pZBgB", - "IAIoBBINCgVlcnJvchgCIAEoCSKTAQovU2V0RGF0YUNoYW5uZWxCdWZmZXJl", - "ZEFtb3VudExvd1RocmVzaG9sZFJlcXVlc3QSIAoYbG9jYWxfcGFydGljaXBh", - "bnRfaGFuZGxlGAEgAigEEhEKCXRocmVzaG9sZBgCIAIoBBIrCgRraW5kGAMg", - "AigOMh0ubGl2ZWtpdC5wcm90by5EYXRhUGFja2V0S2luZCIyCjBTZXREYXRh", - "Q2hhbm5lbEJ1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkUmVzcG9uc2Uibgos", - "RGF0YUNoYW5uZWxCdWZmZXJlZEFtb3VudExvd1RocmVzaG9sZENoYW5nZWQS", - "KwoEa2luZBgBIAIoDjIdLmxpdmVraXQucHJvdG8uRGF0YVBhY2tldEtpbmQS", - "EQoJdGhyZXNob2xkGAIgAigEImYKEEJ5dGVTdHJlYW1PcGVuZWQSNAoGcmVh", - "ZGVyGAEgAigLMiQubGl2ZWtpdC5wcm90by5Pd25lZEJ5dGVTdHJlYW1SZWFk", - "ZXISHAoUcGFydGljaXBhbnRfaWRlbnRpdHkYAiACKAkiZgoQVGV4dFN0cmVh", - "bU9wZW5lZBI0CgZyZWFkZXIYASACKAsyJC5saXZla2l0LnByb3RvLk93bmVk", - "VGV4dFN0cmVhbVJlYWRlchIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgCIAIo", - "CSJIChJEYXRhVHJhY2tQdWJsaXNoZWQSMgoFdHJhY2sYASACKAsyIy5saXZl", - "a2l0LnByb3RvLk93bmVkUmVtb3RlRGF0YVRyYWNrIiMKFERhdGFUcmFja1Vu", - "cHVibGlzaGVkEgsKA3NpZBgBIAIoCSpQChBJY2VUcmFuc3BvcnRUeXBlEhMK", - "D1RSQU5TUE9SVF9SRUxBWRAAEhQKEFRSQU5TUE9SVF9OT0hPU1QQARIRCg1U", - "UkFOU1BPUlRfQUxMEAIqQwoYQ29udGludWFsR2F0aGVyaW5nUG9saWN5Eg8K", - "C0dBVEhFUl9PTkNFEAASFgoSR0FUSEVSX0NPTlRJTlVBTExZEAEqYAoRQ29u", - "bmVjdGlvblF1YWxpdHkSEAoMUVVBTElUWV9QT09SEAASEAoMUVVBTElUWV9H", - "T09EEAESFQoRUVVBTElUWV9FWENFTExFTlQQAhIQCgxRVUFMSVRZX0xPU1QQ", - "AypTCg9Db25uZWN0aW9uU3RhdGUSFQoRQ09OTl9ESVNDT05ORUNURUQQABIS", - "Cg5DT05OX0NPTk5FQ1RFRBABEhUKEUNPTk5fUkVDT05ORUNUSU5HEAIqMwoO", - "RGF0YVBhY2tldEtpbmQSDgoKS0lORF9MT1NTWRAAEhEKDUtJTkRfUkVMSUFC", - "TEUQAUIQqgINTGl2ZUtpdC5Qcm90bw==")); + "D3B1YmxpY2F0aW9uX3NpZBgBIAIoCSJ8ChVMb2NhbFRyYWNrUmVwdWJsaXNo", + "ZWQSGgoScHVibGljYXRpb25faGFuZGxlGAEgAigEEhQKDHByZXZpb3VzX3Np", + "ZBgCIAIoCRIxCgRpbmZvGAMgAigLMiMubGl2ZWtpdC5wcm90by5UcmFja1B1", + "YmxpY2F0aW9uSW5mbyIpChRMb2NhbFRyYWNrU3Vic2NyaWJlZBIRCgl0cmFj", + "a19zaWQYAiACKAkiaQoOVHJhY2tQdWJsaXNoZWQSHAoUcGFydGljaXBhbnRf", + "aWRlbnRpdHkYASACKAkSOQoLcHVibGljYXRpb24YAiACKAsyJC5saXZla2l0", + "LnByb3RvLk93bmVkVHJhY2tQdWJsaWNhdGlvbiJJChBUcmFja1VucHVibGlz", + "aGVkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAEgAigJEhcKD3B1YmxpY2F0", + "aW9uX3NpZBgCIAIoCSJZCg9UcmFja1N1YnNjcmliZWQSHAoUcGFydGljaXBh", + "bnRfaWRlbnRpdHkYASACKAkSKAoFdHJhY2sYAiACKAsyGS5saXZla2l0LnBy", + "b3RvLk93bmVkVHJhY2siRAoRVHJhY2tVbnN1YnNjcmliZWQSHAoUcGFydGlj", + "aXBhbnRfaWRlbnRpdHkYASACKAkSEQoJdHJhY2tfc2lkGAIgAigJIlkKF1Ry", + "YWNrU3Vic2NyaXB0aW9uRmFpbGVkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5", + "GAEgAigJEhEKCXRyYWNrX3NpZBgCIAIoCRINCgVlcnJvchgDIAIoCSI9CgpU", + "cmFja011dGVkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAEgAigJEhEKCXRy", + "YWNrX3NpZBgCIAIoCSI/CgxUcmFja1VubXV0ZWQSHAoUcGFydGljaXBhbnRf", + "aWRlbnRpdHkYASACKAkSEQoJdHJhY2tfc2lkGAIgAigJIl8KEEUyZWVTdGF0", + "ZUNoYW5nZWQSHAoUcGFydGljaXBhbnRfaWRlbnRpdHkYASACKAkSLQoFc3Rh", + "dGUYAiACKA4yHi5saXZla2l0LnByb3RvLkVuY3J5cHRpb25TdGF0ZSI3ChVB", + "Y3RpdmVTcGVha2Vyc0NoYW5nZWQSHgoWcGFydGljaXBhbnRfaWRlbnRpdGll", + "cxgBIAMoCSInChNSb29tTWV0YWRhdGFDaGFuZ2VkEhAKCG1ldGFkYXRhGAEg", + "AigJIh0KDlJvb21TaWRDaGFuZ2VkEgsKA3NpZBgBIAIoCSJMChpQYXJ0aWNp", + "cGFudE1ldGFkYXRhQ2hhbmdlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgB", + "IAIoCRIQCghtZXRhZGF0YRgCIAIoCSKsAQocUGFydGljaXBhbnRBdHRyaWJ1", + "dGVzQ2hhbmdlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRIyCgph", + "dHRyaWJ1dGVzGAIgAygLMh4ubGl2ZWtpdC5wcm90by5BdHRyaWJ1dGVzRW50", + "cnkSOgoSY2hhbmdlZF9hdHRyaWJ1dGVzGAMgAygLMh4ubGl2ZWtpdC5wcm90", + "by5BdHRyaWJ1dGVzRW50cnkiWAoiUGFydGljaXBhbnRFbmNyeXB0aW9uU3Rh", + "dHVzQ2hhbmdlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRIUCgxp", + "c19lbmNyeXB0ZWQYAiACKAgiRAoWUGFydGljaXBhbnROYW1lQ2hhbmdlZBIc", + "ChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRIMCgRuYW1lGAIgAigJInYK", + "HFBhcnRpY2lwYW50UGVybWlzc2lvbkNoYW5nZWQSHAoUcGFydGljaXBhbnRf", + "aWRlbnRpdHkYASACKAkSOAoKcGVybWlzc2lvbhgCIAEoCzIkLmxpdmVraXQu", + "cHJvdG8uUGFydGljaXBhbnRQZXJtaXNzaW9uImsKGENvbm5lY3Rpb25RdWFs", + "aXR5Q2hhbmdlZBIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRIxCgdx", + "dWFsaXR5GAIgAigOMiAubGl2ZWtpdC5wcm90by5Db25uZWN0aW9uUXVhbGl0", + "eSJFCgpVc2VyUGFja2V0EigKBGRhdGEYASACKAsyGi5saXZla2l0LnByb3Rv", + "Lk93bmVkQnVmZmVyEg0KBXRvcGljGAIgASgJInkKC0NoYXRNZXNzYWdlEgoK", + "AmlkGAEgAigJEhEKCXRpbWVzdGFtcBgCIAIoAxIPCgdtZXNzYWdlGAMgAigJ", + "EhYKDmVkaXRfdGltZXN0YW1wGAQgASgDEg8KB2RlbGV0ZWQYBSABKAgSEQoJ", + "Z2VuZXJhdGVkGAYgASgIImAKE0NoYXRNZXNzYWdlUmVjZWl2ZWQSKwoHbWVz", + "c2FnZRgBIAIoCzIaLmxpdmVraXQucHJvdG8uQ2hhdE1lc3NhZ2USHAoUcGFy", + "dGljaXBhbnRfaWRlbnRpdHkYAiACKAkiJgoHU2lwRFRNRhIMCgRjb2RlGAEg", + "AigNEg0KBWRpZ2l0GAIgASgJIr8BChJEYXRhUGFja2V0UmVjZWl2ZWQSKwoE", + "a2luZBgBIAIoDjIdLmxpdmVraXQucHJvdG8uRGF0YVBhY2tldEtpbmQSHAoU", + "cGFydGljaXBhbnRfaWRlbnRpdHkYAiACKAkSKQoEdXNlchgEIAEoCzIZLmxp", + "dmVraXQucHJvdG8uVXNlclBhY2tldEgAEioKCHNpcF9kdG1mGAUgASgLMhYu", + "bGl2ZWtpdC5wcm90by5TaXBEVE1GSABCBwoFdmFsdWUifwoVVHJhbnNjcmlw", + "dGlvblJlY2VpdmVkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAEgASgJEhEK", + "CXRyYWNrX3NpZBgCIAEoCRI1CghzZWdtZW50cxgDIAMoCzIjLmxpdmVraXQu", + "cHJvdG8uVHJhbnNjcmlwdGlvblNlZ21lbnQiRwoWQ29ubmVjdGlvblN0YXRl", + "Q2hhbmdlZBItCgVzdGF0ZRgBIAIoDjIeLmxpdmVraXQucHJvdG8uQ29ubmVj", + "dGlvblN0YXRlIgsKCUNvbm5lY3RlZCI/CgxEaXNjb25uZWN0ZWQSLwoGcmVh", + "c29uGAEgAigOMh8ubGl2ZWtpdC5wcm90by5EaXNjb25uZWN0UmVhc29uIg4K", + "DFJlY29ubmVjdGluZyINCgtSZWNvbm5lY3RlZCIfCg5Ub2tlblJlZnJlc2hl", + "ZBINCgV0b2tlbhgBIAIoCSIJCgdSb29tRU9TIo4HCgpEYXRhU3RyZWFtGqoB", + "CgpUZXh0SGVhZGVyEj8KDm9wZXJhdGlvbl90eXBlGAEgAigOMicubGl2ZWtp", + "dC5wcm90by5EYXRhU3RyZWFtLk9wZXJhdGlvblR5cGUSDwoHdmVyc2lvbhgC", + "IAEoBRIaChJyZXBseV90b19zdHJlYW1faWQYAyABKAkSGwoTYXR0YWNoZWRf", + "c3RyZWFtX2lkcxgEIAMoCRIRCglnZW5lcmF0ZWQYBSABKAgaGgoKQnl0ZUhl", + "YWRlchIMCgRuYW1lGAEgAigJGusCCgZIZWFkZXISEQoJc3RyZWFtX2lkGAEg", + "AigJEhEKCXRpbWVzdGFtcBgCIAIoAxIRCgltaW1lX3R5cGUYAyACKAkSDQoF", + "dG9waWMYBCACKAkSFAoMdG90YWxfbGVuZ3RoGAUgASgEEkQKCmF0dHJpYnV0", + "ZXMYBiADKAsyMC5saXZla2l0LnByb3RvLkRhdGFTdHJlYW0uSGVhZGVyLkF0", + "dHJpYnV0ZXNFbnRyeRI7Cgt0ZXh0X2hlYWRlchgHIAEoCzIkLmxpdmVraXQu", + "cHJvdG8uRGF0YVN0cmVhbS5UZXh0SGVhZGVySAASOwoLYnl0ZV9oZWFkZXIY", + "CCABKAsyJC5saXZla2l0LnByb3RvLkRhdGFTdHJlYW0uQnl0ZUhlYWRlckgA", + "GjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiAB", + "KAk6AjgBQhAKDmNvbnRlbnRfaGVhZGVyGl0KBUNodW5rEhEKCXN0cmVhbV9p", + "ZBgBIAIoCRITCgtjaHVua19pbmRleBgCIAIoBBIPCgdjb250ZW50GAMgAigM", + "Eg8KB3ZlcnNpb24YBCABKAUSCgoCaXYYBSABKAwapgEKB1RyYWlsZXISEQoJ", + "c3RyZWFtX2lkGAEgAigJEg4KBnJlYXNvbhgCIAIoCRJFCgphdHRyaWJ1dGVz", + "GAMgAygLMjEubGl2ZWtpdC5wcm90by5EYXRhU3RyZWFtLlRyYWlsZXIuQXR0", + "cmlidXRlc0VudHJ5GjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkS", + "DQoFdmFsdWUYAiABKAk6AjgBIkEKDU9wZXJhdGlvblR5cGUSCgoGQ1JFQVRF", + "EAASCgoGVVBEQVRFEAESCgoGREVMRVRFEAISDAoIUkVBQ1RJT04QAyJqChhE", + "YXRhU3RyZWFtSGVhZGVyUmVjZWl2ZWQSHAoUcGFydGljaXBhbnRfaWRlbnRp", + "dHkYASACKAkSMAoGaGVhZGVyGAIgAigLMiAubGl2ZWtpdC5wcm90by5EYXRh", + "U3RyZWFtLkhlYWRlciJnChdEYXRhU3RyZWFtQ2h1bmtSZWNlaXZlZBIcChRw", + "YXJ0aWNpcGFudF9pZGVudGl0eRgBIAIoCRIuCgVjaHVuaxgCIAIoCzIfLmxp", + "dmVraXQucHJvdG8uRGF0YVN0cmVhbS5DaHVuayJtChlEYXRhU3RyZWFtVHJh", + "aWxlclJlY2VpdmVkEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAEgAigJEjIK", + "B3RyYWlsZXIYAiACKAsyIS5saXZla2l0LnByb3RvLkRhdGFTdHJlYW0uVHJh", + "aWxlciLAAQoXU2VuZFN0cmVhbUhlYWRlclJlcXVlc3QSIAoYbG9jYWxfcGFy", + "dGljaXBhbnRfaGFuZGxlGAEgAigEEjAKBmhlYWRlchgCIAIoCzIgLmxpdmVr", + "aXQucHJvdG8uRGF0YVN0cmVhbS5IZWFkZXISHgoWZGVzdGluYXRpb25faWRl", + "bnRpdGllcxgDIAMoCRIXCg9zZW5kZXJfaWRlbnRpdHkYBCACKAkSGAoQcmVx", + "dWVzdF9hc3luY19pZBgFIAEoBCK9AQoWU2VuZFN0cmVhbUNodW5rUmVxdWVz", + "dBIgChhsb2NhbF9wYXJ0aWNpcGFudF9oYW5kbGUYASACKAQSLgoFY2h1bmsY", + "AiACKAsyHy5saXZla2l0LnByb3RvLkRhdGFTdHJlYW0uQ2h1bmsSHgoWZGVz", + "dGluYXRpb25faWRlbnRpdGllcxgDIAMoCRIXCg9zZW5kZXJfaWRlbnRpdHkY", + "BCACKAkSGAoQcmVxdWVzdF9hc3luY19pZBgFIAEoBCLDAQoYU2VuZFN0cmVh", + "bVRyYWlsZXJSZXF1ZXN0EiAKGGxvY2FsX3BhcnRpY2lwYW50X2hhbmRsZRgB", + "IAIoBBIyCgd0cmFpbGVyGAIgAigLMiEubGl2ZWtpdC5wcm90by5EYXRhU3Ry", + "ZWFtLlRyYWlsZXISHgoWZGVzdGluYXRpb25faWRlbnRpdGllcxgDIAMoCRIX", + "Cg9zZW5kZXJfaWRlbnRpdHkYBCACKAkSGAoQcmVxdWVzdF9hc3luY19pZBgF", + "IAEoBCIsChhTZW5kU3RyZWFtSGVhZGVyUmVzcG9uc2USEAoIYXN5bmNfaWQY", + "ASACKAQiKwoXU2VuZFN0cmVhbUNodW5rUmVzcG9uc2USEAoIYXN5bmNfaWQY", + "ASACKAQiLQoZU2VuZFN0cmVhbVRyYWlsZXJSZXNwb25zZRIQCghhc3luY19p", + "ZBgBIAIoBCI7ChhTZW5kU3RyZWFtSGVhZGVyQ2FsbGJhY2sSEAoIYXN5bmNf", + "aWQYASACKAQSDQoFZXJyb3IYAiABKAkiOgoXU2VuZFN0cmVhbUNodW5rQ2Fs", + "bGJhY2sSEAoIYXN5bmNfaWQYASACKAQSDQoFZXJyb3IYAiABKAkiPAoZU2Vu", + "ZFN0cmVhbVRyYWlsZXJDYWxsYmFjaxIQCghhc3luY19pZBgBIAIoBBINCgVl", + "cnJvchgCIAEoCSKTAQovU2V0RGF0YUNoYW5uZWxCdWZmZXJlZEFtb3VudExv", + "d1RocmVzaG9sZFJlcXVlc3QSIAoYbG9jYWxfcGFydGljaXBhbnRfaGFuZGxl", + "GAEgAigEEhEKCXRocmVzaG9sZBgCIAIoBBIrCgRraW5kGAMgAigOMh0ubGl2", + "ZWtpdC5wcm90by5EYXRhUGFja2V0S2luZCIyCjBTZXREYXRhQ2hhbm5lbEJ1", + "ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkUmVzcG9uc2UibgosRGF0YUNoYW5u", + "ZWxCdWZmZXJlZEFtb3VudExvd1RocmVzaG9sZENoYW5nZWQSKwoEa2luZBgB", + "IAIoDjIdLmxpdmVraXQucHJvdG8uRGF0YVBhY2tldEtpbmQSEQoJdGhyZXNo", + "b2xkGAIgAigEImYKEEJ5dGVTdHJlYW1PcGVuZWQSNAoGcmVhZGVyGAEgAigL", + "MiQubGl2ZWtpdC5wcm90by5Pd25lZEJ5dGVTdHJlYW1SZWFkZXISHAoUcGFy", + "dGljaXBhbnRfaWRlbnRpdHkYAiACKAkiZgoQVGV4dFN0cmVhbU9wZW5lZBI0", + "CgZyZWFkZXIYASACKAsyJC5saXZla2l0LnByb3RvLk93bmVkVGV4dFN0cmVh", + "bVJlYWRlchIcChRwYXJ0aWNpcGFudF9pZGVudGl0eRgCIAIoCSJIChJEYXRh", + "VHJhY2tQdWJsaXNoZWQSMgoFdHJhY2sYASACKAsyIy5saXZla2l0LnByb3Rv", + "Lk93bmVkUmVtb3RlRGF0YVRyYWNrIiMKFERhdGFUcmFja1VucHVibGlzaGVk", + "EgsKA3NpZBgBIAIoCSrmAQoUU2ltdWxhdGVTY2VuYXJpb0tpbmQSHQoZU0lN", + "VUxBVEVfU0lHTkFMX1JFQ09OTkVDVBAAEhQKEFNJTVVMQVRFX1NQRUFLRVIQ", + "ARIZChVTSU1VTEFURV9OT0RFX0ZBSUxVUkUQAhIZChVTSU1VTEFURV9TRVJW", + "RVJfTEVBVkUQAxIWChJTSU1VTEFURV9NSUdSQVRJT04QBBIWChJTSU1VTEFU", + "RV9GT1JDRV9UQ1AQBRIWChJTSU1VTEFURV9GT1JDRV9UTFMQBhIbChdTSU1V", + "TEFURV9GVUxMX1JFQ09OTkVDVBAHKlAKEEljZVRyYW5zcG9ydFR5cGUSEwoP", + "VFJBTlNQT1JUX1JFTEFZEAASFAoQVFJBTlNQT1JUX05PSE9TVBABEhEKDVRS", + "QU5TUE9SVF9BTEwQAipDChhDb250aW51YWxHYXRoZXJpbmdQb2xpY3kSDwoL", + "R0FUSEVSX09OQ0UQABIWChJHQVRIRVJfQ09OVElOVUFMTFkQASpgChFDb25u", + "ZWN0aW9uUXVhbGl0eRIQCgxRVUFMSVRZX1BPT1IQABIQCgxRVUFMSVRZX0dP", + "T0QQARIVChFRVUFMSVRZX0VYQ0VMTEVOVBACEhAKDFFVQUxJVFlfTE9TVBAD", + "KlMKD0Nvbm5lY3Rpb25TdGF0ZRIVChFDT05OX0RJU0NPTk5FQ1RFRBAAEhIK", + "DkNPTk5fQ09OTkVDVEVEEAESFQoRQ09OTl9SRUNPTk5FQ1RJTkcQAiozCg5E", + "YXRhUGFja2V0S2luZBIOCgpLSU5EX0xPU1NZEAASEQoNS0lORF9SRUxJQUJM", + "RRABQhCqAg1MaXZlS2l0LlByb3Rv")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::LiveKit.Proto.E2EeReflection.Descriptor, global::LiveKit.Proto.HandleReflection.Descriptor, global::LiveKit.Proto.ParticipantReflection.Descriptor, global::LiveKit.Proto.TrackReflection.Descriptor, global::LiveKit.Proto.VideoFrameReflection.Descriptor, global::LiveKit.Proto.StatsReflection.Descriptor, global::LiveKit.Proto.DataStreamReflection.Descriptor, global::LiveKit.Proto.DataTrackReflection.Descriptor, }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::LiveKit.Proto.IceTransportType), typeof(global::LiveKit.Proto.ContinualGatheringPolicy), typeof(global::LiveKit.Proto.ConnectionQuality), typeof(global::LiveKit.Proto.ConnectionState), typeof(global::LiveKit.Proto.DataPacketKind), }, null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(new[] {typeof(global::LiveKit.Proto.SimulateScenarioKind), typeof(global::LiveKit.Proto.IceTransportType), typeof(global::LiveKit.Proto.ContinualGatheringPolicy), typeof(global::LiveKit.Proto.ConnectionQuality), typeof(global::LiveKit.Proto.ConnectionState), typeof(global::LiveKit.Proto.DataPacketKind), }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.ConnectRequest), global::LiveKit.Proto.ConnectRequest.Parser, new[]{ "Url", "Token", "Options", "RequestAsyncId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.ConnectResponse), global::LiveKit.Proto.ConnectResponse.Parser, new[]{ "AsyncId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.ConnectCallback), global::LiveKit.Proto.ConnectCallback.Parser, new[]{ "AsyncId", "Error", "Result" }, new[]{ "Message" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.ConnectCallback.Types.ParticipantWithTracks), global::LiveKit.Proto.ConnectCallback.Types.ParticipantWithTracks.Parser, new[]{ "Participant", "Publications" }, null, null, null, null), @@ -361,6 +378,9 @@ static RoomReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DisconnectRequest), global::LiveKit.Proto.DisconnectRequest.Parser, new[]{ "RoomHandle", "RequestAsyncId", "Reason" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DisconnectResponse), global::LiveKit.Proto.DisconnectResponse.Parser, new[]{ "AsyncId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.DisconnectCallback), global::LiveKit.Proto.DisconnectCallback.Parser, new[]{ "AsyncId" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.SimulateScenarioRequest), global::LiveKit.Proto.SimulateScenarioRequest.Parser, new[]{ "RoomHandle", "Scenario", "RequestAsyncId" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.SimulateScenarioResponse), global::LiveKit.Proto.SimulateScenarioResponse.Parser, new[]{ "AsyncId" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.SimulateScenarioCallback), global::LiveKit.Proto.SimulateScenarioCallback.Parser, new[]{ "AsyncId", "Error" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.PublishTrackRequest), global::LiveKit.Proto.PublishTrackRequest.Parser, new[]{ "LocalParticipantHandle", "TrackHandle", "Options", "RequestAsyncId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.PublishTrackResponse), global::LiveKit.Proto.PublishTrackResponse.Parser, new[]{ "AsyncId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.PublishTrackCallback), global::LiveKit.Proto.PublishTrackCallback.Parser, new[]{ "AsyncId", "Error", "Publication" }, new[]{ "Message" }, null, null, null), @@ -397,14 +417,14 @@ static RoomReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.GetSessionStatsCallback), global::LiveKit.Proto.GetSessionStatsCallback.Parser, new[]{ "AsyncId", "Error", "Result" }, new[]{ "Message" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.GetSessionStatsCallback.Types.Result), global::LiveKit.Proto.GetSessionStatsCallback.Types.Result.Parser, new[]{ "PublisherStats", "SubscriberStats" }, null, null, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoEncoding), global::LiveKit.Proto.VideoEncoding.Parser, new[]{ "MaxBitrate", "MaxFramerate" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.AudioEncoding), global::LiveKit.Proto.AudioEncoding.Parser, new[]{ "MaxBitrate" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.TrackPublishOptions), global::LiveKit.Proto.TrackPublishOptions.Parser, new[]{ "VideoEncoding", "AudioEncoding", "VideoCodec", "Dtx", "Red", "Simulcast", "Source", "Stream", "PreconnectBuffer" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.TrackPublishOptions), global::LiveKit.Proto.TrackPublishOptions.Parser, new[]{ "VideoEncoding", "AudioEncoding", "VideoCodec", "Dtx", "Red", "Simulcast", "Source", "Stream", "PreconnectBuffer", "PacketTrailerFeatures", "ScalabilityMode" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.IceServer), global::LiveKit.Proto.IceServer.Parser, new[]{ "Urls", "Username", "Password" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.RtcConfig), global::LiveKit.Proto.RtcConfig.Parser, new[]{ "IceTransportType", "ContinualGatheringPolicy", "IceServers" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.RoomOptions), global::LiveKit.Proto.RoomOptions.Parser, new[]{ "AutoSubscribe", "AdaptiveStream", "Dynacast", "E2Ee", "RtcConfig", "JoinRetries", "Encryption", "SinglePeerConnection", "ConnectTimeoutMs" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.TranscriptionSegment), global::LiveKit.Proto.TranscriptionSegment.Parser, new[]{ "Id", "Text", "StartTime", "EndTime", "Final", "Language" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.BufferInfo), global::LiveKit.Proto.BufferInfo.Parser, new[]{ "DataPtr", "DataLen" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedBuffer), global::LiveKit.Proto.OwnedBuffer.Parser, new[]{ "Handle", "Data" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.RoomEvent), global::LiveKit.Proto.RoomEvent.Parser, new[]{ "RoomHandle", "ParticipantConnected", "ParticipantDisconnected", "LocalTrackPublished", "LocalTrackUnpublished", "LocalTrackSubscribed", "TrackPublished", "TrackUnpublished", "TrackSubscribed", "TrackUnsubscribed", "TrackSubscriptionFailed", "TrackMuted", "TrackUnmuted", "ActiveSpeakersChanged", "RoomMetadataChanged", "RoomSidChanged", "ParticipantMetadataChanged", "ParticipantNameChanged", "ParticipantAttributesChanged", "ConnectionQualityChanged", "ConnectionStateChanged", "Disconnected", "Reconnecting", "Reconnected", "E2EeStateChanged", "Eos", "DataPacketReceived", "TranscriptionReceived", "ChatMessage", "StreamHeaderReceived", "StreamChunkReceived", "StreamTrailerReceived", "DataChannelLowThresholdChanged", "ByteStreamOpened", "TextStreamOpened", "RoomUpdated", "Moved", "ParticipantsUpdated", "ParticipantEncryptionStatusChanged", "ParticipantPermissionChanged", "TokenRefreshed", "ParticipantActive", "DataTrackPublished", "DataTrackUnpublished" }, new[]{ "Message" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.RoomEvent), global::LiveKit.Proto.RoomEvent.Parser, new[]{ "RoomHandle", "ParticipantConnected", "ParticipantDisconnected", "LocalTrackPublished", "LocalTrackUnpublished", "LocalTrackSubscribed", "TrackPublished", "TrackUnpublished", "TrackSubscribed", "TrackUnsubscribed", "TrackSubscriptionFailed", "TrackMuted", "TrackUnmuted", "ActiveSpeakersChanged", "RoomMetadataChanged", "RoomSidChanged", "ParticipantMetadataChanged", "ParticipantNameChanged", "ParticipantAttributesChanged", "ConnectionQualityChanged", "ConnectionStateChanged", "Disconnected", "Reconnecting", "Reconnected", "E2EeStateChanged", "Eos", "DataPacketReceived", "TranscriptionReceived", "ChatMessage", "StreamHeaderReceived", "StreamChunkReceived", "StreamTrailerReceived", "DataChannelLowThresholdChanged", "ByteStreamOpened", "TextStreamOpened", "RoomUpdated", "Moved", "ParticipantsUpdated", "ParticipantEncryptionStatusChanged", "ParticipantPermissionChanged", "TokenRefreshed", "ParticipantActive", "DataTrackPublished", "DataTrackUnpublished", "LocalTrackRepublished" }, new[]{ "Message" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.RoomInfo), global::LiveKit.Proto.RoomInfo.Parser, new[]{ "Sid", "Name", "Metadata", "LossyDcBufferedAmountLowThreshold", "ReliableDcBufferedAmountLowThreshold", "EmptyTimeout", "DepartureTimeout", "MaxParticipants", "CreationTime", "NumParticipants", "NumPublishers", "ActiveRecording" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedRoom), global::LiveKit.Proto.OwnedRoom.Parser, new[]{ "Handle", "Info" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.ParticipantsUpdated), global::LiveKit.Proto.ParticipantsUpdated.Parser, new[]{ "Participants" }, null, null, null, null), @@ -413,6 +433,7 @@ static RoomReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.ParticipantDisconnected), global::LiveKit.Proto.ParticipantDisconnected.Parser, new[]{ "ParticipantIdentity", "DisconnectReason" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LocalTrackPublished), global::LiveKit.Proto.LocalTrackPublished.Parser, new[]{ "TrackSid" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LocalTrackUnpublished), global::LiveKit.Proto.LocalTrackUnpublished.Parser, new[]{ "PublicationSid" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LocalTrackRepublished), global::LiveKit.Proto.LocalTrackRepublished.Parser, new[]{ "PublicationHandle", "PreviousSid", "Info" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.LocalTrackSubscribed), global::LiveKit.Proto.LocalTrackSubscribed.Parser, new[]{ "TrackSid" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.TrackPublished), global::LiveKit.Proto.TrackPublished.Parser, new[]{ "ParticipantIdentity", "Publication" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.TrackUnpublished), global::LiveKit.Proto.TrackUnpublished.Parser, new[]{ "ParticipantIdentity", "PublicationSid" }, null, null, null, null), @@ -474,6 +495,30 @@ static RoomReflection() { } #region Enums + /// + /// 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. + /// + public enum SimulateScenarioKind { + /// + /// Closes the signal channel locally; engine attempts a Resume. + /// + [pbr::OriginalName("SIMULATE_SIGNAL_RECONNECT")] SimulateSignalReconnect = 0, + [pbr::OriginalName("SIMULATE_SPEAKER")] SimulateSpeaker = 1, + [pbr::OriginalName("SIMULATE_NODE_FAILURE")] SimulateNodeFailure = 2, + [pbr::OriginalName("SIMULATE_SERVER_LEAVE")] SimulateServerLeave = 3, + [pbr::OriginalName("SIMULATE_MIGRATION")] SimulateMigration = 4, + [pbr::OriginalName("SIMULATE_FORCE_TCP")] SimulateForceTcp = 5, + [pbr::OriginalName("SIMULATE_FORCE_TLS")] SimulateForceTls = 6, + /// + /// Asks the server to send `LeaveRequest{Reconnect}`, forcing a full + /// reconnect (new RtcSession; SDK republishes existing local tracks). + /// + [pbr::OriginalName("SIMULATE_FULL_RECONNECT")] SimulateFullReconnect = 7, + } + public enum IceTransportType { [pbr::OriginalName("TRANSPORT_RELAY")] TransportRelay = 0, [pbr::OriginalName("TRANSPORT_NOHOST")] TransportNohost = 1, @@ -2712,21 +2757,18 @@ public void MergeFrom(pb::CodedInputStream input) { } - /// - /// Publish a track to the room - /// [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class PublishTrackRequest : pb::IMessage + public sealed partial class SimulateScenarioRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishTrackRequest()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SimulateScenarioRequest()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -2742,7 +2784,7 @@ public sealed partial class PublishTrackRequest : pb::IMessageField number for the "local_participant_handle" field. - public const int LocalParticipantHandleFieldNumber = 1; - private readonly static ulong LocalParticipantHandleDefaultValue = 0UL; + /// Field number for the "room_handle" field. + public const int RoomHandleFieldNumber = 1; + private readonly static ulong RoomHandleDefaultValue = 0UL; - private ulong localParticipantHandle_; + private ulong roomHandle_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ulong LocalParticipantHandle { - get { if ((_hasBits0 & 1) != 0) { return localParticipantHandle_; } else { return LocalParticipantHandleDefaultValue; } } + public ulong RoomHandle { + get { if ((_hasBits0 & 1) != 0) { return roomHandle_; } else { return RoomHandleDefaultValue; } } set { _hasBits0 |= 1; - localParticipantHandle_ = value; + roomHandle_ = value; } } - /// Gets whether the "local_participant_handle" field is set + /// Gets whether the "room_handle" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasLocalParticipantHandle { + public bool HasRoomHandle { get { return (_hasBits0 & 1) != 0; } } - /// Clears the value of the "local_participant_handle" field + /// Clears the value of the "room_handle" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearLocalParticipantHandle() { + public void ClearRoomHandle() { _hasBits0 &= ~1; } - /// Field number for the "track_handle" field. - public const int TrackHandleFieldNumber = 2; - private readonly static ulong TrackHandleDefaultValue = 0UL; + /// Field number for the "scenario" field. + public const int ScenarioFieldNumber = 2; + private readonly static global::LiveKit.Proto.SimulateScenarioKind ScenarioDefaultValue = global::LiveKit.Proto.SimulateScenarioKind.SimulateSignalReconnect; - private ulong trackHandle_; + private global::LiveKit.Proto.SimulateScenarioKind scenario_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ulong TrackHandle { - get { if ((_hasBits0 & 2) != 0) { return trackHandle_; } else { return TrackHandleDefaultValue; } } + public global::LiveKit.Proto.SimulateScenarioKind Scenario { + get { if ((_hasBits0 & 2) != 0) { return scenario_; } else { return ScenarioDefaultValue; } } set { _hasBits0 |= 2; - trackHandle_ = value; + scenario_ = value; } } - /// Gets whether the "track_handle" field is set + /// Gets whether the "scenario" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasTrackHandle { + public bool HasScenario { get { return (_hasBits0 & 2) != 0; } } - /// Clears the value of the "track_handle" field + /// Clears the value of the "scenario" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearTrackHandle() { + public void ClearScenario() { _hasBits0 &= ~2; } - /// Field number for the "options" field. - public const int OptionsFieldNumber = 3; - private global::LiveKit.Proto.TrackPublishOptions options_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public global::LiveKit.Proto.TrackPublishOptions Options { - get { return options_; } - set { - options_ = value; - } - } - /// Field number for the "request_async_id" field. - public const int RequestAsyncIdFieldNumber = 4; + public const int RequestAsyncIdFieldNumber = 3; private readonly static ulong RequestAsyncIdDefaultValue = 0UL; private ulong requestAsyncId_; @@ -2861,21 +2890,20 @@ public void ClearRequestAsyncId() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as PublishTrackRequest); + return Equals(other as SimulateScenarioRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(PublishTrackRequest other) { + public bool Equals(SimulateScenarioRequest other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } - if (LocalParticipantHandle != other.LocalParticipantHandle) return false; - if (TrackHandle != other.TrackHandle) return false; - if (!object.Equals(Options, other.Options)) return false; + if (RoomHandle != other.RoomHandle) return false; + if (Scenario != other.Scenario) return false; if (RequestAsyncId != other.RequestAsyncId) return false; return Equals(_unknownFields, other._unknownFields); } @@ -2884,9 +2912,8 @@ public bool Equals(PublishTrackRequest other) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; - if (HasLocalParticipantHandle) hash ^= LocalParticipantHandle.GetHashCode(); - if (HasTrackHandle) hash ^= TrackHandle.GetHashCode(); - if (options_ != null) hash ^= Options.GetHashCode(); + if (HasRoomHandle) hash ^= RoomHandle.GetHashCode(); + if (HasScenario) hash ^= Scenario.GetHashCode(); if (HasRequestAsyncId) hash ^= RequestAsyncId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -2906,20 +2933,16 @@ public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else - if (HasLocalParticipantHandle) { + if (HasRoomHandle) { output.WriteRawTag(8); - output.WriteUInt64(LocalParticipantHandle); + output.WriteUInt64(RoomHandle); } - if (HasTrackHandle) { + if (HasScenario) { output.WriteRawTag(16); - output.WriteUInt64(TrackHandle); - } - if (options_ != null) { - output.WriteRawTag(26); - output.WriteMessage(Options); + output.WriteEnum((int) Scenario); } if (HasRequestAsyncId) { - output.WriteRawTag(32); + output.WriteRawTag(24); output.WriteUInt64(RequestAsyncId); } if (_unknownFields != null) { @@ -2932,20 +2955,16 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (HasLocalParticipantHandle) { + if (HasRoomHandle) { output.WriteRawTag(8); - output.WriteUInt64(LocalParticipantHandle); + output.WriteUInt64(RoomHandle); } - if (HasTrackHandle) { + if (HasScenario) { output.WriteRawTag(16); - output.WriteUInt64(TrackHandle); - } - if (options_ != null) { - output.WriteRawTag(26); - output.WriteMessage(Options); + output.WriteEnum((int) Scenario); } if (HasRequestAsyncId) { - output.WriteRawTag(32); + output.WriteRawTag(24); output.WriteUInt64(RequestAsyncId); } if (_unknownFields != null) { @@ -2958,14 +2977,11 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; - if (HasLocalParticipantHandle) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(LocalParticipantHandle); - } - if (HasTrackHandle) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(TrackHandle); + if (HasRoomHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(RoomHandle); } - if (options_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); + if (HasScenario) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Scenario); } if (HasRequestAsyncId) { size += 1 + pb::CodedOutputStream.ComputeUInt64Size(RequestAsyncId); @@ -2978,21 +2994,15 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(PublishTrackRequest other) { + public void MergeFrom(SimulateScenarioRequest other) { if (other == null) { return; } - if (other.HasLocalParticipantHandle) { - LocalParticipantHandle = other.LocalParticipantHandle; - } - if (other.HasTrackHandle) { - TrackHandle = other.TrackHandle; + if (other.HasRoomHandle) { + RoomHandle = other.RoomHandle; } - if (other.options_ != null) { - if (options_ == null) { - Options = new global::LiveKit.Proto.TrackPublishOptions(); - } - Options.MergeFrom(other.Options); + if (other.HasScenario) { + Scenario = other.Scenario; } if (other.HasRequestAsyncId) { RequestAsyncId = other.RequestAsyncId; @@ -3017,21 +3027,14 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 8: { - LocalParticipantHandle = input.ReadUInt64(); + RoomHandle = input.ReadUInt64(); break; } case 16: { - TrackHandle = input.ReadUInt64(); + Scenario = (global::LiveKit.Proto.SimulateScenarioKind) input.ReadEnum(); break; } - case 26: { - if (options_ == null) { - Options = new global::LiveKit.Proto.TrackPublishOptions(); - } - input.ReadMessage(Options); - break; - } - case 32: { + case 24: { RequestAsyncId = input.ReadUInt64(); break; } @@ -3055,21 +3058,14 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 8: { - LocalParticipantHandle = input.ReadUInt64(); + RoomHandle = input.ReadUInt64(); break; } case 16: { - TrackHandle = input.ReadUInt64(); + Scenario = (global::LiveKit.Proto.SimulateScenarioKind) input.ReadEnum(); break; } - case 26: { - if (options_ == null) { - Options = new global::LiveKit.Proto.TrackPublishOptions(); - } - input.ReadMessage(Options); - break; - } - case 32: { + case 24: { RequestAsyncId = input.ReadUInt64(); break; } @@ -3081,17 +3077,17 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class PublishTrackResponse : pb::IMessage + public sealed partial class SimulateScenarioResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishTrackResponse()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SimulateScenarioResponse()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -3107,7 +3103,7 @@ public sealed partial class PublishTrackResponse : pb::IMessageField number for the "async_id" field. @@ -3157,12 +3153,12 @@ public void ClearAsyncId() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as PublishTrackResponse); + return Equals(other as SimulateScenarioResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(PublishTrackResponse other) { + public bool Equals(SimulateScenarioResponse other) { if (ReferenceEquals(other, null)) { return false; } @@ -3235,7 +3231,7 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(PublishTrackResponse other) { + public void MergeFrom(SimulateScenarioResponse other) { if (other == null) { return; } @@ -3296,17 +3292,17 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class PublishTrackCallback : pb::IMessage + public sealed partial class SimulateScenarioCallback : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishTrackCallback()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SimulateScenarioCallback()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -3322,7 +3318,7 @@ public sealed partial class PublishTrackCallback : pb::IMessageField number for the "async_id" field. @@ -3380,72 +3368,39 @@ public void ClearAsyncId() { /// Field number for the "error" field. public const int ErrorFieldNumber = 2; + private readonly static string ErrorDefaultValue = ""; + + private string error_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Error { - get { return HasError ? (string) message_ : ""; } + get { return error_ ?? ErrorDefaultValue; } set { - message_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - messageCase_ = MessageOneofCase.Error; + error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// Gets whether the "error" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool HasError { - get { return messageCase_ == MessageOneofCase.Error; } + get { return error_ != null; } } - /// Clears the value of the oneof if it's currently set to "error" + /// Clears the value of the "error" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void ClearError() { - if (HasError) { - ClearMessage(); - } - } - - /// Field number for the "publication" field. - public const int PublicationFieldNumber = 3; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public global::LiveKit.Proto.OwnedTrackPublication Publication { - get { return messageCase_ == MessageOneofCase.Publication ? (global::LiveKit.Proto.OwnedTrackPublication) message_ : null; } - set { - message_ = value; - messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.Publication; - } - } - - private object message_; - /// Enum of possible cases for the "message" oneof. - public enum MessageOneofCase { - None = 0, - Error = 2, - Publication = 3, - } - private MessageOneofCase messageCase_ = MessageOneofCase.None; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public MessageOneofCase MessageCase { - get { return messageCase_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearMessage() { - messageCase_ = MessageOneofCase.None; - message_ = null; + error_ = null; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as PublishTrackCallback); + return Equals(other as SimulateScenarioCallback); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(PublishTrackCallback other) { + public bool Equals(SimulateScenarioCallback other) { if (ReferenceEquals(other, null)) { return false; } @@ -3454,8 +3409,6 @@ public bool Equals(PublishTrackCallback other) { } if (AsyncId != other.AsyncId) return false; if (Error != other.Error) return false; - if (!object.Equals(Publication, other.Publication)) return false; - if (MessageCase != other.MessageCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -3465,8 +3418,6 @@ public override int GetHashCode() { int hash = 1; if (HasAsyncId) hash ^= AsyncId.GetHashCode(); if (HasError) hash ^= Error.GetHashCode(); - if (messageCase_ == MessageOneofCase.Publication) hash ^= Publication.GetHashCode(); - hash ^= (int) messageCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -3493,10 +3444,6 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(18); output.WriteString(Error); } - if (messageCase_ == MessageOneofCase.Publication) { - output.WriteRawTag(26); - output.WriteMessage(Publication); - } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -3515,10 +3462,6 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(18); output.WriteString(Error); } - if (messageCase_ == MessageOneofCase.Publication) { - output.WriteRawTag(26); - output.WriteMessage(Publication); - } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -3535,9 +3478,6 @@ public int CalculateSize() { if (HasError) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); } - if (messageCase_ == MessageOneofCase.Publication) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Publication); - } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -3546,25 +3486,16 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(PublishTrackCallback other) { + public void MergeFrom(SimulateScenarioCallback other) { if (other == null) { return; } if (other.HasAsyncId) { AsyncId = other.AsyncId; } - switch (other.MessageCase) { - case MessageOneofCase.Error: - Error = other.Error; - break; - case MessageOneofCase.Publication: - if (Publication == null) { - Publication = new global::LiveKit.Proto.OwnedTrackPublication(); - } - Publication.MergeFrom(other.Publication); - break; + if (other.HasError) { + Error = other.Error; } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -3592,15 +3523,6 @@ public void MergeFrom(pb::CodedInputStream input) { Error = input.ReadString(); break; } - case 26: { - global::LiveKit.Proto.OwnedTrackPublication subBuilder = new global::LiveKit.Proto.OwnedTrackPublication(); - if (messageCase_ == MessageOneofCase.Publication) { - subBuilder.MergeFrom(Publication); - } - input.ReadMessage(subBuilder); - Publication = subBuilder; - break; - } } } #endif @@ -3628,15 +3550,6 @@ public void MergeFrom(pb::CodedInputStream input) { Error = input.ReadString(); break; } - case 26: { - global::LiveKit.Proto.OwnedTrackPublication subBuilder = new global::LiveKit.Proto.OwnedTrackPublication(); - if (messageCase_ == MessageOneofCase.Publication) { - subBuilder.MergeFrom(Publication); - } - input.ReadMessage(subBuilder); - Publication = subBuilder; - break; - } } } } @@ -3645,20 +3558,20 @@ public void MergeFrom(pb::CodedInputStream input) { } /// - /// Unpublish a track from the room + /// Publish a track to the room /// [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class UnpublishTrackRequest : pb::IMessage + public sealed partial class PublishTrackRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UnpublishTrackRequest()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishTrackRequest()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -3674,7 +3587,7 @@ public sealed partial class UnpublishTrackRequest : pb::IMessageField number for the "local_participant_handle" field. @@ -3724,58 +3637,44 @@ public void ClearLocalParticipantHandle() { _hasBits0 &= ~1; } - /// Field number for the "track_sid" field. - public const int TrackSidFieldNumber = 2; - private readonly static string TrackSidDefaultValue = ""; + /// Field number for the "track_handle" field. + public const int TrackHandleFieldNumber = 2; + private readonly static ulong TrackHandleDefaultValue = 0UL; - private string trackSid_; + private ulong trackHandle_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string TrackSid { - get { return trackSid_ ?? TrackSidDefaultValue; } + public ulong TrackHandle { + get { if ((_hasBits0 & 2) != 0) { return trackHandle_; } else { return TrackHandleDefaultValue; } } set { - trackSid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + _hasBits0 |= 2; + trackHandle_ = value; } } - /// Gets whether the "track_sid" field is set + /// Gets whether the "track_handle" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasTrackSid { - get { return trackSid_ != null; } + public bool HasTrackHandle { + get { return (_hasBits0 & 2) != 0; } } - /// Clears the value of the "track_sid" field + /// Clears the value of the "track_handle" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearTrackSid() { - trackSid_ = null; + public void ClearTrackHandle() { + _hasBits0 &= ~2; } - /// Field number for the "stop_on_unpublish" field. - public const int StopOnUnpublishFieldNumber = 3; - private readonly static bool StopOnUnpublishDefaultValue = false; - - private bool stopOnUnpublish_; + /// Field number for the "options" field. + public const int OptionsFieldNumber = 3; + private global::LiveKit.Proto.TrackPublishOptions options_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool StopOnUnpublish { - get { if ((_hasBits0 & 2) != 0) { return stopOnUnpublish_; } else { return StopOnUnpublishDefaultValue; } } + public global::LiveKit.Proto.TrackPublishOptions Options { + get { return options_; } set { - _hasBits0 |= 2; - stopOnUnpublish_ = value; + options_ = value; } } - /// Gets whether the "stop_on_unpublish" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasStopOnUnpublish { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "stop_on_unpublish" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearStopOnUnpublish() { - _hasBits0 &= ~2; - } /// Field number for the "request_async_id" field. public const int RequestAsyncIdFieldNumber = 4; @@ -3807,12 +3706,12 @@ public void ClearRequestAsyncId() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as UnpublishTrackRequest); + return Equals(other as PublishTrackRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(UnpublishTrackRequest other) { + public bool Equals(PublishTrackRequest other) { if (ReferenceEquals(other, null)) { return false; } @@ -3820,8 +3719,8 @@ public bool Equals(UnpublishTrackRequest other) { return true; } if (LocalParticipantHandle != other.LocalParticipantHandle) return false; - if (TrackSid != other.TrackSid) return false; - if (StopOnUnpublish != other.StopOnUnpublish) return false; + if (TrackHandle != other.TrackHandle) return false; + if (!object.Equals(Options, other.Options)) return false; if (RequestAsyncId != other.RequestAsyncId) return false; return Equals(_unknownFields, other._unknownFields); } @@ -3831,8 +3730,8 @@ public bool Equals(UnpublishTrackRequest other) { public override int GetHashCode() { int hash = 1; if (HasLocalParticipantHandle) hash ^= LocalParticipantHandle.GetHashCode(); - if (HasTrackSid) hash ^= TrackSid.GetHashCode(); - if (HasStopOnUnpublish) hash ^= StopOnUnpublish.GetHashCode(); + if (HasTrackHandle) hash ^= TrackHandle.GetHashCode(); + if (options_ != null) hash ^= Options.GetHashCode(); if (HasRequestAsyncId) hash ^= RequestAsyncId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -3856,13 +3755,13 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(8); output.WriteUInt64(LocalParticipantHandle); } - if (HasTrackSid) { - output.WriteRawTag(18); - output.WriteString(TrackSid); + if (HasTrackHandle) { + output.WriteRawTag(16); + output.WriteUInt64(TrackHandle); } - if (HasStopOnUnpublish) { - output.WriteRawTag(24); - output.WriteBool(StopOnUnpublish); + if (options_ != null) { + output.WriteRawTag(26); + output.WriteMessage(Options); } if (HasRequestAsyncId) { output.WriteRawTag(32); @@ -3882,13 +3781,13 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(8); output.WriteUInt64(LocalParticipantHandle); } - if (HasTrackSid) { - output.WriteRawTag(18); - output.WriteString(TrackSid); + if (HasTrackHandle) { + output.WriteRawTag(16); + output.WriteUInt64(TrackHandle); } - if (HasStopOnUnpublish) { - output.WriteRawTag(24); - output.WriteBool(StopOnUnpublish); + if (options_ != null) { + output.WriteRawTag(26); + output.WriteMessage(Options); } if (HasRequestAsyncId) { output.WriteRawTag(32); @@ -3907,11 +3806,11 @@ public int CalculateSize() { if (HasLocalParticipantHandle) { size += 1 + pb::CodedOutputStream.ComputeUInt64Size(LocalParticipantHandle); } - if (HasTrackSid) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(TrackSid); + if (HasTrackHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(TrackHandle); } - if (HasStopOnUnpublish) { - size += 1 + 1; + if (options_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); } if (HasRequestAsyncId) { size += 1 + pb::CodedOutputStream.ComputeUInt64Size(RequestAsyncId); @@ -3924,18 +3823,21 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(UnpublishTrackRequest other) { + public void MergeFrom(PublishTrackRequest other) { if (other == null) { return; } if (other.HasLocalParticipantHandle) { LocalParticipantHandle = other.LocalParticipantHandle; } - if (other.HasTrackSid) { - TrackSid = other.TrackSid; + if (other.HasTrackHandle) { + TrackHandle = other.TrackHandle; } - if (other.HasStopOnUnpublish) { - StopOnUnpublish = other.StopOnUnpublish; + if (other.options_ != null) { + if (options_ == null) { + Options = new global::LiveKit.Proto.TrackPublishOptions(); + } + Options.MergeFrom(other.Options); } if (other.HasRequestAsyncId) { RequestAsyncId = other.RequestAsyncId; @@ -3963,12 +3865,15 @@ public void MergeFrom(pb::CodedInputStream input) { LocalParticipantHandle = input.ReadUInt64(); break; } - case 18: { - TrackSid = input.ReadString(); + case 16: { + TrackHandle = input.ReadUInt64(); break; } - case 24: { - StopOnUnpublish = input.ReadBool(); + case 26: { + if (options_ == null) { + Options = new global::LiveKit.Proto.TrackPublishOptions(); + } + input.ReadMessage(Options); break; } case 32: { @@ -3998,12 +3903,15 @@ public void MergeFrom(pb::CodedInputStream input) { LocalParticipantHandle = input.ReadUInt64(); break; } - case 18: { - TrackSid = input.ReadString(); + case 16: { + TrackHandle = input.ReadUInt64(); break; } - case 24: { - StopOnUnpublish = input.ReadBool(); + case 26: { + if (options_ == null) { + Options = new global::LiveKit.Proto.TrackPublishOptions(); + } + input.ReadMessage(Options); break; } case 32: { @@ -4018,17 +3926,17 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class UnpublishTrackResponse : pb::IMessage + public sealed partial class PublishTrackResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UnpublishTrackResponse()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishTrackResponse()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -4044,7 +3952,7 @@ public sealed partial class UnpublishTrackResponse : pb::IMessageField number for the "async_id" field. @@ -4094,12 +4002,12 @@ public void ClearAsyncId() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as UnpublishTrackResponse); + return Equals(other as PublishTrackResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(UnpublishTrackResponse other) { + public bool Equals(PublishTrackResponse other) { if (ReferenceEquals(other, null)) { return false; } @@ -4172,7 +4080,7 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(UnpublishTrackResponse other) { + public void MergeFrom(PublishTrackResponse other) { if (other == null) { return; } @@ -4233,17 +4141,17 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class UnpublishTrackCallback : pb::IMessage + public sealed partial class PublishTrackCallback : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UnpublishTrackCallback()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishTrackCallback()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -4259,7 +4167,7 @@ public sealed partial class UnpublishTrackCallback : pb::IMessageField number for the "async_id" field. @@ -4309,39 +4225,72 @@ public void ClearAsyncId() { /// Field number for the "error" field. public const int ErrorFieldNumber = 2; - private readonly static string ErrorDefaultValue = ""; - - private string error_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public string Error { - get { return error_ ?? ErrorDefaultValue; } + get { return HasError ? (string) message_ : ""; } set { - error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + message_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + messageCase_ = MessageOneofCase.Error; } } /// Gets whether the "error" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool HasError { - get { return error_ != null; } + get { return messageCase_ == MessageOneofCase.Error; } } - /// Clears the value of the "error" field + /// Clears the value of the oneof if it's currently set to "error" [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void ClearError() { - error_ = null; + if (HasError) { + ClearMessage(); + } + } + + /// Field number for the "publication" field. + public const int PublicationFieldNumber = 3; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.OwnedTrackPublication Publication { + get { return messageCase_ == MessageOneofCase.Publication ? (global::LiveKit.Proto.OwnedTrackPublication) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.Publication; + } + } + + private object message_; + /// Enum of possible cases for the "message" oneof. + public enum MessageOneofCase { + None = 0, + Error = 2, + Publication = 3, + } + private MessageOneofCase messageCase_ = MessageOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public MessageOneofCase MessageCase { + get { return messageCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMessage() { + messageCase_ = MessageOneofCase.None; + message_ = null; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as UnpublishTrackCallback); + return Equals(other as PublishTrackCallback); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(UnpublishTrackCallback other) { + public bool Equals(PublishTrackCallback other) { if (ReferenceEquals(other, null)) { return false; } @@ -4350,6 +4299,8 @@ public bool Equals(UnpublishTrackCallback other) { } if (AsyncId != other.AsyncId) return false; if (Error != other.Error) return false; + if (!object.Equals(Publication, other.Publication)) return false; + if (MessageCase != other.MessageCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -4359,6 +4310,8 @@ public override int GetHashCode() { int hash = 1; if (HasAsyncId) hash ^= AsyncId.GetHashCode(); if (HasError) hash ^= Error.GetHashCode(); + if (messageCase_ == MessageOneofCase.Publication) hash ^= Publication.GetHashCode(); + hash ^= (int) messageCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -4385,6 +4338,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(18); output.WriteString(Error); } + if (messageCase_ == MessageOneofCase.Publication) { + output.WriteRawTag(26); + output.WriteMessage(Publication); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -4403,6 +4360,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(18); output.WriteString(Error); } + if (messageCase_ == MessageOneofCase.Publication) { + output.WriteRawTag(26); + output.WriteMessage(Publication); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -4419,6 +4380,9 @@ public int CalculateSize() { if (HasError) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); } + if (messageCase_ == MessageOneofCase.Publication) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Publication); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -4427,16 +4391,25 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(UnpublishTrackCallback other) { + public void MergeFrom(PublishTrackCallback other) { if (other == null) { return; } if (other.HasAsyncId) { AsyncId = other.AsyncId; } - if (other.HasError) { - Error = other.Error; + switch (other.MessageCase) { + case MessageOneofCase.Error: + Error = other.Error; + break; + case MessageOneofCase.Publication: + if (Publication == null) { + Publication = new global::LiveKit.Proto.OwnedTrackPublication(); + } + Publication.MergeFrom(other.Publication); + break; } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -4464,6 +4437,15 @@ public void MergeFrom(pb::CodedInputStream input) { Error = input.ReadString(); break; } + case 26: { + global::LiveKit.Proto.OwnedTrackPublication subBuilder = new global::LiveKit.Proto.OwnedTrackPublication(); + if (messageCase_ == MessageOneofCase.Publication) { + subBuilder.MergeFrom(Publication); + } + input.ReadMessage(subBuilder); + Publication = subBuilder; + break; + } } } #endif @@ -4491,6 +4473,15 @@ public void MergeFrom(pb::CodedInputStream input) { Error = input.ReadString(); break; } + case 26: { + global::LiveKit.Proto.OwnedTrackPublication subBuilder = new global::LiveKit.Proto.OwnedTrackPublication(); + if (messageCase_ == MessageOneofCase.Publication) { + subBuilder.MergeFrom(Publication); + } + input.ReadMessage(subBuilder); + Publication = subBuilder; + break; + } } } } @@ -4499,20 +4490,20 @@ public void MergeFrom(pb::CodedInputStream input) { } /// - /// Publish data to other participants + /// Unpublish a track from the room /// [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class PublishDataRequest : pb::IMessage + public sealed partial class UnpublishTrackRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishDataRequest()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UnpublishTrackRequest()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -4528,7 +4519,7 @@ public sealed partial class PublishDataRequest : pb::IMessageField number for the "local_participant_handle" field. @@ -4582,147 +4569,70 @@ public void ClearLocalParticipantHandle() { _hasBits0 &= ~1; } - /// Field number for the "data_ptr" field. - public const int DataPtrFieldNumber = 2; - private readonly static ulong DataPtrDefaultValue = 0UL; - - private ulong dataPtr_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ulong DataPtr { - get { if ((_hasBits0 & 2) != 0) { return dataPtr_; } else { return DataPtrDefaultValue; } } - set { - _hasBits0 |= 2; - dataPtr_ = value; - } - } - /// Gets whether the "data_ptr" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasDataPtr { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "data_ptr" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearDataPtr() { - _hasBits0 &= ~2; - } - - /// Field number for the "data_len" field. - public const int DataLenFieldNumber = 3; - private readonly static ulong DataLenDefaultValue = 0UL; - - private ulong dataLen_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ulong DataLen { - get { if ((_hasBits0 & 4) != 0) { return dataLen_; } else { return DataLenDefaultValue; } } - set { - _hasBits0 |= 4; - dataLen_ = value; - } - } - /// Gets whether the "data_len" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasDataLen { - get { return (_hasBits0 & 4) != 0; } - } - /// Clears the value of the "data_len" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearDataLen() { - _hasBits0 &= ~4; - } - - /// Field number for the "reliable" field. - public const int ReliableFieldNumber = 4; - private readonly static bool ReliableDefaultValue = false; + /// Field number for the "track_sid" field. + public const int TrackSidFieldNumber = 2; + private readonly static string TrackSidDefaultValue = ""; - private bool reliable_; + private string trackSid_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Reliable { - get { if ((_hasBits0 & 8) != 0) { return reliable_; } else { return ReliableDefaultValue; } } + public string TrackSid { + get { return trackSid_ ?? TrackSidDefaultValue; } set { - _hasBits0 |= 8; - reliable_ = value; + trackSid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } - /// Gets whether the "reliable" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasReliable { - get { return (_hasBits0 & 8) != 0; } - } - /// Clears the value of the "reliable" field + /// Gets whether the "track_sid" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearReliable() { - _hasBits0 &= ~8; + public bool HasTrackSid { + get { return trackSid_ != null; } } - - /// Field number for the "destination_sids" field. - public const int DestinationSidsFieldNumber = 5; - private static readonly pb::FieldCodec _repeated_destinationSids_codec - = pb::FieldCodec.ForString(42); - private readonly pbc::RepeatedField destinationSids_ = new pbc::RepeatedField(); - [global::System.ObsoleteAttribute] + /// Clears the value of the "track_sid" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public pbc::RepeatedField DestinationSids { - get { return destinationSids_; } + public void ClearTrackSid() { + trackSid_ = null; } - /// Field number for the "topic" field. - public const int TopicFieldNumber = 6; - private readonly static string TopicDefaultValue = ""; + /// Field number for the "stop_on_unpublish" field. + public const int StopOnUnpublishFieldNumber = 3; + private readonly static bool StopOnUnpublishDefaultValue = false; - private string topic_; + private bool stopOnUnpublish_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string Topic { - get { return topic_ ?? TopicDefaultValue; } + public bool StopOnUnpublish { + get { if ((_hasBits0 & 2) != 0) { return stopOnUnpublish_; } else { return StopOnUnpublishDefaultValue; } } set { - topic_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + _hasBits0 |= 2; + stopOnUnpublish_ = value; } } - /// Gets whether the "topic" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasTopic { - get { return topic_ != null; } - } - /// Clears the value of the "topic" field + /// Gets whether the "stop_on_unpublish" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearTopic() { - topic_ = null; + public bool HasStopOnUnpublish { + get { return (_hasBits0 & 2) != 0; } } - - /// Field number for the "destination_identities" field. - public const int DestinationIdentitiesFieldNumber = 7; - private static readonly pb::FieldCodec _repeated_destinationIdentities_codec - = pb::FieldCodec.ForString(58); - private readonly pbc::RepeatedField destinationIdentities_ = new pbc::RepeatedField(); + /// Clears the value of the "stop_on_unpublish" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public pbc::RepeatedField DestinationIdentities { - get { return destinationIdentities_; } + public void ClearStopOnUnpublish() { + _hasBits0 &= ~2; } /// Field number for the "request_async_id" field. - public const int RequestAsyncIdFieldNumber = 8; + public const int RequestAsyncIdFieldNumber = 4; private readonly static ulong RequestAsyncIdDefaultValue = 0UL; private ulong requestAsyncId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ulong RequestAsyncId { - get { if ((_hasBits0 & 16) != 0) { return requestAsyncId_; } else { return RequestAsyncIdDefaultValue; } } + get { if ((_hasBits0 & 4) != 0) { return requestAsyncId_; } else { return RequestAsyncIdDefaultValue; } } set { - _hasBits0 |= 16; + _hasBits0 |= 4; requestAsyncId_ = value; } } @@ -4730,24 +4640,24 @@ public ulong RequestAsyncId { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool HasRequestAsyncId { - get { return (_hasBits0 & 16) != 0; } + get { return (_hasBits0 & 4) != 0; } } /// Clears the value of the "request_async_id" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void ClearRequestAsyncId() { - _hasBits0 &= ~16; + _hasBits0 &= ~4; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as PublishDataRequest); + return Equals(other as UnpublishTrackRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(PublishDataRequest other) { + public bool Equals(UnpublishTrackRequest other) { if (ReferenceEquals(other, null)) { return false; } @@ -4755,12 +4665,8 @@ public bool Equals(PublishDataRequest other) { return true; } if (LocalParticipantHandle != other.LocalParticipantHandle) return false; - if (DataPtr != other.DataPtr) return false; - if (DataLen != other.DataLen) return false; - if (Reliable != other.Reliable) return false; - if(!destinationSids_.Equals(other.destinationSids_)) return false; - if (Topic != other.Topic) return false; - if(!destinationIdentities_.Equals(other.destinationIdentities_)) return false; + if (TrackSid != other.TrackSid) return false; + if (StopOnUnpublish != other.StopOnUnpublish) return false; if (RequestAsyncId != other.RequestAsyncId) return false; return Equals(_unknownFields, other._unknownFields); } @@ -4770,12 +4676,8 @@ public bool Equals(PublishDataRequest other) { public override int GetHashCode() { int hash = 1; if (HasLocalParticipantHandle) hash ^= LocalParticipantHandle.GetHashCode(); - if (HasDataPtr) hash ^= DataPtr.GetHashCode(); - if (HasDataLen) hash ^= DataLen.GetHashCode(); - if (HasReliable) hash ^= Reliable.GetHashCode(); - hash ^= destinationSids_.GetHashCode(); - if (HasTopic) hash ^= Topic.GetHashCode(); - hash ^= destinationIdentities_.GetHashCode(); + if (HasTrackSid) hash ^= TrackSid.GetHashCode(); + if (HasStopOnUnpublish) hash ^= StopOnUnpublish.GetHashCode(); if (HasRequestAsyncId) hash ^= RequestAsyncId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -4799,26 +4701,16 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(8); output.WriteUInt64(LocalParticipantHandle); } - if (HasDataPtr) { - output.WriteRawTag(16); - output.WriteUInt64(DataPtr); + if (HasTrackSid) { + output.WriteRawTag(18); + output.WriteString(TrackSid); } - if (HasDataLen) { + if (HasStopOnUnpublish) { output.WriteRawTag(24); - output.WriteUInt64(DataLen); - } - if (HasReliable) { - output.WriteRawTag(32); - output.WriteBool(Reliable); - } - destinationSids_.WriteTo(output, _repeated_destinationSids_codec); - if (HasTopic) { - output.WriteRawTag(50); - output.WriteString(Topic); + output.WriteBool(StopOnUnpublish); } - destinationIdentities_.WriteTo(output, _repeated_destinationIdentities_codec); if (HasRequestAsyncId) { - output.WriteRawTag(64); + output.WriteRawTag(32); output.WriteUInt64(RequestAsyncId); } if (_unknownFields != null) { @@ -4835,26 +4727,16 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(8); output.WriteUInt64(LocalParticipantHandle); } - if (HasDataPtr) { - output.WriteRawTag(16); - output.WriteUInt64(DataPtr); + if (HasTrackSid) { + output.WriteRawTag(18); + output.WriteString(TrackSid); } - if (HasDataLen) { + if (HasStopOnUnpublish) { output.WriteRawTag(24); - output.WriteUInt64(DataLen); - } - if (HasReliable) { - output.WriteRawTag(32); - output.WriteBool(Reliable); - } - destinationSids_.WriteTo(ref output, _repeated_destinationSids_codec); - if (HasTopic) { - output.WriteRawTag(50); - output.WriteString(Topic); + output.WriteBool(StopOnUnpublish); } - destinationIdentities_.WriteTo(ref output, _repeated_destinationIdentities_codec); if (HasRequestAsyncId) { - output.WriteRawTag(64); + output.WriteRawTag(32); output.WriteUInt64(RequestAsyncId); } if (_unknownFields != null) { @@ -4870,20 +4752,12 @@ public int CalculateSize() { if (HasLocalParticipantHandle) { size += 1 + pb::CodedOutputStream.ComputeUInt64Size(LocalParticipantHandle); } - if (HasDataPtr) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(DataPtr); - } - if (HasDataLen) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(DataLen); + if (HasTrackSid) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(TrackSid); } - if (HasReliable) { + if (HasStopOnUnpublish) { size += 1 + 1; } - size += destinationSids_.CalculateSize(_repeated_destinationSids_codec); - if (HasTopic) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Topic); - } - size += destinationIdentities_.CalculateSize(_repeated_destinationIdentities_codec); if (HasRequestAsyncId) { size += 1 + pb::CodedOutputStream.ComputeUInt64Size(RequestAsyncId); } @@ -4895,27 +4769,19 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(PublishDataRequest other) { + public void MergeFrom(UnpublishTrackRequest other) { if (other == null) { return; } if (other.HasLocalParticipantHandle) { LocalParticipantHandle = other.LocalParticipantHandle; } - if (other.HasDataPtr) { - DataPtr = other.DataPtr; - } - if (other.HasDataLen) { - DataLen = other.DataLen; - } - if (other.HasReliable) { - Reliable = other.Reliable; + if (other.HasTrackSid) { + TrackSid = other.TrackSid; } - destinationSids_.Add(other.destinationSids_); - if (other.HasTopic) { - Topic = other.Topic; + if (other.HasStopOnUnpublish) { + StopOnUnpublish = other.StopOnUnpublish; } - destinationIdentities_.Add(other.destinationIdentities_); if (other.HasRequestAsyncId) { RequestAsyncId = other.RequestAsyncId; } @@ -4942,31 +4808,15 @@ public void MergeFrom(pb::CodedInputStream input) { LocalParticipantHandle = input.ReadUInt64(); break; } - case 16: { - DataPtr = input.ReadUInt64(); + case 18: { + TrackSid = input.ReadString(); break; } case 24: { - DataLen = input.ReadUInt64(); + StopOnUnpublish = input.ReadBool(); break; } case 32: { - Reliable = input.ReadBool(); - break; - } - case 42: { - destinationSids_.AddEntriesFrom(input, _repeated_destinationSids_codec); - break; - } - case 50: { - Topic = input.ReadString(); - break; - } - case 58: { - destinationIdentities_.AddEntriesFrom(input, _repeated_destinationIdentities_codec); - break; - } - case 64: { RequestAsyncId = input.ReadUInt64(); break; } @@ -4993,31 +4843,15 @@ public void MergeFrom(pb::CodedInputStream input) { LocalParticipantHandle = input.ReadUInt64(); break; } - case 16: { - DataPtr = input.ReadUInt64(); + case 18: { + TrackSid = input.ReadString(); break; } case 24: { - DataLen = input.ReadUInt64(); + StopOnUnpublish = input.ReadBool(); break; } case 32: { - Reliable = input.ReadBool(); - break; - } - case 42: { - destinationSids_.AddEntriesFrom(ref input, _repeated_destinationSids_codec); - break; - } - case 50: { - Topic = input.ReadString(); - break; - } - case 58: { - destinationIdentities_.AddEntriesFrom(ref input, _repeated_destinationIdentities_codec); - break; - } - case 64: { RequestAsyncId = input.ReadUInt64(); break; } @@ -5029,17 +4863,17 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class PublishDataResponse : pb::IMessage + public sealed partial class UnpublishTrackResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishDataResponse()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UnpublishTrackResponse()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -5055,7 +4889,7 @@ public sealed partial class PublishDataResponse : pb::IMessageField number for the "async_id" field. @@ -5105,12 +4939,12 @@ public void ClearAsyncId() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as PublishDataResponse); + return Equals(other as UnpublishTrackResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(PublishDataResponse other) { + public bool Equals(UnpublishTrackResponse other) { if (ReferenceEquals(other, null)) { return false; } @@ -5183,7 +5017,7 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(PublishDataResponse other) { + public void MergeFrom(UnpublishTrackResponse other) { if (other == null) { return; } @@ -5244,17 +5078,17 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class PublishDataCallback : pb::IMessage + public sealed partial class UnpublishTrackCallback : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishDataCallback()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UnpublishTrackCallback()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -5270,7 +5104,7 @@ public sealed partial class PublishDataCallback : pb::IMessageField number for the "async_id" field. @@ -5347,12 +5181,12 @@ public void ClearError() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as PublishDataCallback); + return Equals(other as UnpublishTrackCallback); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(PublishDataCallback other) { + public bool Equals(UnpublishTrackCallback other) { if (ReferenceEquals(other, null)) { return false; } @@ -5438,7 +5272,7 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(PublishDataCallback other) { + public void MergeFrom(UnpublishTrackCallback other) { if (other == null) { return; } @@ -5510,20 +5344,20 @@ public void MergeFrom(pb::CodedInputStream input) { } /// - /// Publish transcription messages to room + /// Publish data to other participants /// [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class PublishTranscriptionRequest : pb::IMessage + public sealed partial class PublishDataRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishTranscriptionRequest()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishDataRequest()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -5539,7 +5373,7 @@ public sealed partial class PublishTranscriptionRequest : pb::IMessageField number for the "local_participant_handle" field. @@ -5590,80 +5427,147 @@ public void ClearLocalParticipantHandle() { _hasBits0 &= ~1; } - /// Field number for the "participant_identity" field. - public const int ParticipantIdentityFieldNumber = 2; - private readonly static string ParticipantIdentityDefaultValue = ""; + /// Field number for the "data_ptr" field. + public const int DataPtrFieldNumber = 2; + private readonly static ulong DataPtrDefaultValue = 0UL; - private string participantIdentity_; + private ulong dataPtr_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string ParticipantIdentity { - get { return participantIdentity_ ?? ParticipantIdentityDefaultValue; } + public ulong DataPtr { + get { if ((_hasBits0 & 2) != 0) { return dataPtr_; } else { return DataPtrDefaultValue; } } set { - participantIdentity_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + _hasBits0 |= 2; + dataPtr_ = value; } } - /// Gets whether the "participant_identity" field is set + /// Gets whether the "data_ptr" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasParticipantIdentity { - get { return participantIdentity_ != null; } + public bool HasDataPtr { + get { return (_hasBits0 & 2) != 0; } } - /// Clears the value of the "participant_identity" field + /// Clears the value of the "data_ptr" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearParticipantIdentity() { - participantIdentity_ = null; + public void ClearDataPtr() { + _hasBits0 &= ~2; } - /// Field number for the "track_id" field. - public const int TrackIdFieldNumber = 3; - private readonly static string TrackIdDefaultValue = ""; + /// Field number for the "data_len" field. + public const int DataLenFieldNumber = 3; + private readonly static ulong DataLenDefaultValue = 0UL; - private string trackId_; + private ulong dataLen_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string TrackId { - get { return trackId_ ?? TrackIdDefaultValue; } + public ulong DataLen { + get { if ((_hasBits0 & 4) != 0) { return dataLen_; } else { return DataLenDefaultValue; } } set { - trackId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + _hasBits0 |= 4; + dataLen_ = value; } } - /// Gets whether the "track_id" field is set + /// Gets whether the "data_len" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasTrackId { - get { return trackId_ != null; } + public bool HasDataLen { + get { return (_hasBits0 & 4) != 0; } } - /// Clears the value of the "track_id" field + /// Clears the value of the "data_len" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearTrackId() { - trackId_ = null; + public void ClearDataLen() { + _hasBits0 &= ~4; } - /// Field number for the "segments" field. - public const int SegmentsFieldNumber = 4; - private static readonly pb::FieldCodec _repeated_segments_codec - = pb::FieldCodec.ForMessage(34, global::LiveKit.Proto.TranscriptionSegment.Parser); - private readonly pbc::RepeatedField segments_ = new pbc::RepeatedField(); + /// Field number for the "reliable" field. + public const int ReliableFieldNumber = 4; + private readonly static bool ReliableDefaultValue = false; + + private bool reliable_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public pbc::RepeatedField Segments { - get { return segments_; } + public bool Reliable { + get { if ((_hasBits0 & 8) != 0) { return reliable_; } else { return ReliableDefaultValue; } } + set { + _hasBits0 |= 8; + reliable_ = value; + } + } + /// Gets whether the "reliable" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasReliable { + get { return (_hasBits0 & 8) != 0; } + } + /// Clears the value of the "reliable" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearReliable() { + _hasBits0 &= ~8; + } + + /// Field number for the "destination_sids" field. + public const int DestinationSidsFieldNumber = 5; + private static readonly pb::FieldCodec _repeated_destinationSids_codec + = pb::FieldCodec.ForString(42); + private readonly pbc::RepeatedField destinationSids_ = new pbc::RepeatedField(); + [global::System.ObsoleteAttribute] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField DestinationSids { + get { return destinationSids_; } + } + + /// Field number for the "topic" field. + public const int TopicFieldNumber = 6; + private readonly static string TopicDefaultValue = ""; + + private string topic_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Topic { + get { return topic_ ?? TopicDefaultValue; } + set { + topic_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "topic" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasTopic { + get { return topic_ != null; } + } + /// Clears the value of the "topic" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearTopic() { + topic_ = null; + } + + /// Field number for the "destination_identities" field. + public const int DestinationIdentitiesFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_destinationIdentities_codec + = pb::FieldCodec.ForString(58); + private readonly pbc::RepeatedField destinationIdentities_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField DestinationIdentities { + get { return destinationIdentities_; } } /// Field number for the "request_async_id" field. - public const int RequestAsyncIdFieldNumber = 5; + public const int RequestAsyncIdFieldNumber = 8; private readonly static ulong RequestAsyncIdDefaultValue = 0UL; private ulong requestAsyncId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ulong RequestAsyncId { - get { if ((_hasBits0 & 2) != 0) { return requestAsyncId_; } else { return RequestAsyncIdDefaultValue; } } + get { if ((_hasBits0 & 16) != 0) { return requestAsyncId_; } else { return RequestAsyncIdDefaultValue; } } set { - _hasBits0 |= 2; + _hasBits0 |= 16; requestAsyncId_ = value; } } @@ -5671,24 +5575,24 @@ public ulong RequestAsyncId { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool HasRequestAsyncId { - get { return (_hasBits0 & 2) != 0; } + get { return (_hasBits0 & 16) != 0; } } /// Clears the value of the "request_async_id" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void ClearRequestAsyncId() { - _hasBits0 &= ~2; + _hasBits0 &= ~16; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as PublishTranscriptionRequest); + return Equals(other as PublishDataRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(PublishTranscriptionRequest other) { + public bool Equals(PublishDataRequest other) { if (ReferenceEquals(other, null)) { return false; } @@ -5696,9 +5600,12 @@ public bool Equals(PublishTranscriptionRequest other) { return true; } if (LocalParticipantHandle != other.LocalParticipantHandle) return false; - if (ParticipantIdentity != other.ParticipantIdentity) return false; - if (TrackId != other.TrackId) return false; - if(!segments_.Equals(other.segments_)) return false; + if (DataPtr != other.DataPtr) return false; + if (DataLen != other.DataLen) return false; + if (Reliable != other.Reliable) return false; + if(!destinationSids_.Equals(other.destinationSids_)) return false; + if (Topic != other.Topic) return false; + if(!destinationIdentities_.Equals(other.destinationIdentities_)) return false; if (RequestAsyncId != other.RequestAsyncId) return false; return Equals(_unknownFields, other._unknownFields); } @@ -5708,9 +5615,12 @@ public bool Equals(PublishTranscriptionRequest other) { public override int GetHashCode() { int hash = 1; if (HasLocalParticipantHandle) hash ^= LocalParticipantHandle.GetHashCode(); - if (HasParticipantIdentity) hash ^= ParticipantIdentity.GetHashCode(); - if (HasTrackId) hash ^= TrackId.GetHashCode(); - hash ^= segments_.GetHashCode(); + if (HasDataPtr) hash ^= DataPtr.GetHashCode(); + if (HasDataLen) hash ^= DataLen.GetHashCode(); + if (HasReliable) hash ^= Reliable.GetHashCode(); + hash ^= destinationSids_.GetHashCode(); + if (HasTopic) hash ^= Topic.GetHashCode(); + hash ^= destinationIdentities_.GetHashCode(); if (HasRequestAsyncId) hash ^= RequestAsyncId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -5734,17 +5644,26 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(8); output.WriteUInt64(LocalParticipantHandle); } - if (HasParticipantIdentity) { - output.WriteRawTag(18); - output.WriteString(ParticipantIdentity); + if (HasDataPtr) { + output.WriteRawTag(16); + output.WriteUInt64(DataPtr); } - if (HasTrackId) { - output.WriteRawTag(26); - output.WriteString(TrackId); + if (HasDataLen) { + output.WriteRawTag(24); + output.WriteUInt64(DataLen); } - segments_.WriteTo(output, _repeated_segments_codec); + if (HasReliable) { + output.WriteRawTag(32); + output.WriteBool(Reliable); + } + destinationSids_.WriteTo(output, _repeated_destinationSids_codec); + if (HasTopic) { + output.WriteRawTag(50); + output.WriteString(Topic); + } + destinationIdentities_.WriteTo(output, _repeated_destinationIdentities_codec); if (HasRequestAsyncId) { - output.WriteRawTag(40); + output.WriteRawTag(64); output.WriteUInt64(RequestAsyncId); } if (_unknownFields != null) { @@ -5761,17 +5680,26 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(8); output.WriteUInt64(LocalParticipantHandle); } - if (HasParticipantIdentity) { - output.WriteRawTag(18); - output.WriteString(ParticipantIdentity); + if (HasDataPtr) { + output.WriteRawTag(16); + output.WriteUInt64(DataPtr); } - if (HasTrackId) { - output.WriteRawTag(26); - output.WriteString(TrackId); + if (HasDataLen) { + output.WriteRawTag(24); + output.WriteUInt64(DataLen); } - segments_.WriteTo(ref output, _repeated_segments_codec); + if (HasReliable) { + output.WriteRawTag(32); + output.WriteBool(Reliable); + } + destinationSids_.WriteTo(ref output, _repeated_destinationSids_codec); + if (HasTopic) { + output.WriteRawTag(50); + output.WriteString(Topic); + } + destinationIdentities_.WriteTo(ref output, _repeated_destinationIdentities_codec); if (HasRequestAsyncId) { - output.WriteRawTag(40); + output.WriteRawTag(64); output.WriteUInt64(RequestAsyncId); } if (_unknownFields != null) { @@ -5787,13 +5715,20 @@ public int CalculateSize() { if (HasLocalParticipantHandle) { size += 1 + pb::CodedOutputStream.ComputeUInt64Size(LocalParticipantHandle); } - if (HasParticipantIdentity) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(ParticipantIdentity); + if (HasDataPtr) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(DataPtr); } - if (HasTrackId) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(TrackId); + if (HasDataLen) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(DataLen); } - size += segments_.CalculateSize(_repeated_segments_codec); + if (HasReliable) { + size += 1 + 1; + } + size += destinationSids_.CalculateSize(_repeated_destinationSids_codec); + if (HasTopic) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Topic); + } + size += destinationIdentities_.CalculateSize(_repeated_destinationIdentities_codec); if (HasRequestAsyncId) { size += 1 + pb::CodedOutputStream.ComputeUInt64Size(RequestAsyncId); } @@ -5805,20 +5740,27 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(PublishTranscriptionRequest other) { + public void MergeFrom(PublishDataRequest other) { if (other == null) { return; } if (other.HasLocalParticipantHandle) { LocalParticipantHandle = other.LocalParticipantHandle; } - if (other.HasParticipantIdentity) { - ParticipantIdentity = other.ParticipantIdentity; + if (other.HasDataPtr) { + DataPtr = other.DataPtr; } - if (other.HasTrackId) { - TrackId = other.TrackId; + if (other.HasDataLen) { + DataLen = other.DataLen; } - segments_.Add(other.segments_); + if (other.HasReliable) { + Reliable = other.Reliable; + } + destinationSids_.Add(other.destinationSids_); + if (other.HasTopic) { + Topic = other.Topic; + } + destinationIdentities_.Add(other.destinationIdentities_); if (other.HasRequestAsyncId) { RequestAsyncId = other.RequestAsyncId; } @@ -5845,19 +5787,31 @@ public void MergeFrom(pb::CodedInputStream input) { LocalParticipantHandle = input.ReadUInt64(); break; } - case 18: { - ParticipantIdentity = input.ReadString(); + case 16: { + DataPtr = input.ReadUInt64(); break; } - case 26: { - TrackId = input.ReadString(); + case 24: { + DataLen = input.ReadUInt64(); break; } - case 34: { - segments_.AddEntriesFrom(input, _repeated_segments_codec); + case 32: { + Reliable = input.ReadBool(); break; } - case 40: { + case 42: { + destinationSids_.AddEntriesFrom(input, _repeated_destinationSids_codec); + break; + } + case 50: { + Topic = input.ReadString(); + break; + } + case 58: { + destinationIdentities_.AddEntriesFrom(input, _repeated_destinationIdentities_codec); + break; + } + case 64: { RequestAsyncId = input.ReadUInt64(); break; } @@ -5884,19 +5838,31 @@ public void MergeFrom(pb::CodedInputStream input) { LocalParticipantHandle = input.ReadUInt64(); break; } - case 18: { - ParticipantIdentity = input.ReadString(); + case 16: { + DataPtr = input.ReadUInt64(); break; } - case 26: { - TrackId = input.ReadString(); + case 24: { + DataLen = input.ReadUInt64(); break; } - case 34: { - segments_.AddEntriesFrom(ref input, _repeated_segments_codec); + case 32: { + Reliable = input.ReadBool(); break; } - case 40: { + case 42: { + destinationSids_.AddEntriesFrom(ref input, _repeated_destinationSids_codec); + break; + } + case 50: { + Topic = input.ReadString(); + break; + } + case 58: { + destinationIdentities_.AddEntriesFrom(ref input, _repeated_destinationIdentities_codec); + break; + } + case 64: { RequestAsyncId = input.ReadUInt64(); break; } @@ -5908,17 +5874,17 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class PublishTranscriptionResponse : pb::IMessage + public sealed partial class PublishDataResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishTranscriptionResponse()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishDataResponse()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -5934,7 +5900,7 @@ public sealed partial class PublishTranscriptionResponse : pb::IMessageField number for the "async_id" field. @@ -5984,12 +5950,12 @@ public void ClearAsyncId() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as PublishTranscriptionResponse); + return Equals(other as PublishDataResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(PublishTranscriptionResponse other) { + public bool Equals(PublishDataResponse other) { if (ReferenceEquals(other, null)) { return false; } @@ -6062,7 +6028,7 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(PublishTranscriptionResponse other) { + public void MergeFrom(PublishDataResponse other) { if (other == null) { return; } @@ -6123,17 +6089,17 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class PublishTranscriptionCallback : pb::IMessage + public sealed partial class PublishDataCallback : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishTranscriptionCallback()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishDataCallback()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -6149,7 +6115,7 @@ public sealed partial class PublishTranscriptionCallback : pb::IMessageField number for the "async_id" field. @@ -6226,12 +6192,12 @@ public void ClearError() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as PublishTranscriptionCallback); + return Equals(other as PublishDataCallback); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(PublishTranscriptionCallback other) { + public bool Equals(PublishDataCallback other) { if (ReferenceEquals(other, null)) { return false; } @@ -6317,7 +6283,7 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(PublishTranscriptionCallback other) { + public void MergeFrom(PublishDataCallback other) { if (other == null) { return; } @@ -6389,20 +6355,20 @@ public void MergeFrom(pb::CodedInputStream input) { } /// - /// Publish Sip DTMF messages to other participants + /// Publish transcription messages to room /// [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class PublishSipDtmfRequest : pb::IMessage + public sealed partial class PublishTranscriptionRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishSipDtmfRequest()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishTranscriptionRequest()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -6418,7 +6384,7 @@ public sealed partial class PublishSipDtmfRequest : pb::IMessageField number for the "local_participant_handle" field. @@ -6469,68 +6435,67 @@ public void ClearLocalParticipantHandle() { _hasBits0 &= ~1; } - /// Field number for the "code" field. - public const int CodeFieldNumber = 2; - private readonly static uint CodeDefaultValue = 0; + /// Field number for the "participant_identity" field. + public const int ParticipantIdentityFieldNumber = 2; + private readonly static string ParticipantIdentityDefaultValue = ""; - private uint code_; + private string participantIdentity_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public uint Code { - get { if ((_hasBits0 & 2) != 0) { return code_; } else { return CodeDefaultValue; } } + public string ParticipantIdentity { + get { return participantIdentity_ ?? ParticipantIdentityDefaultValue; } set { - _hasBits0 |= 2; - code_ = value; + participantIdentity_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } - /// Gets whether the "code" field is set + /// Gets whether the "participant_identity" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasCode { - get { return (_hasBits0 & 2) != 0; } + public bool HasParticipantIdentity { + get { return participantIdentity_ != null; } } - /// Clears the value of the "code" field + /// Clears the value of the "participant_identity" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearCode() { - _hasBits0 &= ~2; + public void ClearParticipantIdentity() { + participantIdentity_ = null; } - /// Field number for the "digit" field. - public const int DigitFieldNumber = 3; - private readonly static string DigitDefaultValue = ""; + /// Field number for the "track_id" field. + public const int TrackIdFieldNumber = 3; + private readonly static string TrackIdDefaultValue = ""; - private string digit_; + private string trackId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string Digit { - get { return digit_ ?? DigitDefaultValue; } + public string TrackId { + get { return trackId_ ?? TrackIdDefaultValue; } set { - digit_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + trackId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } - /// Gets whether the "digit" field is set + /// Gets whether the "track_id" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasDigit { - get { return digit_ != null; } + public bool HasTrackId { + get { return trackId_ != null; } } - /// Clears the value of the "digit" field + /// Clears the value of the "track_id" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearDigit() { - digit_ = null; + public void ClearTrackId() { + trackId_ = null; } - /// Field number for the "destination_identities" field. - public const int DestinationIdentitiesFieldNumber = 4; - private static readonly pb::FieldCodec _repeated_destinationIdentities_codec - = pb::FieldCodec.ForString(34); - private readonly pbc::RepeatedField destinationIdentities_ = new pbc::RepeatedField(); + /// Field number for the "segments" field. + public const int SegmentsFieldNumber = 4; + private static readonly pb::FieldCodec _repeated_segments_codec + = pb::FieldCodec.ForMessage(34, global::LiveKit.Proto.TranscriptionSegment.Parser); + private readonly pbc::RepeatedField segments_ = new pbc::RepeatedField(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public pbc::RepeatedField DestinationIdentities { - get { return destinationIdentities_; } + public pbc::RepeatedField Segments { + get { return segments_; } } /// Field number for the "request_async_id" field. @@ -6541,9 +6506,9 @@ public void ClearDigit() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ulong RequestAsyncId { - get { if ((_hasBits0 & 4) != 0) { return requestAsyncId_; } else { return RequestAsyncIdDefaultValue; } } + get { if ((_hasBits0 & 2) != 0) { return requestAsyncId_; } else { return RequestAsyncIdDefaultValue; } } set { - _hasBits0 |= 4; + _hasBits0 |= 2; requestAsyncId_ = value; } } @@ -6551,24 +6516,24 @@ public ulong RequestAsyncId { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool HasRequestAsyncId { - get { return (_hasBits0 & 4) != 0; } + get { return (_hasBits0 & 2) != 0; } } /// Clears the value of the "request_async_id" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void ClearRequestAsyncId() { - _hasBits0 &= ~4; + _hasBits0 &= ~2; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as PublishSipDtmfRequest); + return Equals(other as PublishTranscriptionRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(PublishSipDtmfRequest other) { + public bool Equals(PublishTranscriptionRequest other) { if (ReferenceEquals(other, null)) { return false; } @@ -6576,9 +6541,9 @@ public bool Equals(PublishSipDtmfRequest other) { return true; } if (LocalParticipantHandle != other.LocalParticipantHandle) return false; - if (Code != other.Code) return false; - if (Digit != other.Digit) return false; - if(!destinationIdentities_.Equals(other.destinationIdentities_)) return false; + if (ParticipantIdentity != other.ParticipantIdentity) return false; + if (TrackId != other.TrackId) return false; + if(!segments_.Equals(other.segments_)) return false; if (RequestAsyncId != other.RequestAsyncId) return false; return Equals(_unknownFields, other._unknownFields); } @@ -6588,9 +6553,9 @@ public bool Equals(PublishSipDtmfRequest other) { public override int GetHashCode() { int hash = 1; if (HasLocalParticipantHandle) hash ^= LocalParticipantHandle.GetHashCode(); - if (HasCode) hash ^= Code.GetHashCode(); - if (HasDigit) hash ^= Digit.GetHashCode(); - hash ^= destinationIdentities_.GetHashCode(); + if (HasParticipantIdentity) hash ^= ParticipantIdentity.GetHashCode(); + if (HasTrackId) hash ^= TrackId.GetHashCode(); + hash ^= segments_.GetHashCode(); if (HasRequestAsyncId) hash ^= RequestAsyncId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -6614,15 +6579,15 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(8); output.WriteUInt64(LocalParticipantHandle); } - if (HasCode) { - output.WriteRawTag(16); - output.WriteUInt32(Code); + if (HasParticipantIdentity) { + output.WriteRawTag(18); + output.WriteString(ParticipantIdentity); } - if (HasDigit) { + if (HasTrackId) { output.WriteRawTag(26); - output.WriteString(Digit); + output.WriteString(TrackId); } - destinationIdentities_.WriteTo(output, _repeated_destinationIdentities_codec); + segments_.WriteTo(output, _repeated_segments_codec); if (HasRequestAsyncId) { output.WriteRawTag(40); output.WriteUInt64(RequestAsyncId); @@ -6641,15 +6606,15 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(8); output.WriteUInt64(LocalParticipantHandle); } - if (HasCode) { - output.WriteRawTag(16); - output.WriteUInt32(Code); + if (HasParticipantIdentity) { + output.WriteRawTag(18); + output.WriteString(ParticipantIdentity); } - if (HasDigit) { + if (HasTrackId) { output.WriteRawTag(26); - output.WriteString(Digit); + output.WriteString(TrackId); } - destinationIdentities_.WriteTo(ref output, _repeated_destinationIdentities_codec); + segments_.WriteTo(ref output, _repeated_segments_codec); if (HasRequestAsyncId) { output.WriteRawTag(40); output.WriteUInt64(RequestAsyncId); @@ -6667,13 +6632,13 @@ public int CalculateSize() { if (HasLocalParticipantHandle) { size += 1 + pb::CodedOutputStream.ComputeUInt64Size(LocalParticipantHandle); } - if (HasCode) { - size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Code); + if (HasParticipantIdentity) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ParticipantIdentity); } - if (HasDigit) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Digit); + if (HasTrackId) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(TrackId); } - size += destinationIdentities_.CalculateSize(_repeated_destinationIdentities_codec); + size += segments_.CalculateSize(_repeated_segments_codec); if (HasRequestAsyncId) { size += 1 + pb::CodedOutputStream.ComputeUInt64Size(RequestAsyncId); } @@ -6685,20 +6650,20 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(PublishSipDtmfRequest other) { + public void MergeFrom(PublishTranscriptionRequest other) { if (other == null) { return; } if (other.HasLocalParticipantHandle) { LocalParticipantHandle = other.LocalParticipantHandle; } - if (other.HasCode) { - Code = other.Code; + if (other.HasParticipantIdentity) { + ParticipantIdentity = other.ParticipantIdentity; } - if (other.HasDigit) { - Digit = other.Digit; + if (other.HasTrackId) { + TrackId = other.TrackId; } - destinationIdentities_.Add(other.destinationIdentities_); + segments_.Add(other.segments_); if (other.HasRequestAsyncId) { RequestAsyncId = other.RequestAsyncId; } @@ -6725,16 +6690,16 @@ public void MergeFrom(pb::CodedInputStream input) { LocalParticipantHandle = input.ReadUInt64(); break; } - case 16: { - Code = input.ReadUInt32(); + case 18: { + ParticipantIdentity = input.ReadString(); break; } case 26: { - Digit = input.ReadString(); + TrackId = input.ReadString(); break; } case 34: { - destinationIdentities_.AddEntriesFrom(input, _repeated_destinationIdentities_codec); + segments_.AddEntriesFrom(input, _repeated_segments_codec); break; } case 40: { @@ -6764,16 +6729,16 @@ public void MergeFrom(pb::CodedInputStream input) { LocalParticipantHandle = input.ReadUInt64(); break; } - case 16: { - Code = input.ReadUInt32(); + case 18: { + ParticipantIdentity = input.ReadString(); break; } case 26: { - Digit = input.ReadString(); + TrackId = input.ReadString(); break; } case 34: { - destinationIdentities_.AddEntriesFrom(ref input, _repeated_destinationIdentities_codec); + segments_.AddEntriesFrom(ref input, _repeated_segments_codec); break; } case 40: { @@ -6788,17 +6753,17 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class PublishSipDtmfResponse : pb::IMessage + public sealed partial class PublishTranscriptionResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishSipDtmfResponse()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishTranscriptionResponse()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -6814,7 +6779,7 @@ public sealed partial class PublishSipDtmfResponse : pb::IMessageField number for the "async_id" field. @@ -6864,12 +6829,12 @@ public void ClearAsyncId() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as PublishSipDtmfResponse); + return Equals(other as PublishTranscriptionResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(PublishSipDtmfResponse other) { + public bool Equals(PublishTranscriptionResponse other) { if (ReferenceEquals(other, null)) { return false; } @@ -6942,7 +6907,7 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(PublishSipDtmfResponse other) { + public void MergeFrom(PublishTranscriptionResponse other) { if (other == null) { return; } @@ -7003,17 +6968,17 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class PublishSipDtmfCallback : pb::IMessage + public sealed partial class PublishTranscriptionCallback : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishSipDtmfCallback()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishTranscriptionCallback()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -7029,7 +6994,7 @@ public sealed partial class PublishSipDtmfCallback : pb::IMessageField number for the "async_id" field. @@ -7106,12 +7071,12 @@ public void ClearError() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as PublishSipDtmfCallback); + return Equals(other as PublishTranscriptionCallback); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(PublishSipDtmfCallback other) { + public bool Equals(PublishTranscriptionCallback other) { if (ReferenceEquals(other, null)) { return false; } @@ -7197,7 +7162,7 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(PublishSipDtmfCallback other) { + public void MergeFrom(PublishTranscriptionCallback other) { if (other == null) { return; } @@ -7269,20 +7234,20 @@ public void MergeFrom(pb::CodedInputStream input) { } /// - /// Change the local participant's metadata + /// Publish Sip DTMF messages to other participants /// [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class SetLocalMetadataRequest : pb::IMessage + public sealed partial class PublishSipDtmfRequest : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SetLocalMetadataRequest()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishSipDtmfRequest()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -7298,7 +7263,7 @@ public sealed partial class SetLocalMetadataRequest : pb::IMessageField number for the "local_participant_handle" field. @@ -7347,43 +7314,81 @@ public void ClearLocalParticipantHandle() { _hasBits0 &= ~1; } - /// Field number for the "metadata" field. - public const int MetadataFieldNumber = 2; - private readonly static string MetadataDefaultValue = ""; + /// Field number for the "code" field. + public const int CodeFieldNumber = 2; + private readonly static uint CodeDefaultValue = 0; - private string metadata_; + private uint code_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string Metadata { - get { return metadata_ ?? MetadataDefaultValue; } + public uint Code { + get { if ((_hasBits0 & 2) != 0) { return code_; } else { return CodeDefaultValue; } } set { - metadata_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + _hasBits0 |= 2; + code_ = value; } } - /// Gets whether the "metadata" field is set + /// Gets whether the "code" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasMetadata { - get { return metadata_ != null; } + public bool HasCode { + get { return (_hasBits0 & 2) != 0; } } - /// Clears the value of the "metadata" field + /// Clears the value of the "code" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearMetadata() { - metadata_ = null; + public void ClearCode() { + _hasBits0 &= ~2; + } + + /// Field number for the "digit" field. + public const int DigitFieldNumber = 3; + private readonly static string DigitDefaultValue = ""; + + private string digit_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Digit { + get { return digit_ ?? DigitDefaultValue; } + set { + digit_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "digit" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasDigit { + get { return digit_ != null; } + } + /// Clears the value of the "digit" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearDigit() { + digit_ = null; + } + + /// Field number for the "destination_identities" field. + public const int DestinationIdentitiesFieldNumber = 4; + private static readonly pb::FieldCodec _repeated_destinationIdentities_codec + = pb::FieldCodec.ForString(34); + private readonly pbc::RepeatedField destinationIdentities_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField DestinationIdentities { + get { return destinationIdentities_; } } /// Field number for the "request_async_id" field. - public const int RequestAsyncIdFieldNumber = 3; + public const int RequestAsyncIdFieldNumber = 5; private readonly static ulong RequestAsyncIdDefaultValue = 0UL; private ulong requestAsyncId_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public ulong RequestAsyncId { - get { if ((_hasBits0 & 2) != 0) { return requestAsyncId_; } else { return RequestAsyncIdDefaultValue; } } + get { if ((_hasBits0 & 4) != 0) { return requestAsyncId_; } else { return RequestAsyncIdDefaultValue; } } set { - _hasBits0 |= 2; + _hasBits0 |= 4; requestAsyncId_ = value; } } @@ -7391,24 +7396,24 @@ public ulong RequestAsyncId { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public bool HasRequestAsyncId { - get { return (_hasBits0 & 2) != 0; } + get { return (_hasBits0 & 4) != 0; } } /// Clears the value of the "request_async_id" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public void ClearRequestAsyncId() { - _hasBits0 &= ~2; + _hasBits0 &= ~4; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as SetLocalMetadataRequest); + return Equals(other as PublishSipDtmfRequest); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(SetLocalMetadataRequest other) { + public bool Equals(PublishSipDtmfRequest other) { if (ReferenceEquals(other, null)) { return false; } @@ -7416,7 +7421,9 @@ public bool Equals(SetLocalMetadataRequest other) { return true; } if (LocalParticipantHandle != other.LocalParticipantHandle) return false; - if (Metadata != other.Metadata) return false; + if (Code != other.Code) return false; + if (Digit != other.Digit) return false; + if(!destinationIdentities_.Equals(other.destinationIdentities_)) return false; if (RequestAsyncId != other.RequestAsyncId) return false; return Equals(_unknownFields, other._unknownFields); } @@ -7426,7 +7433,9 @@ public bool Equals(SetLocalMetadataRequest other) { public override int GetHashCode() { int hash = 1; if (HasLocalParticipantHandle) hash ^= LocalParticipantHandle.GetHashCode(); - if (HasMetadata) hash ^= Metadata.GetHashCode(); + if (HasCode) hash ^= Code.GetHashCode(); + if (HasDigit) hash ^= Digit.GetHashCode(); + hash ^= destinationIdentities_.GetHashCode(); if (HasRequestAsyncId) hash ^= RequestAsyncId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -7450,12 +7459,17 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(8); output.WriteUInt64(LocalParticipantHandle); } - if (HasMetadata) { - output.WriteRawTag(18); - output.WriteString(Metadata); + if (HasCode) { + output.WriteRawTag(16); + output.WriteUInt32(Code); } + if (HasDigit) { + output.WriteRawTag(26); + output.WriteString(Digit); + } + destinationIdentities_.WriteTo(output, _repeated_destinationIdentities_codec); if (HasRequestAsyncId) { - output.WriteRawTag(24); + output.WriteRawTag(40); output.WriteUInt64(RequestAsyncId); } if (_unknownFields != null) { @@ -7472,12 +7486,17 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(8); output.WriteUInt64(LocalParticipantHandle); } - if (HasMetadata) { - output.WriteRawTag(18); - output.WriteString(Metadata); + if (HasCode) { + output.WriteRawTag(16); + output.WriteUInt32(Code); + } + if (HasDigit) { + output.WriteRawTag(26); + output.WriteString(Digit); } + destinationIdentities_.WriteTo(ref output, _repeated_destinationIdentities_codec); if (HasRequestAsyncId) { - output.WriteRawTag(24); + output.WriteRawTag(40); output.WriteUInt64(RequestAsyncId); } if (_unknownFields != null) { @@ -7493,9 +7512,13 @@ public int CalculateSize() { if (HasLocalParticipantHandle) { size += 1 + pb::CodedOutputStream.ComputeUInt64Size(LocalParticipantHandle); } - if (HasMetadata) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Metadata); + if (HasCode) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Code); + } + if (HasDigit) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Digit); } + size += destinationIdentities_.CalculateSize(_repeated_destinationIdentities_codec); if (HasRequestAsyncId) { size += 1 + pb::CodedOutputStream.ComputeUInt64Size(RequestAsyncId); } @@ -7507,16 +7530,20 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(SetLocalMetadataRequest other) { + public void MergeFrom(PublishSipDtmfRequest other) { if (other == null) { return; } if (other.HasLocalParticipantHandle) { LocalParticipantHandle = other.LocalParticipantHandle; } - if (other.HasMetadata) { - Metadata = other.Metadata; + if (other.HasCode) { + Code = other.Code; + } + if (other.HasDigit) { + Digit = other.Digit; } + destinationIdentities_.Add(other.destinationIdentities_); if (other.HasRequestAsyncId) { RequestAsyncId = other.RequestAsyncId; } @@ -7543,11 +7570,19 @@ public void MergeFrom(pb::CodedInputStream input) { LocalParticipantHandle = input.ReadUInt64(); break; } - case 18: { - Metadata = input.ReadString(); + case 16: { + Code = input.ReadUInt32(); break; } - case 24: { + case 26: { + Digit = input.ReadString(); + break; + } + case 34: { + destinationIdentities_.AddEntriesFrom(input, _repeated_destinationIdentities_codec); + break; + } + case 40: { RequestAsyncId = input.ReadUInt64(); break; } @@ -7574,11 +7609,19 @@ public void MergeFrom(pb::CodedInputStream input) { LocalParticipantHandle = input.ReadUInt64(); break; } - case 18: { - Metadata = input.ReadString(); + case 16: { + Code = input.ReadUInt32(); break; } - case 24: { + case 26: { + Digit = input.ReadString(); + break; + } + case 34: { + destinationIdentities_.AddEntriesFrom(ref input, _repeated_destinationIdentities_codec); + break; + } + case 40: { RequestAsyncId = input.ReadUInt64(); break; } @@ -7590,17 +7633,17 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class SetLocalMetadataResponse : pb::IMessage + public sealed partial class PublishSipDtmfResponse : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SetLocalMetadataResponse()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishSipDtmfResponse()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -7616,7 +7659,7 @@ public sealed partial class SetLocalMetadataResponse : pb::IMessageField number for the "async_id" field. @@ -7666,12 +7709,12 @@ public void ClearAsyncId() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as SetLocalMetadataResponse); + return Equals(other as PublishSipDtmfResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(SetLocalMetadataResponse other) { + public bool Equals(PublishSipDtmfResponse other) { if (ReferenceEquals(other, null)) { return false; } @@ -7744,7 +7787,7 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(SetLocalMetadataResponse other) { + public void MergeFrom(PublishSipDtmfResponse other) { if (other == null) { return; } @@ -7805,17 +7848,17 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class SetLocalMetadataCallback : pb::IMessage + public sealed partial class PublishSipDtmfCallback : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SetLocalMetadataCallback()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublishSipDtmfCallback()); private pb::UnknownFieldSet _unknownFields; private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -7831,7 +7874,7 @@ public sealed partial class SetLocalMetadataCallback : pb::IMessageField number for the "async_id" field. + public const int AsyncIdFieldNumber = 1; + private readonly static ulong AsyncIdDefaultValue = 0UL; + + private ulong asyncId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong AsyncId { + get { if ((_hasBits0 & 1) != 0) { return asyncId_; } else { return AsyncIdDefaultValue; } } + set { + _hasBits0 |= 1; + asyncId_ = value; + } + } + /// Gets whether the "async_id" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasAsyncId { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "async_id" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearAsyncId() { + _hasBits0 &= ~1; + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 2; + private readonly static string ErrorDefaultValue = ""; + + private string error_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return error_ ?? ErrorDefaultValue; } + set { + error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "error" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasError { + get { return error_ != null; } + } + /// Clears the value of the "error" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearError() { + error_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as PublishSipDtmfCallback); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(PublishSipDtmfCallback other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (AsyncId != other.AsyncId) return false; + if (Error != other.Error) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasAsyncId) hash ^= AsyncId.GetHashCode(); + if (HasError) hash ^= Error.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasAsyncId) { + output.WriteRawTag(8); + output.WriteUInt64(AsyncId); + } + if (HasError) { + output.WriteRawTag(18); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasAsyncId) { + output.WriteRawTag(8); + output.WriteUInt64(AsyncId); + } + if (HasError) { + output.WriteRawTag(18); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasAsyncId) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(AsyncId); + } + if (HasError) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(PublishSipDtmfCallback other) { + if (other == null) { + return; + } + if (other.HasAsyncId) { + AsyncId = other.AsyncId; + } + if (other.HasError) { + Error = other.Error; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + AsyncId = input.ReadUInt64(); + break; + } + case 18: { + Error = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + AsyncId = input.ReadUInt64(); + break; + } + case 18: { + Error = input.ReadString(); + break; + } + } + } + } + #endif + + } + + /// + /// Change the local participant's metadata + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class SetLocalMetadataRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SetLocalMetadataRequest()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[24]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetLocalMetadataRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetLocalMetadataRequest(SetLocalMetadataRequest other) : this() { + _hasBits0 = other._hasBits0; + localParticipantHandle_ = other.localParticipantHandle_; + metadata_ = other.metadata_; + requestAsyncId_ = other.requestAsyncId_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetLocalMetadataRequest Clone() { + return new SetLocalMetadataRequest(this); + } + + /// Field number for the "local_participant_handle" field. + public const int LocalParticipantHandleFieldNumber = 1; + private readonly static ulong LocalParticipantHandleDefaultValue = 0UL; + + private ulong localParticipantHandle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong LocalParticipantHandle { + get { if ((_hasBits0 & 1) != 0) { return localParticipantHandle_; } else { return LocalParticipantHandleDefaultValue; } } + set { + _hasBits0 |= 1; + localParticipantHandle_ = value; + } + } + /// Gets whether the "local_participant_handle" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLocalParticipantHandle { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "local_participant_handle" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLocalParticipantHandle() { + _hasBits0 &= ~1; + } + + /// Field number for the "metadata" field. + public const int MetadataFieldNumber = 2; + private readonly static string MetadataDefaultValue = ""; + + private string metadata_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Metadata { + get { return metadata_ ?? MetadataDefaultValue; } + set { + metadata_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "metadata" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasMetadata { + get { return metadata_ != null; } + } + /// Clears the value of the "metadata" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMetadata() { + metadata_ = null; + } + + /// Field number for the "request_async_id" field. + public const int RequestAsyncIdFieldNumber = 3; + private readonly static ulong RequestAsyncIdDefaultValue = 0UL; + + private ulong requestAsyncId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong RequestAsyncId { + get { if ((_hasBits0 & 2) != 0) { return requestAsyncId_; } else { return RequestAsyncIdDefaultValue; } } + set { + _hasBits0 |= 2; + requestAsyncId_ = value; + } + } + /// Gets whether the "request_async_id" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasRequestAsyncId { + get { return (_hasBits0 & 2) != 0; } + } + /// Clears the value of the "request_async_id" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearRequestAsyncId() { + _hasBits0 &= ~2; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SetLocalMetadataRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SetLocalMetadataRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (LocalParticipantHandle != other.LocalParticipantHandle) return false; + if (Metadata != other.Metadata) return false; + if (RequestAsyncId != other.RequestAsyncId) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasLocalParticipantHandle) hash ^= LocalParticipantHandle.GetHashCode(); + if (HasMetadata) hash ^= Metadata.GetHashCode(); + if (HasRequestAsyncId) hash ^= RequestAsyncId.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasLocalParticipantHandle) { + output.WriteRawTag(8); + output.WriteUInt64(LocalParticipantHandle); + } + if (HasMetadata) { + output.WriteRawTag(18); + output.WriteString(Metadata); + } + if (HasRequestAsyncId) { + output.WriteRawTag(24); + output.WriteUInt64(RequestAsyncId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasLocalParticipantHandle) { + output.WriteRawTag(8); + output.WriteUInt64(LocalParticipantHandle); + } + if (HasMetadata) { + output.WriteRawTag(18); + output.WriteString(Metadata); + } + if (HasRequestAsyncId) { + output.WriteRawTag(24); + output.WriteUInt64(RequestAsyncId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasLocalParticipantHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(LocalParticipantHandle); + } + if (HasMetadata) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Metadata); + } + if (HasRequestAsyncId) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(RequestAsyncId); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SetLocalMetadataRequest other) { + if (other == null) { + return; + } + if (other.HasLocalParticipantHandle) { + LocalParticipantHandle = other.LocalParticipantHandle; + } + if (other.HasMetadata) { + Metadata = other.Metadata; + } + if (other.HasRequestAsyncId) { + RequestAsyncId = other.RequestAsyncId; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + LocalParticipantHandle = input.ReadUInt64(); + break; + } + case 18: { + Metadata = input.ReadString(); + break; + } + case 24: { + RequestAsyncId = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + LocalParticipantHandle = input.ReadUInt64(); + break; + } + case 18: { + Metadata = input.ReadString(); + break; + } + case 24: { + RequestAsyncId = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class SetLocalMetadataResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SetLocalMetadataResponse()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[25]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetLocalMetadataResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetLocalMetadataResponse(SetLocalMetadataResponse other) : this() { + _hasBits0 = other._hasBits0; + asyncId_ = other.asyncId_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetLocalMetadataResponse Clone() { + return new SetLocalMetadataResponse(this); + } + + /// Field number for the "async_id" field. + public const int AsyncIdFieldNumber = 1; + private readonly static ulong AsyncIdDefaultValue = 0UL; + + private ulong asyncId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong AsyncId { + get { if ((_hasBits0 & 1) != 0) { return asyncId_; } else { return AsyncIdDefaultValue; } } + set { + _hasBits0 |= 1; + asyncId_ = value; + } + } + /// Gets whether the "async_id" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasAsyncId { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "async_id" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearAsyncId() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SetLocalMetadataResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SetLocalMetadataResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (AsyncId != other.AsyncId) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasAsyncId) hash ^= AsyncId.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasAsyncId) { + output.WriteRawTag(8); + output.WriteUInt64(AsyncId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasAsyncId) { + output.WriteRawTag(8); + output.WriteUInt64(AsyncId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasAsyncId) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(AsyncId); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SetLocalMetadataResponse other) { + if (other == null) { + return; + } + if (other.HasAsyncId) { + AsyncId = other.AsyncId; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + AsyncId = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + AsyncId = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class SetLocalMetadataCallback : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SetLocalMetadataCallback()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[26]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetLocalMetadataCallback() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetLocalMetadataCallback(SetLocalMetadataCallback other) : this() { + _hasBits0 = other._hasBits0; + asyncId_ = other.asyncId_; + error_ = other.error_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SetLocalMetadataCallback Clone() { + return new SetLocalMetadataCallback(this); } /// Field number for the "async_id" field. @@ -8086,7 +8931,7 @@ public sealed partial class SendChatMessageRequest : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[29]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[32]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -10045,7 +10890,7 @@ public sealed partial class SetLocalAttributesResponse : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[40]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[43]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -13078,7 +13923,7 @@ public sealed partial class AudioEncoding : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[41]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[44]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -13293,7 +14138,7 @@ public sealed partial class TrackPublishOptions : pb::IMessageField number for the "packet_trailer_features" field. + public const int PacketTrailerFeaturesFieldNumber = 10; + private static readonly pb::FieldCodec _repeated_packetTrailerFeatures_codec + = pb::FieldCodec.ForEnum(80, x => (int) x, x => (global::LiveKit.Proto.PacketTrailerFeature) x); + private readonly pbc::RepeatedField packetTrailerFeatures_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField PacketTrailerFeatures { + get { return packetTrailerFeatures_; } + } + + /// Field number for the "scalability_mode" field. + public const int ScalabilityModeFieldNumber = 11; + private readonly static string ScalabilityModeDefaultValue = ""; + + private string scalabilityMode_; + /// + /// RTP scalability mode (e.g. "L3T3_KEY"). When set, a single RTP + /// encoding is produced with this mode, enabling true SVC for codecs + /// that support it (VP9, AV1). Has no effect for VP8/H264. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string ScalabilityMode { + get { return scalabilityMode_ ?? ScalabilityModeDefaultValue; } + set { + scalabilityMode_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "scalability_mode" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasScalabilityMode { + get { return scalabilityMode_ != null; } + } + /// Clears the value of the "scalability_mode" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearScalabilityMode() { + scalabilityMode_ = null; + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -13571,6 +14460,8 @@ public bool Equals(TrackPublishOptions other) { if (Source != other.Source) return false; if (Stream != other.Stream) return false; if (PreconnectBuffer != other.PreconnectBuffer) return false; + if(!packetTrailerFeatures_.Equals(other.packetTrailerFeatures_)) return false; + if (ScalabilityMode != other.ScalabilityMode) return false; return Equals(_unknownFields, other._unknownFields); } @@ -13587,6 +14478,8 @@ public override int GetHashCode() { if (HasSource) hash ^= Source.GetHashCode(); if (HasStream) hash ^= Stream.GetHashCode(); if (HasPreconnectBuffer) hash ^= PreconnectBuffer.GetHashCode(); + hash ^= packetTrailerFeatures_.GetHashCode(); + if (HasScalabilityMode) hash ^= ScalabilityMode.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -13641,6 +14534,11 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(72); output.WriteBool(PreconnectBuffer); } + packetTrailerFeatures_.WriteTo(output, _repeated_packetTrailerFeatures_codec); + if (HasScalabilityMode) { + output.WriteRawTag(90); + output.WriteString(ScalabilityMode); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -13687,6 +14585,11 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(72); output.WriteBool(PreconnectBuffer); } + packetTrailerFeatures_.WriteTo(ref output, _repeated_packetTrailerFeatures_codec); + if (HasScalabilityMode) { + output.WriteRawTag(90); + output.WriteString(ScalabilityMode); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -13724,6 +14627,10 @@ public int CalculateSize() { if (HasPreconnectBuffer) { size += 1 + 1; } + size += packetTrailerFeatures_.CalculateSize(_repeated_packetTrailerFeatures_codec); + if (HasScalabilityMode) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ScalabilityMode); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -13769,6 +14676,10 @@ public void MergeFrom(TrackPublishOptions other) { if (other.HasPreconnectBuffer) { PreconnectBuffer = other.PreconnectBuffer; } + packetTrailerFeatures_.Add(other.packetTrailerFeatures_); + if (other.HasScalabilityMode) { + ScalabilityMode = other.ScalabilityMode; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -13830,6 +14741,15 @@ public void MergeFrom(pb::CodedInputStream input) { PreconnectBuffer = input.ReadBool(); break; } + case 82: + case 80: { + packetTrailerFeatures_.AddEntriesFrom(input, _repeated_packetTrailerFeatures_codec); + break; + } + case 90: { + ScalabilityMode = input.ReadString(); + break; + } } } #endif @@ -13891,6 +14811,15 @@ public void MergeFrom(pb::CodedInputStream input) { PreconnectBuffer = input.ReadBool(); break; } + case 82: + case 80: { + packetTrailerFeatures_.AddEntriesFrom(ref input, _repeated_packetTrailerFeatures_codec); + break; + } + case 90: { + ScalabilityMode = input.ReadString(); + break; + } } } } @@ -13913,7 +14842,7 @@ public sealed partial class IceServer : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[43]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[46]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -14203,7 +15132,7 @@ public sealed partial class RtcConfig : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[44]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[47]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -14499,7 +15428,7 @@ public sealed partial class RoomOptions : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[45]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[48]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -15122,7 +16051,7 @@ public sealed partial class TranscriptionSegment : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[47]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[50]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -15860,7 +16789,7 @@ public sealed partial class OwnedBuffer : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[48]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[51]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -16114,7 +17043,7 @@ public sealed partial class RoomEvent : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[49]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[52]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -16266,6 +17195,9 @@ public RoomEvent(RoomEvent other) : this() { case MessageOneofCase.DataTrackUnpublished: DataTrackUnpublished = other.DataTrackUnpublished.Clone(); break; + case MessageOneofCase.LocalTrackRepublished: + LocalTrackRepublished = other.LocalTrackRepublished.Clone(); + break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -16841,6 +17773,18 @@ public void ClearRoomHandle() { } } + /// Field number for the "local_track_republished" field. + public const int LocalTrackRepublishedFieldNumber = 45; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.LocalTrackRepublished LocalTrackRepublished { + get { return messageCase_ == MessageOneofCase.LocalTrackRepublished ? (global::LiveKit.Proto.LocalTrackRepublished) message_ : null; } + set { + message_ = value; + messageCase_ = value == null ? MessageOneofCase.None : MessageOneofCase.LocalTrackRepublished; + } + } + private object message_; /// Enum of possible cases for the "message" oneof. public enum MessageOneofCase { @@ -16888,6 +17832,7 @@ public enum MessageOneofCase { ParticipantActive = 42, DataTrackPublished = 43, DataTrackUnpublished = 44, + LocalTrackRepublished = 45, } private MessageOneofCase messageCase_ = MessageOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -16962,6 +17907,7 @@ public bool Equals(RoomEvent other) { if (!object.Equals(ParticipantActive, other.ParticipantActive)) return false; if (!object.Equals(DataTrackPublished, other.DataTrackPublished)) return false; if (!object.Equals(DataTrackUnpublished, other.DataTrackUnpublished)) return false; + if (!object.Equals(LocalTrackRepublished, other.LocalTrackRepublished)) return false; if (MessageCase != other.MessageCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -17014,6 +17960,7 @@ public override int GetHashCode() { if (messageCase_ == MessageOneofCase.ParticipantActive) hash ^= ParticipantActive.GetHashCode(); if (messageCase_ == MessageOneofCase.DataTrackPublished) hash ^= DataTrackPublished.GetHashCode(); if (messageCase_ == MessageOneofCase.DataTrackUnpublished) hash ^= DataTrackUnpublished.GetHashCode(); + if (messageCase_ == MessageOneofCase.LocalTrackRepublished) hash ^= LocalTrackRepublished.GetHashCode(); hash ^= (int) messageCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -17209,6 +18156,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(226, 2); output.WriteMessage(DataTrackUnpublished); } + if (messageCase_ == MessageOneofCase.LocalTrackRepublished) { + output.WriteRawTag(234, 2); + output.WriteMessage(LocalTrackRepublished); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -17395,6 +18346,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(226, 2); output.WriteMessage(DataTrackUnpublished); } + if (messageCase_ == MessageOneofCase.LocalTrackRepublished) { + output.WriteRawTag(234, 2); + output.WriteMessage(LocalTrackRepublished); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -17537,6 +18492,9 @@ public int CalculateSize() { if (messageCase_ == MessageOneofCase.DataTrackUnpublished) { size += 2 + pb::CodedOutputStream.ComputeMessageSize(DataTrackUnpublished); } + if (messageCase_ == MessageOneofCase.LocalTrackRepublished) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(LocalTrackRepublished); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -17811,6 +18769,12 @@ public void MergeFrom(RoomEvent other) { } DataTrackUnpublished.MergeFrom(other.DataTrackUnpublished); break; + case MessageOneofCase.LocalTrackRepublished: + if (LocalTrackRepublished == null) { + LocalTrackRepublished = new global::LiveKit.Proto.LocalTrackRepublished(); + } + LocalTrackRepublished.MergeFrom(other.LocalTrackRepublished); + break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); @@ -18223,6 +19187,15 @@ public void MergeFrom(pb::CodedInputStream input) { DataTrackUnpublished = subBuilder; break; } + case 362: { + global::LiveKit.Proto.LocalTrackRepublished subBuilder = new global::LiveKit.Proto.LocalTrackRepublished(); + if (messageCase_ == MessageOneofCase.LocalTrackRepublished) { + subBuilder.MergeFrom(LocalTrackRepublished); + } + input.ReadMessage(subBuilder); + LocalTrackRepublished = subBuilder; + break; + } } } #endif @@ -18633,6 +19606,15 @@ public void MergeFrom(pb::CodedInputStream input) { DataTrackUnpublished = subBuilder; break; } + case 362: { + global::LiveKit.Proto.LocalTrackRepublished subBuilder = new global::LiveKit.Proto.LocalTrackRepublished(); + if (messageCase_ == MessageOneofCase.LocalTrackRepublished) { + subBuilder.MergeFrom(LocalTrackRepublished); + } + input.ReadMessage(subBuilder); + LocalTrackRepublished = subBuilder; + break; + } } } } @@ -18656,7 +19638,7 @@ public sealed partial class RoomInfo : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[50]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[53]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -19370,51 +20352,491 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { - Sid = input.ReadString(); - break; - } - case 18: { - Name = input.ReadString(); - break; - } - case 26: { - Metadata = input.ReadString(); - break; - } - case 32: { - LossyDcBufferedAmountLowThreshold = input.ReadUInt64(); - break; - } - case 40: { - ReliableDcBufferedAmountLowThreshold = input.ReadUInt64(); - break; - } - case 48: { - EmptyTimeout = input.ReadUInt32(); - break; - } - case 56: { - DepartureTimeout = input.ReadUInt32(); - break; - } - case 64: { - MaxParticipants = input.ReadUInt32(); - break; - } - case 72: { - CreationTime = input.ReadInt64(); - break; - } - case 80: { - NumParticipants = input.ReadUInt32(); - break; - } - case 88: { - NumPublishers = input.ReadUInt32(); - break; - } - case 96: { - ActiveRecording = input.ReadBool(); + Sid = input.ReadString(); + break; + } + case 18: { + Name = input.ReadString(); + break; + } + case 26: { + Metadata = input.ReadString(); + break; + } + case 32: { + LossyDcBufferedAmountLowThreshold = input.ReadUInt64(); + break; + } + case 40: { + ReliableDcBufferedAmountLowThreshold = input.ReadUInt64(); + break; + } + case 48: { + EmptyTimeout = input.ReadUInt32(); + break; + } + case 56: { + DepartureTimeout = input.ReadUInt32(); + break; + } + case 64: { + MaxParticipants = input.ReadUInt32(); + break; + } + case 72: { + CreationTime = input.ReadInt64(); + break; + } + case 80: { + NumParticipants = input.ReadUInt32(); + break; + } + case 88: { + NumPublishers = input.ReadUInt32(); + break; + } + case 96: { + ActiveRecording = input.ReadBool(); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class OwnedRoom : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OwnedRoom()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[54]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedRoom() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedRoom(OwnedRoom other) : this() { + handle_ = other.handle_ != null ? other.handle_.Clone() : null; + info_ = other.info_ != null ? other.info_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OwnedRoom Clone() { + return new OwnedRoom(this); + } + + /// Field number for the "handle" field. + public const int HandleFieldNumber = 1; + private global::LiveKit.Proto.FfiOwnedHandle handle_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.FfiOwnedHandle Handle { + get { return handle_; } + set { + handle_ = value; + } + } + + /// Field number for the "info" field. + public const int InfoFieldNumber = 2; + private global::LiveKit.Proto.RoomInfo info_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.RoomInfo Info { + get { return info_; } + set { + info_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as OwnedRoom); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(OwnedRoom other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Handle, other.Handle)) return false; + if (!object.Equals(Info, other.Info)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (handle_ != null) hash ^= Handle.GetHashCode(); + if (info_ != null) hash ^= Info.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (handle_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Handle); + } + if (info_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Info); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (handle_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Handle); + } + if (info_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Info); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (handle_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Handle); + } + if (info_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Info); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(OwnedRoom other) { + if (other == null) { + return; + } + if (other.handle_ != null) { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + Handle.MergeFrom(other.Handle); + } + if (other.info_ != null) { + if (info_ == null) { + Info = new global::LiveKit.Proto.RoomInfo(); + } + Info.MergeFrom(other.Info); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + input.ReadMessage(Handle); + break; + } + case 18: { + if (info_ == null) { + Info = new global::LiveKit.Proto.RoomInfo(); + } + input.ReadMessage(Info); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + if (handle_ == null) { + Handle = new global::LiveKit.Proto.FfiOwnedHandle(); + } + input.ReadMessage(Handle); + break; + } + case 18: { + if (info_ == null) { + Info = new global::LiveKit.Proto.RoomInfo(); + } + input.ReadMessage(Info); + break; + } + } + } + } + #endif + + } + + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class ParticipantsUpdated : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ParticipantsUpdated()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[55]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ParticipantsUpdated() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ParticipantsUpdated(ParticipantsUpdated other) : this() { + participants_ = other.participants_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ParticipantsUpdated Clone() { + return new ParticipantsUpdated(this); + } + + /// Field number for the "participants" field. + public const int ParticipantsFieldNumber = 1; + private static readonly pb::FieldCodec _repeated_participants_codec + = pb::FieldCodec.ForMessage(10, global::LiveKit.Proto.ParticipantInfo.Parser); + private readonly pbc::RepeatedField participants_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Participants { + get { return participants_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as ParticipantsUpdated); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(ParticipantsUpdated other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if(!participants_.Equals(other.participants_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + hash ^= participants_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + participants_.WriteTo(output, _repeated_participants_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + participants_.WriteTo(ref output, _repeated_participants_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + size += participants_.CalculateSize(_repeated_participants_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(ParticipantsUpdated other) { + if (other == null) { + return; + } + participants_.Add(other.participants_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + participants_.AddEntriesFrom(input, _repeated_participants_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + participants_.AddEntriesFrom(ref input, _repeated_participants_codec); break; } } @@ -19425,21 +20847,21 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class OwnedRoom : pb::IMessage + public sealed partial class ParticipantConnected : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OwnedRoom()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ParticipantConnected()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[51]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[56]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -19450,7 +20872,7 @@ public sealed partial class OwnedRoom : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public OwnedRoom() { + public ParticipantConnected() { OnConstruction(); } @@ -19458,36 +20880,23 @@ public OwnedRoom() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public OwnedRoom(OwnedRoom other) : this() { - handle_ = other.handle_ != null ? other.handle_.Clone() : null; + public ParticipantConnected(ParticipantConnected other) : this() { info_ = other.info_ != null ? other.info_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public OwnedRoom Clone() { - return new OwnedRoom(this); - } - - /// Field number for the "handle" field. - public const int HandleFieldNumber = 1; - private global::LiveKit.Proto.FfiOwnedHandle handle_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public global::LiveKit.Proto.FfiOwnedHandle Handle { - get { return handle_; } - set { - handle_ = value; - } + public ParticipantConnected Clone() { + return new ParticipantConnected(this); } /// Field number for the "info" field. - public const int InfoFieldNumber = 2; - private global::LiveKit.Proto.RoomInfo info_; + public const int InfoFieldNumber = 1; + private global::LiveKit.Proto.OwnedParticipant info_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public global::LiveKit.Proto.RoomInfo Info { + public global::LiveKit.Proto.OwnedParticipant Info { get { return info_; } set { info_ = value; @@ -19497,19 +20906,18 @@ public OwnedRoom Clone() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as OwnedRoom); + return Equals(other as ParticipantConnected); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(OwnedRoom other) { + public bool Equals(ParticipantConnected other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } - if (!object.Equals(Handle, other.Handle)) return false; if (!object.Equals(Info, other.Info)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -19518,7 +20926,6 @@ public bool Equals(OwnedRoom other) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; - if (handle_ != null) hash ^= Handle.GetHashCode(); if (info_ != null) hash ^= Info.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -19538,12 +20945,8 @@ public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else - if (handle_ != null) { - output.WriteRawTag(10); - output.WriteMessage(Handle); - } if (info_ != null) { - output.WriteRawTag(18); + output.WriteRawTag(10); output.WriteMessage(Info); } if (_unknownFields != null) { @@ -19556,12 +20959,8 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (handle_ != null) { - output.WriteRawTag(10); - output.WriteMessage(Handle); - } if (info_ != null) { - output.WriteRawTag(18); + output.WriteRawTag(10); output.WriteMessage(Info); } if (_unknownFields != null) { @@ -19574,9 +20973,6 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; - if (handle_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Handle); - } if (info_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Info); } @@ -19588,19 +20984,13 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(OwnedRoom other) { + public void MergeFrom(ParticipantConnected other) { if (other == null) { return; } - if (other.handle_ != null) { - if (handle_ == null) { - Handle = new global::LiveKit.Proto.FfiOwnedHandle(); - } - Handle.MergeFrom(other.Handle); - } if (other.info_ != null) { if (info_ == null) { - Info = new global::LiveKit.Proto.RoomInfo(); + Info = new global::LiveKit.Proto.OwnedParticipant(); } Info.MergeFrom(other.Info); } @@ -19624,15 +21014,8 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { - if (handle_ == null) { - Handle = new global::LiveKit.Proto.FfiOwnedHandle(); - } - input.ReadMessage(Handle); - break; - } - case 18: { if (info_ == null) { - Info = new global::LiveKit.Proto.RoomInfo(); + Info = new global::LiveKit.Proto.OwnedParticipant(); } input.ReadMessage(Info); break; @@ -19657,15 +21040,8 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { - if (handle_ == null) { - Handle = new global::LiveKit.Proto.FfiOwnedHandle(); - } - input.ReadMessage(Handle); - break; - } - case 18: { if (info_ == null) { - Info = new global::LiveKit.Proto.RoomInfo(); + Info = new global::LiveKit.Proto.OwnedParticipant(); } input.ReadMessage(Info); break; @@ -19678,21 +21054,21 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class ParticipantsUpdated : pb::IMessage + public sealed partial class ParticipantActive : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ParticipantsUpdated()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ParticipantActive()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[52]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[57]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -19703,7 +21079,7 @@ public sealed partial class ParticipantsUpdated : pb::IMessageField number for the "participants" field. - public const int ParticipantsFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_participants_codec - = pb::FieldCodec.ForMessage(10, global::LiveKit.Proto.ParticipantInfo.Parser); - private readonly pbc::RepeatedField participants_ = new pbc::RepeatedField(); + /// Field number for the "participant_identity" field. + public const int ParticipantIdentityFieldNumber = 1; + private readonly static string ParticipantIdentityDefaultValue = ""; + + private string participantIdentity_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public pbc::RepeatedField Participants { - get { return participants_; } + public string ParticipantIdentity { + get { return participantIdentity_ ?? ParticipantIdentityDefaultValue; } + set { + participantIdentity_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "participant_identity" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasParticipantIdentity { + get { return participantIdentity_ != null; } + } + /// Clears the value of the "participant_identity" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearParticipantIdentity() { + participantIdentity_ = null; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as ParticipantsUpdated); + return Equals(other as ParticipantActive); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(ParticipantsUpdated other) { + public bool Equals(ParticipantActive other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } - if(!participants_.Equals(other.participants_)) return false; + if (ParticipantIdentity != other.ParticipantIdentity) return false; return Equals(_unknownFields, other._unknownFields); } @@ -19756,7 +21147,7 @@ public bool Equals(ParticipantsUpdated other) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; - hash ^= participants_.GetHashCode(); + if (HasParticipantIdentity) hash ^= ParticipantIdentity.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -19775,7 +21166,10 @@ public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else - participants_.WriteTo(output, _repeated_participants_codec); + if (HasParticipantIdentity) { + output.WriteRawTag(10); + output.WriteString(ParticipantIdentity); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -19786,7 +21180,10 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - participants_.WriteTo(ref output, _repeated_participants_codec); + if (HasParticipantIdentity) { + output.WriteRawTag(10); + output.WriteString(ParticipantIdentity); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -19797,7 +21194,9 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; - size += participants_.CalculateSize(_repeated_participants_codec); + if (HasParticipantIdentity) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ParticipantIdentity); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -19806,11 +21205,13 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(ParticipantsUpdated other) { + public void MergeFrom(ParticipantActive other) { if (other == null) { return; } - participants_.Add(other.participants_); + if (other.HasParticipantIdentity) { + ParticipantIdentity = other.ParticipantIdentity; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -19831,7 +21232,7 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { - participants_.AddEntriesFrom(input, _repeated_participants_codec); + ParticipantIdentity = input.ReadString(); break; } } @@ -19854,7 +21255,7 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { - participants_.AddEntriesFrom(ref input, _repeated_participants_codec); + ParticipantIdentity = input.ReadString(); break; } } @@ -19865,21 +21266,22 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class ParticipantConnected : pb::IMessage + public sealed partial class ParticipantDisconnected : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ParticipantConnected()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ParticipantDisconnected()); private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[53]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[58]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -19890,7 +21292,7 @@ public sealed partial class ParticipantConnected : pb::IMessageField number for the "info" field. - public const int InfoFieldNumber = 1; - private global::LiveKit.Proto.OwnedParticipant info_; + /// Field number for the "participant_identity" field. + public const int ParticipantIdentityFieldNumber = 1; + private readonly static string ParticipantIdentityDefaultValue = ""; + + private string participantIdentity_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public global::LiveKit.Proto.OwnedParticipant Info { - get { return info_; } + public string ParticipantIdentity { + get { return participantIdentity_ ?? ParticipantIdentityDefaultValue; } set { - info_ = value; + participantIdentity_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "participant_identity" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasParticipantIdentity { + get { return participantIdentity_ != null; } + } + /// Clears the value of the "participant_identity" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearParticipantIdentity() { + participantIdentity_ = null; + } + + /// Field number for the "disconnect_reason" field. + public const int DisconnectReasonFieldNumber = 2; + private readonly static global::LiveKit.Proto.DisconnectReason DisconnectReasonDefaultValue = global::LiveKit.Proto.DisconnectReason.UnknownReason; + + private global::LiveKit.Proto.DisconnectReason disconnectReason_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.DisconnectReason DisconnectReason { + get { if ((_hasBits0 & 1) != 0) { return disconnectReason_; } else { return DisconnectReasonDefaultValue; } } + set { + _hasBits0 |= 1; + disconnectReason_ = value; } } + /// Gets whether the "disconnect_reason" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasDisconnectReason { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "disconnect_reason" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearDisconnectReason() { + _hasBits0 &= ~1; + } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as ParticipantConnected); + return Equals(other as ParticipantDisconnected); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(ParticipantConnected other) { + public bool Equals(ParticipantDisconnected other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } - if (!object.Equals(Info, other.Info)) return false; + if (ParticipantIdentity != other.ParticipantIdentity) return false; + if (DisconnectReason != other.DisconnectReason) return false; return Equals(_unknownFields, other._unknownFields); } @@ -19944,7 +21390,8 @@ public bool Equals(ParticipantConnected other) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; - if (info_ != null) hash ^= Info.GetHashCode(); + if (HasParticipantIdentity) hash ^= ParticipantIdentity.GetHashCode(); + if (HasDisconnectReason) hash ^= DisconnectReason.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -19963,9 +21410,13 @@ public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else - if (info_ != null) { + if (HasParticipantIdentity) { output.WriteRawTag(10); - output.WriteMessage(Info); + output.WriteString(ParticipantIdentity); + } + if (HasDisconnectReason) { + output.WriteRawTag(16); + output.WriteEnum((int) DisconnectReason); } if (_unknownFields != null) { _unknownFields.WriteTo(output); @@ -19977,9 +21428,13 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (info_ != null) { + if (HasParticipantIdentity) { output.WriteRawTag(10); - output.WriteMessage(Info); + output.WriteString(ParticipantIdentity); + } + if (HasDisconnectReason) { + output.WriteRawTag(16); + output.WriteEnum((int) DisconnectReason); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); @@ -19991,8 +21446,11 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; - if (info_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Info); + if (HasParticipantIdentity) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ParticipantIdentity); + } + if (HasDisconnectReason) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DisconnectReason); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); @@ -20002,15 +21460,15 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(ParticipantConnected other) { + public void MergeFrom(ParticipantDisconnected other) { if (other == null) { return; } - if (other.info_ != null) { - if (info_ == null) { - Info = new global::LiveKit.Proto.OwnedParticipant(); - } - Info.MergeFrom(other.Info); + if (other.HasParticipantIdentity) { + ParticipantIdentity = other.ParticipantIdentity; + } + if (other.HasDisconnectReason) { + DisconnectReason = other.DisconnectReason; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -20032,10 +21490,11 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { - if (info_ == null) { - Info = new global::LiveKit.Proto.OwnedParticipant(); - } - input.ReadMessage(Info); + ParticipantIdentity = input.ReadString(); + break; + } + case 16: { + DisconnectReason = (global::LiveKit.Proto.DisconnectReason) input.ReadEnum(); break; } } @@ -20058,10 +21517,11 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { - if (info_ == null) { - Info = new global::LiveKit.Proto.OwnedParticipant(); - } - input.ReadMessage(Info); + ParticipantIdentity = input.ReadString(); + break; + } + case 16: { + DisconnectReason = (global::LiveKit.Proto.DisconnectReason) input.ReadEnum(); break; } } @@ -20072,21 +21532,21 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class ParticipantActive : pb::IMessage + public sealed partial class LocalTrackPublished : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ParticipantActive()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LocalTrackPublished()); private pb::UnknownFieldSet _unknownFields; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[54]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[59]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -20097,7 +21557,7 @@ public sealed partial class ParticipantActive : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ParticipantActive() { + public LocalTrackPublished() { OnConstruction(); } @@ -20105,59 +21565,63 @@ public ParticipantActive() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ParticipantActive(ParticipantActive other) : this() { - participantIdentity_ = other.participantIdentity_; + public LocalTrackPublished(LocalTrackPublished other) : this() { + trackSid_ = other.trackSid_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public ParticipantActive Clone() { - return new ParticipantActive(this); + public LocalTrackPublished Clone() { + return new LocalTrackPublished(this); } - /// Field number for the "participant_identity" field. - public const int ParticipantIdentityFieldNumber = 1; - private readonly static string ParticipantIdentityDefaultValue = ""; + /// Field number for the "track_sid" field. + public const int TrackSidFieldNumber = 1; + private readonly static string TrackSidDefaultValue = ""; - private string participantIdentity_; + private string trackSid_; + /// + /// The TrackPublicationInfo comes from the PublishTrack response + /// and the FfiClient musts wait for it before firing this event + /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string ParticipantIdentity { - get { return participantIdentity_ ?? ParticipantIdentityDefaultValue; } + public string TrackSid { + get { return trackSid_ ?? TrackSidDefaultValue; } set { - participantIdentity_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + trackSid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } - /// Gets whether the "participant_identity" field is set + /// Gets whether the "track_sid" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasParticipantIdentity { - get { return participantIdentity_ != null; } + public bool HasTrackSid { + get { return trackSid_ != null; } } - /// Clears the value of the "participant_identity" field + /// Clears the value of the "track_sid" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearParticipantIdentity() { - participantIdentity_ = null; + public void ClearTrackSid() { + trackSid_ = null; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as ParticipantActive); + return Equals(other as LocalTrackPublished); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(ParticipantActive other) { + public bool Equals(LocalTrackPublished other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } - if (ParticipantIdentity != other.ParticipantIdentity) return false; + if (TrackSid != other.TrackSid) return false; return Equals(_unknownFields, other._unknownFields); } @@ -20165,7 +21629,7 @@ public bool Equals(ParticipantActive other) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; - if (HasParticipantIdentity) hash ^= ParticipantIdentity.GetHashCode(); + if (HasTrackSid) hash ^= TrackSid.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -20184,9 +21648,9 @@ public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else - if (HasParticipantIdentity) { + if (HasTrackSid) { output.WriteRawTag(10); - output.WriteString(ParticipantIdentity); + output.WriteString(TrackSid); } if (_unknownFields != null) { _unknownFields.WriteTo(output); @@ -20198,9 +21662,9 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (HasParticipantIdentity) { + if (HasTrackSid) { output.WriteRawTag(10); - output.WriteString(ParticipantIdentity); + output.WriteString(TrackSid); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); @@ -20212,8 +21676,8 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; - if (HasParticipantIdentity) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(ParticipantIdentity); + if (HasTrackSid) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(TrackSid); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); @@ -20223,12 +21687,12 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(ParticipantActive other) { + public void MergeFrom(LocalTrackPublished other) { if (other == null) { return; } - if (other.HasParticipantIdentity) { - ParticipantIdentity = other.ParticipantIdentity; + if (other.HasTrackSid) { + TrackSid = other.TrackSid; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -20250,7 +21714,7 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { - ParticipantIdentity = input.ReadString(); + TrackSid = input.ReadString(); break; } } @@ -20273,7 +21737,7 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { - ParticipantIdentity = input.ReadString(); + TrackSid = input.ReadString(); break; } } @@ -20284,22 +21748,21 @@ public void MergeFrom(pb::CodedInputStream input) { } [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class ParticipantDisconnected : pb::IMessage + public sealed partial class LocalTrackUnpublished : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ParticipantDisconnected()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LocalTrackUnpublished()); private pb::UnknownFieldSet _unknownFields; - private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[55]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[60]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -20310,7 +21773,7 @@ public sealed partial class ParticipantDisconnected : pb::IMessageField number for the "participant_identity" field. - public const int ParticipantIdentityFieldNumber = 1; - private readonly static string ParticipantIdentityDefaultValue = ""; - - private string participantIdentity_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string ParticipantIdentity { - get { return participantIdentity_ ?? ParticipantIdentityDefaultValue; } - set { - participantIdentity_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "participant_identity" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasParticipantIdentity { - get { return participantIdentity_ != null; } - } - /// Clears the value of the "participant_identity" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearParticipantIdentity() { - participantIdentity_ = null; + public LocalTrackUnpublished Clone() { + return new LocalTrackUnpublished(this); } - /// Field number for the "disconnect_reason" field. - public const int DisconnectReasonFieldNumber = 2; - private readonly static global::LiveKit.Proto.DisconnectReason DisconnectReasonDefaultValue = global::LiveKit.Proto.DisconnectReason.UnknownReason; + /// Field number for the "publication_sid" field. + public const int PublicationSidFieldNumber = 1; + private readonly static string PublicationSidDefaultValue = ""; - private global::LiveKit.Proto.DisconnectReason disconnectReason_; + private string publicationSid_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public global::LiveKit.Proto.DisconnectReason DisconnectReason { - get { if ((_hasBits0 & 1) != 0) { return disconnectReason_; } else { return DisconnectReasonDefaultValue; } } + public string PublicationSid { + get { return publicationSid_ ?? PublicationSidDefaultValue; } set { - _hasBits0 |= 1; - disconnectReason_ = value; + publicationSid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } - /// Gets whether the "disconnect_reason" field is set + /// Gets whether the "publication_sid" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasDisconnectReason { - get { return (_hasBits0 & 1) != 0; } + public bool HasPublicationSid { + get { return publicationSid_ != null; } } - /// Clears the value of the "disconnect_reason" field + /// Clears the value of the "publication_sid" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearDisconnectReason() { - _hasBits0 &= ~1; + public void ClearPublicationSid() { + publicationSid_ = null; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as ParticipantDisconnected); + return Equals(other as LocalTrackUnpublished); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(ParticipantDisconnected other) { + public bool Equals(LocalTrackUnpublished other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } - if (ParticipantIdentity != other.ParticipantIdentity) return false; - if (DisconnectReason != other.DisconnectReason) return false; + if (PublicationSid != other.PublicationSid) return false; return Equals(_unknownFields, other._unknownFields); } @@ -20408,8 +21841,7 @@ public bool Equals(ParticipantDisconnected other) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; - if (HasParticipantIdentity) hash ^= ParticipantIdentity.GetHashCode(); - if (HasDisconnectReason) hash ^= DisconnectReason.GetHashCode(); + if (HasPublicationSid) hash ^= PublicationSid.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -20428,13 +21860,9 @@ public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else - if (HasParticipantIdentity) { + if (HasPublicationSid) { output.WriteRawTag(10); - output.WriteString(ParticipantIdentity); - } - if (HasDisconnectReason) { - output.WriteRawTag(16); - output.WriteEnum((int) DisconnectReason); + output.WriteString(PublicationSid); } if (_unknownFields != null) { _unknownFields.WriteTo(output); @@ -20446,13 +21874,9 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (HasParticipantIdentity) { + if (HasPublicationSid) { output.WriteRawTag(10); - output.WriteString(ParticipantIdentity); - } - if (HasDisconnectReason) { - output.WriteRawTag(16); - output.WriteEnum((int) DisconnectReason); + output.WriteString(PublicationSid); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); @@ -20464,11 +21888,8 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; - if (HasParticipantIdentity) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(ParticipantIdentity); - } - if (HasDisconnectReason) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DisconnectReason); + if (HasPublicationSid) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(PublicationSid); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); @@ -20478,15 +21899,12 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(ParticipantDisconnected other) { + public void MergeFrom(LocalTrackUnpublished other) { if (other == null) { return; } - if (other.HasParticipantIdentity) { - ParticipantIdentity = other.ParticipantIdentity; - } - if (other.HasDisconnectReason) { - DisconnectReason = other.DisconnectReason; + if (other.HasPublicationSid) { + PublicationSid = other.PublicationSid; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -20508,11 +21926,7 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { - ParticipantIdentity = input.ReadString(); - break; - } - case 16: { - DisconnectReason = (global::LiveKit.Proto.DisconnectReason) input.ReadEnum(); + PublicationSid = input.ReadString(); break; } } @@ -20535,11 +21949,7 @@ public void MergeFrom(pb::CodedInputStream input) { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { - ParticipantIdentity = input.ReadString(); - break; - } - case 16: { - DisconnectReason = (global::LiveKit.Proto.DisconnectReason) input.ReadEnum(); + PublicationSid = input.ReadString(); break; } } @@ -20549,22 +21959,32 @@ public void MergeFrom(pb::CodedInputStream input) { } + /// + /// 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 + /// with `info`, 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. + /// [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class LocalTrackPublished : pb::IMessage + public sealed partial class LocalTrackRepublished : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage #endif { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LocalTrackPublished()); + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LocalTrackRepublished()); private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } + public static pb::MessageParser Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[56]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[61]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -20575,7 +21995,7 @@ public sealed partial class LocalTrackPublished : pb::IMessageField number for the "track_sid" field. - public const int TrackSidFieldNumber = 1; - private readonly static string TrackSidDefaultValue = ""; + /// Field number for the "publication_handle" field. + public const int PublicationHandleFieldNumber = 1; + private readonly static ulong PublicationHandleDefaultValue = 0UL; - private string trackSid_; - /// - /// The TrackPublicationInfo comes from the PublishTrack response - /// and the FfiClient musts wait for it before firing this event - /// + private ulong publicationHandle_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string TrackSid { - get { return trackSid_ ?? TrackSidDefaultValue; } + public ulong PublicationHandle { + get { if ((_hasBits0 & 1) != 0) { return publicationHandle_; } else { return PublicationHandleDefaultValue; } } set { - trackSid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + _hasBits0 |= 1; + publicationHandle_ = value; } } - /// Gets whether the "track_sid" field is set + /// Gets whether the "publication_handle" field is set [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasTrackSid { - get { return trackSid_ != null; } + public bool HasPublicationHandle { + get { return (_hasBits0 & 1) != 0; } } - /// Clears the value of the "track_sid" field + /// Clears the value of the "publication_handle" field [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearTrackSid() { - trackSid_ = null; + public void ClearPublicationHandle() { + _hasBits0 &= ~1; + } + + /// Field number for the "previous_sid" field. + public const int PreviousSidFieldNumber = 2; + private readonly static string PreviousSidDefaultValue = ""; + + private string previousSid_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string PreviousSid { + get { return previousSid_ ?? PreviousSidDefaultValue; } + set { + previousSid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "previous_sid" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPreviousSid { + get { return previousSid_ != null; } + } + /// Clears the value of the "previous_sid" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPreviousSid() { + previousSid_ = null; + } + + /// Field number for the "info" field. + public const int InfoFieldNumber = 3; + private global::LiveKit.Proto.TrackPublicationInfo info_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.TrackPublicationInfo Info { + get { return info_; } + set { + info_ = value; + } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { - return Equals(other as LocalTrackPublished); + return Equals(other as LocalTrackRepublished); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(LocalTrackPublished other) { + public bool Equals(LocalTrackRepublished other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } - if (TrackSid != other.TrackSid) return false; + if (PublicationHandle != other.PublicationHandle) return false; + if (PreviousSid != other.PreviousSid) return false; + if (!object.Equals(Info, other.Info)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -20647,7 +22107,9 @@ public bool Equals(LocalTrackPublished other) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; - if (HasTrackSid) hash ^= TrackSid.GetHashCode(); + if (HasPublicationHandle) hash ^= PublicationHandle.GetHashCode(); + if (HasPreviousSid) hash ^= PreviousSid.GetHashCode(); + if (info_ != null) hash ^= Info.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -20666,9 +22128,17 @@ public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else - if (HasTrackSid) { - output.WriteRawTag(10); - output.WriteString(TrackSid); + if (HasPublicationHandle) { + output.WriteRawTag(8); + output.WriteUInt64(PublicationHandle); + } + if (HasPreviousSid) { + output.WriteRawTag(18); + output.WriteString(PreviousSid); + } + if (info_ != null) { + output.WriteRawTag(26); + output.WriteMessage(Info); } if (_unknownFields != null) { _unknownFields.WriteTo(output); @@ -20680,9 +22150,17 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (HasTrackSid) { - output.WriteRawTag(10); - output.WriteString(TrackSid); + if (HasPublicationHandle) { + output.WriteRawTag(8); + output.WriteUInt64(PublicationHandle); + } + if (HasPreviousSid) { + output.WriteRawTag(18); + output.WriteString(PreviousSid); + } + if (info_ != null) { + output.WriteRawTag(26); + output.WriteMessage(Info); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); @@ -20694,8 +22172,14 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; - if (HasTrackSid) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(TrackSid); + if (HasPublicationHandle) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(PublicationHandle); + } + if (HasPreviousSid) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(PreviousSid); + } + if (info_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Info); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); @@ -20705,12 +22189,21 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(LocalTrackPublished other) { + public void MergeFrom(LocalTrackRepublished other) { if (other == null) { return; } - if (other.HasTrackSid) { - TrackSid = other.TrackSid; + if (other.HasPublicationHandle) { + PublicationHandle = other.PublicationHandle; + } + if (other.HasPreviousSid) { + PreviousSid = other.PreviousSid; + } + if (other.info_ != null) { + if (info_ == null) { + Info = new global::LiveKit.Proto.TrackPublicationInfo(); + } + Info.MergeFrom(other.Info); } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -20731,8 +22224,19 @@ public void MergeFrom(pb::CodedInputStream input) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; - case 10: { - TrackSid = input.ReadString(); + case 8: { + PublicationHandle = input.ReadUInt64(); + break; + } + case 18: { + PreviousSid = input.ReadString(); + break; + } + case 26: { + if (info_ == null) { + Info = new global::LiveKit.Proto.TrackPublicationInfo(); + } + input.ReadMessage(Info); break; } } @@ -20754,220 +22258,19 @@ public void MergeFrom(pb::CodedInputStream input) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; - case 10: { - TrackSid = input.ReadString(); + case 8: { + PublicationHandle = input.ReadUInt64(); break; } - } - } - } - #endif - - } - - [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] - public sealed partial class LocalTrackUnpublished : pb::IMessage - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - , pb::IBufferMessage - #endif - { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LocalTrackUnpublished()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[57]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public LocalTrackUnpublished() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public LocalTrackUnpublished(LocalTrackUnpublished other) : this() { - publicationSid_ = other.publicationSid_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public LocalTrackUnpublished Clone() { - return new LocalTrackUnpublished(this); - } - - /// Field number for the "publication_sid" field. - public const int PublicationSidFieldNumber = 1; - private readonly static string PublicationSidDefaultValue = ""; - - private string publicationSid_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public string PublicationSid { - get { return publicationSid_ ?? PublicationSidDefaultValue; } - set { - publicationSid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "publication_sid" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool HasPublicationSid { - get { return publicationSid_ != null; } - } - /// Clears the value of the "publication_sid" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void ClearPublicationSid() { - publicationSid_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override bool Equals(object other) { - return Equals(other as LocalTrackUnpublished); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public bool Equals(LocalTrackUnpublished other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (PublicationSid != other.PublicationSid) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override int GetHashCode() { - int hash = 1; - if (HasPublicationSid) hash ^= PublicationSid.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void WriteTo(pb::CodedOutputStream output) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - output.WriteRawMessage(this); - #else - if (HasPublicationSid) { - output.WriteRawTag(10); - output.WriteString(PublicationSid); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (HasPublicationSid) { - output.WriteRawTag(10); - output.WriteString(PublicationSid); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(ref output); - } - } - #endif - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public int CalculateSize() { - int size = 0; - if (HasPublicationSid) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(PublicationSid); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(LocalTrackUnpublished other) { - if (other == null) { - return; - } - if (other.HasPublicationSid) { - PublicationSid = other.PublicationSid; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(pb::CodedInputStream input) { - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - input.ReadRawMessage(this); - #else - uint tag; - while ((tag = input.ReadTag()) != 0) { - if ((tag & 7) == 4) { - // Abort on any end group tag. - return; - } - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - PublicationSid = input.ReadString(); + case 18: { + PreviousSid = input.ReadString(); break; } - } - } - #endif - } - - #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - if ((tag & 7) == 4) { - // Abort on any end group tag. - return; - } - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); - break; - case 10: { - PublicationSid = input.ReadString(); + case 26: { + if (info_ == null) { + Info = new global::LiveKit.Proto.TrackPublicationInfo(); + } + input.ReadMessage(Info); break; } } @@ -20992,7 +22295,7 @@ public sealed partial class LocalTrackSubscribed : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[59]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[63]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -21462,7 +22765,7 @@ public sealed partial class TrackUnpublished : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[60]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[64]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -21729,7 +23032,7 @@ public sealed partial class TrackSubscribed : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[61]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[65]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -21987,7 +23290,7 @@ public sealed partial class TrackUnsubscribed : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[62]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[66]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -22253,7 +23556,7 @@ public sealed partial class TrackSubscriptionFailed : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[64]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[68]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -22830,7 +24133,7 @@ public sealed partial class TrackUnmuted : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[65]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[69]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -23094,7 +24397,7 @@ public sealed partial class E2eeStateChanged : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[66]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[70]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -23362,7 +24665,7 @@ public sealed partial class ActiveSpeakersChanged : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[69]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[73]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -23973,7 +25276,7 @@ public sealed partial class ParticipantMetadataChanged : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[76]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[80]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -25812,7 +27115,7 @@ public sealed partial class ChatMessage : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[77]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[81]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -26284,7 +27587,7 @@ public sealed partial class ChatMessageReceived : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[79]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[83]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -26809,7 +28112,7 @@ public sealed partial class DataPacketReceived : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[83]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[87]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -27876,7 +29179,7 @@ public sealed partial class Disconnected : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[84]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[88]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -28090,7 +29393,7 @@ public sealed partial class Reconnecting : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[85]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[89]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -28251,7 +29554,7 @@ public sealed partial class Reconnected : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[86]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[90]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -28412,7 +29715,7 @@ public sealed partial class TokenRefreshed : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[87]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[91]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -28624,7 +29927,7 @@ public sealed partial class RoomEOS : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[88]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[92]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -28785,7 +30088,7 @@ public sealed partial class DataStream : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[89]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[93]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -30914,7 +32217,7 @@ public sealed partial class DataStreamHeaderReceived : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[105]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[109]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -35306,7 +36609,7 @@ public sealed partial class TextStreamOpened : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[106]; } + get { return global::LiveKit.Proto.RoomReflection.Descriptor.MessageTypes[110]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -35567,7 +36870,7 @@ public sealed partial class DataTrackPublished : pb::IMessageField number for the "packet_trailer_features" field. + public const int PacketTrailerFeaturesFieldNumber = 13; + private static readonly pb::FieldCodec _repeated_packetTrailerFeatures_codec + = pb::FieldCodec.ForEnum(104, x => (int) x, x => (global::LiveKit.Proto.PacketTrailerFeature) x); + private readonly pbc::RepeatedField packetTrailerFeatures_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField PacketTrailerFeatures { + get { return packetTrailerFeatures_; } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -2417,6 +2437,7 @@ public bool Equals(TrackPublicationInfo other) { if (Remote != other.Remote) return false; if (EncryptionType != other.EncryptionType) return false; if(!audioFeatures_.Equals(other.audioFeatures_)) return false; + if(!packetTrailerFeatures_.Equals(other.packetTrailerFeatures_)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -2436,6 +2457,7 @@ public override int GetHashCode() { if (HasRemote) hash ^= Remote.GetHashCode(); if (HasEncryptionType) hash ^= EncryptionType.GetHashCode(); hash ^= audioFeatures_.GetHashCode(); + hash ^= packetTrailerFeatures_.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -2499,6 +2521,7 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteEnum((int) EncryptionType); } audioFeatures_.WriteTo(output, _repeated_audioFeatures_codec); + packetTrailerFeatures_.WriteTo(output, _repeated_packetTrailerFeatures_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -2554,6 +2577,7 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteEnum((int) EncryptionType); } audioFeatures_.WriteTo(ref output, _repeated_audioFeatures_codec); + packetTrailerFeatures_.WriteTo(ref output, _repeated_packetTrailerFeatures_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -2598,6 +2622,7 @@ public int CalculateSize() { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EncryptionType); } size += audioFeatures_.CalculateSize(_repeated_audioFeatures_codec); + size += packetTrailerFeatures_.CalculateSize(_repeated_packetTrailerFeatures_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -2644,6 +2669,7 @@ public void MergeFrom(TrackPublicationInfo other) { EncryptionType = other.EncryptionType; } audioFeatures_.Add(other.audioFeatures_); + packetTrailerFeatures_.Add(other.packetTrailerFeatures_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -2712,6 +2738,11 @@ public void MergeFrom(pb::CodedInputStream input) { audioFeatures_.AddEntriesFrom(input, _repeated_audioFeatures_codec); break; } + case 106: + case 104: { + packetTrailerFeatures_.AddEntriesFrom(input, _repeated_packetTrailerFeatures_codec); + break; + } } } #endif @@ -2780,6 +2811,11 @@ public void MergeFrom(pb::CodedInputStream input) { audioFeatures_.AddEntriesFrom(ref input, _repeated_audioFeatures_codec); break; } + case 106: + case 104: { + packetTrailerFeatures_.AddEntriesFrom(ref input, _repeated_packetTrailerFeatures_codec); + break; + } } } } diff --git a/Runtime/Scripts/Proto/VideoFrame.cs b/Runtime/Scripts/Proto/VideoFrame.cs index b4158fc5..3d7bb9f6 100644 --- a/Runtime/Scripts/Proto/VideoFrame.cs +++ b/Runtime/Scripts/Proto/VideoFrame.cs @@ -44,53 +44,56 @@ static VideoFrameReflection() { "b24YAiACKAsyJC5saXZla2l0LnByb3RvLlZpZGVvU291cmNlUmVzb2x1dGlv", "bhIVCg1pc19zY3JlZW5jYXN0GAMgASgIIkkKFk5ld1ZpZGVvU291cmNlUmVz", "cG9uc2USLwoGc291cmNlGAEgAigLMh8ubGl2ZWtpdC5wcm90by5Pd25lZFZp", - "ZGVvU291cmNlIqcBChhDYXB0dXJlVmlkZW9GcmFtZVJlcXVlc3QSFQoNc291", + "ZGVvU291cmNlItcBChhDYXB0dXJlVmlkZW9GcmFtZVJlcXVlc3QSFQoNc291", "cmNlX2hhbmRsZRgBIAIoBBIuCgZidWZmZXIYAiACKAsyHi5saXZla2l0LnBy", "b3RvLlZpZGVvQnVmZmVySW5mbxIUCgx0aW1lc3RhbXBfdXMYAyACKAMSLgoI", - "cm90YXRpb24YBCACKA4yHC5saXZla2l0LnByb3RvLlZpZGVvUm90YXRpb24i", - "GwoZQ2FwdHVyZVZpZGVvRnJhbWVSZXNwb25zZSKHAQoTVmlkZW9Db252ZXJ0", - "UmVxdWVzdBIOCgZmbGlwX3kYASABKAgSLgoGYnVmZmVyGAIgAigLMh4ubGl2", - "ZWtpdC5wcm90by5WaWRlb0J1ZmZlckluZm8SMAoIZHN0X3R5cGUYAyACKA4y", - "Hi5saXZla2l0LnByb3RvLlZpZGVvQnVmZmVyVHlwZSJlChRWaWRlb0NvbnZl", - "cnRSZXNwb25zZRIPCgVlcnJvchgBIAEoCUgAEjEKBmJ1ZmZlchgCIAEoCzIf", - "LmxpdmVraXQucHJvdG8uT3duZWRWaWRlb0J1ZmZlckgAQgkKB21lc3NhZ2Ui", - "RAoPVmlkZW9SZXNvbHV0aW9uEg0KBXdpZHRoGAEgAigNEg4KBmhlaWdodBgC", - "IAIoDRISCgpmcmFtZV9yYXRlGAMgAigBIoMCCg9WaWRlb0J1ZmZlckluZm8S", - "LAoEdHlwZRgBIAIoDjIeLmxpdmVraXQucHJvdG8uVmlkZW9CdWZmZXJUeXBl", - "Eg0KBXdpZHRoGAIgAigNEg4KBmhlaWdodBgDIAIoDRIQCghkYXRhX3B0chgE", - "IAIoBBIOCgZzdHJpZGUYBiABKA0SQAoKY29tcG9uZW50cxgHIAMoCzIsLmxp", - "dmVraXQucHJvdG8uVmlkZW9CdWZmZXJJbmZvLkNvbXBvbmVudEluZm8aPwoN", - "Q29tcG9uZW50SW5mbxIQCghkYXRhX3B0chgBIAIoBBIOCgZzdHJpZGUYAiAC", - "KA0SDAoEc2l6ZRgDIAIoDSJvChBPd25lZFZpZGVvQnVmZmVyEi0KBmhhbmRs", - "ZRgBIAIoCzIdLmxpdmVraXQucHJvdG8uRmZpT3duZWRIYW5kbGUSLAoEaW5m", - "bxgCIAIoCzIeLmxpdmVraXQucHJvdG8uVmlkZW9CdWZmZXJJbmZvIj8KD1Zp", - "ZGVvU3RyZWFtSW5mbxIsCgR0eXBlGAEgAigOMh4ubGl2ZWtpdC5wcm90by5W", - "aWRlb1N0cmVhbVR5cGUibwoQT3duZWRWaWRlb1N0cmVhbRItCgZoYW5kbGUY", - "ASACKAsyHS5saXZla2l0LnByb3RvLkZmaU93bmVkSGFuZGxlEiwKBGluZm8Y", - "AiACKAsyHi5saXZla2l0LnByb3RvLlZpZGVvU3RyZWFtSW5mbyKfAQoQVmlk", - "ZW9TdHJlYW1FdmVudBIVCg1zdHJlYW1faGFuZGxlGAEgAigEEjsKDmZyYW1l", - "X3JlY2VpdmVkGAIgASgLMiEubGl2ZWtpdC5wcm90by5WaWRlb0ZyYW1lUmVj", - "ZWl2ZWRIABIsCgNlb3MYAyABKAsyHS5saXZla2l0LnByb3RvLlZpZGVvU3Ry", - "ZWFtRU9TSABCCQoHbWVzc2FnZSKLAQoSVmlkZW9GcmFtZVJlY2VpdmVkEi8K", - "BmJ1ZmZlchgBIAIoCzIfLmxpdmVraXQucHJvdG8uT3duZWRWaWRlb0J1ZmZl", - "chIUCgx0aW1lc3RhbXBfdXMYAiACKAMSLgoIcm90YXRpb24YAyACKA4yHC5s", - "aXZla2l0LnByb3RvLlZpZGVvUm90YXRpb24iEAoOVmlkZW9TdHJlYW1FT1Mi", - "NgoVVmlkZW9Tb3VyY2VSZXNvbHV0aW9uEg0KBXdpZHRoGAEgAigNEg4KBmhl", - "aWdodBgCIAIoDSI/Cg9WaWRlb1NvdXJjZUluZm8SLAoEdHlwZRgBIAIoDjIe", - "LmxpdmVraXQucHJvdG8uVmlkZW9Tb3VyY2VUeXBlIm8KEE93bmVkVmlkZW9T", - "b3VyY2USLQoGaGFuZGxlGAEgAigLMh0ubGl2ZWtpdC5wcm90by5GZmlPd25l", - "ZEhhbmRsZRIsCgRpbmZvGAIgAigLMh4ubGl2ZWtpdC5wcm90by5WaWRlb1Nv", - "dXJjZUluZm8qOwoKVmlkZW9Db2RlYxIHCgNWUDgQABIICgRIMjY0EAESBwoD", - "QVYxEAISBwoDVlA5EAMSCAoESDI2NRAEKmwKDVZpZGVvUm90YXRpb24SFAoQ", - "VklERU9fUk9UQVRJT05fMBAAEhUKEVZJREVPX1JPVEFUSU9OXzkwEAESFgoS", - "VklERU9fUk9UQVRJT05fMTgwEAISFgoSVklERU9fUk9UQVRJT05fMjcwEAMq", - "gQEKD1ZpZGVvQnVmZmVyVHlwZRIICgRSR0JBEAASCAoEQUJHUhABEggKBEFS", - "R0IQAhIICgRCR1JBEAMSCQoFUkdCMjQQBBIICgRJNDIwEAUSCQoFSTQyMEEQ", - "BhIICgRJNDIyEAcSCAoESTQ0NBAIEggKBEkwMTAQCRIICgROVjEyEAoqWQoP", - "VmlkZW9TdHJlYW1UeXBlEhcKE1ZJREVPX1NUUkVBTV9OQVRJVkUQABIWChJW", - "SURFT19TVFJFQU1fV0VCR0wQARIVChFWSURFT19TVFJFQU1fSFRNTBACKioK", - "D1ZpZGVvU291cmNlVHlwZRIXChNWSURFT19TT1VSQ0VfTkFUSVZFEABCEKoC", - "DUxpdmVLaXQuUHJvdG8=")); + "cm90YXRpb24YBCACKA4yHC5saXZla2l0LnByb3RvLlZpZGVvUm90YXRpb24S", + "LgoIbWV0YWRhdGEYBSABKAsyHC5saXZla2l0LnByb3RvLkZyYW1lTWV0YWRh", + "dGEiGwoZQ2FwdHVyZVZpZGVvRnJhbWVSZXNwb25zZSKHAQoTVmlkZW9Db252", + "ZXJ0UmVxdWVzdBIOCgZmbGlwX3kYASABKAgSLgoGYnVmZmVyGAIgAigLMh4u", + "bGl2ZWtpdC5wcm90by5WaWRlb0J1ZmZlckluZm8SMAoIZHN0X3R5cGUYAyAC", + "KA4yHi5saXZla2l0LnByb3RvLlZpZGVvQnVmZmVyVHlwZSJlChRWaWRlb0Nv", + "bnZlcnRSZXNwb25zZRIPCgVlcnJvchgBIAEoCUgAEjEKBmJ1ZmZlchgCIAEo", + "CzIfLmxpdmVraXQucHJvdG8uT3duZWRWaWRlb0J1ZmZlckgAQgkKB21lc3Nh", + "Z2UiRAoPVmlkZW9SZXNvbHV0aW9uEg0KBXdpZHRoGAEgAigNEg4KBmhlaWdo", + "dBgCIAIoDRISCgpmcmFtZV9yYXRlGAMgAigBIoMCCg9WaWRlb0J1ZmZlcklu", + "Zm8SLAoEdHlwZRgBIAIoDjIeLmxpdmVraXQucHJvdG8uVmlkZW9CdWZmZXJU", + "eXBlEg0KBXdpZHRoGAIgAigNEg4KBmhlaWdodBgDIAIoDRIQCghkYXRhX3B0", + "chgEIAIoBBIOCgZzdHJpZGUYBiABKA0SQAoKY29tcG9uZW50cxgHIAMoCzIs", + "LmxpdmVraXQucHJvdG8uVmlkZW9CdWZmZXJJbmZvLkNvbXBvbmVudEluZm8a", + "PwoNQ29tcG9uZW50SW5mbxIQCghkYXRhX3B0chgBIAIoBBIOCgZzdHJpZGUY", + "AiACKA0SDAoEc2l6ZRgDIAIoDSJvChBPd25lZFZpZGVvQnVmZmVyEi0KBmhh", + "bmRsZRgBIAIoCzIdLmxpdmVraXQucHJvdG8uRmZpT3duZWRIYW5kbGUSLAoE", + "aW5mbxgCIAIoCzIeLmxpdmVraXQucHJvdG8uVmlkZW9CdWZmZXJJbmZvIjkK", + "DUZyYW1lTWV0YWRhdGESFgoOdXNlcl90aW1lc3RhbXAYASABKAQSEAoIZnJh", + "bWVfaWQYAiABKA0iPwoPVmlkZW9TdHJlYW1JbmZvEiwKBHR5cGUYASACKA4y", + "Hi5saXZla2l0LnByb3RvLlZpZGVvU3RyZWFtVHlwZSJvChBPd25lZFZpZGVv", + "U3RyZWFtEi0KBmhhbmRsZRgBIAIoCzIdLmxpdmVraXQucHJvdG8uRmZpT3du", + "ZWRIYW5kbGUSLAoEaW5mbxgCIAIoCzIeLmxpdmVraXQucHJvdG8uVmlkZW9T", + "dHJlYW1JbmZvIp8BChBWaWRlb1N0cmVhbUV2ZW50EhUKDXN0cmVhbV9oYW5k", + "bGUYASACKAQSOwoOZnJhbWVfcmVjZWl2ZWQYAiABKAsyIS5saXZla2l0LnBy", + "b3RvLlZpZGVvRnJhbWVSZWNlaXZlZEgAEiwKA2VvcxgDIAEoCzIdLmxpdmVr", + "aXQucHJvdG8uVmlkZW9TdHJlYW1FT1NIAEIJCgdtZXNzYWdlIrsBChJWaWRl", + "b0ZyYW1lUmVjZWl2ZWQSLwoGYnVmZmVyGAEgAigLMh8ubGl2ZWtpdC5wcm90", + "by5Pd25lZFZpZGVvQnVmZmVyEhQKDHRpbWVzdGFtcF91cxgCIAIoAxIuCghy", + "b3RhdGlvbhgDIAIoDjIcLmxpdmVraXQucHJvdG8uVmlkZW9Sb3RhdGlvbhIu", + "CghtZXRhZGF0YRgEIAEoCzIcLmxpdmVraXQucHJvdG8uRnJhbWVNZXRhZGF0", + "YSIQCg5WaWRlb1N0cmVhbUVPUyI2ChVWaWRlb1NvdXJjZVJlc29sdXRpb24S", + "DQoFd2lkdGgYASACKA0SDgoGaGVpZ2h0GAIgAigNIj8KD1ZpZGVvU291cmNl", + "SW5mbxIsCgR0eXBlGAEgAigOMh4ubGl2ZWtpdC5wcm90by5WaWRlb1NvdXJj", + "ZVR5cGUibwoQT3duZWRWaWRlb1NvdXJjZRItCgZoYW5kbGUYASACKAsyHS5s", + "aXZla2l0LnByb3RvLkZmaU93bmVkSGFuZGxlEiwKBGluZm8YAiACKAsyHi5s", + "aXZla2l0LnByb3RvLlZpZGVvU291cmNlSW5mbyo7CgpWaWRlb0NvZGVjEgcK", + "A1ZQOBAAEggKBEgyNjQQARIHCgNBVjEQAhIHCgNWUDkQAxIICgRIMjY1EAQq", + "bAoNVmlkZW9Sb3RhdGlvbhIUChBWSURFT19ST1RBVElPTl8wEAASFQoRVklE", + "RU9fUk9UQVRJT05fOTAQARIWChJWSURFT19ST1RBVElPTl8xODAQAhIWChJW", + "SURFT19ST1RBVElPTl8yNzAQAyqBAQoPVmlkZW9CdWZmZXJUeXBlEggKBFJH", + "QkEQABIICgRBQkdSEAESCAoEQVJHQhACEggKBEJHUkEQAxIJCgVSR0IyNBAE", + "EggKBEk0MjAQBRIJCgVJNDIwQRAGEggKBEk0MjIQBxIICgRJNDQ0EAgSCAoE", + "STAxMBAJEggKBE5WMTIQCipZCg9WaWRlb1N0cmVhbVR5cGUSFwoTVklERU9f", + "U1RSRUFNX05BVElWRRAAEhYKElZJREVPX1NUUkVBTV9XRUJHTBABEhUKEVZJ", + "REVPX1NUUkVBTV9IVE1MEAIqKgoPVmlkZW9Tb3VyY2VUeXBlEhcKE1ZJREVP", + "X1NPVVJDRV9OQVRJVkUQAEIQqgINTGl2ZUtpdC5Qcm90bw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::LiveKit.Proto.HandleReflection.Descriptor, global::LiveKit.Proto.TrackReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::LiveKit.Proto.VideoCodec), typeof(global::LiveKit.Proto.VideoRotation), typeof(global::LiveKit.Proto.VideoBufferType), typeof(global::LiveKit.Proto.VideoStreamType), typeof(global::LiveKit.Proto.VideoSourceType), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -100,17 +103,18 @@ static VideoFrameReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoStreamFromParticipantResponse), global::LiveKit.Proto.VideoStreamFromParticipantResponse.Parser, new[]{ "Stream" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.NewVideoSourceRequest), global::LiveKit.Proto.NewVideoSourceRequest.Parser, new[]{ "Type", "Resolution", "IsScreencast" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.NewVideoSourceResponse), global::LiveKit.Proto.NewVideoSourceResponse.Parser, new[]{ "Source" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.CaptureVideoFrameRequest), global::LiveKit.Proto.CaptureVideoFrameRequest.Parser, new[]{ "SourceHandle", "Buffer", "TimestampUs", "Rotation" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.CaptureVideoFrameRequest), global::LiveKit.Proto.CaptureVideoFrameRequest.Parser, new[]{ "SourceHandle", "Buffer", "TimestampUs", "Rotation", "Metadata" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.CaptureVideoFrameResponse), global::LiveKit.Proto.CaptureVideoFrameResponse.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoConvertRequest), global::LiveKit.Proto.VideoConvertRequest.Parser, new[]{ "FlipY", "Buffer", "DstType" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoConvertResponse), global::LiveKit.Proto.VideoConvertResponse.Parser, new[]{ "Error", "Buffer" }, new[]{ "Message" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoResolution), global::LiveKit.Proto.VideoResolution.Parser, new[]{ "Width", "Height", "FrameRate" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoBufferInfo), global::LiveKit.Proto.VideoBufferInfo.Parser, new[]{ "Type", "Width", "Height", "DataPtr", "Stride", "Components" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoBufferInfo.Types.ComponentInfo), global::LiveKit.Proto.VideoBufferInfo.Types.ComponentInfo.Parser, new[]{ "DataPtr", "Stride", "Size" }, null, null, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedVideoBuffer), global::LiveKit.Proto.OwnedVideoBuffer.Parser, new[]{ "Handle", "Info" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.FrameMetadata), global::LiveKit.Proto.FrameMetadata.Parser, new[]{ "UserTimestamp", "FrameId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoStreamInfo), global::LiveKit.Proto.VideoStreamInfo.Parser, new[]{ "Type" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedVideoStream), global::LiveKit.Proto.OwnedVideoStream.Parser, new[]{ "Handle", "Info" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoStreamEvent), global::LiveKit.Proto.VideoStreamEvent.Parser, new[]{ "StreamHandle", "FrameReceived", "Eos" }, new[]{ "Message" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoFrameReceived), global::LiveKit.Proto.VideoFrameReceived.Parser, new[]{ "Buffer", "TimestampUs", "Rotation" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoFrameReceived), global::LiveKit.Proto.VideoFrameReceived.Parser, new[]{ "Buffer", "TimestampUs", "Rotation", "Metadata" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoStreamEOS), global::LiveKit.Proto.VideoStreamEOS.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoSourceResolution), global::LiveKit.Proto.VideoSourceResolution.Parser, new[]{ "Width", "Height" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.VideoSourceInfo), global::LiveKit.Proto.VideoSourceInfo.Parser, new[]{ "Type" }, null, null, null, null), @@ -2084,6 +2088,7 @@ public CaptureVideoFrameRequest(CaptureVideoFrameRequest other) : this() { buffer_ = other.buffer_ != null ? other.buffer_.Clone() : null; timestampUs_ = other.timestampUs_; rotation_ = other.rotation_; + metadata_ = other.metadata_ != null ? other.metadata_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -2189,6 +2194,18 @@ public void ClearRotation() { _hasBits0 &= ~4; } + /// Field number for the "metadata" field. + public const int MetadataFieldNumber = 5; + private global::LiveKit.Proto.FrameMetadata metadata_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.FrameMetadata Metadata { + get { return metadata_; } + set { + metadata_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -2208,6 +2225,7 @@ public bool Equals(CaptureVideoFrameRequest other) { if (!object.Equals(Buffer, other.Buffer)) return false; if (TimestampUs != other.TimestampUs) return false; if (Rotation != other.Rotation) return false; + if (!object.Equals(Metadata, other.Metadata)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -2219,6 +2237,7 @@ public override int GetHashCode() { if (buffer_ != null) hash ^= Buffer.GetHashCode(); if (HasTimestampUs) hash ^= TimestampUs.GetHashCode(); if (HasRotation) hash ^= Rotation.GetHashCode(); + if (metadata_ != null) hash ^= Metadata.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -2253,6 +2272,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(32); output.WriteEnum((int) Rotation); } + if (metadata_ != null) { + output.WriteRawTag(42); + output.WriteMessage(Metadata); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -2279,6 +2302,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(32); output.WriteEnum((int) Rotation); } + if (metadata_ != null) { + output.WriteRawTag(42); + output.WriteMessage(Metadata); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -2301,6 +2328,9 @@ public int CalculateSize() { if (HasRotation) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Rotation); } + if (metadata_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Metadata); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -2328,6 +2358,12 @@ public void MergeFrom(CaptureVideoFrameRequest other) { if (other.HasRotation) { Rotation = other.Rotation; } + if (other.metadata_ != null) { + if (metadata_ == null) { + Metadata = new global::LiveKit.Proto.FrameMetadata(); + } + Metadata.MergeFrom(other.Metadata); + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -2366,6 +2402,13 @@ public void MergeFrom(pb::CodedInputStream input) { Rotation = (global::LiveKit.Proto.VideoRotation) input.ReadEnum(); break; } + case 42: { + if (metadata_ == null) { + Metadata = new global::LiveKit.Proto.FrameMetadata(); + } + input.ReadMessage(Metadata); + break; + } } } #endif @@ -2404,6 +2447,13 @@ public void MergeFrom(pb::CodedInputStream input) { Rotation = (global::LiveKit.Proto.VideoRotation) input.ReadEnum(); break; } + case 42: { + if (metadata_ == null) { + Metadata = new global::LiveKit.Proto.FrameMetadata(); + } + input.ReadMessage(Metadata); + break; + } } } } @@ -4531,6 +4581,273 @@ public void MergeFrom(pb::CodedInputStream input) { } + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class FrameMetadata : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FrameMetadata()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[13]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public FrameMetadata() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public FrameMetadata(FrameMetadata other) : this() { + _hasBits0 = other._hasBits0; + userTimestamp_ = other.userTimestamp_; + frameId_ = other.frameId_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public FrameMetadata Clone() { + return new FrameMetadata(this); + } + + /// Field number for the "user_timestamp" field. + public const int UserTimestampFieldNumber = 1; + private readonly static ulong UserTimestampDefaultValue = 0UL; + + private ulong userTimestamp_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong UserTimestamp { + get { if ((_hasBits0 & 1) != 0) { return userTimestamp_; } else { return UserTimestampDefaultValue; } } + set { + _hasBits0 |= 1; + userTimestamp_ = value; + } + } + /// Gets whether the "user_timestamp" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasUserTimestamp { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "user_timestamp" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearUserTimestamp() { + _hasBits0 &= ~1; + } + + /// Field number for the "frame_id" field. + public const int FrameIdFieldNumber = 2; + private readonly static uint FrameIdDefaultValue = 0; + + private uint frameId_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint FrameId { + get { if ((_hasBits0 & 2) != 0) { return frameId_; } else { return FrameIdDefaultValue; } } + set { + _hasBits0 |= 2; + frameId_ = value; + } + } + /// Gets whether the "frame_id" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasFrameId { + get { return (_hasBits0 & 2) != 0; } + } + /// Clears the value of the "frame_id" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearFrameId() { + _hasBits0 &= ~2; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as FrameMetadata); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(FrameMetadata other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (UserTimestamp != other.UserTimestamp) return false; + if (FrameId != other.FrameId) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasUserTimestamp) hash ^= UserTimestamp.GetHashCode(); + if (HasFrameId) hash ^= FrameId.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasUserTimestamp) { + output.WriteRawTag(8); + output.WriteUInt64(UserTimestamp); + } + if (HasFrameId) { + output.WriteRawTag(16); + output.WriteUInt32(FrameId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasUserTimestamp) { + output.WriteRawTag(8); + output.WriteUInt64(UserTimestamp); + } + if (HasFrameId) { + output.WriteRawTag(16); + output.WriteUInt32(FrameId); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasUserTimestamp) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(UserTimestamp); + } + if (HasFrameId) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(FrameId); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(FrameMetadata other) { + if (other == null) { + return; + } + if (other.HasUserTimestamp) { + UserTimestamp = other.UserTimestamp; + } + if (other.HasFrameId) { + FrameId = other.FrameId; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + UserTimestamp = input.ReadUInt64(); + break; + } + case 16: { + FrameId = input.ReadUInt32(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + if ((tag & 7) == 4) { + // Abort on any end group tag. + return; + } + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + UserTimestamp = input.ReadUInt64(); + break; + } + case 16: { + FrameId = input.ReadUInt32(); + break; + } + } + } + } + #endif + + } + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] public sealed partial class VideoStreamInfo : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE @@ -4547,7 +4864,7 @@ public sealed partial class VideoStreamInfo : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[13]; } + get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[14]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4761,7 +5078,7 @@ public sealed partial class OwnedVideoStream : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[14]; } + get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[15]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5015,7 +5332,7 @@ public sealed partial class VideoStreamEvent : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[15]; } + get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[16]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5363,7 +5680,7 @@ public sealed partial class VideoFrameReceived : pb::IMessageField number for the "metadata" field. + public const int MetadataFieldNumber = 4; + private global::LiveKit.Proto.FrameMetadata metadata_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.FrameMetadata Metadata { + get { return metadata_; } + set { + metadata_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -5483,6 +5813,7 @@ public bool Equals(VideoFrameReceived other) { if (!object.Equals(Buffer, other.Buffer)) return false; if (TimestampUs != other.TimestampUs) return false; if (Rotation != other.Rotation) return false; + if (!object.Equals(Metadata, other.Metadata)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -5493,6 +5824,7 @@ public override int GetHashCode() { if (buffer_ != null) hash ^= Buffer.GetHashCode(); if (HasTimestampUs) hash ^= TimestampUs.GetHashCode(); if (HasRotation) hash ^= Rotation.GetHashCode(); + if (metadata_ != null) hash ^= Metadata.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -5523,6 +5855,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(24); output.WriteEnum((int) Rotation); } + if (metadata_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Metadata); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -5545,6 +5881,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(24); output.WriteEnum((int) Rotation); } + if (metadata_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Metadata); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -5564,6 +5904,9 @@ public int CalculateSize() { if (HasRotation) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Rotation); } + if (metadata_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Metadata); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -5588,6 +5931,12 @@ public void MergeFrom(VideoFrameReceived other) { if (other.HasRotation) { Rotation = other.Rotation; } + if (other.metadata_ != null) { + if (metadata_ == null) { + Metadata = new global::LiveKit.Proto.FrameMetadata(); + } + Metadata.MergeFrom(other.Metadata); + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -5622,6 +5971,13 @@ public void MergeFrom(pb::CodedInputStream input) { Rotation = (global::LiveKit.Proto.VideoRotation) input.ReadEnum(); break; } + case 34: { + if (metadata_ == null) { + Metadata = new global::LiveKit.Proto.FrameMetadata(); + } + input.ReadMessage(Metadata); + break; + } } } #endif @@ -5656,6 +6012,13 @@ public void MergeFrom(pb::CodedInputStream input) { Rotation = (global::LiveKit.Proto.VideoRotation) input.ReadEnum(); break; } + case 34: { + if (metadata_ == null) { + Metadata = new global::LiveKit.Proto.FrameMetadata(); + } + input.ReadMessage(Metadata); + break; + } } } } @@ -5678,7 +6041,7 @@ public sealed partial class VideoStreamEOS : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[17]; } + get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[18]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5840,7 +6203,7 @@ public sealed partial class VideoSourceResolution : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[19]; } + get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[20]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6321,7 +6684,7 @@ public sealed partial class OwnedVideoSource : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[20]; } + get { return global::LiveKit.Proto.VideoFrameReflection.Descriptor.MessageTypes[21]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] diff --git a/Runtime/Scripts/Track.cs b/Runtime/Scripts/Track.cs index 91cc0608..b5963a37 100644 --- a/Runtime/Scripts/Track.cs +++ b/Runtime/Scripts/Track.cs @@ -112,7 +112,7 @@ internal void UpdateMuted(bool muted) public sealed class LocalAudioTrack : Track, ILocalTrack, IAudioTrack { - RtcAudioSource _source; + IRtcSource _source; IRtcSource ILocalTrack.source { get => _source; } @@ -120,6 +120,10 @@ internal LocalAudioTrack(OwnedTrack track, Room room, RtcAudioSource source) : b _source = source; } + internal LocalAudioTrack(OwnedTrack track, Room room, PlatformAudioSource source) : base(track, room, room?.LocalParticipant) { + _source = source; + } + public static LocalAudioTrack CreateAudioTrack(string name, RtcAudioSource source, Room room) { using var request = FFIBridge.Instance.NewRequest(); @@ -133,6 +137,20 @@ public static LocalAudioTrack CreateAudioTrack(string name, RtcAudioSource sourc var track = new LocalAudioTrack(trackInfo, room, source); return track; } + + public static LocalAudioTrack CreateAudioTrack(string name, PlatformAudioSource source, Room room) + { + using var request = FFIBridge.Instance.NewRequest(); + var createTrack = request.request; + createTrack.Name = name; + createTrack.SourceHandle = (ulong)source.Handle.DangerousGetHandle(); + + using var resp = request.Send(); + FfiResponse res = resp; + var trackInfo = res.CreateAudioTrack.Track; + var track = new LocalAudioTrack(trackInfo, room, source); + return track; + } } public sealed class LocalVideoTrack : Track, ILocalTrack, IVideoTrack diff --git a/Samples~/Meet/Assets/Editor/MeetManagerEditor.cs b/Samples~/Meet/Assets/Editor/MeetManagerEditor.cs new file mode 100644 index 00000000..1ca6c412 --- /dev/null +++ b/Samples~/Meet/Assets/Editor/MeetManagerEditor.cs @@ -0,0 +1,74 @@ +using UnityEngine; +using UnityEditor; + +[CustomEditor(typeof(MeetManager))] +public class MeetManagerEditor : Editor +{ + private SerializedProperty buttonBar; + private SerializedProperty videoTrackParent; + private SerializedProperty participantTilePrefab; + private SerializedProperty frameRate; + private SerializedProperty usePlatformAudio; + private SerializedProperty echoCancellation; + private SerializedProperty noiseSuppression; + private SerializedProperty autoGainControl; + private SerializedProperty preferHardwareProcessing; + + private void OnEnable() + { + buttonBar = serializedObject.FindProperty("buttonBar"); + videoTrackParent = serializedObject.FindProperty("videoTrackParent"); + participantTilePrefab = serializedObject.FindProperty("participantTilePrefab"); + frameRate = serializedObject.FindProperty("frameRate"); + usePlatformAudio = serializedObject.FindProperty("usePlatformAudio"); + echoCancellation = serializedObject.FindProperty("echoCancellation"); + noiseSuppression = serializedObject.FindProperty("noiseSuppression"); + autoGainControl = serializedObject.FindProperty("autoGainControl"); + preferHardwareProcessing = serializedObject.FindProperty("preferHardwareProcessing"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + EditorGUILayout.LabelField("UI", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(buttonBar); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Video Layout", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(videoTrackParent); + EditorGUILayout.PropertyField(participantTilePrefab); + EditorGUILayout.PropertyField(frameRate); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Audio Mode", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(usePlatformAudio, new GUIContent("Use Platform Audio", + "Use PlatformAudio (WebRTC ADM) for microphone capture and automatic speaker playout. " + + "Provides AEC, AGC, and NS. Disable to use Unity's Microphone API instead.")); + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Audio Processing (PlatformAudio only)", EditorStyles.boldLabel); + + // Gray out audio processing options when PlatformAudio is disabled + bool platformAudioEnabled = usePlatformAudio.boolValue; + + using (new EditorGUI.DisabledGroupScope(!platformAudioEnabled)) + { + if (!platformAudioEnabled) + { + EditorGUILayout.HelpBox("Audio processing options are only available when 'Use Platform Audio' is enabled.", MessageType.Info); + } + + EditorGUILayout.PropertyField(echoCancellation, new GUIContent("Echo Cancellation", + "Enable echo cancellation to remove echo from speaker playback.")); + EditorGUILayout.PropertyField(noiseSuppression, new GUIContent("Noise Suppression", + "Enable noise suppression to remove background noise.")); + EditorGUILayout.PropertyField(autoGainControl, new GUIContent("Auto Gain Control", + "Enable auto gain control to normalize audio levels.")); + EditorGUILayout.PropertyField(preferHardwareProcessing, new GUIContent("Prefer Hardware Processing", + "Prefer hardware audio processing (e.g., iOS VPIO). Lower latency but may have different quality characteristics.")); + } + + serializedObject.ApplyModifiedProperties(); + } +} diff --git a/Samples~/Meet/Assets/Runtime/MeetManager.cs b/Samples~/Meet/Assets/Runtime/MeetManager.cs index fed49205..0fd3261b 100644 --- a/Samples~/Meet/Assets/Runtime/MeetManager.cs +++ b/Samples~/Meet/Assets/Runtime/MeetManager.cs @@ -8,6 +8,12 @@ /// /// Manages a LiveKit room connection with local/remote audio and video tracks. +/// +/// Supports two audio modes: +/// - PlatformAudio (default): Uses WebRTC's ADM for microphone capture and automatic +/// speaker playout. Provides echo cancellation (AEC), AGC, and noise suppression. +/// - Unity Audio: Uses Unity's Microphone API and AudioStream for manual audio handling. +/// No AEC support but gives more control over audio processing. /// [RequireComponent(typeof(TokenSourceComponent))] public class MeetManager : MonoBehaviour @@ -23,6 +29,21 @@ public class MeetManager : MonoBehaviour [SerializeField] private ParticipantTile participantTilePrefab; [SerializeField] private int frameRate = 30; + [Header("Audio Mode")] + [Tooltip("Use PlatformAudio (WebRTC ADM) for microphone capture and automatic speaker playout. " + + "Provides AEC, AGC, and NS. Disable to use Unity's Microphone API instead.")] + [SerializeField] private bool usePlatformAudio = true; + + [Header("Audio Processing (PlatformAudio only)")] + [Tooltip("Enable echo cancellation to remove echo from speaker playback.")] + [SerializeField] private bool echoCancellation = true; + [Tooltip("Enable noise suppression to remove background noise.")] + [SerializeField] private bool noiseSuppression = true; + [Tooltip("Enable auto gain control to normalize audio levels.")] + [SerializeField] private bool autoGainControl = true; + [Tooltip("Prefer hardware audio processing (e.g., iOS VPIO). Lower latency but may have different quality characteristics.")] + [SerializeField] private bool preferHardwareProcessing = true; + private const string PlaceholderTextureResourceName = "PlaceholderTileSquare"; private Texture _placeholderTexture; @@ -42,11 +63,14 @@ public class MeetManager : MonoBehaviour private RtcVideoSource _localRtcVideoSource; private RtcAudioSource _localRtcAudioSource; + private PlatformAudioSource _platformAudioSource; private LocalVideoTrack _localVideoTrack; private LocalAudioTrack _localAudioTrack; private bool _cameraActive; private bool _microphoneActive; + private PlatformAudio _platformAudio; + #region Lifecycle private void Start() @@ -62,6 +86,41 @@ private void Start() _audioTrackParent = new GameObject("AudioTrackParent").transform; _placeholderTexture = Resources.Load(PlaceholderTextureResourceName); + + if (usePlatformAudio) + InitializePlatformAudio(); + } + + private void InitializePlatformAudio() + { + try + { + _platformAudio = new PlatformAudio(); + Debug.Log($"PlatformAudio initialized: {_platformAudio.RecordingDeviceCount} mics, " + + $"{_platformAudio.PlayoutDeviceCount} speakers"); + + var (recording, playout) = _platformAudio.GetDevices(); + Debug.Log("Recording devices:"); + foreach (var device in recording) + Debug.Log($" [{device.Index}] {device.Name}"); + + Debug.Log("Playout devices:"); + foreach (var device in playout) + Debug.Log($" [{device.Index}] {device.Name}"); + + if (_platformAudio.RecordingDeviceCount > 0) + _platformAudio.SetRecordingDevice(0); + if (_platformAudio.PlayoutDeviceCount > 0) + _platformAudio.SetPlayoutDevice(0); + + Debug.Log($"PlatformAudio ready. AEC={echoCancellation}, NS={noiseSuppression}, AGC={autoGainControl}, HW={preferHardwareProcessing}"); + } + catch (System.Exception e) + { + Debug.LogError($"Failed to initialize PlatformAudio, falling back to Unity audio: {e.Message}"); + usePlatformAudio = false; + _platformAudio = null; + } } private void OnApplicationPause(bool pause) @@ -90,6 +149,8 @@ private void OnDestroy() } CleanUpAllTracks(); _webCamTexture?.Stop(); + _platformAudioSource?.Dispose(); + _platformAudio?.Dispose(); } #endregion @@ -180,7 +241,7 @@ private IEnumerator ConnectToRoom() yield break; } - Debug.Log($"Connected to {_room.Name}"); + Debug.Log($"Connected to {_room.Name} (PlatformAudio: {usePlatformAudio})"); _localId = _room.LocalParticipant.Identity; buttonBar.SetConnected(true); @@ -294,6 +355,15 @@ private void RemoveExtraVideoTile(string sid) private void AddRemoteAudioTrack(RemoteAudioTrack audioTrack) { var sid = audioTrack.Sid; + + if (usePlatformAudio && _platformAudio != null) + { + // PlatformAudio mode: ADM handles speaker playback automatically. + // No AudioStream / GameObject needed. + Debug.Log($"Remote audio track {sid} will play via PlatformAudio (automatic)"); + return; + } + var audioObject = new GameObject($"AudioTrack: {sid}"); audioObject.transform.SetParent(_audioTrackParent); @@ -308,8 +378,8 @@ private void RemoveRemoteAudioTrack(string sid) { if (_audioObjects.TryGetValue(sid, out var obj)) { - obj.GetComponent()?.Stop(); - Destroy(obj); + if (obj != null) obj.GetComponent()?.Stop(); + if (obj != null) Destroy(obj); _audioObjects.Remove(sid); } @@ -450,7 +520,68 @@ private void UnpublishLocalCamera() private IEnumerator PublishLocalMicrophone() { - if (_audioObjects.ContainsKey(LocalAudioTrackName)) yield break; + if (_microphoneActive) yield break; + + if (usePlatformAudio && _platformAudio != null) + yield return PublishLocalMicrophonePlatform(); + else + yield return PublishLocalMicrophoneUnity(); + + if (_microphoneActive && _participantTiles.TryGetValue(_localId, out var tile)) + tile.SetMicMuted(false); + } + + private IEnumerator PublishLocalMicrophonePlatform() + { + Debug.Log("Publishing microphone using PlatformAudio (ADM)"); + + // Start recording (in case it was stopped by a previous mute). + // This turns on the privacy indicator on macOS/iOS. + try + { + _platformAudio?.StartRecording(); + } + catch (System.Exception e) + { + Debug.LogWarning($"Failed to start recording (may already be started): {e.Message}"); + } + + var audioOptions = new AudioProcessingOptions + { + EchoCancellation = echoCancellation, + NoiseSuppression = noiseSuppression, + AutoGainControl = autoGainControl, + PreferHardware = preferHardwareProcessing + }; + + _platformAudioSource = new PlatformAudioSource(_platformAudio, audioOptions); + _localAudioTrack = LocalAudioTrack.CreateAudioTrack(LocalAudioTrackName, _platformAudioSource, _room); + + var options = new TrackPublishOptions + { + AudioEncoding = new AudioEncoding { MaxBitrate = 64000 }, + Source = TrackSource.SourceMicrophone + }; + + var publish = _room.LocalParticipant.PublishTrack(_localAudioTrack, options); + yield return publish; + + if (publish.IsError) + { + Debug.LogError("Failed to publish microphone track"); + _platformAudioSource?.Dispose(); + _platformAudioSource = null; + _localAudioTrack = null; + yield break; + } + + _microphoneActive = true; + Debug.Log("Microphone published via PlatformAudio (AEC enabled)"); + } + + private IEnumerator PublishLocalMicrophoneUnity() + { + Debug.Log("Publishing microphone using Unity Microphone API"); Microphone.Start(null, true, 10, 44100); @@ -470,26 +601,50 @@ private IEnumerator PublishLocalMicrophone() var publish = _room.LocalParticipant.PublishTrack(_localAudioTrack, options); yield return publish; - if (publish.IsError) yield break; + if (publish.IsError) + { + Destroy(audioObject); + _localAudioTrack = null; + yield break; + } _microphoneActive = true; _audioObjects[LocalAudioTrackName] = audioObject; _localRtcAudioSource = rtcSource; rtcSource.Start(); - if (_participantTiles.TryGetValue(_localId, out var tile)) - tile.SetMicMuted(false); + Debug.Log("Microphone published via Unity Microphone API (no AEC)"); } private void UnpublishLocalMicrophone() { - DisposeSource(ref _localRtcAudioSource); + if (usePlatformAudio && _platformAudioSource != null) + { + try + { + _platformAudio?.StopRecording(); + } + catch (System.Exception e) + { + Debug.LogWarning($"Failed to stop recording: {e.Message}"); + } - if (_audioObjects.TryGetValue(LocalAudioTrackName, out var obj)) + _platformAudioSource.Dispose(); + _platformAudioSource = null; + } + else { - obj.GetComponent()?.Stop(); - Destroy(obj); - _audioObjects.Remove(LocalAudioTrackName); + DisposeSource(ref _localRtcAudioSource); + + if (_audioObjects.TryGetValue(LocalAudioTrackName, out var obj)) + { + if (obj != null) + { + obj.GetComponent()?.Stop(); + Destroy(obj); + } + _audioObjects.Remove(LocalAudioTrackName); + } } _room.LocalParticipant.UnpublishTrack(_localAudioTrack, false); @@ -563,8 +718,12 @@ private void CleanUpAllTracks() DisposeSource(ref _localRtcAudioSource); DisposeSource(ref _localRtcVideoSource); + _platformAudioSource?.Dispose(); + _platformAudioSource = null; + foreach (var obj in _audioObjects.Values) { + if (obj == null) continue; obj.GetComponent()?.Stop(); Destroy(obj); } @@ -603,4 +762,4 @@ private void CleanUpAllTracks() } #endregion -} \ No newline at end of file +} diff --git a/Samples~/Meet/Assets/Scenes/MeetApp.unity b/Samples~/Meet/Assets/Scenes/MeetApp.unity index 2205fdcf..91fc1e07 100644 --- a/Samples~/Meet/Assets/Scenes/MeetApp.unity +++ b/Samples~/Meet/Assets/Scenes/MeetApp.unity @@ -38,7 +38,6 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -903,6 +902,11 @@ MonoBehaviour: videoTrackParent: {fileID: 2128321498} participantTilePrefab: {fileID: 4315784896331113596, guid: bec493bbc3d574c07b5bbf8dd2be26b3, type: 3} frameRate: 30 + usePlatformAudio: 1 + echoCancellation: 1 + noiseSuppression: 1 + autoGainControl: 1 + preferHardwareProcessing: 1 --- !u!114 &1478206705 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/client-sdk-rust~ b/client-sdk-rust~ index b885d475..56b209cf 160000 --- a/client-sdk-rust~ +++ b/client-sdk-rust~ @@ -1 +1 @@ -Subproject commit b885d475538ace130ea6884d615556863b2f0a44 +Subproject commit 56b209cfb9f29c1d55e2ae9a720bf5bf1f813d5e diff --git a/version.ini b/version.ini index ada06f11..b76e6593 100644 --- a/version.ini +++ b/version.ini @@ -1,4 +1,4 @@ [ffi] -tag = livekit-ffi@v0.12.53 +tag = livekit-ffi@v0.12.57 url = https://github.com/livekit/rust-sdks/releases/download