Git Product home page Git Product logo

client-sdk-unity's Introduction

The LiveKit icon, the name of the repository and some sample code in the background.

LiveKit: Real-time video, audio and data for developers

LiveKit is an open source project that provides scalable, multi-user conferencing based on WebRTC. It's designed to provide everything you need to build real-time video audio data capabilities in your applications.

LiveKit's server is written in Go, using the awesome Pion WebRTC implementation.

GitHub stars Slack community Twitter Follow GitHub release (latest SemVer) GitHub Workflow Status License

Features

Documentation & Guides

https://docs.livekit.io

Live Demos

Ecosystem

  • Agents: build real-time multimodal AI applications with programmable backend participants
  • Egress: record or multi-stream rooms and export individual tracks
  • Ingress: ingest streams from external sources like RTMP, WHIP, HLS, or OBS Studio

SDKs & Tools

Client SDKs

Client SDKs enable your frontend to include interactive, multi-user experiences.

Language Repo Declarative UI Links
JavaScript (TypeScript) client-sdk-js React docs | JS example | React example
Swift (iOS / MacOS) client-sdk-swift Swift UI docs | example
Kotlin (Android) client-sdk-android Compose docs | example | Compose example
Flutter (all platforms) client-sdk-flutter native docs | example
Unity WebGL client-sdk-unity-web docs
React Native (beta) client-sdk-react-native native
Rust client-sdk-rust

Server SDKs

Server SDKs enable your backend to generate access tokens, call server APIs, and receive webhooks. In addition, the Go SDK includes client capabilities, enabling you to build automations that behave like end-users.

Language Repo Docs
Go server-sdk-go docs
JavaScript (TypeScript) server-sdk-js docs
Ruby server-sdk-ruby
Java (Kotlin) server-sdk-kotlin
Python (community) python-sdks
PHP (community) agence104/livekit-server-sdk-php

Tools

Install

Tip

We recommend installing LiveKit CLI along with the server. It lets you access server APIs, create tokens, and generate test traffic.

The following will install LiveKit's media server:

MacOS

brew install livekit

Linux

curl -sSL https://get.livekit.io | bash

Windows

Download the latest release here

Getting Started

Starting LiveKit

Start LiveKit in development mode by running livekit-server --dev. It'll use a placeholder API key/secret pair.

API Key: devkey
API Secret: secret

To customize your setup for production, refer to our deployment docs

Creating access token

A user connecting to a LiveKit room requires an access token. Access tokens (JWT) encode the user's identity and the room permissions they've been granted. You can generate a token with our CLI:

livekit-cli create-token \
    --api-key devkey --api-secret secret \
    --join --room my-first-room --identity user1 \
    --valid-for 24h

Test with example app

Head over to our example app and enter a generated token to connect to your LiveKit server. This app is built with our React SDK.

Once connected, your video and audio are now being published to your new LiveKit instance!

Simulating a test publisher

livekit-cli join-room \
    --url ws://localhost:7880 \
    --api-key devkey --api-secret secret \
    --room my-first-room --identity bot-user1 \
    --publish-demo

This command publishes a looped demo video to a room. Due to how the video clip was encoded (keyframes every 3s), there's a slight delay before the browser has sufficient data to begin rendering frames. This is an artifact of the simulation.

Deployment

Use LiveKit Cloud

LiveKit Cloud is the fastest and most reliable way to run LiveKit. Every project gets free monthly bandwidth and transcoding credits.

Sign up for LiveKit Cloud.

Self-host

Read our deployment docs for more information.

Building from source

Pre-requisites:

  • Go 1.22+ is installed
  • GOPATH/bin is in your PATH

Then run

git clone https://github.com/livekit/livekit
cd livekit
./bootstrap.sh
mage

Contributing

We welcome your contributions toward improving LiveKit! Please join us on Slack to discuss your ideas and/or PRs.

License

LiveKit server is licensed under Apache License v2.0.


LiveKit Ecosystem
Realtime SDKsReact Components · Browser · Swift Components · iOS/macOS/visionOS · Android · Flutter · React Native · Rust · Node.js · Python · Unity (web) · Unity (beta)
Server APIsNode.js · Golang · Ruby · Java/Kotlin · Python · Rust · PHP (community)
Agents FrameworksPython · Playground
ServicesLiveKit server · Egress · Ingress · SIP
ResourcesDocs · Example apps · Cloud · Self-hosting · CLI

client-sdk-unity's People

Contributors

