From a07b3451a3750a6fe68b09ad0fd6c1832f49c855 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Mon, 2 Jan 2023 20:13:48 +0100 Subject: [PATCH] publish client-sdk-native (#12) * Create README.md * add example * crates & examples * fix syntax * add LICENSE * thirdparty LICENSE * rearrange repo * fix build * egui versions * prepare publish * fix demo compilation * add test ci * Update rust.yml * forgot runs-on * install protoc before building * avoid rate limit * include submodules * updates to readme * cache rust builds Co-authored-by: David Zhao Co-authored-by: David Zhao --- .github/workflows/rust.yml | 30 ++ .gitmodules | 4 +- Cargo.lock | 307 +++++++++--------- Cargo.toml | 18 +- LICENSE | 201 ++++++++++++ README.md | 69 ++++ crates/livekit-core/protocol | 1 - examples/Cargo.lock | 254 +++++++++------ examples/simple_room/Cargo.toml | 8 +- .../Cargo.toml | 2 + .../src/enum_dispatch.rs | 0 .../src/lib.rs | 0 .../src/observer.rs | 0 .../Cargo.toml | 6 +- .../src/data_channel.rs | 2 +- .../src/jsep.rs | 2 +- .../src/lib.rs | 0 .../src/media_stream.rs | 6 +- .../src/peer_connection.rs | 59 ++-- .../src/peer_connection_factory.rs | 4 +- .../src/rtc_error.rs | 2 +- .../src/rtp_receiver.rs | 6 +- .../src/rtp_transceiver.rs | 0 .../src/video_frame.rs | 2 +- .../src/video_frame_buffer.rs | 2 +- .../src/webrtc.rs | 2 +- .../src/yuv_helper.rs | 2 +- {crates/livekit-core => livekit}/Cargo.toml | 7 +- {crates/livekit-core => livekit}/build.rs | 0 livekit/protocol | 1 + {crates/livekit-core => livekit}/src/lib.rs | 3 + .../livekit-core => livekit}/src/room/id.rs | 0 .../livekit-core => livekit}/src/room/mod.rs | 0 .../src/room/participant/local_participant.rs | 0 .../src/room/participant/mod.rs | 0 .../room/participant/remote_participant.rs | 0 .../src/room/publication/mod.rs | 0 .../src/room/room_session.rs | 0 .../src/room/track/audio_track.rs | 0 .../src/room/track/local_audio_track.rs | 0 .../src/room/track/local_track.rs | 0 .../src/room/track/local_video_track.rs | 0 .../src/room/track/mod.rs | 0 .../src/room/track/remote_audio_track.rs | 0 .../src/room/track/remote_track.rs | 0 .../src/room/track/remote_video_track.rs | 0 .../src/room/track/video_track.rs | 0 .../src/rtc_engine/lk_runtime.rs | 0 .../src/rtc_engine/mod.rs | 0 .../src/rtc_engine/pc_transport.rs | 0 .../src/rtc_engine/rtc_events.rs | 0 .../src/rtc_engine/rtc_session.rs | 0 .../src/signal_client/mod.rs | 0 .../src/signal_client/signal_stream.rs | 0 src/lib.rs | 6 - .../.clang-format | 0 .../libwebrtc-sys => webrtc-sys}/.gitignore | 0 .../libwebrtc-sys => webrtc-sys}/Cargo.toml | 4 +- webrtc-sys/NOTICE | 209 ++++++++++++ .../libwebrtc-sys => webrtc-sys}/build.rs | 0 .../compile_flags.txt | 0 .../include/livekit/candidate.h | 0 .../include/livekit/data_channel.h | 0 .../include/livekit/jsep.h | 0 .../include/livekit/media_stream.h | 0 .../include/livekit/peer_connection.h | 0 .../include/livekit/peer_connection_factory.h | 0 .../include/livekit/rtc_error.h | 2 +- .../include/livekit/rtp_receiver.h | 0 .../include/livekit/rtp_transceiver.h | 0 .../include/livekit/rust_types.h | 0 .../include/livekit/video_frame.h | 0 .../include/livekit/video_frame_buffer.h | 0 .../include/livekit/webrtc.h | 0 .../include/livekit/yuv_helper.h | 0 .../libwebrtc/.gclient | 0 .../libwebrtc/.gitignore | 0 .../libwebrtc/compile.py | 0 .../src/candidate.cpp | 0 .../src/candidate.rs | 0 .../src/data_channel.cpp | 2 +- .../src/data_channel.rs | 0 .../libwebrtc-sys => webrtc-sys}/src/jsep.cpp | 2 +- .../libwebrtc-sys => webrtc-sys}/src/jsep.rs | 2 +- .../libwebrtc-sys => webrtc-sys}/src/lib.rs | 0 .../src/media_stream.cpp | 2 +- .../src/media_stream.rs | 0 .../src/peer_connection.cpp | 4 +- .../src/peer_connection.rs | 2 +- .../src/peer_connection_factory.cpp | 2 +- .../src/peer_connection_factory.rs | 0 .../src/rtc_error.cpp | 0 .../src/rtc_error.rs | 0 .../src/rtp_receiver.cpp | 0 .../src/rtp_receiver.rs | 0 .../src/rtp_transceiver.cpp | 0 .../src/rtp_transceiver.rs | 0 .../src/video_frame.rs | 0 .../src/video_frame_buffer.rs | 0 .../src/webrtc.cpp | 0 .../src/webrtc.rs | 0 .../src/yuv_helper.rs | 0 102 files changed, 893 insertions(+), 344 deletions(-) create mode 100644 .github/workflows/rust.yml create mode 100644 LICENSE create mode 100644 README.md delete mode 160000 crates/livekit-core/protocol rename {crates/livekit-utils => livekit-utils}/Cargo.toml (78%) rename {crates/livekit-utils => livekit-utils}/src/enum_dispatch.rs (100%) rename {crates/livekit-utils => livekit-utils}/src/lib.rs (100%) rename {crates/livekit-utils => livekit-utils}/src/observer.rs (100%) rename {crates/livekit-webrtc => livekit-webrtc}/Cargo.toml (55%) rename {crates/livekit-webrtc => livekit-webrtc}/src/data_channel.rs (99%) rename {crates/livekit-webrtc => livekit-webrtc}/src/jsep.rs (98%) rename {crates/livekit-webrtc => livekit-webrtc}/src/lib.rs (100%) rename {crates/livekit-webrtc => livekit-webrtc}/src/media_stream.rs (97%) rename {crates/livekit-webrtc => livekit-webrtc}/src/peer_connection.rs (92%) rename {crates/livekit-webrtc => livekit-webrtc}/src/peer_connection_factory.rs (93%) rename {crates/livekit-webrtc => livekit-webrtc}/src/rtc_error.rs (58%) rename {crates/livekit-webrtc => livekit-webrtc}/src/rtp_receiver.rs (87%) rename {crates/livekit-webrtc => livekit-webrtc}/src/rtp_transceiver.rs (100%) rename {crates/livekit-webrtc => livekit-webrtc}/src/video_frame.rs (97%) rename {crates/livekit-webrtc => livekit-webrtc}/src/video_frame_buffer.rs (99%) rename {crates/livekit-webrtc => livekit-webrtc}/src/webrtc.rs (90%) rename {crates/livekit-webrtc => livekit-webrtc}/src/yuv_helper.rs (96%) rename {crates/livekit-core => livekit}/Cargo.toml (74%) rename {crates/livekit-core => livekit}/build.rs (100%) create mode 160000 livekit/protocol rename {crates/livekit-core => livekit}/src/lib.rs (74%) rename {crates/livekit-core => livekit}/src/room/id.rs (100%) rename {crates/livekit-core => livekit}/src/room/mod.rs (100%) rename {crates/livekit-core => livekit}/src/room/participant/local_participant.rs (100%) rename {crates/livekit-core => livekit}/src/room/participant/mod.rs (100%) rename {crates/livekit-core => livekit}/src/room/participant/remote_participant.rs (100%) rename {crates/livekit-core => livekit}/src/room/publication/mod.rs (100%) rename {crates/livekit-core => livekit}/src/room/room_session.rs (100%) rename {crates/livekit-core => livekit}/src/room/track/audio_track.rs (100%) rename {crates/livekit-core => livekit}/src/room/track/local_audio_track.rs (100%) rename {crates/livekit-core => livekit}/src/room/track/local_track.rs (100%) rename {crates/livekit-core => livekit}/src/room/track/local_video_track.rs (100%) rename {crates/livekit-core => livekit}/src/room/track/mod.rs (100%) rename {crates/livekit-core => livekit}/src/room/track/remote_audio_track.rs (100%) rename {crates/livekit-core => livekit}/src/room/track/remote_track.rs (100%) rename {crates/livekit-core => livekit}/src/room/track/remote_video_track.rs (100%) rename {crates/livekit-core => livekit}/src/room/track/video_track.rs (100%) rename {crates/livekit-core => livekit}/src/rtc_engine/lk_runtime.rs (100%) rename {crates/livekit-core => livekit}/src/rtc_engine/mod.rs (100%) rename {crates/livekit-core => livekit}/src/rtc_engine/pc_transport.rs (100%) rename {crates/livekit-core => livekit}/src/rtc_engine/rtc_events.rs (100%) rename {crates/livekit-core => livekit}/src/rtc_engine/rtc_session.rs (100%) rename {crates/livekit-core => livekit}/src/signal_client/mod.rs (100%) rename {crates/livekit-core => livekit}/src/signal_client/signal_stream.rs (100%) delete mode 100644 src/lib.rs rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/.clang-format (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/.gitignore (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/Cargo.toml (77%) create mode 100644 webrtc-sys/NOTICE rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/build.rs (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/compile_flags.txt (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/candidate.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/data_channel.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/jsep.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/media_stream.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/peer_connection.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/peer_connection_factory.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/rtc_error.h (92%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/rtp_receiver.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/rtp_transceiver.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/rust_types.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/video_frame.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/video_frame_buffer.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/webrtc.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/include/livekit/yuv_helper.h (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/libwebrtc/.gclient (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/libwebrtc/.gitignore (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/libwebrtc/compile.py (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/candidate.cpp (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/candidate.rs (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/data_channel.cpp (98%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/data_channel.rs (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/jsep.cpp (99%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/jsep.rs (99%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/lib.rs (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/media_stream.cpp (98%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/media_stream.rs (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/peer_connection.cpp (99%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/peer_connection.rs (99%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/peer_connection_factory.cpp (98%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/peer_connection_factory.rs (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/rtc_error.cpp (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/rtc_error.rs (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/rtp_receiver.cpp (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/rtp_receiver.rs (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/rtp_transceiver.cpp (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/rtp_transceiver.rs (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/video_frame.rs (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/video_frame_buffer.rs (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/webrtc.cpp (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/webrtc.rs (100%) rename {crates/livekit-webrtc/libwebrtc-sys => webrtc-sys}/src/yuv_helper.rs (100%) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..8bd73fe --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,30 @@ +name: Tests & Build + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + strategy: + matrix: + os: [macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - name: Install Protoc + uses: arduino/setup-protoc@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/checkout@v3 + with: + submodules: true + - uses: Swatinem/rust-cache@v2 + - name: Build + run: cargo build --verbose + - name: Run tests + run: cargo test --verbose diff --git a/.gitmodules b/.gitmodules index b1073b2..ab644fe 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "crates/livekit-core/protocol"] - path = crates/livekit-core/protocol +[submodule "livekit/protocol"] + path = livekit/protocol url = https://github.com/livekit/protocol diff --git a/Cargo.lock b/Cargo.lock index 057fef9..e75188a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,18 +10,18 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aho-corasick" -version = "0.7.19" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" dependencies = [ "memchr", ] [[package]] name = "anyhow" -version = "1.0.65" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" +checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" [[package]] name = "atty" @@ -29,7 +29,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] @@ -42,9 +42,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "bitflags" @@ -69,15 +69,15 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" +checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" [[package]] name = "cfg-if" @@ -171,9 +171,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.78" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f39818dcfc97d45b03953c1292efc4e80954e1583c4aa770bac1383e2310a4" +checksum = "5add3fc1717409d029b20c5b6903fc0c0b02fa6741d820054f4a2efa5e5816fd" dependencies = [ "cc", "cxxbridge-flags", @@ -183,9 +183,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.78" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e580d70777c116df50c390d1211993f62d40302881e54d4b79727acb83d0199" +checksum = "b4c87959ba14bc6fbc61df77c3fcfe180fc32b93538c4f1031dd802ccb5f2ff0" dependencies = [ "cc", "codespan-reporting", @@ -198,15 +198,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.78" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56a46460b88d1cec95112c8c363f0e2c39afdb237f60583b0b36343bf627ea9c" +checksum = "69a3e162fde4e594ed2b07d0f83c6c67b745e7f28ce58c6df5e6b6bef99dfb59" [[package]] name = "cxxbridge-macro" -version = "1.0.78" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747b608fecf06b0d72d440f27acc99288207324b793be2c17991839f3d4995ea" +checksum = "3e7e2adeb6a0d4a282e581096b06e1791532b7d576dcde5ccd9382acf55db8e6" dependencies = [ "proc-macro2", "quote", @@ -215,9 +215,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ "block-buffer", "crypto-common", @@ -231,9 +231,9 @@ checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" [[package]] name = "env_logger" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c90bf5f19754d10198ccb95b70664fc925bd1fc090a0fd9a6ebc54acc8cd6272" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ "atty", "humantime", @@ -311,9 +311,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f21eda599937fba36daeb58a22e8f5cee2d14c4a17b5b7739c7c8e5e3b8230c" +checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" dependencies = [ "futures-channel", "futures-core", @@ -326,9 +326,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30bdd20c28fadd505d0fd6712cdfcb0d4b5648baf45faef7f852afb2399bb050" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" dependencies = [ "futures-core", "futures-sink", @@ -336,15 +336,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e5aa3de05362c3fb88de6531e6296e85cde7739cccad4b9dfeeb7f6ebce56bf" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" [[package]] name = "futures-executor" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff63c23854bee61b6e9cd331d523909f238fc7636290b96826e9cfa5faa00ab" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" dependencies = [ "futures-core", "futures-task", @@ -353,15 +353,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbf4d2a7a308fd4578637c0b17c7e1c7ba127b8f6ba00b29f717e9655d85eb68" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" [[package]] name = "futures-macro" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42cd15d1c7456c04dbdf7e88bcd69760d74f3a798d6444e16974b505b0e62f17" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" dependencies = [ "proc-macro2", "quote", @@ -370,21 +370,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b20ba5a92e727ba30e72834706623d94ac93a725410b6a6b6fbc1b07f7ba56" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" [[package]] name = "futures-task" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6508c467c73851293f390476d4491cf4d227dbabcd4170f3bb6044959b294f1" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" [[package]] name = "futures-util" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fb6cb1be61cc1d2e43b262516aafcf63b241cffdb1d3fa115f91d9c7b09c90" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" dependencies = [ "futures-channel", "futures-core", @@ -410,9 +410,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ "cfg-if", "libc", @@ -446,6 +446,15 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + [[package]] name = "http" version = "0.2.8" @@ -481,9 +490,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" dependencies = [ "autocfg", "hashbrown", @@ -509,9 +518,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" +checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" [[package]] name = "lazy_static" @@ -521,24 +530,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.134" +version = "0.2.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb" - -[[package]] -name = "libwebrtc-sys" -version = "0.1.0" -dependencies = [ - "curl", - "cxx", - "cxx-build", - "env_logger", - "flate2", - "glob", - "log", - "regex", - "tar", -] +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" [[package]] name = "libz-sys" @@ -554,9 +548,9 @@ dependencies = [ [[package]] name = "link-cplusplus" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" dependencies = [ "cc", ] @@ -564,14 +558,6 @@ dependencies = [ [[package]] name = "livekit" version = "0.1.0" -dependencies = [ - "livekit-core", - "livekit-webrtc", -] - -[[package]] -name = "livekit-core" -version = "0.1.0" dependencies = [ "futures", "futures-util", @@ -605,11 +591,11 @@ version = "0.1.0" dependencies = [ "cxx", "env_logger", - "libwebrtc-sys", "livekit-utils", "log", "thiserror", "tokio", + "webrtc-sys", ] [[package]] @@ -648,14 +634,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" dependencies = [ "libc", "log", "wasi", - "windows-sys 0.36.1", + "windows-sys 0.42.0", ] [[package]] @@ -666,9 +652,9 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" [[package]] name = "native-tls" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" dependencies = [ "lazy_static", "libc", @@ -684,25 +670,25 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ - "hermit-abi", + "hermit-abi 0.2.6", "libc", ] [[package]] name = "once_cell" -version = "1.15.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" +checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" [[package]] name = "openssl" -version = "0.10.42" +version = "0.10.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13" +checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1" dependencies = [ "bitflags", "cfg-if", @@ -732,9 +718,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.76" +version = "0.9.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5230151e44c0f05157effb743e8d517472843121cf9243e8b81393edb5acd9ce" +checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" dependencies = [ "autocfg", "cc", @@ -755,15 +741,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys 0.36.1", + "windows-sys 0.42.0", ] [[package]] @@ -796,30 +782,40 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "prettyplease" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c8992a85d8e93a28bdf76137db888d3874e3b230dee5ed8bebac4c9f7617773" +dependencies = [ + "proc-macro2", + "syn", +] [[package]] name = "proc-macro2" -version = "1.0.46" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b" +checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5" dependencies = [ "unicode-ident", ] [[package]] name = "prost" -version = "0.11.0" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" +checksum = "c01db6702aa05baa3f57dec92b8eeeeb4cb19e894e73996b32a4093289e54592" dependencies = [ "bytes", "prost-derive", @@ -827,9 +823,9 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.11.1" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f835c582e6bd972ba8347313300219fed5bfa52caf175298d860b61ff6069bb" +checksum = "cb5320c680de74ba083512704acb90fe00f28f79207286a848e730c45dd73ed6" dependencies = [ "bytes", "heck", @@ -838,18 +834,20 @@ dependencies = [ "log", "multimap", "petgraph", + "prettyplease", "prost", "prost-types", "regex", + "syn", "tempfile", "which", ] [[package]] name = "prost-derive" -version = "0.11.0" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7345d5f0e08c0536d7ac7229952590239e77abf0a0100a1b1d890add6ea96364" +checksum = "c8842bad1a5419bca14eac663ba798f6bc19c413c2fdceb5f3ba3b0932d96720" dependencies = [ "anyhow", "itertools", @@ -860,9 +858,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.11.1" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dfaa718ad76a44b3415e6c4d53b17c8f99160dcb3a99b10470fce8ad43f6e3e" +checksum = "017f79637768cde62820bc2d4fe0e45daaa027755c323ad077767c6c5f173091" dependencies = [ "bytes", "prost", @@ -870,9 +868,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" dependencies = [ "proc-macro2", ] @@ -918,9 +916,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" dependencies = [ "aho-corasick", "memchr", @@ -929,9 +927,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.27" +version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "remove_dir_all" @@ -944,9 +942,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" +checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" [[package]] name = "schannel" @@ -966,9 +964,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scratch" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" +checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" [[package]] name = "security-framework" @@ -995,18 +993,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.145" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.145" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", @@ -1015,9 +1013,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.85" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" +checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" dependencies = [ "itoa", "ryu", @@ -1026,9 +1024,9 @@ dependencies = [ [[package]] name = "sha-1" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" dependencies = [ "cfg-if", "cpufeatures", @@ -1055,9 +1053,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "socket2" @@ -1071,9 +1069,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.101" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e90cde112c4b9690b8cbe810cba9ddd8bc1d7472e2cae317b69e9438c1cba7d2" +checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" dependencies = [ "proc-macro2", "quote", @@ -1116,18 +1114,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" dependencies = [ "proc-macro2", "quote", @@ -1151,9 +1149,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.21.2" +version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" +checksum = "eab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46" dependencies = [ "autocfg", "bytes", @@ -1166,14 +1164,14 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", - "winapi", + "windows-sys 0.42.0", ] [[package]] name = "tokio-macros" -version = "1.8.0" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" +checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" dependencies = [ "proc-macro2", "quote", @@ -1206,9 +1204,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.36" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", "pin-project-lite", @@ -1218,9 +1216,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ "proc-macro2", "quote", @@ -1229,9 +1227,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.29" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" dependencies = [ "once_cell", ] @@ -1258,9 +1256,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" [[package]] name = "unicode-bidi" @@ -1270,9 +1268,9 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" [[package]] name = "unicode-normalization" @@ -1324,6 +1322,21 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "webrtc-sys" +version = "0.1.0" +dependencies = [ + "curl", + "cxx", + "cxx-build", + "env_logger", + "flate2", + "glob", + "log", + "regex", + "tar", +] + [[package]] name = "which" version = "4.3.0" diff --git a/Cargo.toml b/Cargo.toml index 36613eb..36cb2f8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,18 +1,8 @@ -[package] -name = "livekit" -version = "0.1.0" -edition = "2021" -repository = "https://github.com/livekit/client-sdk-native" - [workspace] -exclude = ["libwebrtc"] members = [ - "crates/livekit-core", - "crates/livekit-webrtc", - "crates/livekit-utils", - "crates/livekit-webrtc/libwebrtc-sys" + "livekit", + "livekit-webrtc", + "livekit-utils", + "webrtc-sys" ] -[dependencies] -livekit-core = { path = "crates/livekit-core" } -livekit-webrtc = { path = "crates/livekit-webrtc" } diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..62cab63 --- /dev/null +++ b/README.md @@ -0,0 +1,69 @@ +# LiveKit: Native SDK + +> **Warning** +> This SDK is a developer preview and is not ready for production use. There will be bugs and the APIs may change during this period. +> All feedbacks/contributions are appreciated. You can create issues or discuss with us on the #rust-developer-preview channel in our [Slack](https://livekit.io/join-slack) + +## Features + +- [x] Receiving tracks ( VP8, Software decoder only ) +- [x] Cross-platform ( currently tested on Windows & MacOS ) +- [ ] Publishing tracks +- [ ] Adaptive Streaming +- [ ] Dynacast +- [ ] Simulcast +- [ ] Hardware video enc/dec + - [ ] NvEnc for Windows + - [ ] VideoToolbox for MacOS/iOS + +## Crates + +- `livekit-core`: LiveKit protocol implementation +- `livekit-utils`: Shared utilities between our crates +- `livekit-ffi`: Use `livekit-core` on foreign languages +- `livekit-webrtc`: Safe Rust bindings to libwebrtc +- `webrtc-sys`: Unsafe bindings to libwebrtc + +## Motivation and Design Goals + +At LiveKit, we've developed a number of client SDKs for different platforms. This +is necessary to our goal of providing an end-to-end WebRTC stack for every platform. However, +we've encountered a few challenges during this process: + +- there's significant of business/control logic with our signaling protocol and WebRTC. currently they are re-written for each platform that we support +- interactions with media devices and encoding/decoding are platform and framework specific +- doing both of the above for multi-platform frameworks (like Unity, Flutter, and React-Native) proved to be extremely painful + +We would like this SDK to: + +- Encapsulate all of the business logic and platform-specific APIs into a clean +- Standalone cross-platform, native SDK for Rust and C/C++ +- Serve as a common core for other platform-specific SDKs (i.e. Unity, iOS, Android) + +## Getting started + +Tokio is required to use the SDK, we have plan to make the async executor agnostic + +### Connecting to a Room and listen to events: + +```rust +#[tokio::main] +async fn main() -> Result<()> { + let (room, room_events) = Room::connect(&url, &token).await?; + + while let Some(event) = room_events.recv().await { + match event { + RoomEvent::TrackSubscribed { track, publication, participant } => { + // ... + } + _ => {} + } + } + + Ok(()) +} +``` + +## Examples + +We made [simple room](https://github.com/livekit/client-sdk-native/tree/main/examples/simple_room) demo using all features of the SDK. We render videos using wgpu and egui. diff --git a/crates/livekit-core/protocol b/crates/livekit-core/protocol deleted file mode 160000 index 8449c11..0000000 --- a/crates/livekit-core/protocol +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8449c1106929b3f5cf9fdcc97ab3e63a1c5e6a76 diff --git a/examples/Cargo.lock b/examples/Cargo.lock index f810cc4..c5a131b 100644 --- a/examples/Cargo.lock +++ b/examples/Cargo.lock @@ -66,9 +66,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.66" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" [[package]] name = "arboard" @@ -209,9 +209,9 @@ checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" [[package]] name = "calloop" -version = "0.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19457a0da465234abd76134a5c2a910c14bd3c5558463e4396ab9a37a328e465" +checksum = "1a59225be45a478d772ce015d9743e49e92798ece9e34eda9a6aa2a6a7f40192" dependencies = [ "log", "nix 0.25.1", @@ -222,9 +222,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.77" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4" +checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" [[package]] name = "cesu8" @@ -457,9 +457,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.83" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdf07d07d6531bfcdbe9b8b739b104610c6508dcc4d63b410585faf338241daf" +checksum = "5add3fc1717409d029b20c5b6903fc0c0b02fa6741d820054f4a2efa5e5816fd" dependencies = [ "cc", "cxxbridge-flags", @@ -469,9 +469,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.83" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2eb5b96ecdc99f72657332953d4d9c50135af1bac34277801cc3937906ebd39" +checksum = "b4c87959ba14bc6fbc61df77c3fcfe180fc32b93538c4f1031dd802ccb5f2ff0" dependencies = [ "cc", "codespan-reporting", @@ -484,15 +484,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.83" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac040a39517fd1674e0f32177648334b0f4074625b5588a64519804ba0553b12" +checksum = "69a3e162fde4e594ed2b07d0f83c6c67b745e7f28ce58c6df5e6b6bef99dfb59" [[package]] name = "cxxbridge-macro" -version = "1.0.83" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1362b0ddcfc4eb0a1f57b68bd77dd99f0e826958a96abd0ae9bd092e114ffed6" +checksum = "3e7e2adeb6a0d4a282e581096b06e1791532b7d576dcde5ccd9382acf55db8e6" dependencies = [ "proc-macro2", "quote", @@ -555,6 +555,26 @@ dependencies = [ "crypto-common", ] +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -593,15 +613,17 @@ dependencies = [ [[package]] name = "ecolor" version = "0.20.0" -source = "git+https://github.com/emilk/egui#e7471f1191081ecb514fe129bb8618938b67e796" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b601108bca3af7650440ace4ca55b2daf52c36f2635be3587d77b16efd8d0691" dependencies = [ "bytemuck", ] [[package]] name = "egui" -version = "0.20.0" -source = "git+https://github.com/emilk/egui#e7471f1191081ecb514fe129bb8618938b67e796" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65a5e883a316e53866977450eecfbcac9c48109c2ab3394af29feb83fcde4ea9" dependencies = [ "ahash 0.8.2", "epaint", @@ -612,7 +634,8 @@ dependencies = [ [[package]] name = "egui-wgpu" version = "0.20.0" -source = "git+https://github.com/emilk/egui#e7471f1191081ecb514fe129bb8618938b67e796" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3a6edfac4c02455f5024dc7cda997629b94748571935773d1a0cfab8213c80a" dependencies = [ "bytemuck", "egui", @@ -625,8 +648,9 @@ dependencies = [ [[package]] name = "egui-winit" -version = "0.20.0" -source = "git+https://github.com/emilk/egui#e7471f1191081ecb514fe129bb8618938b67e796" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5696bdbe60898b81157f07ae34fe02dbfd522174bd6e620942c269cd7307901f" dependencies = [ "arboard", "egui", @@ -646,7 +670,8 @@ checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" [[package]] name = "emath" version = "0.20.0" -source = "git+https://github.com/emilk/egui#e7471f1191081ecb514fe129bb8618938b67e796" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5277249c8c3430e7127e4f2c40a77485e7baf11ae132ce9b3253a8ed710df0a0" dependencies = [ "bytemuck", ] @@ -654,7 +679,8 @@ dependencies = [ [[package]] name = "epaint" version = "0.20.0" -source = "git+https://github.com/emilk/egui#e7471f1191081ecb514fe129bb8618938b67e796" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de14b65fe5e423e0058f77a8beb2c863b056d0566d6c4ce0d097aa5814cb705a" dependencies = [ "ab_glyph", "ahash 0.8.2", @@ -1005,9 +1031,9 @@ checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" [[package]] name = "hermit-abi" -version = "0.1.19" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" dependencies = [ "libc", ] @@ -1084,9 +1110,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" +checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" [[package]] name = "jni" @@ -1136,9 +1162,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.138" +version = "0.2.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" [[package]] name = "libloading" @@ -1150,20 +1176,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "libwebrtc-sys" -version = "0.1.0" -dependencies = [ - "curl", - "cxx", - "cxx-build", - "flate2", - "glob", - "log", - "regex", - "tar", -] - [[package]] name = "libz-sys" version = "1.1.8" @@ -1178,9 +1190,9 @@ dependencies = [ [[package]] name = "link-cplusplus" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" dependencies = [ "cc", ] @@ -1188,14 +1200,6 @@ dependencies = [ [[package]] name = "livekit" version = "0.1.0" -dependencies = [ - "livekit-core", - "livekit-webrtc", -] - -[[package]] -name = "livekit-core" -version = "0.1.0" dependencies = [ "futures", "futures-util", @@ -1228,11 +1232,11 @@ name = "livekit-webrtc" version = "0.1.0" dependencies = [ "cxx", - "libwebrtc-sys", "livekit-utils", "log", "thiserror", "tokio", + "webrtc-sys", ] [[package]] @@ -1463,9 +1467,9 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nom" -version = "7.1.1" +version = "7.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "e5507769c4919c998e69e49c839d9dc6e693ede4cc4290d6ad8b41d4f09c548c" dependencies = [ "memchr", "minimal-lexical", @@ -1492,9 +1496,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ "hermit-abi", "libc", @@ -1562,15 +1566,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" +checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" [[package]] name = "openssl" -version = "0.10.44" +version = "0.10.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29d971fd5722fec23977260f6e81aa67d2f22cadbdc2aa049f1022d9a3be1566" +checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1" dependencies = [ "bitflags", "cfg-if", @@ -1600,9 +1604,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.79" +version = "0.9.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5454462c0eced1e97f2ec09036abc8da362e66802f66fd20f86854d9d8cbcbc4" +checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" dependencies = [ "autocfg", "cc", @@ -1709,9 +1713,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c142c0e46b57171fe0c528bee8c5b7569e80f0c17e377cd0e30ea57dbc11bb51" +checksum = "2c8992a85d8e93a28bdf76137db888d3874e3b230dee5ed8bebac4c9f7617773" dependencies = [ "proc-macro2", "syn", @@ -1730,9 +1734,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.47" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5" dependencies = [ "unicode-ident", ] @@ -1745,9 +1749,9 @@ checksum = "74605f360ce573babfe43964cbe520294dcb081afbf8c108fc6e23036b4da2df" [[package]] name = "prost" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b18e655c21ff5ac2084a5ad0611e827b3f92badf79f4910b5a5c58f4d87ff0" +checksum = "c01db6702aa05baa3f57dec92b8eeeeb4cb19e894e73996b32a4093289e54592" dependencies = [ "bytes", "prost-derive", @@ -1755,9 +1759,9 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276470f7f281b0ed53d2ae42dd52b4a8d08853a3c70e7fe95882acbb98a6ae94" +checksum = "cb5320c680de74ba083512704acb90fe00f28f79207286a848e730c45dd73ed6" dependencies = [ "bytes", "heck", @@ -1777,9 +1781,9 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.11.2" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "164ae68b6587001ca506d3bf7f1000bfa248d0e1217b618108fba4ec1d0cc306" +checksum = "c8842bad1a5419bca14eac663ba798f6bc19c413c2fdceb5f3ba3b0932d96720" dependencies = [ "anyhow", "itertools", @@ -1790,9 +1794,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.11.2" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747761bc3dc48f9a34553bf65605cf6cb6288ba219f3450b4275dbd81539551a" +checksum = "017f79637768cde62820bc2d4fe0e45daaa027755c323ad077767c6c5f173091" dependencies = [ "bytes", "prost", @@ -1800,9 +1804,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" dependencies = [ "proc-macro2", ] @@ -1870,6 +1874,17 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall", + "thiserror", +] + [[package]] name = "regex" version = "1.7.0" @@ -1910,9 +1925,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "ryu" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" +checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" [[package]] name = "safe_arch" @@ -1956,9 +1971,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scratch" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" +checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" [[package]] name = "sctk-adwaita" @@ -1997,18 +2012,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.149" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256b9932320c590e707b94576e3cc1f7c9024d0ee6612dfbcf1cb106cbe8e055" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.149" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4eae9b04cbffdfd550eb462ed33bc6a1b68c935127d008b27444d08380f94e4" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", @@ -2017,9 +2032,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.89" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" +checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" dependencies = [ "itoa", "ryu", @@ -2186,9 +2201,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "1.0.105" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908" +checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" dependencies = [ "proc-macro2", "quote", @@ -2231,18 +2246,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" dependencies = [ "proc-macro2", "quote", @@ -2355,9 +2370,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f" dependencies = [ "serde", ] @@ -2469,9 +2484,9 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" [[package]] name = "unicode-normalization" @@ -2703,18 +2718,34 @@ dependencies = [ [[package]] name = "webbrowser" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0cc7962b5aaa0dfcebaeef0161eec6edf5f4606c12e6777fd7d392f52033a5" +checksum = "e74f5ff7786c4c21f61ba8e30ea29c9745f06fca0a4a02d083b3c662583399e8" dependencies = [ + "core-foundation", + "dirs", "jni", + "log", "ndk-context", "objc", "raw-window-handle 0.5.0", "url", "web-sys", - "widestring", - "winapi", + "windows", +] + +[[package]] +name = "webrtc-sys" +version = "0.1.0" +dependencies = [ + "curl", + "cxx", + "cxx-build", + "flate2", + "glob", + "log", + "regex", + "tar", ] [[package]] @@ -2822,12 +2853,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "widestring" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" - [[package]] name = "winapi" version = "0.3.9" @@ -2868,6 +2893,21 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04662ed0e3e5630dfa9b26e4cb823b817f1a9addda855d973a9458c236556244" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.0", + "windows_i686_gnu 0.42.0", + "windows_i686_msvc 0.42.0", + "windows_x86_64_gnu 0.42.0", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.0", +] + [[package]] name = "windows-sys" version = "0.36.1" diff --git a/examples/simple_room/Cargo.toml b/examples/simple_room/Cargo.toml index 6d59c39..2d434a8 100644 --- a/examples/simple_room/Cargo.toml +++ b/examples/simple_room/Cargo.toml @@ -7,12 +7,12 @@ edition = "2021" tokio = { version = "1", features = ["full"] } tracing = "0.1" tracing-subscriber = "0.3" -livekit = { path = "../.." } +livekit = { path = "../../livekit", version = "0.1.0" } futures = "0.3" wgpu = "0.14.0" winit = "0.27.5" parking_lot = "0.12.1" -egui = { git = "https://github.com/emilk/egui" } -egui-wgpu = { git = "https://github.com/emilk/egui", features = ["winit"] } -egui-winit = { git = "https://github.com/emilk/egui" } +egui = "0.20.1" +egui-wgpu = { version = "0.20.0", features = ["winit"] } +egui-winit = "0.20.1" diff --git a/crates/livekit-utils/Cargo.toml b/livekit-utils/Cargo.toml similarity index 78% rename from crates/livekit-utils/Cargo.toml rename to livekit-utils/Cargo.toml index b2f868c..0798781 100644 --- a/crates/livekit-utils/Cargo.toml +++ b/livekit-utils/Cargo.toml @@ -2,6 +2,8 @@ name = "livekit-utils" version = "0.1.0" edition = "2021" +license = "Apache-2.0" +description = "Shared utilities for livekit" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/crates/livekit-utils/src/enum_dispatch.rs b/livekit-utils/src/enum_dispatch.rs similarity index 100% rename from crates/livekit-utils/src/enum_dispatch.rs rename to livekit-utils/src/enum_dispatch.rs diff --git a/crates/livekit-utils/src/lib.rs b/livekit-utils/src/lib.rs similarity index 100% rename from crates/livekit-utils/src/lib.rs rename to livekit-utils/src/lib.rs diff --git a/crates/livekit-utils/src/observer.rs b/livekit-utils/src/observer.rs similarity index 100% rename from crates/livekit-utils/src/observer.rs rename to livekit-utils/src/observer.rs diff --git a/crates/livekit-webrtc/Cargo.toml b/livekit-webrtc/Cargo.toml similarity index 55% rename from crates/livekit-webrtc/Cargo.toml rename to livekit-webrtc/Cargo.toml index 0de0d93..96277a7 100644 --- a/crates/livekit-webrtc/Cargo.toml +++ b/livekit-webrtc/Cargo.toml @@ -3,10 +3,12 @@ name = "livekit-webrtc" version = "0.1.0" edition = "2021" homepage = "https://livekit.io" +license = "Apache-2.0" +description = "Livekit safe bindings to libwebrtc" [dependencies] -libwebrtc-sys = { path = "./libwebrtc-sys" } -livekit-utils = { path = "../livekit-utils" } +webrtc-sys = { path = "../webrtc-sys", version = "0.1.0" } +livekit-utils = { path = "../livekit-utils", version = "0.1.0" } tokio = { version = "1", features = ["full"] } cxx = "1.0" log = "0.4" diff --git a/crates/livekit-webrtc/src/data_channel.rs b/livekit-webrtc/src/data_channel.rs similarity index 99% rename from crates/livekit-webrtc/src/data_channel.rs rename to livekit-webrtc/src/data_channel.rs index 2a7591b..409283c 100644 --- a/crates/livekit-webrtc/src/data_channel.rs +++ b/livekit-webrtc/src/data_channel.rs @@ -5,8 +5,8 @@ use std::sync::{Arc, Mutex}; use cxx::UniquePtr; use log::trace; -use libwebrtc_sys::data_channel as sys_dc; pub use sys_dc::ffi::{DataState, Priority}; +use webrtc_sys::data_channel as sys_dc; pub struct DataChannel { cxx_handle: UniquePtr, diff --git a/crates/livekit-webrtc/src/jsep.rs b/livekit-webrtc/src/jsep.rs similarity index 98% rename from crates/livekit-webrtc/src/jsep.rs rename to livekit-webrtc/src/jsep.rs index 4638545..39be1f1 100644 --- a/crates/livekit-webrtc/src/jsep.rs +++ b/livekit-webrtc/src/jsep.rs @@ -2,8 +2,8 @@ use std::fmt::{Debug, Formatter}; use cxx::UniquePtr; -use libwebrtc_sys::jsep as sys_jsep; pub use sys_jsep::ffi::{SdpParseError, SdpType}; +use webrtc_sys::jsep as sys_jsep; // TODO Maybe we can replace that by a serialized IceCandidateInit pub struct IceCandidate { diff --git a/crates/livekit-webrtc/src/lib.rs b/livekit-webrtc/src/lib.rs similarity index 100% rename from crates/livekit-webrtc/src/lib.rs rename to livekit-webrtc/src/lib.rs diff --git a/crates/livekit-webrtc/src/media_stream.rs b/livekit-webrtc/src/media_stream.rs similarity index 97% rename from crates/livekit-webrtc/src/media_stream.rs rename to livekit-webrtc/src/media_stream.rs index 0ad7a7f..41abd49 100644 --- a/crates/livekit-webrtc/src/media_stream.rs +++ b/livekit-webrtc/src/media_stream.rs @@ -1,10 +1,10 @@ use cxx::UniquePtr; -use libwebrtc_sys::media_stream as sys_ms; -use libwebrtc_sys::MEDIA_TYPE_VIDEO; use livekit_utils::enum_dispatch; use std::fmt::{Debug, Formatter}; use std::pin::Pin; use std::sync::{Arc, Mutex}; +use webrtc_sys::media_stream as sys_ms; +use webrtc_sys::MEDIA_TYPE_VIDEO; pub use sys_ms::ffi::ContentHint; pub use sys_ms::ffi::TrackState; @@ -146,7 +146,7 @@ impl From for VideoTrackSourceConstrai } impl sys_ms::VideoFrameSink for InternalVideoTrackSink { - fn on_frame(&self, frame: UniquePtr) { + fn on_frame(&self, frame: UniquePtr) { if let Some(cb) = self.on_frame_handler.lock().unwrap().as_mut() { let frame = VideoFrame::new(frame); let video_frame_buffer = unsafe { frame.video_frame_buffer() }; diff --git a/crates/livekit-webrtc/src/peer_connection.rs b/livekit-webrtc/src/peer_connection.rs similarity index 92% rename from crates/livekit-webrtc/src/peer_connection.rs rename to livekit-webrtc/src/peer_connection.rs index 7cec14e..c13b2e9 100644 --- a/crates/livekit-webrtc/src/peer_connection.rs +++ b/livekit-webrtc/src/peer_connection.rs @@ -6,19 +6,19 @@ use cxx::UniquePtr; use log::trace; use tokio::sync::{mpsc, oneshot}; -use libwebrtc_sys::data_channel as sys_dc; -use libwebrtc_sys::jsep as sys_jsep; -use libwebrtc_sys::peer_connection as sys_pc; -pub use libwebrtc_sys::peer_connection::ffi::IceConnectionState; -pub use libwebrtc_sys::peer_connection::ffi::IceGatheringState; -use libwebrtc_sys::peer_connection::ffi::NativeCreateSdpObserverHandle; -pub use libwebrtc_sys::peer_connection::ffi::PeerConnectionState; -pub use libwebrtc_sys::peer_connection::ffi::RTCOfferAnswerOptions; -pub use libwebrtc_sys::peer_connection::ffi::SignalingState; +use webrtc_sys::data_channel as sys_dc; +use webrtc_sys::jsep as sys_jsep; +use webrtc_sys::peer_connection as sys_pc; +pub use webrtc_sys::peer_connection::ffi::IceConnectionState; +pub use webrtc_sys::peer_connection::ffi::IceGatheringState; +use webrtc_sys::peer_connection::ffi::NativeCreateSdpObserverHandle; +pub use webrtc_sys::peer_connection::ffi::PeerConnectionState; +pub use webrtc_sys::peer_connection::ffi::RTCOfferAnswerOptions; +pub use webrtc_sys::peer_connection::ffi::SignalingState; use crate::data_channel::{DataChannel, DataChannelInit}; use crate::jsep::{IceCandidate, SessionDescription}; -use crate::media_stream::{MediaStream, VideoTrack, AudioTrack}; +use crate::media_stream::{AudioTrack, MediaStream, VideoTrack}; use crate::rtc_error::RTCError; use crate::rtp_receiver::RtpReceiver; use crate::rtp_transceiver::RtpTransceiver; @@ -348,7 +348,7 @@ pub type OnIceCandidateErrorHandler = pub type OnIceCandidatesRemovedHandler = Box) + Send + Sync>; pub type OnIceConnectionReceivingChangeHandler = Box; pub type OnIceSelectedCandidatePairChangedHandler = - Box; + Box; pub type OnAddTrackHandler = Box) + Send + Sync>; pub type OnTrackHandler = Box; pub type OnRemoveTrackHandler = Box; @@ -415,7 +415,7 @@ impl sys_pc::PeerConnectionObserver for InternalObserver { } } - fn on_add_stream(&self, stream: UniquePtr) { + fn on_add_stream(&self, stream: UniquePtr) { trace!("on_add_stream"); let mut handler = self.on_add_stream_handler.lock().unwrap(); if let Some(f) = handler.as_mut() { @@ -423,7 +423,7 @@ impl sys_pc::PeerConnectionObserver for InternalObserver { } } - fn on_remove_stream(&self, stream: UniquePtr) { + fn on_remove_stream(&self, stream: UniquePtr) { trace!("on_remove_stream"); let mut handler = self.on_remove_stream_handler.lock().unwrap(); if let Some(f) = handler.as_mut() { @@ -431,10 +431,7 @@ impl sys_pc::PeerConnectionObserver for InternalObserver { } } - fn on_data_channel( - &self, - data_channel: UniquePtr, - ) { + fn on_data_channel(&self, data_channel: UniquePtr) { trace!("on_data_channel"); let mut handler = self.on_data_channel_handler.lock().unwrap(); if let Some(f) = handler.as_mut() { @@ -467,7 +464,10 @@ impl sys_pc::PeerConnectionObserver for InternalObserver { } fn on_standardized_ice_connection_change(&self, new_state: IceConnectionState) { - trace!("on_standardized_ice_connection_change (new_state: {:?}", new_state); + trace!( + "on_standardized_ice_connection_change (new_state: {:?}", + new_state + ); let mut handler = self .on_standardized_ice_connection_change_handler .lock() @@ -493,7 +493,7 @@ impl sys_pc::PeerConnectionObserver for InternalObserver { } } - fn on_ice_candidate(&self, candidate: UniquePtr) { + fn on_ice_candidate(&self, candidate: UniquePtr) { trace!("on_ice_candidate"); let mut handler = self.on_ice_candidate_handler.lock().unwrap(); if let Some(f) = handler.as_mut() { @@ -518,7 +518,7 @@ impl sys_pc::PeerConnectionObserver for InternalObserver { fn on_ice_candidates_removed( &self, - removed: Vec>, + removed: Vec>, ) { trace!("on_ice_candidates_removed"); let mut handler = self.on_ice_candidates_removed_handler.lock().unwrap(); @@ -540,7 +540,7 @@ impl sys_pc::PeerConnectionObserver for InternalObserver { fn on_ice_selected_candidate_pair_changed( &self, - event: libwebrtc_sys::peer_connection::ffi::CandidatePairChangeEvent, + event: webrtc_sys::peer_connection::ffi::CandidatePairChangeEvent, ) { trace!("on_ice_selected_candidate_pair_changed"); let mut handler = self @@ -554,8 +554,8 @@ impl sys_pc::PeerConnectionObserver for InternalObserver { fn on_add_track( &self, - receiver: UniquePtr, - streams: Vec>, + receiver: UniquePtr, + streams: Vec>, ) { trace!("on_add_track"); let mut handler = self.on_add_track_handler.lock().unwrap(); @@ -565,10 +565,7 @@ impl sys_pc::PeerConnectionObserver for InternalObserver { } } - fn on_track( - &self, - transceiver: UniquePtr, - ) { + fn on_track(&self, transceiver: UniquePtr) { trace!("on_track"); let mut handler = self.on_track_handler.lock().unwrap(); if let Some(f) = handler.as_mut() { @@ -576,7 +573,7 @@ impl sys_pc::PeerConnectionObserver for InternalObserver { } } - fn on_remove_track(&self, receiver: UniquePtr) { + fn on_remove_track(&self, receiver: UniquePtr) { trace!("on_remove_track"); let mut handler = self.on_remove_track_handler.lock().unwrap(); if let Some(f) = handler.as_mut() { @@ -598,10 +595,8 @@ mod tests { use log::trace; use tokio::sync::mpsc; - use libwebrtc_sys::peer_connection::ffi::RTCOfferAnswerOptions; - use libwebrtc_sys::peer_connection_factory::ffi::{ - ContinualGatheringPolicy, IceTransportsType, - }; + use webrtc_sys::peer_connection::ffi::RTCOfferAnswerOptions; + use webrtc_sys::peer_connection_factory::ffi::{ContinualGatheringPolicy, IceTransportsType}; use crate::data_channel::{DataChannel, DataChannelInit}; use crate::jsep::IceCandidate; diff --git a/crates/livekit-webrtc/src/peer_connection_factory.rs b/livekit-webrtc/src/peer_connection_factory.rs similarity index 93% rename from crates/livekit-webrtc/src/peer_connection_factory.rs rename to livekit-webrtc/src/peer_connection_factory.rs index 90291b3..1e41f15 100644 --- a/crates/livekit-webrtc/src/peer_connection_factory.rs +++ b/livekit-webrtc/src/peer_connection_factory.rs @@ -1,10 +1,10 @@ use cxx::UniquePtr; -use libwebrtc_sys::peer_connection as sys_pc; -use libwebrtc_sys::peer_connection_factory as sys_factory; pub use sys_factory::ffi::{ ContinualGatheringPolicy, ICEServer, IceTransportsType, RTCConfiguration, }; +use webrtc_sys::peer_connection as sys_pc; +use webrtc_sys::peer_connection_factory as sys_factory; use crate::peer_connection::{InternalObserver, PeerConnection}; use crate::rtc_error::RTCError; diff --git a/crates/livekit-webrtc/src/rtc_error.rs b/livekit-webrtc/src/rtc_error.rs similarity index 58% rename from crates/livekit-webrtc/src/rtc_error.rs rename to livekit-webrtc/src/rtc_error.rs index 86c81e1..e92b49d 100644 --- a/crates/livekit-webrtc/src/rtc_error.rs +++ b/livekit-webrtc/src/rtc_error.rs @@ -1,2 +1,2 @@ // TODO(theomonnom) Wrap the RTCError ffi so we can use Option(u16) -pub use libwebrtc_sys::rtc_error::ffi::RTCError; +pub use webrtc_sys::rtc_error::ffi::RTCError; diff --git a/crates/livekit-webrtc/src/rtp_receiver.rs b/livekit-webrtc/src/rtp_receiver.rs similarity index 87% rename from crates/livekit-webrtc/src/rtp_receiver.rs rename to livekit-webrtc/src/rtp_receiver.rs index c35e1e2..853c65e 100644 --- a/crates/livekit-webrtc/src/rtp_receiver.rs +++ b/livekit-webrtc/src/rtp_receiver.rs @@ -1,7 +1,7 @@ use crate::media_stream::{MediaStreamTrackHandle, MediaStreamTrackTrait}; use cxx::UniquePtr; -use libwebrtc_sys::rtp_receiver as sys_rec; use std::fmt::{Debug, Formatter}; +use webrtc_sys::rtp_receiver as sys_rec; pub struct RtpReceiver { cxx_handle: UniquePtr, @@ -17,9 +17,7 @@ impl Debug for RtpReceiver { impl RtpReceiver { pub(crate) fn new(cxx_handle: UniquePtr) -> Self { - Self { - cxx_handle, - } + Self { cxx_handle } } pub fn track(&self) -> MediaStreamTrackHandle { diff --git a/crates/livekit-webrtc/src/rtp_transceiver.rs b/livekit-webrtc/src/rtp_transceiver.rs similarity index 100% rename from crates/livekit-webrtc/src/rtp_transceiver.rs rename to livekit-webrtc/src/rtp_transceiver.rs diff --git a/crates/livekit-webrtc/src/video_frame.rs b/livekit-webrtc/src/video_frame.rs similarity index 97% rename from crates/livekit-webrtc/src/video_frame.rs rename to livekit-webrtc/src/video_frame.rs index c36bf79..fc90299 100644 --- a/crates/livekit-webrtc/src/video_frame.rs +++ b/livekit-webrtc/src/video_frame.rs @@ -1,5 +1,5 @@ use cxx::UniquePtr; -use libwebrtc_sys::video_frame as vf_sys; +use webrtc_sys::video_frame as vf_sys; pub use vf_sys::ffi::VideoRotation; diff --git a/crates/livekit-webrtc/src/video_frame_buffer.rs b/livekit-webrtc/src/video_frame_buffer.rs similarity index 99% rename from crates/livekit-webrtc/src/video_frame_buffer.rs rename to livekit-webrtc/src/video_frame_buffer.rs index c85a123..06f65d3 100644 --- a/crates/livekit-webrtc/src/video_frame_buffer.rs +++ b/livekit-webrtc/src/video_frame_buffer.rs @@ -1,9 +1,9 @@ use cxx::UniquePtr; -use libwebrtc_sys::video_frame_buffer as vfb_sys; use livekit_utils::enum_dispatch; use std::pin::Pin; use std::slice; use vfb_sys::ffi::VideoFrameBufferType; +use webrtc_sys::video_frame_buffer as vfb_sys; pub trait VideoFrameBufferTrait { fn width(&self) -> i32; diff --git a/crates/livekit-webrtc/src/webrtc.rs b/livekit-webrtc/src/webrtc.rs similarity index 90% rename from crates/livekit-webrtc/src/webrtc.rs rename to livekit-webrtc/src/webrtc.rs index bc71c02..7803dd7 100644 --- a/crates/livekit-webrtc/src/webrtc.rs +++ b/livekit-webrtc/src/webrtc.rs @@ -1,6 +1,6 @@ use cxx::SharedPtr; -use libwebrtc_sys::webrtc as sys_rtc; +use webrtc_sys::webrtc as sys_rtc; #[derive(Clone)] pub struct RTCRuntime { diff --git a/crates/livekit-webrtc/src/yuv_helper.rs b/livekit-webrtc/src/yuv_helper.rs similarity index 96% rename from crates/livekit-webrtc/src/yuv_helper.rs rename to livekit-webrtc/src/yuv_helper.rs index 91a3f70..37d2886 100644 --- a/crates/livekit-webrtc/src/yuv_helper.rs +++ b/livekit-webrtc/src/yuv_helper.rs @@ -1,6 +1,6 @@ use std::convert::TryInto; -use libwebrtc_sys::yuv_helper as yuv_sys; +use webrtc_sys::yuv_helper as yuv_sys; pub fn i420_to_abgr( src_y: &[u8], diff --git a/crates/livekit-core/Cargo.toml b/livekit/Cargo.toml similarity index 74% rename from crates/livekit-core/Cargo.toml rename to livekit/Cargo.toml index 09f9c3a..5375c7d 100644 --- a/crates/livekit-core/Cargo.toml +++ b/livekit/Cargo.toml @@ -1,12 +1,13 @@ [package] -name = "livekit-core" +name = "livekit" version = "0.1.0" edition = "2021" license = "Apache-2.0" +description = "Native SDK for LiveKit" [dependencies] -livekit-webrtc = { path = "../livekit-webrtc" } -livekit-utils = { path = "../livekit-utils" } +livekit-webrtc = { path = "../livekit-webrtc", version = "0.1.0" } +livekit-utils = { path = "../livekit-utils", version = "0.1.0" } serde = { version = "1", features = ["derive"] } serde_json = "1.0" tokio-tungstenite = { version = "0.17.2", features = ["native-tls"] } diff --git a/crates/livekit-core/build.rs b/livekit/build.rs similarity index 100% rename from crates/livekit-core/build.rs rename to livekit/build.rs diff --git a/livekit/protocol b/livekit/protocol new file mode 160000 index 0000000..fa87d56 --- /dev/null +++ b/livekit/protocol @@ -0,0 +1 @@ +Subproject commit fa87d56355d2be35169732cf892ea7783d7ec6ea diff --git a/crates/livekit-core/src/lib.rs b/livekit/src/lib.rs similarity index 74% rename from crates/livekit-core/src/lib.rs rename to livekit/src/lib.rs index cb1ca08..048b964 100644 --- a/crates/livekit-core/src/lib.rs +++ b/livekit/src/lib.rs @@ -8,3 +8,6 @@ mod rtc_engine; mod signal_client; pub mod room; +pub mod webrtc { + pub use livekit_webrtc::*; +} diff --git a/crates/livekit-core/src/room/id.rs b/livekit/src/room/id.rs similarity index 100% rename from crates/livekit-core/src/room/id.rs rename to livekit/src/room/id.rs diff --git a/crates/livekit-core/src/room/mod.rs b/livekit/src/room/mod.rs similarity index 100% rename from crates/livekit-core/src/room/mod.rs rename to livekit/src/room/mod.rs diff --git a/crates/livekit-core/src/room/participant/local_participant.rs b/livekit/src/room/participant/local_participant.rs similarity index 100% rename from crates/livekit-core/src/room/participant/local_participant.rs rename to livekit/src/room/participant/local_participant.rs diff --git a/crates/livekit-core/src/room/participant/mod.rs b/livekit/src/room/participant/mod.rs similarity index 100% rename from crates/livekit-core/src/room/participant/mod.rs rename to livekit/src/room/participant/mod.rs diff --git a/crates/livekit-core/src/room/participant/remote_participant.rs b/livekit/src/room/participant/remote_participant.rs similarity index 100% rename from crates/livekit-core/src/room/participant/remote_participant.rs rename to livekit/src/room/participant/remote_participant.rs diff --git a/crates/livekit-core/src/room/publication/mod.rs b/livekit/src/room/publication/mod.rs similarity index 100% rename from crates/livekit-core/src/room/publication/mod.rs rename to livekit/src/room/publication/mod.rs diff --git a/crates/livekit-core/src/room/room_session.rs b/livekit/src/room/room_session.rs similarity index 100% rename from crates/livekit-core/src/room/room_session.rs rename to livekit/src/room/room_session.rs diff --git a/crates/livekit-core/src/room/track/audio_track.rs b/livekit/src/room/track/audio_track.rs similarity index 100% rename from crates/livekit-core/src/room/track/audio_track.rs rename to livekit/src/room/track/audio_track.rs diff --git a/crates/livekit-core/src/room/track/local_audio_track.rs b/livekit/src/room/track/local_audio_track.rs similarity index 100% rename from crates/livekit-core/src/room/track/local_audio_track.rs rename to livekit/src/room/track/local_audio_track.rs diff --git a/crates/livekit-core/src/room/track/local_track.rs b/livekit/src/room/track/local_track.rs similarity index 100% rename from crates/livekit-core/src/room/track/local_track.rs rename to livekit/src/room/track/local_track.rs diff --git a/crates/livekit-core/src/room/track/local_video_track.rs b/livekit/src/room/track/local_video_track.rs similarity index 100% rename from crates/livekit-core/src/room/track/local_video_track.rs rename to livekit/src/room/track/local_video_track.rs diff --git a/crates/livekit-core/src/room/track/mod.rs b/livekit/src/room/track/mod.rs similarity index 100% rename from crates/livekit-core/src/room/track/mod.rs rename to livekit/src/room/track/mod.rs diff --git a/crates/livekit-core/src/room/track/remote_audio_track.rs b/livekit/src/room/track/remote_audio_track.rs similarity index 100% rename from crates/livekit-core/src/room/track/remote_audio_track.rs rename to livekit/src/room/track/remote_audio_track.rs diff --git a/crates/livekit-core/src/room/track/remote_track.rs b/livekit/src/room/track/remote_track.rs similarity index 100% rename from crates/livekit-core/src/room/track/remote_track.rs rename to livekit/src/room/track/remote_track.rs diff --git a/crates/livekit-core/src/room/track/remote_video_track.rs b/livekit/src/room/track/remote_video_track.rs similarity index 100% rename from crates/livekit-core/src/room/track/remote_video_track.rs rename to livekit/src/room/track/remote_video_track.rs diff --git a/crates/livekit-core/src/room/track/video_track.rs b/livekit/src/room/track/video_track.rs similarity index 100% rename from crates/livekit-core/src/room/track/video_track.rs rename to livekit/src/room/track/video_track.rs diff --git a/crates/livekit-core/src/rtc_engine/lk_runtime.rs b/livekit/src/rtc_engine/lk_runtime.rs similarity index 100% rename from crates/livekit-core/src/rtc_engine/lk_runtime.rs rename to livekit/src/rtc_engine/lk_runtime.rs diff --git a/crates/livekit-core/src/rtc_engine/mod.rs b/livekit/src/rtc_engine/mod.rs similarity index 100% rename from crates/livekit-core/src/rtc_engine/mod.rs rename to livekit/src/rtc_engine/mod.rs diff --git a/crates/livekit-core/src/rtc_engine/pc_transport.rs b/livekit/src/rtc_engine/pc_transport.rs similarity index 100% rename from crates/livekit-core/src/rtc_engine/pc_transport.rs rename to livekit/src/rtc_engine/pc_transport.rs diff --git a/crates/livekit-core/src/rtc_engine/rtc_events.rs b/livekit/src/rtc_engine/rtc_events.rs similarity index 100% rename from crates/livekit-core/src/rtc_engine/rtc_events.rs rename to livekit/src/rtc_engine/rtc_events.rs diff --git a/crates/livekit-core/src/rtc_engine/rtc_session.rs b/livekit/src/rtc_engine/rtc_session.rs similarity index 100% rename from crates/livekit-core/src/rtc_engine/rtc_session.rs rename to livekit/src/rtc_engine/rtc_session.rs diff --git a/crates/livekit-core/src/signal_client/mod.rs b/livekit/src/signal_client/mod.rs similarity index 100% rename from crates/livekit-core/src/signal_client/mod.rs rename to livekit/src/signal_client/mod.rs diff --git a/crates/livekit-core/src/signal_client/signal_stream.rs b/livekit/src/signal_client/signal_stream.rs similarity index 100% rename from crates/livekit-core/src/signal_client/signal_stream.rs rename to livekit/src/signal_client/signal_stream.rs diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index f18044b..0000000 --- a/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -// export everything inside livekit-core -pub use livekit_core::*; - -pub mod webrtc { - pub use livekit_webrtc::*; -} diff --git a/crates/livekit-webrtc/libwebrtc-sys/.clang-format b/webrtc-sys/.clang-format similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/.clang-format rename to webrtc-sys/.clang-format diff --git a/crates/livekit-webrtc/libwebrtc-sys/.gitignore b/webrtc-sys/.gitignore similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/.gitignore rename to webrtc-sys/.gitignore diff --git a/crates/livekit-webrtc/libwebrtc-sys/Cargo.toml b/webrtc-sys/Cargo.toml similarity index 77% rename from crates/livekit-webrtc/libwebrtc-sys/Cargo.toml rename to webrtc-sys/Cargo.toml index d250c82..39a3d4b 100644 --- a/crates/livekit-webrtc/libwebrtc-sys/Cargo.toml +++ b/webrtc-sys/Cargo.toml @@ -1,8 +1,10 @@ [package] -name = "libwebrtc-sys" +name = "webrtc-sys" version = "0.1.0" edition = "2021" homepage = "https://livekit.io" +license = "Apache-2.0" +description = "Unsafe bindings to libwebrtc" [dependencies] cxx = "1.0" diff --git a/webrtc-sys/NOTICE b/webrtc-sys/NOTICE new file mode 100644 index 0000000..93c517c --- /dev/null +++ b/webrtc-sys/NOTICE @@ -0,0 +1,209 @@ +The build system and the bindings are inspired by arcas-io (https://github.com/arcas-io) +The Android build system is inspired by shiguredo (https://github.com/shiguredo/sora-cpp-sdk) + +** littlebearlabs/arcas-io MIT License "" +MIT License + +Copyright (c) 2022 arcas-io + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +Footer + +** Shiguredo Apache 2.0 License ** +Sora C++ SDK + +Copyright 2021-2022, Wandbox LLC (Original Author) + +Copyright 2021-2022, Shiguredo Inc. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/crates/livekit-webrtc/libwebrtc-sys/build.rs b/webrtc-sys/build.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/build.rs rename to webrtc-sys/build.rs diff --git a/crates/livekit-webrtc/libwebrtc-sys/compile_flags.txt b/webrtc-sys/compile_flags.txt similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/compile_flags.txt rename to webrtc-sys/compile_flags.txt diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/candidate.h b/webrtc-sys/include/livekit/candidate.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/candidate.h rename to webrtc-sys/include/livekit/candidate.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/data_channel.h b/webrtc-sys/include/livekit/data_channel.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/data_channel.h rename to webrtc-sys/include/livekit/data_channel.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/jsep.h b/webrtc-sys/include/livekit/jsep.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/jsep.h rename to webrtc-sys/include/livekit/jsep.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/media_stream.h b/webrtc-sys/include/livekit/media_stream.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/media_stream.h rename to webrtc-sys/include/livekit/media_stream.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/peer_connection.h b/webrtc-sys/include/livekit/peer_connection.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/peer_connection.h rename to webrtc-sys/include/livekit/peer_connection.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/peer_connection_factory.h b/webrtc-sys/include/livekit/peer_connection_factory.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/peer_connection_factory.h rename to webrtc-sys/include/livekit/peer_connection_factory.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/rtc_error.h b/webrtc-sys/include/livekit/rtc_error.h similarity index 92% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/rtc_error.h rename to webrtc-sys/include/livekit/rtc_error.h index 91ef258..88df94c 100644 --- a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/rtc_error.h +++ b/webrtc-sys/include/livekit/rtc_error.h @@ -6,7 +6,7 @@ #define CLIENT_SDK_NATIVE_RTC_ERROR_H #include "api/rtc_error.h" -#include "libwebrtc-sys/src/rtc_error.rs.h" +#include "webrtc-sys/src/rtc_error.rs.h" #include "rust/cxx.h" #include "rust_types.h" diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/rtp_receiver.h b/webrtc-sys/include/livekit/rtp_receiver.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/rtp_receiver.h rename to webrtc-sys/include/livekit/rtp_receiver.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/rtp_transceiver.h b/webrtc-sys/include/livekit/rtp_transceiver.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/rtp_transceiver.h rename to webrtc-sys/include/livekit/rtp_transceiver.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/rust_types.h b/webrtc-sys/include/livekit/rust_types.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/rust_types.h rename to webrtc-sys/include/livekit/rust_types.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/video_frame.h b/webrtc-sys/include/livekit/video_frame.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/video_frame.h rename to webrtc-sys/include/livekit/video_frame.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/video_frame_buffer.h b/webrtc-sys/include/livekit/video_frame_buffer.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/video_frame_buffer.h rename to webrtc-sys/include/livekit/video_frame_buffer.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/webrtc.h b/webrtc-sys/include/livekit/webrtc.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/webrtc.h rename to webrtc-sys/include/livekit/webrtc.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/include/livekit/yuv_helper.h b/webrtc-sys/include/livekit/yuv_helper.h similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/include/livekit/yuv_helper.h rename to webrtc-sys/include/livekit/yuv_helper.h diff --git a/crates/livekit-webrtc/libwebrtc-sys/libwebrtc/.gclient b/webrtc-sys/libwebrtc/.gclient similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/libwebrtc/.gclient rename to webrtc-sys/libwebrtc/.gclient diff --git a/crates/livekit-webrtc/libwebrtc-sys/libwebrtc/.gitignore b/webrtc-sys/libwebrtc/.gitignore similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/libwebrtc/.gitignore rename to webrtc-sys/libwebrtc/.gitignore diff --git a/crates/livekit-webrtc/libwebrtc-sys/libwebrtc/compile.py b/webrtc-sys/libwebrtc/compile.py similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/libwebrtc/compile.py rename to webrtc-sys/libwebrtc/compile.py diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/candidate.cpp b/webrtc-sys/src/candidate.cpp similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/candidate.cpp rename to webrtc-sys/src/candidate.cpp diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/candidate.rs b/webrtc-sys/src/candidate.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/candidate.rs rename to webrtc-sys/src/candidate.rs diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/data_channel.cpp b/webrtc-sys/src/data_channel.cpp similarity index 98% rename from crates/livekit-webrtc/libwebrtc-sys/src/data_channel.cpp rename to webrtc-sys/src/data_channel.cpp index e5be4b7..30d7e68 100644 --- a/crates/livekit-webrtc/libwebrtc-sys/src/data_channel.cpp +++ b/webrtc-sys/src/data_channel.cpp @@ -6,7 +6,7 @@ #include -#include "libwebrtc-sys/src/data_channel.rs.h" +#include "webrtc-sys/src/data_channel.rs.h" namespace livekit { diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/data_channel.rs b/webrtc-sys/src/data_channel.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/data_channel.rs rename to webrtc-sys/src/data_channel.rs diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/jsep.cpp b/webrtc-sys/src/jsep.cpp similarity index 99% rename from crates/livekit-webrtc/libwebrtc-sys/src/jsep.cpp rename to webrtc-sys/src/jsep.cpp index 6340a83..9bcebf0 100644 --- a/crates/livekit-webrtc/libwebrtc-sys/src/jsep.cpp +++ b/webrtc-sys/src/jsep.cpp @@ -7,7 +7,7 @@ #include #include -#include "libwebrtc-sys/src/jsep.rs.h" +#include "webrtc-sys/src/jsep.rs.h" #include "livekit/rtc_error.h" namespace livekit { diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/jsep.rs b/webrtc-sys/src/jsep.rs similarity index 99% rename from crates/livekit-webrtc/libwebrtc-sys/src/jsep.rs rename to webrtc-sys/src/jsep.rs index 4ba65c2..72ce2af 100644 --- a/crates/livekit-webrtc/libwebrtc-sys/src/jsep.rs +++ b/webrtc-sys/src/jsep.rs @@ -40,7 +40,7 @@ pub mod ffi { } unsafe extern "C++" { - include!("libwebrtc-sys/src/rtc_error.rs.h"); + include!("webrtc-sys/src/rtc_error.rs.h"); include!("livekit/jsep.h"); type RTCError = crate::rtc_error::ffi::RTCError; diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/lib.rs b/webrtc-sys/src/lib.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/lib.rs rename to webrtc-sys/src/lib.rs diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/media_stream.cpp b/webrtc-sys/src/media_stream.cpp similarity index 98% rename from crates/livekit-webrtc/libwebrtc-sys/src/media_stream.cpp rename to webrtc-sys/src/media_stream.cpp index b2758a3..ec8d0d1 100644 --- a/crates/livekit-webrtc/libwebrtc-sys/src/media_stream.cpp +++ b/webrtc-sys/src/media_stream.cpp @@ -5,7 +5,7 @@ #include "livekit/media_stream.h" #include "api/media_stream_interface.h" -#include "libwebrtc-sys/src/media_stream.rs.h" +#include "webrtc-sys/src/media_stream.rs.h" namespace livekit { diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/media_stream.rs b/webrtc-sys/src/media_stream.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/media_stream.rs rename to webrtc-sys/src/media_stream.rs diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/peer_connection.cpp b/webrtc-sys/src/peer_connection.cpp similarity index 99% rename from crates/livekit-webrtc/libwebrtc-sys/src/peer_connection.cpp rename to webrtc-sys/src/peer_connection.cpp index 1ad9738..dd512b3 100644 --- a/crates/livekit-webrtc/libwebrtc-sys/src/peer_connection.cpp +++ b/webrtc-sys/src/peer_connection.cpp @@ -5,7 +5,7 @@ #include "livekit/peer_connection.h" #include "livekit/media_stream.h" -#include "libwebrtc-sys/src/peer_connection.rs.h" +#include "webrtc-sys/src/peer_connection.rs.h" #include "livekit/rtc_error.h" namespace livekit { @@ -270,4 +270,4 @@ create_native_peer_connection_observer( return std::make_unique(rtc_runtime, std::move(observer)); } -} // namespace livekit \ No newline at end of file +} // namespace livekit diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/peer_connection.rs b/webrtc-sys/src/peer_connection.rs similarity index 99% rename from crates/livekit-webrtc/libwebrtc-sys/src/peer_connection.rs rename to webrtc-sys/src/peer_connection.rs index 688b7d3..cae7e1d 100644 --- a/crates/livekit-webrtc/libwebrtc-sys/src/peer_connection.rs +++ b/webrtc-sys/src/peer_connection.rs @@ -98,7 +98,7 @@ pub mod ffi { include!("livekit/rtp_transceiver.h"); include!("livekit/media_stream.h"); include!("livekit/candidate.h"); - include!("libwebrtc-sys/src/rtc_error.rs.h"); + include!("webrtc-sys/src/rtc_error.rs.h"); type RTCError = crate::rtc_error::ffi::RTCError; type Candidate = crate::candidate::ffi::Candidate; diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/peer_connection_factory.cpp b/webrtc-sys/src/peer_connection_factory.cpp similarity index 98% rename from crates/livekit-webrtc/libwebrtc-sys/src/peer_connection_factory.cpp rename to webrtc-sys/src/peer_connection_factory.cpp index 15c00b6..0392851 100644 --- a/crates/livekit-webrtc/libwebrtc-sys/src/peer_connection_factory.cpp +++ b/webrtc-sys/src/peer_connection_factory.cpp @@ -12,7 +12,7 @@ #include "api/task_queue/default_task_queue_factory.h" #include "api/video_codecs/builtin_video_decoder_factory.h" #include "api/video_codecs/builtin_video_encoder_factory.h" -#include "libwebrtc-sys/src/peer_connection_factory.rs.h" +#include "webrtc-sys/src/peer_connection_factory.rs.h" #include "livekit/rtc_error.h" #include "media/engine/webrtc_media_engine.h" diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/peer_connection_factory.rs b/webrtc-sys/src/peer_connection_factory.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/peer_connection_factory.rs rename to webrtc-sys/src/peer_connection_factory.rs diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/rtc_error.cpp b/webrtc-sys/src/rtc_error.cpp similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/rtc_error.cpp rename to webrtc-sys/src/rtc_error.cpp diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/rtc_error.rs b/webrtc-sys/src/rtc_error.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/rtc_error.rs rename to webrtc-sys/src/rtc_error.rs diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/rtp_receiver.cpp b/webrtc-sys/src/rtp_receiver.cpp similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/rtp_receiver.cpp rename to webrtc-sys/src/rtp_receiver.cpp diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/rtp_receiver.rs b/webrtc-sys/src/rtp_receiver.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/rtp_receiver.rs rename to webrtc-sys/src/rtp_receiver.rs diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/rtp_transceiver.cpp b/webrtc-sys/src/rtp_transceiver.cpp similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/rtp_transceiver.cpp rename to webrtc-sys/src/rtp_transceiver.cpp diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/rtp_transceiver.rs b/webrtc-sys/src/rtp_transceiver.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/rtp_transceiver.rs rename to webrtc-sys/src/rtp_transceiver.rs diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/video_frame.rs b/webrtc-sys/src/video_frame.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/video_frame.rs rename to webrtc-sys/src/video_frame.rs diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/video_frame_buffer.rs b/webrtc-sys/src/video_frame_buffer.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/video_frame_buffer.rs rename to webrtc-sys/src/video_frame_buffer.rs diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/webrtc.cpp b/webrtc-sys/src/webrtc.cpp similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/webrtc.cpp rename to webrtc-sys/src/webrtc.cpp diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/webrtc.rs b/webrtc-sys/src/webrtc.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/webrtc.rs rename to webrtc-sys/src/webrtc.rs diff --git a/crates/livekit-webrtc/libwebrtc-sys/src/yuv_helper.rs b/webrtc-sys/src/yuv_helper.rs similarity index 100% rename from crates/livekit-webrtc/libwebrtc-sys/src/yuv_helper.rs rename to webrtc-sys/src/yuv_helper.rs