From d168a4ad0d7069c7c4480747fea1f4d76995ff04 Mon Sep 17 00:00:00 2001 From: Max Heimbrock <43608204+MaxHeimbrock@users.noreply.github.com> Date: Mon, 26 Oct 2026 16:33:30 +0100 Subject: [PATCH] Release script used --- .../ffi-android-arm64/liblivekit_ffi.so | 4 +- .../Plugins/ffi-android-arm64/libwebrtc.jar | 4 +- .../ffi-android-armv7/liblivekit_ffi.so | 4 +- .../Plugins/ffi-android-armv7/libwebrtc.jar | 4 +- .../ffi-android-x86_64/liblivekit_ffi.so | 4 +- .../Plugins/ffi-android-x86_64/libwebrtc.jar | 4 +- .../Plugins/ffi-ios-arm64/liblivekit_ffi.a | 4 +- .../ffi-ios-sim-arm64/liblivekit_ffi.a | 4 +- .../ffi-linux-x86_64/liblivekit_ffi.so | 4 +- .../ffi-macos-arm64/liblivekit_ffi.dylib | 4 +- .../ffi-macos-x86_64/liblivekit_ffi.dylib | 4 +- .../Plugins/ffi-windows-arm64/livekit_ffi.dll | 4 +- .../ffi-windows-x86_64/livekit_ffi.dll | 4 +- Runtime/Scripts/Proto/Capture.cs | 1024 +++++++++++++++-- client-sdk-rust~ | 2 +- package.json | 4 +- version.ini | 2 +- 17 files changed, 971 insertions(+), 113 deletions(-) diff --git a/Runtime/Plugins/ffi-android-arm64/liblivekit_ffi.so b/Runtime/Plugins/ffi-android-arm64/liblivekit_ffi.so index 847fc8e7..c0a50105 100755 --- 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:8d84c1a8aa204a0fd2d0776c81941788946704737e69375119442988507a76d9 -size 19600080 +oid sha256:4317aed8b627ad611553011d7eed13949780675d25d49b26e587efdf8952f1b1 +size 19667784 diff --git a/Runtime/Plugins/ffi-android-arm64/libwebrtc.jar b/Runtime/Plugins/ffi-android-arm64/libwebrtc.jar index bcd7d3e4..9ea87ad1 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:03ad4bb4c95034263d1c727a1d41e0293f5c4bf4a9445eef7e64ebeef99fa51f -size 543957 +oid sha256:7f551a7a1e1b3119d1ffdd01831fd43299d64821bb570b38f5e85df906c21bab +size 551694 diff --git a/Runtime/Plugins/ffi-android-armv7/liblivekit_ffi.so b/Runtime/Plugins/ffi-android-armv7/liblivekit_ffi.so index ccfa2ec2..f1aa8495 100755 --- 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:f844dc63471bb01f1a7b9ffdd589f8f908d8deada2c5e6aa3717177566a6df75 -size 11157644 +oid sha256:33b8d21e4e2f85078f97219119b661a78c243ca54a2aa0ea34688160ad1ca364 +size 11185316 diff --git a/Runtime/Plugins/ffi-android-armv7/libwebrtc.jar b/Runtime/Plugins/ffi-android-armv7/libwebrtc.jar index bcd7d3e4..9ea87ad1 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:03ad4bb4c95034263d1c727a1d41e0293f5c4bf4a9445eef7e64ebeef99fa51f -size 543957 +oid sha256:7f551a7a1e1b3119d1ffdd01831fd43299d64821bb570b38f5e85df906c21bab +size 551694 diff --git a/Runtime/Plugins/ffi-android-x86_64/liblivekit_ffi.so b/Runtime/Plugins/ffi-android-x86_64/liblivekit_ffi.so index feba507a..821cc19c 100755 --- 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:5800c6f48381c6ee0f5b1e90a8dc8491cf4acb054ed08b1f0b446eae9348fd6c -size 24255816 +oid sha256:0acaf43a740f6003d4ae03e9c246e0b8fd7ba2edef4f5bf60c5b54dfa0ae6fbd +size 24316912 diff --git a/Runtime/Plugins/ffi-android-x86_64/libwebrtc.jar b/Runtime/Plugins/ffi-android-x86_64/libwebrtc.jar index bcd7d3e4..9ea87ad1 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:03ad4bb4c95034263d1c727a1d41e0293f5c4bf4a9445eef7e64ebeef99fa51f -size 543957 +oid sha256:7f551a7a1e1b3119d1ffdd01831fd43299d64821bb570b38f5e85df906c21bab +size 551694 diff --git a/Runtime/Plugins/ffi-ios-arm64/liblivekit_ffi.a b/Runtime/Plugins/ffi-ios-arm64/liblivekit_ffi.a index 45dd58f1..ca65fbad 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:23bfa175eb4273fa6d9c16d66059f3d0f0956e5d34719a3747e106c5727def23 -size 49564360 +oid sha256:69b4f9156b47c41ed060b1e0131057d2c0f31df01169a3563ca7cc33f1c6b174 +size 49704640 diff --git a/Runtime/Plugins/ffi-ios-sim-arm64/liblivekit_ffi.a b/Runtime/Plugins/ffi-ios-sim-arm64/liblivekit_ffi.a index 02130dc2..32311b37 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:f17db0ef2bb9d5d348211955fe8faddf07350f81c82561db3149518efcb5b29e -size 49634008 +oid sha256:f25b0e2fa1a58287ad2694b2b9fd59c43229f62b418803929c34a6f06df74ce4 +size 49771632 diff --git a/Runtime/Plugins/ffi-linux-x86_64/liblivekit_ffi.so b/Runtime/Plugins/ffi-linux-x86_64/liblivekit_ffi.so index 2afd560a..e60be1fc 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:05a58fc83b3515cd4e984a66c69c22e0aad09eadb6e972edde626488dafbf5ad -size 28196848 +oid sha256:b0e3b91dcf42b486045b6acca4863b132e3c4d114d5701b5759c7661c04ea1eb +size 28265384 diff --git a/Runtime/Plugins/ffi-macos-arm64/liblivekit_ffi.dylib b/Runtime/Plugins/ffi-macos-arm64/liblivekit_ffi.dylib index e6b9060d..403c74d3 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:41ad8dfc42f2cf0e959231947556d961e49f9d402511a96ee3c230463139d735 -size 18286592 +oid sha256:f7ef1bb6803a43559382dc72a5447fb6743dcacdad194edd065140af85078eb4 +size 18324672 diff --git a/Runtime/Plugins/ffi-macos-x86_64/liblivekit_ffi.dylib b/Runtime/Plugins/ffi-macos-x86_64/liblivekit_ffi.dylib index 5bae38c1..66362147 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:e635bde8a0d1fb1158d0a7909d91fcf51722b9ab16d3055c9956e0d520ebc830 -size 23152200 +oid sha256:659767038036c1a6c6e33ffff6be08f10dec03b957a27d8a103fda713ec040c9 +size 23193968 diff --git a/Runtime/Plugins/ffi-windows-arm64/livekit_ffi.dll b/Runtime/Plugins/ffi-windows-arm64/livekit_ffi.dll index a699c8f5..7f17b49f 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:4036b4a511d31d3bb2f1f28ee4db9b98a029c31dddb5dfc2ad4b103f42884239 -size 18745856 +oid sha256:dbacc26914977bb54fb70105444d79342f296dbc450615ba54d5e35b0dfb8132 +size 18786304 diff --git a/Runtime/Plugins/ffi-windows-x86_64/livekit_ffi.dll b/Runtime/Plugins/ffi-windows-x86_64/livekit_ffi.dll index 21f5575d..5792f70d 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:6795bb63c0a72566d68243d3bd0b40ee5c2a122bbaf8f6db9021a8bbd8bc4e43 -size 25057792 +oid sha256:f3456b002f2157b9cbacad5296433d71b2ba1228c1bc26c5a89c8e559e05c103 +size 25098240 diff --git a/Runtime/Scripts/Proto/Capture.cs b/Runtime/Scripts/Proto/Capture.cs index 4ff1a025..7cbf7811 100644 --- a/Runtime/Scripts/Proto/Capture.cs +++ b/Runtime/Scripts/Proto/Capture.cs @@ -25,53 +25,69 @@ static CaptureReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "Cg1jYXB0dXJlLnByb3RvEg1saXZla2l0LnByb3RvGgxoYW5kbGUucHJvdG8a", - "CnJvb20ucHJvdG8aEXZpZGVvX2ZyYW1lLnByb3RvIpQBChhQYXR0ZXJuVmlk", - "ZW9Tb3VyY2VDb25maWcSOAoKcmVzb2x1dGlvbhgBIAIoCzIkLmxpdmVraXQu", - "cHJvdG8uVmlkZW9Tb3VyY2VSZXNvbHV0aW9uEhUKDWZyYW1lcmF0ZV9mcHMY", - "AiACKA0SJwoHcGF0dGVybhgDIAIoDjIWLmxpdmVraXQucHJvdG8uUGF0dGVy", - "biJpChZDbG9ja1ZpZGVvU291cmNlQ29uZmlnEjgKCnJlc29sdXRpb24YASAC", - "KAsyJC5saXZla2l0LnByb3RvLlZpZGVvU291cmNlUmVzb2x1dGlvbhIVCg1m", - "cmFtZXJhdGVfZnBzGAIgAigNIqcCChFDYXB0dXJlU291cmNlSW5mbxIuCgRr", - "aW5kGAEgAigOMiAubGl2ZWtpdC5wcm90by5DYXB0dXJlU291cmNlS2luZBI4", - "CgpyZXNvbHV0aW9uGAIgAigLMiQubGl2ZWtpdC5wcm90by5WaWRlb1NvdXJj", - "ZVJlc29sdXRpb24SKAoFY29kZWMYAyABKA4yGS5saXZla2l0LnByb3RvLlZp", - "ZGVvQ29kZWMSRwobcmVjb21tZW5kZWRfcHVibGlzaF9vcHRpb25zGAQgAigL", - "MiIubGl2ZWtpdC5wcm90by5UcmFja1B1Ymxpc2hPcHRpb25zEjUKDHZpZGVv", - "X3NvdXJjZRgFIAIoCzIfLmxpdmVraXQucHJvdG8uT3duZWRWaWRlb1NvdXJj", - "ZSJzChJPd25lZENhcHR1cmVTb3VyY2USLQoGaGFuZGxlGAEgAigLMh0ubGl2", - "ZWtpdC5wcm90by5GZmlPd25lZEhhbmRsZRIuCgRpbmZvGAIgAigLMiAubGl2", - "ZWtpdC5wcm90by5DYXB0dXJlU291cmNlSW5mbyKxAQoXTmV3Q2FwdHVyZVNv", - "dXJjZVJlcXVlc3QSOgoHcGF0dGVybhgCIAEoCzInLmxpdmVraXQucHJvdG8u", - "UGF0dGVyblZpZGVvU291cmNlQ29uZmlnSAASNgoFY2xvY2sYBSABKAsyJS5s", - "aXZla2l0LnByb3RvLkNsb2NrVmlkZW9Tb3VyY2VDb25maWdIABIYChByZXF1", - "ZXN0X2FzeW5jX2lkGAMgASgEQggKBmNvbmZpZyIsChhOZXdDYXB0dXJlU291", - "cmNlUmVzcG9uc2USEAoIYXN5bmNfaWQYASACKAQifQoYTmV3Q2FwdHVyZVNv", - "dXJjZUNhbGxiYWNrEhAKCGFzeW5jX2lkGAEgAigEEg8KBWVycm9yGAIgASgJ", - "SAASMwoGc291cmNlGAMgASgLMiEubGl2ZWtpdC5wcm90by5Pd25lZENhcHR1", - "cmVTb3VyY2VIAEIJCgdtZXNzYWdlIi0KE1N0YXJ0Q2FwdHVyZVJlcXVlc3QS", - "FgoOY2FwdHVyZV9oYW5kbGUYASACKAQiJQoUU3RhcnRDYXB0dXJlUmVzcG9u", - "c2USDQoFZXJyb3IYASABKAkiLAoSU3RvcENhcHR1cmVSZXF1ZXN0EhYKDmNh", - "cHR1cmVfaGFuZGxlGAEgAigEIiQKE1N0b3BDYXB0dXJlUmVzcG9uc2USDQoF", - "ZXJyb3IYASABKAkiVAoPQ2FwdHVyZUZpbmlzaGVkEhcKD2ZyYW1lc19jYXB0", - "dXJlZBgBIAIoBBIoCgRleGl0GAIgAigOMhoubGl2ZWtpdC5wcm90by5DYXB0", - "dXJlRXhpdCIdCgxDYXB0dXJlRXJyb3ISDQoFZXJyb3IYASACKAkimQEKEkNh", - "cHR1cmVTb3VyY2VFdmVudBIWCg5jYXB0dXJlX2hhbmRsZRgBIAIoBBIyCghm", - "aW5pc2hlZBgCIAEoCzIeLmxpdmVraXQucHJvdG8uQ2FwdHVyZUZpbmlzaGVk", - "SAASLAoFZXJyb3IYAyABKAsyGy5saXZla2l0LnByb3RvLkNhcHR1cmVFcnJv", - "ckgAQgkKB21lc3NhZ2UqMQoHUGF0dGVybhIUChBQQVRURVJOX0dSQURJRU5U", - "EAASEAoMUEFUVEVSTl9MT0dPEAEqSQoRQ2FwdHVyZVNvdXJjZUtpbmQSGAoU", - "Q0FQVFVSRV9TT1VSQ0VfUElYRUwQABIaChZDQVBUVVJFX1NPVVJDRV9FTkNP", - "REVEEAEqRwoLQ2FwdHVyZUV4aXQSGAoUQ0FQVFVSRV9FWElUX1NUT1BQRUQQ", - "ABIeChpDQVBUVVJFX0VYSVRfRU5EX09GX1NUUkVBTRABQhCqAg1MaXZlS2l0", + "CnJvb20ucHJvdG8aEXZpZGVvX2ZyYW1lLnByb3RvImwKFEdzdHJlYW1lclJh", + "dGVDb250cm9sEg8KB2VsZW1lbnQYASACKAkSEAoIcHJvcGVydHkYAiACKAkS", + "MQoEdW5pdBgDIAIoDjIjLmxpdmVraXQucHJvdG8uR3N0cmVhbWVyQml0cmF0", + "ZVVuaXQizQEKGkdzdHJlYW1lclZpZGVvU291cmNlQ29uZmlnEhAKCHBpcGVs", + "aW5lGAEgAigJEigKBWNvZGVjGAIgASgOMhkubGl2ZWtpdC5wcm90by5WaWRl", + "b0NvZGVjEjgKCnJlc29sdXRpb24YAyABKAsyJC5saXZla2l0LnByb3RvLlZp", + "ZGVvU291cmNlUmVzb2x1dGlvbhI5CgxyYXRlX2NvbnRyb2wYBCABKAsyIy5s", + "aXZla2l0LnByb3RvLkdzdHJlYW1lclJhdGVDb250cm9sIpQBChhQYXR0ZXJu", + "VmlkZW9Tb3VyY2VDb25maWcSOAoKcmVzb2x1dGlvbhgBIAIoCzIkLmxpdmVr", + "aXQucHJvdG8uVmlkZW9Tb3VyY2VSZXNvbHV0aW9uEhUKDWZyYW1lcmF0ZV9m", + "cHMYAiACKA0SJwoHcGF0dGVybhgDIAIoDjIWLmxpdmVraXQucHJvdG8uUGF0", + "dGVybiJpChZDbG9ja1ZpZGVvU291cmNlQ29uZmlnEjgKCnJlc29sdXRpb24Y", + "ASACKAsyJC5saXZla2l0LnByb3RvLlZpZGVvU291cmNlUmVzb2x1dGlvbhIV", + "Cg1mcmFtZXJhdGVfZnBzGAIgAigNIqcCChFDYXB0dXJlU291cmNlSW5mbxIu", + "CgRraW5kGAEgAigOMiAubGl2ZWtpdC5wcm90by5DYXB0dXJlU291cmNlS2lu", + "ZBI4CgpyZXNvbHV0aW9uGAIgAigLMiQubGl2ZWtpdC5wcm90by5WaWRlb1Nv", + "dXJjZVJlc29sdXRpb24SKAoFY29kZWMYAyABKA4yGS5saXZla2l0LnByb3Rv", + "LlZpZGVvQ29kZWMSRwobcmVjb21tZW5kZWRfcHVibGlzaF9vcHRpb25zGAQg", + "AigLMiIubGl2ZWtpdC5wcm90by5UcmFja1B1Ymxpc2hPcHRpb25zEjUKDHZp", + "ZGVvX3NvdXJjZRgFIAIoCzIfLmxpdmVraXQucHJvdG8uT3duZWRWaWRlb1Nv", + "dXJjZSJzChJPd25lZENhcHR1cmVTb3VyY2USLQoGaGFuZGxlGAEgAigLMh0u", + "bGl2ZWtpdC5wcm90by5GZmlPd25lZEhhbmRsZRIuCgRpbmZvGAIgAigLMiAu", + "bGl2ZWtpdC5wcm90by5DYXB0dXJlU291cmNlSW5mbyLxAQoXTmV3Q2FwdHVy", + "ZVNvdXJjZVJlcXVlc3QSPgoJZ3N0cmVhbWVyGAEgASgLMikubGl2ZWtpdC5w", + "cm90by5Hc3RyZWFtZXJWaWRlb1NvdXJjZUNvbmZpZ0gAEjoKB3BhdHRlcm4Y", + "AiABKAsyJy5saXZla2l0LnByb3RvLlBhdHRlcm5WaWRlb1NvdXJjZUNvbmZp", + "Z0gAEjYKBWNsb2NrGAUgASgLMiUubGl2ZWtpdC5wcm90by5DbG9ja1ZpZGVv", + "U291cmNlQ29uZmlnSAASGAoQcmVxdWVzdF9hc3luY19pZBgDIAEoBEIICgZj", + "b25maWciLAoYTmV3Q2FwdHVyZVNvdXJjZVJlc3BvbnNlEhAKCGFzeW5jX2lk", + "GAEgAigEIn0KGE5ld0NhcHR1cmVTb3VyY2VDYWxsYmFjaxIQCghhc3luY19p", + "ZBgBIAIoBBIPCgVlcnJvchgCIAEoCUgAEjMKBnNvdXJjZRgDIAEoCzIhLmxp", + "dmVraXQucHJvdG8uT3duZWRDYXB0dXJlU291cmNlSABCCQoHbWVzc2FnZSIt", + "ChNTdGFydENhcHR1cmVSZXF1ZXN0EhYKDmNhcHR1cmVfaGFuZGxlGAEgAigE", + "IiUKFFN0YXJ0Q2FwdHVyZVJlc3BvbnNlEg0KBWVycm9yGAEgASgJIiwKElN0", + "b3BDYXB0dXJlUmVxdWVzdBIWCg5jYXB0dXJlX2hhbmRsZRgBIAIoBCIkChNT", + "dG9wQ2FwdHVyZVJlc3BvbnNlEg0KBWVycm9yGAEgASgJIlQKD0NhcHR1cmVG", + "aW5pc2hlZBIXCg9mcmFtZXNfY2FwdHVyZWQYASACKAQSKAoEZXhpdBgCIAIo", + "DjIaLmxpdmVraXQucHJvdG8uQ2FwdHVyZUV4aXQiTAoMQ2FwdHVyZUVycm9y", + "Eg0KBWVycm9yGAEgAigJEi0KBGtpbmQYAiACKA4yHy5saXZla2l0LnByb3Rv", + "LkNhcHR1cmVFcnJvcktpbmQimQEKEkNhcHR1cmVTb3VyY2VFdmVudBIWCg5j", + "YXB0dXJlX2hhbmRsZRgBIAIoBBIyCghmaW5pc2hlZBgCIAEoCzIeLmxpdmVr", + "aXQucHJvdG8uQ2FwdHVyZUZpbmlzaGVkSAASLAoFZXJyb3IYAyABKAsyGy5s", + "aXZla2l0LnByb3RvLkNhcHR1cmVFcnJvckgAQgkKB21lc3NhZ2UqVwoUR3N0", + "cmVhbWVyQml0cmF0ZVVuaXQSHgoaR1NUUkVBTUVSX0JJVFJBVEVfVU5JVF9C", + "UFMQABIfChtHU1RSRUFNRVJfQklUUkFURV9VTklUX0tCUFMQASoxCgdQYXR0", + "ZXJuEhQKEFBBVFRFUk5fR1JBRElFTlQQABIQCgxQQVRURVJOX0xPR08QASpJ", + "ChFDYXB0dXJlU291cmNlS2luZBIYChRDQVBUVVJFX1NPVVJDRV9QSVhFTBAA", + "EhoKFkNBUFRVUkVfU09VUkNFX0VOQ09ERUQQASpHCgtDYXB0dXJlRXhpdBIY", + "ChRDQVBUVVJFX0VYSVRfU1RPUFBFRBAAEh4KGkNBUFRVUkVfRVhJVF9FTkRf", + "T0ZfU1RSRUFNEAEqbgoQQ2FwdHVyZUVycm9yS2luZBIdChlDQVBUVVJFX0VS", + "Uk9SX0tJTkRfU09VUkNFEAASGgoWQ0FQVFVSRV9FUlJPUl9LSU5EX1JUQxAB", + "Eh8KG0NBUFRVUkVfRVJST1JfS0lORF9QQU5JQ0tFRBACQhCqAg1MaXZlS2l0", "LlByb3Rv")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::LiveKit.Proto.HandleReflection.Descriptor, global::LiveKit.Proto.RoomReflection.Descriptor, global::LiveKit.Proto.VideoFrameReflection.Descriptor, }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::LiveKit.Proto.Pattern), typeof(global::LiveKit.Proto.CaptureSourceKind), typeof(global::LiveKit.Proto.CaptureExit), }, null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(new[] {typeof(global::LiveKit.Proto.GstreamerBitrateUnit), typeof(global::LiveKit.Proto.Pattern), typeof(global::LiveKit.Proto.CaptureSourceKind), typeof(global::LiveKit.Proto.CaptureExit), typeof(global::LiveKit.Proto.CaptureErrorKind), }, null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.GstreamerRateControl), global::LiveKit.Proto.GstreamerRateControl.Parser, new[]{ "Element", "Property", "Unit" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.GstreamerVideoSourceConfig), global::LiveKit.Proto.GstreamerVideoSourceConfig.Parser, new[]{ "Pipeline", "Codec", "Resolution", "RateControl" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.PatternVideoSourceConfig), global::LiveKit.Proto.PatternVideoSourceConfig.Parser, new[]{ "Resolution", "FramerateFps", "Pattern" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.ClockVideoSourceConfig), global::LiveKit.Proto.ClockVideoSourceConfig.Parser, new[]{ "Resolution", "FramerateFps" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.CaptureSourceInfo), global::LiveKit.Proto.CaptureSourceInfo.Parser, new[]{ "Kind", "Resolution", "Codec", "RecommendedPublishOptions", "VideoSource" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.OwnedCaptureSource), global::LiveKit.Proto.OwnedCaptureSource.Parser, new[]{ "Handle", "Info" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.NewCaptureSourceRequest), global::LiveKit.Proto.NewCaptureSourceRequest.Parser, new[]{ "Pattern", "Clock", "RequestAsyncId" }, new[]{ "Config" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.NewCaptureSourceRequest), global::LiveKit.Proto.NewCaptureSourceRequest.Parser, new[]{ "Gstreamer", "Pattern", "Clock", "RequestAsyncId" }, new[]{ "Config" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.NewCaptureSourceResponse), global::LiveKit.Proto.NewCaptureSourceResponse.Parser, new[]{ "AsyncId" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.NewCaptureSourceCallback), global::LiveKit.Proto.NewCaptureSourceCallback.Parser, new[]{ "AsyncId", "Error", "Source" }, new[]{ "Message" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.StartCaptureRequest), global::LiveKit.Proto.StartCaptureRequest.Parser, new[]{ "CaptureHandle" }, null, null, null, null), @@ -79,7 +95,7 @@ static CaptureReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.StopCaptureRequest), global::LiveKit.Proto.StopCaptureRequest.Parser, new[]{ "CaptureHandle" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.StopCaptureResponse), global::LiveKit.Proto.StopCaptureResponse.Parser, new[]{ "Error" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.CaptureFinished), global::LiveKit.Proto.CaptureFinished.Parser, new[]{ "FramesCaptured", "Exit" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.CaptureError), global::LiveKit.Proto.CaptureError.Parser, new[]{ "Error" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.CaptureError), global::LiveKit.Proto.CaptureError.Parser, new[]{ "Error", "Kind" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::LiveKit.Proto.CaptureSourceEvent), global::LiveKit.Proto.CaptureSourceEvent.Parser, new[]{ "CaptureHandle", "Finished", "Error" }, new[]{ "Message" }, null, null, null) })); } @@ -87,6 +103,14 @@ static CaptureReflection() { } #region Enums + /// + /// Bitrate unit expected by a GStreamer encoder property. + /// + public enum GstreamerBitrateUnit { + [pbr::OriginalName("GSTREAMER_BITRATE_UNIT_BPS")] Bps = 0, + [pbr::OriginalName("GSTREAMER_BITRATE_UNIT_KBPS")] Kbps = 1, + } + /// /// Test patterns built into livekit-capture. /// @@ -101,37 +125,764 @@ public enum Pattern { [pbr::OriginalName("PATTERN_LOGO")] Logo = 1, } - /// - /// Kind of media a capture source produces. - /// - public enum CaptureSourceKind { - /// - /// Pixel frames, published through the WebRTC encoder. - /// - [pbr::OriginalName("CAPTURE_SOURCE_PIXEL")] CaptureSourcePixel = 0, - /// - /// Pre-encoded access units, published as passthrough. - /// - [pbr::OriginalName("CAPTURE_SOURCE_ENCODED")] CaptureSourceEncoded = 1, - } + /// + /// Kind of media a capture source produces. + /// + public enum CaptureSourceKind { + /// + /// Pixel frames, published through the WebRTC encoder. + /// + [pbr::OriginalName("CAPTURE_SOURCE_PIXEL")] CaptureSourcePixel = 0, + /// + /// Pre-encoded access units, published as passthrough. + /// + [pbr::OriginalName("CAPTURE_SOURCE_ENCODED")] CaptureSourceEncoded = 1, + } + + /// + /// Why a capture ended without error. + /// + public enum CaptureExit { + /// + /// Stopped by StopCaptureRequest (or handle disposal). + /// + [pbr::OriginalName("CAPTURE_EXIT_STOPPED")] Stopped = 0, + /// + /// The producer reached the end of its stream. + /// + [pbr::OriginalName("CAPTURE_EXIT_END_OF_STREAM")] EndOfStream = 1, + } + + /// + /// Why a capture ended with an error. + /// + public enum CaptureErrorKind { + /// + /// The capture source failed or violated its contract. + /// + [pbr::OriginalName("CAPTURE_ERROR_KIND_SOURCE")] Source = 0, + /// + /// The RTC video source rejected a frame. + /// + [pbr::OriginalName("CAPTURE_ERROR_KIND_RTC")] Rtc = 1, + /// + /// The pump thread panicked. + /// + [pbr::OriginalName("CAPTURE_ERROR_KIND_PANICKED")] Panicked = 2, + } + + #endregion + + #region Messages + /// + /// Binding from WebRTC rate-control targets to a GStreamer encoder property. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class GstreamerRateControl : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GstreamerRateControl()); + 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.CaptureReflection.Descriptor.MessageTypes[0]; } + } + + [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 GstreamerRateControl() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GstreamerRateControl(GstreamerRateControl other) : this() { + _hasBits0 = other._hasBits0; + element_ = other.element_; + property_ = other.property_; + unit_ = other.unit_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GstreamerRateControl Clone() { + return new GstreamerRateControl(this); + } + + /// Field number for the "element" field. + public const int ElementFieldNumber = 1; + private readonly static string ElementDefaultValue = ""; + + private string element_; + /// + /// Name of the encoder element in the pipeline (e.g. `lk_encoder`). + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Element { + get { return element_ ?? ElementDefaultValue; } + set { + element_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "element" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasElement { + get { return element_ != null; } + } + /// Clears the value of the "element" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearElement() { + element_ = null; + } + + /// Field number for the "property" field. + public const int PropertyFieldNumber = 2; + private readonly static string PropertyDefaultValue = ""; + + private string property_; + /// + /// Bitrate property to set on the element (e.g. `bitrate` for x264enc, + /// `target-bitrate` for vp8enc/vp9enc). + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Property { + get { return property_ ?? PropertyDefaultValue; } + set { + property_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "property" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasProperty { + get { return property_ != null; } + } + /// Clears the value of the "property" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearProperty() { + property_ = null; + } + + /// Field number for the "unit" field. + public const int UnitFieldNumber = 3; + private readonly static global::LiveKit.Proto.GstreamerBitrateUnit UnitDefaultValue = global::LiveKit.Proto.GstreamerBitrateUnit.Bps; + + private global::LiveKit.Proto.GstreamerBitrateUnit unit_; + /// + /// Unit the property expects. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.GstreamerBitrateUnit Unit { + get { if ((_hasBits0 & 1) != 0) { return unit_; } else { return UnitDefaultValue; } } + set { + _hasBits0 |= 1; + unit_ = value; + } + } + /// Gets whether the "unit" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasUnit { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "unit" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearUnit() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as GstreamerRateControl); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(GstreamerRateControl other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Element != other.Element) return false; + if (Property != other.Property) return false; + if (Unit != other.Unit) 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 (HasElement) hash ^= Element.GetHashCode(); + if (HasProperty) hash ^= Property.GetHashCode(); + if (HasUnit) hash ^= Unit.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 (HasElement) { + output.WriteRawTag(10); + output.WriteString(Element); + } + if (HasProperty) { + output.WriteRawTag(18); + output.WriteString(Property); + } + if (HasUnit) { + output.WriteRawTag(24); + output.WriteEnum((int) Unit); + } + 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 (HasElement) { + output.WriteRawTag(10); + output.WriteString(Element); + } + if (HasProperty) { + output.WriteRawTag(18); + output.WriteString(Property); + } + if (HasUnit) { + output.WriteRawTag(24); + output.WriteEnum((int) Unit); + } + 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 (HasElement) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Element); + } + if (HasProperty) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Property); + } + if (HasUnit) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Unit); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(GstreamerRateControl other) { + if (other == null) { + return; + } + if (other.HasElement) { + Element = other.Element; + } + if (other.HasProperty) { + Property = other.Property; + } + if (other.HasUnit) { + Unit = other.Unit; + } + _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: { + Element = input.ReadString(); + break; + } + case 18: { + Property = input.ReadString(); + break; + } + case 24: { + Unit = (global::LiveKit.Proto.GstreamerBitrateUnit) input.ReadEnum(); + 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: { + Element = input.ReadString(); + break; + } + case 18: { + Property = input.ReadString(); + break; + } + case 24: { + Unit = (global::LiveKit.Proto.GstreamerBitrateUnit) input.ReadEnum(); + break; + } + } + } + } + #endif + + } + + /// + /// Encoded ingest from a GStreamer pipeline. + /// + [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")] + public sealed partial class GstreamerVideoSourceConfig : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GstreamerVideoSourceConfig()); + 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.CaptureReflection.Descriptor.MessageTypes[1]; } + } + + [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 GstreamerVideoSourceConfig() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GstreamerVideoSourceConfig(GstreamerVideoSourceConfig other) : this() { + _hasBits0 = other._hasBits0; + pipeline_ = other.pipeline_; + codec_ = other.codec_; + resolution_ = other.resolution_ != null ? other.resolution_.Clone() : null; + rateControl_ = other.rateControl_ != null ? other.rateControl_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GstreamerVideoSourceConfig Clone() { + return new GstreamerVideoSourceConfig(this); + } + + /// Field number for the "pipeline" field. + public const int PipelineFieldNumber = 1; + private readonly static string PipelineDefaultValue = ""; + + private string pipeline_; + /// + /// GStreamer launch description for the encoded producer pipeline. + /// Must contain `appsink name=lk_appsink`, or leave exactly one encoded + /// video source pad unlinked for the source to attach one to. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Pipeline { + get { return pipeline_ ?? PipelineDefaultValue; } + set { + pipeline_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "pipeline" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPipeline { + get { return pipeline_ != null; } + } + /// Clears the value of the "pipeline" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPipeline() { + pipeline_ = null; + } + + /// Field number for the "codec" field. + public const int CodecFieldNumber = 2; + private readonly static global::LiveKit.Proto.VideoCodec CodecDefaultValue = global::LiveKit.Proto.VideoCodec.Vp8; + + private global::LiveKit.Proto.VideoCodec codec_; + /// + /// Codec expected from the pipeline; inferred from pipeline caps when + /// omitted. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.VideoCodec Codec { + get { if ((_hasBits0 & 1) != 0) { return codec_; } else { return CodecDefaultValue; } } + set { + _hasBits0 |= 1; + codec_ = value; + } + } + /// Gets whether the "codec" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasCodec { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "codec" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearCodec() { + _hasBits0 &= ~1; + } + + /// Field number for the "resolution" field. + public const int ResolutionFieldNumber = 3; + private global::LiveKit.Proto.VideoSourceResolution resolution_; + /// + /// Encoded frame resolution. When omitted, it is discovered from the + /// pipeline's negotiated caps; when set, the pipeline output is verified + /// against it. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.VideoSourceResolution Resolution { + get { return resolution_; } + set { + resolution_ = value; + } + } + + /// Field number for the "rate_control" field. + public const int RateControlFieldNumber = 4; + private global::LiveKit.Proto.GstreamerRateControl rateControl_; + /// + /// Forwards WebRTC rate-control targets to an encoder element's bitrate + /// property. Without this, the pipeline encodes at a fixed bitrate. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.GstreamerRateControl RateControl { + get { return rateControl_; } + set { + rateControl_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as GstreamerVideoSourceConfig); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(GstreamerVideoSourceConfig other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Pipeline != other.Pipeline) return false; + if (Codec != other.Codec) return false; + if (!object.Equals(Resolution, other.Resolution)) return false; + if (!object.Equals(RateControl, other.RateControl)) 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 (HasPipeline) hash ^= Pipeline.GetHashCode(); + if (HasCodec) hash ^= Codec.GetHashCode(); + if (resolution_ != null) hash ^= Resolution.GetHashCode(); + if (rateControl_ != null) hash ^= RateControl.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 (HasPipeline) { + output.WriteRawTag(10); + output.WriteString(Pipeline); + } + if (HasCodec) { + output.WriteRawTag(16); + output.WriteEnum((int) Codec); + } + if (resolution_ != null) { + output.WriteRawTag(26); + output.WriteMessage(Resolution); + } + if (rateControl_ != null) { + output.WriteRawTag(34); + output.WriteMessage(RateControl); + } + 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 (HasPipeline) { + output.WriteRawTag(10); + output.WriteString(Pipeline); + } + if (HasCodec) { + output.WriteRawTag(16); + output.WriteEnum((int) Codec); + } + if (resolution_ != null) { + output.WriteRawTag(26); + output.WriteMessage(Resolution); + } + if (rateControl_ != null) { + output.WriteRawTag(34); + output.WriteMessage(RateControl); + } + 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 (HasPipeline) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Pipeline); + } + if (HasCodec) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Codec); + } + if (resolution_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Resolution); + } + if (rateControl_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(RateControl); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } - /// - /// Why a capture ended without error. - /// - public enum CaptureExit { - /// - /// Stopped by StopCaptureRequest (or handle disposal). - /// - [pbr::OriginalName("CAPTURE_EXIT_STOPPED")] Stopped = 0, - /// - /// The producer reached the end of its stream. - /// - [pbr::OriginalName("CAPTURE_EXIT_END_OF_STREAM")] EndOfStream = 1, - } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(GstreamerVideoSourceConfig other) { + if (other == null) { + return; + } + if (other.HasPipeline) { + Pipeline = other.Pipeline; + } + if (other.HasCodec) { + Codec = other.Codec; + } + if (other.resolution_ != null) { + if (resolution_ == null) { + Resolution = new global::LiveKit.Proto.VideoSourceResolution(); + } + Resolution.MergeFrom(other.Resolution); + } + if (other.rateControl_ != null) { + if (rateControl_ == null) { + RateControl = new global::LiveKit.Proto.GstreamerRateControl(); + } + RateControl.MergeFrom(other.RateControl); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } - #endregion + [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: { + Pipeline = input.ReadString(); + break; + } + case 16: { + Codec = (global::LiveKit.Proto.VideoCodec) input.ReadEnum(); + break; + } + case 26: { + if (resolution_ == null) { + Resolution = new global::LiveKit.Proto.VideoSourceResolution(); + } + input.ReadMessage(Resolution); + break; + } + case 34: { + if (rateControl_ == null) { + RateControl = new global::LiveKit.Proto.GstreamerRateControl(); + } + input.ReadMessage(RateControl); + 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: { + Pipeline = input.ReadString(); + break; + } + case 16: { + Codec = (global::LiveKit.Proto.VideoCodec) input.ReadEnum(); + break; + } + case 26: { + if (resolution_ == null) { + Resolution = new global::LiveKit.Proto.VideoSourceResolution(); + } + input.ReadMessage(Resolution); + break; + } + case 34: { + if (rateControl_ == null) { + RateControl = new global::LiveKit.Proto.GstreamerRateControl(); + } + input.ReadMessage(RateControl); + break; + } + } + } + } + #endif + + } - #region Messages /// /// Test pattern rendered on the GPU. /// @@ -151,7 +902,7 @@ public sealed partial class PatternVideoSourceConfig : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.CaptureReflection.Descriptor.MessageTypes[2]; } + get { return global::LiveKit.Proto.CaptureReflection.Descriptor.MessageTypes[4]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1163,7 +1914,7 @@ public sealed partial class OwnedCaptureSource : pb::IMessageField number for the "gstreamer" field. + public const int GstreamerFieldNumber = 1; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.GstreamerVideoSourceConfig Gstreamer { + get { return configCase_ == ConfigOneofCase.Gstreamer ? (global::LiveKit.Proto.GstreamerVideoSourceConfig) config_ : null; } + set { + config_ = value; + configCase_ = value == null ? ConfigOneofCase.None : ConfigOneofCase.Gstreamer; + } + } + /// Field number for the "pattern" field. public const int PatternFieldNumber = 2; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1519,6 +2285,7 @@ public void ClearRequestAsyncId() { /// Enum of possible cases for the "config" oneof. public enum ConfigOneofCase { None = 0, + Gstreamer = 1, Pattern = 2, Clock = 5, } @@ -1551,6 +2318,7 @@ public bool Equals(NewCaptureSourceRequest other) { if (ReferenceEquals(other, this)) { return true; } + if (!object.Equals(Gstreamer, other.Gstreamer)) return false; if (!object.Equals(Pattern, other.Pattern)) return false; if (!object.Equals(Clock, other.Clock)) return false; if (RequestAsyncId != other.RequestAsyncId) return false; @@ -1562,6 +2330,7 @@ public bool Equals(NewCaptureSourceRequest other) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override int GetHashCode() { int hash = 1; + if (configCase_ == ConfigOneofCase.Gstreamer) hash ^= Gstreamer.GetHashCode(); if (configCase_ == ConfigOneofCase.Pattern) hash ^= Pattern.GetHashCode(); if (configCase_ == ConfigOneofCase.Clock) hash ^= Clock.GetHashCode(); if (HasRequestAsyncId) hash ^= RequestAsyncId.GetHashCode(); @@ -1584,6 +2353,10 @@ public void WriteTo(pb::CodedOutputStream output) { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else + if (configCase_ == ConfigOneofCase.Gstreamer) { + output.WriteRawTag(10); + output.WriteMessage(Gstreamer); + } if (configCase_ == ConfigOneofCase.Pattern) { output.WriteRawTag(18); output.WriteMessage(Pattern); @@ -1606,6 +2379,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) { + if (configCase_ == ConfigOneofCase.Gstreamer) { + output.WriteRawTag(10); + output.WriteMessage(Gstreamer); + } if (configCase_ == ConfigOneofCase.Pattern) { output.WriteRawTag(18); output.WriteMessage(Pattern); @@ -1628,6 +2405,9 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; + if (configCase_ == ConfigOneofCase.Gstreamer) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Gstreamer); + } if (configCase_ == ConfigOneofCase.Pattern) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Pattern); } @@ -1653,6 +2433,12 @@ public void MergeFrom(NewCaptureSourceRequest other) { RequestAsyncId = other.RequestAsyncId; } switch (other.ConfigCase) { + case ConfigOneofCase.Gstreamer: + if (Gstreamer == null) { + Gstreamer = new global::LiveKit.Proto.GstreamerVideoSourceConfig(); + } + Gstreamer.MergeFrom(other.Gstreamer); + break; case ConfigOneofCase.Pattern: if (Pattern == null) { Pattern = new global::LiveKit.Proto.PatternVideoSourceConfig(); @@ -1686,6 +2472,15 @@ public void MergeFrom(pb::CodedInputStream input) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; + case 10: { + global::LiveKit.Proto.GstreamerVideoSourceConfig subBuilder = new global::LiveKit.Proto.GstreamerVideoSourceConfig(); + if (configCase_ == ConfigOneofCase.Gstreamer) { + subBuilder.MergeFrom(Gstreamer); + } + input.ReadMessage(subBuilder); + Gstreamer = subBuilder; + break; + } case 18: { global::LiveKit.Proto.PatternVideoSourceConfig subBuilder = new global::LiveKit.Proto.PatternVideoSourceConfig(); if (configCase_ == ConfigOneofCase.Pattern) { @@ -1727,6 +2522,15 @@ public void MergeFrom(pb::CodedInputStream input) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; + case 10: { + global::LiveKit.Proto.GstreamerVideoSourceConfig subBuilder = new global::LiveKit.Proto.GstreamerVideoSourceConfig(); + if (configCase_ == ConfigOneofCase.Gstreamer) { + subBuilder.MergeFrom(Gstreamer); + } + input.ReadMessage(subBuilder); + Gstreamer = subBuilder; + break; + } case 18: { global::LiveKit.Proto.PatternVideoSourceConfig subBuilder = new global::LiveKit.Proto.PatternVideoSourceConfig(); if (configCase_ == ConfigOneofCase.Pattern) { @@ -1772,7 +2576,7 @@ public sealed partial class NewCaptureSourceResponse : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.CaptureReflection.Descriptor.MessageTypes[11]; } + get { return global::LiveKit.Proto.CaptureReflection.Descriptor.MessageTypes[13]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3457,6 +4261,7 @@ public sealed partial class CaptureError : pb::IMessage { private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CaptureError()); 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; } } @@ -3464,7 +4269,7 @@ public sealed partial class CaptureError : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::LiveKit.Proto.CaptureReflection.Descriptor.MessageTypes[12]; } + get { return global::LiveKit.Proto.CaptureReflection.Descriptor.MessageTypes[14]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3484,7 +4289,9 @@ public CaptureError() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public CaptureError(CaptureError other) : this() { + _hasBits0 = other._hasBits0; error_ = other.error_; + kind_ = other.kind_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -3520,6 +4327,33 @@ public void ClearError() { error_ = null; } + /// Field number for the "kind" field. + public const int KindFieldNumber = 2; + private readonly static global::LiveKit.Proto.CaptureErrorKind KindDefaultValue = global::LiveKit.Proto.CaptureErrorKind.Source; + + private global::LiveKit.Proto.CaptureErrorKind kind_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::LiveKit.Proto.CaptureErrorKind Kind { + get { if ((_hasBits0 & 1) != 0) { return kind_; } else { return KindDefaultValue; } } + set { + _hasBits0 |= 1; + kind_ = value; + } + } + /// Gets whether the "kind" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasKind { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "kind" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearKind() { + _hasBits0 &= ~1; + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -3536,6 +4370,7 @@ public bool Equals(CaptureError other) { return true; } if (Error != other.Error) return false; + if (Kind != other.Kind) return false; return Equals(_unknownFields, other._unknownFields); } @@ -3544,6 +4379,7 @@ public bool Equals(CaptureError other) { public override int GetHashCode() { int hash = 1; if (HasError) hash ^= Error.GetHashCode(); + if (HasKind) hash ^= Kind.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -3566,6 +4402,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(10); output.WriteString(Error); } + if (HasKind) { + output.WriteRawTag(16); + output.WriteEnum((int) Kind); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -3580,6 +4420,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(10); output.WriteString(Error); } + if (HasKind) { + output.WriteRawTag(16); + output.WriteEnum((int) Kind); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -3593,6 +4437,9 @@ public int CalculateSize() { if (HasError) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); } + if (HasKind) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Kind); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -3608,6 +4455,9 @@ public void MergeFrom(CaptureError other) { if (other.HasError) { Error = other.Error; } + if (other.HasKind) { + Kind = other.Kind; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -3631,6 +4481,10 @@ public void MergeFrom(pb::CodedInputStream input) { Error = input.ReadString(); break; } + case 16: { + Kind = (global::LiveKit.Proto.CaptureErrorKind) input.ReadEnum(); + break; + } } } #endif @@ -3654,6 +4508,10 @@ public void MergeFrom(pb::CodedInputStream input) { Error = input.ReadString(); break; } + case 16: { + Kind = (global::LiveKit.Proto.CaptureErrorKind) input.ReadEnum(); + break; + } } } } @@ -3681,7 +4539,7 @@ public sealed partial class CaptureSourceEvent : pb::IMessage