cloudwebrtc avatar davidzhao avatar dsa avatar mohelm97 avatar sus-yoshikane-t avatar theomonnom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

client-sdk-unity's Issues

Android build crash

Hello,
I am trying to create an android build. I imported livekit_ffi amd64 android build into my project and built it. However the app crashes as soon as it is started. Below is the strack trace. Can you help me create build that works on android?

01-19 17:39:53.383 20126 20210 F libc    : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 20210 (tokio-runtime-w), pid 20126 (ultCompany.Test)
01-19 17:39:53.592 20247 20247 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-19 17:39:53.592 20247 20247 F DEBUG   : Build fingerprint: 'Xiaomi/amber_global/amber:12/SP1A.210812.016/V13.0.2.0.SKWMIXM:user/release-keys'
01-19 17:39:53.592 20247 20247 F DEBUG   : Revision: '0'
01-19 17:39:53.592 20247 20247 F DEBUG   : ABI: 'arm64'
01-19 17:39:53.592 20247 20247 F DEBUG   : Timestamp: 2024-01-19 17:39:53.429095439+0300
01-19 17:39:53.592 20247 20247 F DEBUG   : Process uptime: 0s
01-19 17:39:53.592 20247 20247 F DEBUG   : Cmdline: com.DefaultCompany.Test
01-19 17:39:53.592 20247 20247 F DEBUG   : pid: 20126, tid: 20210, name: tokio-runtime-w  >>> com.DefaultCompany.Test <<<
01-19 17:39:53.592 20247 20247 F DEBUG   : uid: 10451
01-19 17:39:53.592 20247 20247 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
01-19 17:39:53.592 20247 20247 F DEBUG   : Cause: null pointer dereference
01-19 17:39:53.592 20247 20247 F DEBUG   :     x0  0000000000000000  x1  00000073e08d4428  x2  0000000000010006  x3  00000073e08d4408
01-19 17:39:53.592 20247 20247 F DEBUG   :     x4  0000000000000000  x5  00000000ffffffff  x6  00000000ffffffff  x7  0000000000000000
01-19 17:39:53.592 20247 20247 F DEBUG   :     x8  0000007405112000  x9  00000074050e78c8  x10 00000000ffffffff  x11 000000741ee415fc
01-19 17:39:53.592 20247 20247 F DEBUG   :     x12 00000000000aedf9  x13 0000000000000001  x14 0000000000000001  x15 000019d62ec4f2ec
01-19 17:39:53.592 20247 20247 F DEBUG   :     x16 0000007601390d50  x17 00000076013808ec  x18 00000073af562000  x19 b4000074fab88be0
01-19 17:39:53.592 20247 20247 F DEBUG   :     x20 00000073e08ee000  x21 00000074050ebe20  x22 0000000000004eb6  x23 0000000000004e9e
01-19 17:39:53.592 20247 20247 F DEBUG   :     x24 00000073e08edcb0  x25 00000073e08edcb0  x26 00000073e08edff8  x27 0000000000204000
01-19 17:39:53.592 20247 20247 F DEBUG   :     x28 0000000000206000  x29 00000073e08d4430
01-19 17:39:53.592 20247 20247 F DEBUG   :     lr  00000074047ae7b8  sp  00000073e08d4420  pc  00000074047ae724  pst 0000000060001000
01-19 17:39:53.592 20247 20247 F DEBUG   : backtrace:
01-19 17:39:53.592 20247 20247 F DEBUG   :       #00 pc 0000000001531724  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (webrtc::jni::GetEnv()+40)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #01 pc 00000000015317b4  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (webrtc::jni::AttachCurrentThreadIfNeeded()+36)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #02 pc 0000000001b2fa00  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (livekit::CreateAndroidVideoEncoderFactory()+20)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #03 pc 0000000001b22694  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (livekit::VideoEncoderFactory::InternalFactory::InternalFactory()+84)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #04 pc 0000000001b23814  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::__ndk1::__unique_if<livekit::VideoEncoderFactory::InternalFactory>::__unique_single std::__ndk1::make_unique<livekit::VideoEncoderFactory::InternalFactory>()+40)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #05 pc 0000000001b23764  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (livekit::VideoEncoderFactory::VideoEncoderFactory()+72)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #06 pc 0000000001afa6f8  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::__ndk1::__unique_if<livekit::VideoEncoderFactory>::__unique_single std::__ndk1::make_unique<livekit::VideoEncoderFactory>()+32)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #07 pc 0000000001af9dbc  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (livekit::PeerConnectionFactory::PeerConnectionFactory(std::__ndk1::shared_ptr<livekit::RtcRuntime>)+944)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #08 pc 0000000001affe6c  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::__ndk1::__compressed_pair_elem<livekit::PeerConnectionFactory, 1, false>::__compressed_pair_elem<std::__ndk1::shared_ptr<livekit::RtcRuntime>&&, 0ul>(std::__ndk1::piecewise_construct_t, std::__ndk1::tuple<std::__ndk1::shared_ptr<livekit::RtcRuntime>&&>, std::__ndk1::__tuple_indices<0ul>)+84)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #09 pc 0000000001affafc  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::__ndk1::__compressed_pair<std::__ndk1::allocator<livekit::PeerConnectionFactory>, livekit::PeerConnectionFactory>::__compressed_pair<std::__ndk1::allocator<livekit::PeerConnectionFactory>&, std::__ndk1::shared_ptr<livekit::RtcRuntime>&&>(std::__ndk1::piecewise_construct_t, std::__ndk1::tuple<std::__ndk1::allocator<livekit::PeerConnectionFactory>&>, std::__ndk1::tuple<std::__ndk1::shared_ptr<livekit::RtcRuntime>&&>)+124)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #10 pc 0000000001aff780  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::__ndk1::__shared_ptr_emplace<livekit::PeerConnectionFactory, std::__ndk1::allocator<livekit::PeerConnectionFactory> >::__shared_ptr_emplace<std::__ndk1::shared_ptr<livekit::RtcRuntime> >(std::__ndk1::allocator<livekit::PeerConnectionFactory>, std::__ndk1::shared_ptr<livekit::RtcRuntime>&&)+132)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #11 pc 0000000001afb940  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::__ndk1::enable_if<!(is_array<livekit::PeerConnectionFactory>::value), std::__ndk1::shared_ptr<livekit::PeerConnectionFactory> >::type std::__ndk1::make_shared<livekit::PeerConnectionFactory, std::__ndk1::shared_ptr<livekit::RtcRuntime> >(std::__ndk1::shared_ptr<livekit::RtcRuntime>&&)+140)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #12 pc 0000000001afb880  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (livekit::create_peer_connection_factory()+40)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #13 pc 0000000001ada908  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (livekit$cxxbridge1$create_peer_connection_factory+40)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #14 pc 00000000014c1898  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (webrtc_sys::peer_connection_factory::ffi::create_peer_connection_factory::h8565095cbd1ec722+24)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #15 pc 00000000014846b8  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (_$LT$libwebrtc..imp..peer_connection_factory..PeerConnectionFactory$u20$as$u20$core..default..Default$GT$::default::h79cff856a6867958+116)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #16 pc 0000000000eff4e0  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (_$LT$libwebrtc..peer_connection_factory..PeerConnectionFactory$u20$as$u20$core..default..Default$GT$::default::hfc715128f623b6ca+16)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #17 pc 0000000000e873b8  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (livekit::rtc_engine::lk_runtime::LkRuntime::instance::hf46ab8fe5b6c1aee+264)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #18 pc 0000000000b31ca0  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (livekit::rtc_engine::EngineInner::connect::_$u7b$$u7b$closure$u7d$$u7d$::h291bde9b2c5a431a+240)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #19 pc 0000000000b33d00  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (livekit::rtc_engine::RtcEngine::connect::_$u7b$$u7b$closure$u7d$$u7d$::hc7e5053bf663b96c+508)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #20 pc 0000000000a3de5c  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (livekit::room::Room::connect::_$u7b$$u7b$closure$u7d$$u7d$::hd42e7d641a6122e5+888)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #21 pc 0000000000adaf6c  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (livekit_ffi::server::room::FfiRoom::connect::_$u7b$$u7b$closure$u7d$$u7d$::hacf580472749dcbc+708)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #22 pc 00000000009ef178  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::core::Core$LT$T$C$S$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$::hbcb2b2234ef4eb57+144)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #23 pc 00000000009ec370  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::core::Core$LT$T$C$S$GT$::poll::hefe87aa6be814a66+96)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #24 pc 0000000000a5919c  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::harness::poll_future::_$u7b$$u7b$closure$u7d$$u7d$::h0b69c9636c54b483+44)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #25 pc 0000000000a2ebec  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (_$LT$core..panic..unwind_safe..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::hf557a2bfa5c5699f+24)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #26 pc 0000000000a9dbfc  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::panicking::try::do_call::h1c6335a86a634aaa+64)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #27 pc 0000000000aa9698  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (__rust_try+24)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #28 pc 0000000000a98bf8  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::panicking::try::h818f9471e99ac7aa+80)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #29 pc 00000000009bd058  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::panic::catch_unwind::ha3ea7f431ebd3071+24)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #30 pc 0000000000a55988  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::harness::poll_future::h80db88ae8356c478+72)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #31 pc 0000000000a5e128  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::harness::Harness$LT$T$C$S$GT$::poll_inner::h8e2a59d610ab8385+144)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #32 pc 0000000000a670cc  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::harness::Harness$LT$T$C$S$GT$::poll::h9ecb66586043a35c+20)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #33 pc 0000000000aebd38  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::raw::poll::h900ba60d19b3063a+28)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #34 pc 0000000001b81f30  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::raw::RawTask::poll::h8cda193022f22c07+44)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #35 pc 0000000001baafcc  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::LocalNotified$LT$S$GT$::run::h70890524e3af2aea+36)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #36 pc 0000000001bcef50  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::scheduler::multi_thread::worker::Context::run_task::_$u7b$$u7b$closure$u7d$$u7d$::h6ccef82e0cd51cd6+40)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #37 pc 0000000001bcee30  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::scheduler::multi_thread::worker::Context::run_task::h2c27a1f09e34afa3+736)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #38 pc 0000000001bce740  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::scheduler::multi_thread::worker::Context::run::h5bbeb71867da7ad3+536)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #39 pc 0000000001bce460  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::scheduler::multi_thread::worker::run::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h19bf5a0a6efaf5b7+96)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #40 pc 0000000001b75fb8  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::context::scoped::Scoped$LT$T$GT$::set::hc3ea689a60ca2cf8+140)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #41 pc 0000000001bbbc28  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::context::set_scheduler::_$u7b$$u7b$closure$u7d$$u7d$::haf8799ebb3527ff4+32)
01-19 17:39:53.592 20247 20247 F DEBUG   :       #42 pc 0000000001bd7024  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::thread::local::LocalKey$LT$T$GT$::try_with::hf8b678840adc06dc+308)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #43 pc 0000000001bd4cdc  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::thread::local::LocalKey$LT$T$GT$::with::h3e0aa759854c23cc+16)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #44 pc 0000000001bbbbbc  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::context::set_scheduler::h94af447cfc8938a2+60)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #45 pc 0000000001bce384  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::scheduler::multi_thread::worker::run::_$u7b$$u7b$closure$u7d$$u7d$::hf78370f8a4a6e572+268)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #46 pc 0000000001ba1880  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::context::runtime::enter_runtime::ha216a2fd523c216d+228)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #47 pc 0000000001bce1bc  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::scheduler::multi_thread::worker::run::h81fb8dfc713db6bf+360)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #48 pc 0000000001bce044  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::scheduler::multi_thread::worker::Launch::launch::_$u7b$$u7b$closure$u7d$$u7d$::hbba6b040eacaaa28+16)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #49 pc 0000000001bdb2d0  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (_$LT$tokio..runtime..blocking..task..BlockingTask$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$::poll::ha212ec7581772350+128)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #50 pc 0000000001b70158  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::core::Core$LT$T$C$S$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$::hb633b3140a58a750+144)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #51 pc 0000000001b6fcb8  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::core::Core$LT$T$C$S$GT$::poll::h81253fc94e84f192+96)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #52 pc 0000000001b970b4  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::harness::poll_future::_$u7b$$u7b$closure$u7d$$u7d$::h899a941ffecbd3b8+44)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #53 pc 0000000001ba6acc  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (_$LT$core..panic..unwind_safe..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::hd1f3e82528aeb5c2+24)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #54 pc 0000000001be54dc  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::panicking::try::do_call::h1cdab1d90162870b+64)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #55 pc 0000000001be6dd4  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (__rust_try+24)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #56 pc 0000000001be50c0  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::panicking::try::hc46a377b6ddd7849+80)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #57 pc 0000000001b97fe4  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::panic::catch_unwind::h5da8c3f9eaecbf97+24)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #58 pc 0000000001b96d44  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::harness::poll_future::hbf86e982b2f6cce8+72)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #59 pc 0000000001b94810  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::harness::Harness$LT$T$C$S$GT$::poll_inner::h660cfc2d7dc0f743+144)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #60 pc 0000000001b94504  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::harness::Harness$LT$T$C$S$GT$::poll::h32c0fbf81532f2c1+20)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #61 pc 0000000001b82268  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::raw::poll::h0e4664b9c139c3de+28)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #62 pc 0000000001b81f30  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::raw::RawTask::poll::h8cda193022f22c07+44)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #63 pc 0000000001bab090  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::task::UnownedTask$LT$S$GT$::run::h9767a156756d8fbc+56)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #64 pc 0000000001b76a88  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::blocking::pool::Task::run::ha6600eb2c543f9a9+24)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #65 pc 0000000001b78f08  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::blocking::pool::Inner::run::h651c29705d93ea4a+424)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #66 pc 0000000001b78cc0  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (tokio::runtime::blocking::pool::Spawner::spawn_thread::_$u7b$$u7b$closure$u7d$$u7d$::h7d8e03591bf42e54+136)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #67 pc 0000000001b93c14  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::sys_common::backtrace::__rust_begin_short_backtrace::hff1987da1398c418+8)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #68 pc 0000000001b98f6c  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::thread::Builder::spawn_unchecked_::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::hf16fa6e0feaef42b+32)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #69 pc 0000000001ba6840  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (_$LT$core..panic..unwind_safe..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h32ba7b3e99b6e407+32)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #70 pc 0000000001be5790  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::panicking::try::do_call::h645e1a278415bb7d+64)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #71 pc 0000000001be6dd4  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (__rust_try+24)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #72 pc 0000000001be49b4  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::panicking::try::h6ce0f73ef1aa09e7+68)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #73 pc 0000000001b98de8  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::thread::Builder::spawn_unchecked_::_$u7b$$u7b$closure$u7d$$u7d$::h065b5b893d9c79a7+392)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #74 pc 0000000001b9903c  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h0b8c489fb6084d22+16)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #75 pc 0000000001d476e8  /data/app/~~gnXD98tDqsALTbriVMYR4Q==/com.DefaultCompany.Test-aqjWXsJ9XNghksrr3H7scQ==/lib/arm64/liblivekit_ffi.so (std::sys::unix::thread::Thread::new::thread_start::h55e87d06cdc1bad4+24)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #76 pc 00000000000eae70  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+204) (BuildId: 4cbc2a7636b3e0b018386ca8427ddf9b)
01-19 17:39:53.593 20247 20247 F DEBUG   :       #77 pc 000000000008a82c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: 4cbc2a7636b3e0b018386ca8427ddf9b

Not working in WEBXR

im trying to make the screensharing work on webxr, but while on normal webgl client works like a charm in webxr it doesnt work at all.
im only able to see my screenshare if i launch the screenshare locally ( using oculus link ), the webxr client now renders the video but the information is not passed to the other clients.

Incoming video stream error and freeze

After I connect to a room with an incoming video stream I receive this error. Immediately, or shortly after, the video stream freezes.

ArgumentException: An item with the same key has already been added. Key: TR_AMYztorQqvg26S
System.Collections.Generic.Dictionary`2[TKey,TValue].TryInsert (TKey key, TValue value, System.Collections.Generic.InsertionBehavior behavior) (at <6aa56e57ab504395b555cf3ed50fa53d>:0)
System.Collections.Generic.Dictionary`2[TKey,TValue].Add (TKey key, TValue value) (at <6aa56e57ab504395b555cf3ed50fa53d>:0)
LiveKit.Room.OnEventReceived (LiveKit.Proto.RoomEvent e) (at ./Library/PackageCache/io.livekit.livekit-sdk@60ae9e2e41/Runtime/Scripts/Room.cs:94)
LiveKit.Internal.FfiClient+<>c.<FFICallback>b__33_0 (System.Object resp) (at ./Library/PackageCache/io.livekit.livekit-sdk@60ae9e2e41/Runtime/Scripts/Internal/FFIClient.cs:149)

Cannot publish a texture stream

After following the Readme I have succeeded in publishing a Microphone stream, but I don't see any evidence that a video stream is working.

I'm using https://example.livekit.io/ to test.

I started by copy-pasting code from the Readme, but when that didn't provide a stream I refactored it to use async/await:

        private async Task PublishTexture()
        {
            var rt = new UnityEngine.RenderTexture(1920, 1080, 24, RenderTextureFormat.ARGB32);
            rt.Create();
            Camera.main.targetTexture = rt;
            var publish = _room.LocalParticipant.PublishTrack(
                 LocalVideoTrack.CreateVideoTrack("my-track", new TextureVideoSource(rt)),
                 new TrackPublishOptions { VideoCodec = VideoCodec.H264, Source = TrackSource.SourceScreenshare });
            while (!publish.IsDone)
                await Task.Yield();
            if (publish.IsError)
                Debug.LogError("There was an error publishing your videos.");
        }

Error on the 2nd time sharing screen

I can share my screen from the example site and it works as expected. Then stopping the share correctly gives me the TrackUnpublished event so I can remove the video. But then if I share my screen again, I get the following error:

KeyNotFoundException: The given key 'TR_VSDiiQDFQVbUXU' was not present in the dictionary.
System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) (at <6aa56e57ab504395b555cf3ed50fa53d>:0)
LiveKit.Room.OnEventReceived (LiveKit.Proto.RoomEvent e) (at ./Library/PackageCache/io.livekit.livekit-sdk@60ae9e2e41/Runtime/Scripts/Room.cs:112)
LiveKit.Internal.FfiClient+<>c.<FFICallback>b__33_0 (System.Object resp) (at ./Library/PackageCache/io.livekit.livekit-sdk@60ae9e2e41/Runtime/Scripts/Internal/FFIClient.cs:149)

👣 Steps to reproduce

  1. Connect to a room from Unity
  2. Connect to the same room from https://example.livekit.io
  3. Share screen from web
  4. Stop sharing from web
  5. Share screen from web again

Remote AudioSource has an echo

The remote audio source still has an echo, even after I tried playing the audio remotely to process it through the AudioProcessing module.

Specific steps:

Join the room on device A and subscribe to the track.
Join the same room on device B, but do not subscribe to the track. Create an audio track on device B and play a WAV file through AudioSource.
Expected result:

The WAV file's sound should not be heard on device B.
The sound should be heard on device A, synchronized from device B.
Actual result:

Device A can hear the sound.
Device B hears an echo.

I suspect it has something to do with the way Unity renders sound.

Track Stats

Hi~
How to get Remoteparticipant Track Stats in unity sdk

How stable is the unity android livekit SDK as of now? Any plans on iOS support?

I'm planning to build a 2D unity app for mobile (initially android) where people can create audio only rooms (of around 10 participants each). All of them can communicate at once.

There would be a number of such rooms at a given time.

  1. How stable is the unity android SDK as of now for this use case?
  2. Any plans on iOS support?

README throws error in Unity 2022.3.9f

Continuously throws the following error:
Asset Packages/io.livekit.livekit-sdk/README.md has no meta file, but it's in an immutable folder. The asset will be ignored.

Feature Request: Process audio played by local AudioSource through the ADM module to achieve echo cancellation

Hi,team.
We have some requirements where, during livekit calls, the local system might play audio that includes voices. We need to separate this audio from the microphone input, ensuring that the microphone does not capture the audio we are playing ourselves.

just like loopback loopback options

Whether to only play music files on the local client: YES : Only play music files on the local client so that only the local user can hear the music. NO : Publish music files to remote clients so that both the local user and remote users can hear the music.

Memory leak on incoming audio

Hi.
I am currently implementing an audio exchange and the audio communication is correct.
However, I was experiencing memory leaks, so I did a little investigating.

I am calling the AudioStream constructor in the callback registered to the TrackSubscribed event of the Room class instance, but if I comment out that part, the memory leak goes away.
In particular, I have confirmed that it is possible to reduce the memory leakage a little by changing the part of the OnAudioStreamEvent method of the AudioStream class that creates an instance of the AudioFrame class to a using statement.
However, the memory leakage is not completely eliminated, so there may be other causes.

Error when building on Windows

After adding LiveKit SDK to my project, I can no longer build due to the following error:

Library\PackageCache\io.livekit.livekit-sdk@60ae9e2e41\Runtime\Scripts\Internal\FFIClient.cs(69,13): error CS0176Member 'FfiClient.Initialize()' cannot be accessed with an instance reference; qualify it with a type name instead

Samples folder is not installed and is zero bytes

Package Manager was not able to install the Samples folder because it didn't exist:

[Package Manager Window] Cannot import sample Example: The path C:/Users/leepr/Documents/unity_workshop/Netcode/NetCode_Basics/Library/PackageCache/io.livekit.livekit-sdk@60ae9e2e41/Samples~ does not exist.
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

I added the folder manually but it only installed an empty folder. The Samples install from the Package Manager shows as zero bytes so there was nothing to install.

Unity 2022.3.9f

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.