Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
309 commits
Select commit Hold shift + click to select a range
2ccabe1
Log signaling URL
ladvoc May 22, 2025
f5d9207
Begin signaling implementation
ladvoc May 22, 2025
9e4b07a
Use fixed size field
ladvoc May 22, 2025
39f49ae
Clear README
ladvoc May 22, 2025
956bc0a
Merge remote-tracking branch 'origin/main' into livekit-demo
ladvoc May 22, 2025
e6a3bb0
Logging
ladvoc May 23, 2025
32b1b24
Forward signaling messages
ladvoc May 28, 2025
4f69b64
Accept media provider
ladvoc May 28, 2025
36d6260
Pass media provider
ladvoc May 28, 2025
620a05e
Accept server URL and token via env
ladvoc May 28, 2025
baf79c3
Refactor signaling message handling
ladvoc May 28, 2025
9cbf8d1
Implement outgoing ping
ladvoc May 29, 2025
c3c26ac
Refactor
ladvoc May 29, 2025
c702793
Create engine
ladvoc May 30, 2025
4688eb7
Reorganize into separate components
ladvoc May 30, 2025
2368faa
Rename engine symbols
ladvoc May 30, 2025
c143d03
Use LiveKit signaling implementation
ladvoc May 30, 2025
8d0e8b0
Use default peer implementation
ladvoc May 30, 2025
e658b79
Create engine with new room
ladvoc May 30, 2025
e40cb0a
Integrate into demo
ladvoc May 30, 2025
6c95725
Rename
ladvoc May 30, 2025
01122b8
Refactor signaling client
ladvoc May 31, 2025
6adcae0
Use void return type
ladvoc May 31, 2025
7c65263
Refactor engine
ladvoc May 31, 2025
9518f64
Integrate refactored engine
ladvoc May 31, 2025
e6f194f
Pass URL and token to connect method
ladvoc May 31, 2025
04bb2e1
Fix
ladvoc May 31, 2025
4f452e0
Move protocol headers into proper directory
ladvoc May 31, 2025
a688a9e
Error on unmatched
ladvoc May 31, 2025
dd26c73
Remove unnecessary directives
ladvoc May 31, 2025
ee13bfc
Forward to engine by default
ladvoc May 31, 2025
6657453
Implement set media provider
ladvoc May 31, 2025
9c93d74
Create peer wrapper
ladvoc Jun 3, 2025
c9f20da
Set nanopb options
ladvoc Jun 4, 2025
c5c0665
Support setting ICE servers
ladvoc Jun 4, 2025
ea97acc
Set protocol options
ladvoc Jun 4, 2025
1624f1e
Use dynamic allocation for sdp and candidateInit
ladvoc Jun 4, 2025
6b7b0b7
Handle multiple ICE urls
ladvoc Jun 4, 2025
c2ec48d
Regenerate proto
ladvoc Jun 4, 2025
bd9a522
Integrate peer in engine
ladvoc Jun 4, 2025
b0d199b
Print string description of incoming signal res
ladvoc Jun 4, 2025
3f66b21
Use calloc
ladvoc Jun 4, 2025
e3de31d
Peer connect on join
ladvoc Jun 5, 2025
03c2d2b
Set explicit default peer config
ladvoc Jun 5, 2025
a717a62
Add pc tasks to thread scheduler
ladvoc Jun 5, 2025
c9bf868
Rename
ladvoc Jun 5, 2025
340cda0
Perform time sync
ladvoc Jun 5, 2025
cd40acb
Fix inverted condition
ladvoc Jun 5, 2025
6a51ee8
Use higher level events
ladvoc Jun 6, 2025
7ffdb0d
Separate send methods
ladvoc Jun 6, 2025
38fb28e
Disable extraneous logging
ladvoc Jun 6, 2025
8030d37
Add field number to log output
ladvoc Jun 6, 2025
20a0566
Update for refactored signal client
ladvoc Jun 6, 2025
1c61dda
Refactor
ladvoc Jun 6, 2025
b957eb2
Require peer default
ladvoc Jun 6, 2025
11f4095
Require JSON
ladvoc Jun 6, 2025
5e7eef0
DIsable extraneous logging
ladvoc Jun 6, 2025
678d0df
Add peer connect options
ladvoc Jun 6, 2025
4bb7e1c
Expose client configuration options
ladvoc Jun 6, 2025
4f883fa
Pass peer connect options
ladvoc Jun 6, 2025
1747325
Fix syntax error
ladvoc Jun 6, 2025
76492ff
Automatically discard deprecated fields
ladvoc Jun 6, 2025
394e43e
Expose participant permissions
ladvoc Jun 6, 2025
d0c3db4
Clean up
ladvoc Jun 7, 2025
0ec009d
Set to null after disconnect
ladvoc Jun 7, 2025
904376b
Set media capabilities
ladvoc Jun 7, 2025
f4615b5
Prefix generated protocol types
ladvoc Jun 7, 2025
e48e038
Rename
ladvoc Jun 7, 2025
fc0469a
Expose room options
ladvoc Jun 10, 2025
64806cd
Open data channels once peer connected
ladvoc Jun 10, 2025
19501d3
Reorder arguments
ladvoc Jun 10, 2025
c462adb
Remove extra close invocation
ladvoc Jun 10, 2025
7e7c7ba
Sandbox token generation
ladvoc Jun 11, 2025
45ffa1d
Fix memory leak
ladvoc Jun 12, 2025
c7e0095
Give engine ownership of ICE servers
ladvoc Jun 12, 2025
7893a05
Use single method for sending requests
ladvoc Jun 12, 2025
1367ece
Remove method
ladvoc Jun 12, 2025
20a6eee
Refactor ping task
ladvoc Jun 12, 2025
39360ba
Refactor component lifecycles
ladvoc Jun 12, 2025
c2d9b59
Rename symbols
ladvoc Jun 12, 2025
234ffc7
Integrate media setup
ladvoc Jun 12, 2025
c272d3d
Remove extraneous includes
ladvoc Jun 12, 2025
12ede87
Docs
ladvoc Jun 12, 2025
e04e001
Set options for AddTrackRequest
ladvoc Jun 12, 2025
21cc8cf
Remove unused fields
ladvoc Jun 12, 2025
ef70d45
Set options for data packet types
ladvoc Jun 12, 2025
6ace7e7
Ignore field
ladvoc Jun 13, 2025
c3d5598
Implement publish data
ladvoc Jun 13, 2025
6443716
Handle incoming data packets
ladvoc Jun 13, 2025
51802fa
Docs
ladvoc Jun 13, 2025
a27ac5b
Support add track request
ladvoc Jun 13, 2025
0eb2130
Update README
ladvoc Jun 14, 2025
e264313
Document protocol component
ladvoc Jun 14, 2025
3f6ff7e
Docs
ladvoc Jun 14, 2025
51cacf1
Configure fields
ladvoc Jun 14, 2025
d14bf6b
Media setup
ladvoc Jun 14, 2025
a920350
Disable AEC
ladvoc Jun 14, 2025
556c833
Default playback volume
ladvoc Jun 14, 2025
672dc4d
Build fix
ladvoc Jun 14, 2025
977ac06
Audio publish support
ladvoc Jun 14, 2025
66df8ac
Update README
ladvoc Jun 16, 2025
4e35b7d
What I needed to make this work (#1)
yepher Jun 16, 2025
08a491c
Cwilson/add token env var (#3)
yepher Jun 19, 2025
c80ada7
Rename
ladvoc Jun 17, 2025
a92d15d
New connection for both peers
ladvoc Jun 17, 2025
8f49498
Use timer for ping
ladvoc Jun 18, 2025
4dfb7e9
Simplify
ladvoc Jun 18, 2025
6a15a1e
Merge engine and signaling components
ladvoc Jun 18, 2025
69ccbef
Create utils
ladvoc Jun 18, 2025
a04ee54
Move build URL
ladvoc Jun 19, 2025
3580703
Attach client info to signaling URL
ladvoc Jun 19, 2025
a38de41
Update protocol to v1.39.2
ladvoc Jun 19, 2025
db197f3
Simplify
ladvoc Jun 19, 2025
ca8412f
Comment
ladvoc Jun 19, 2025
40fd6de
Logging
ladvoc Jun 19, 2025
79e2fbb
Send with portMAX_DELAY
ladvoc Jun 19, 2025
63a7e38
Remove redefined macro
ladvoc Jun 19, 2025
b10f9f0
Disable auto subscribe
ladvoc Jun 19, 2025
7d3893c
Logging
ladvoc Jun 19, 2025
d2dd6d4
Fix compiler warning
ladvoc Jun 19, 2025
fb17419
Logging
ladvoc Jun 19, 2025
df7fc00
Only require room and participant name when using sandbox
ladvoc Jun 19, 2025
abda59b
Increase WebSocket buffer size and timeouts
ladvoc Jun 19, 2025
7072173
Sub troubleshoot
ladvoc Jun 20, 2025
25c61b5
Refactor peer lifecycle
ladvoc Jun 20, 2025
427436c
Enable room subscribe
ladvoc Jun 20, 2025
2f28cf8
Re-enable publisher PC
ladvoc Jun 25, 2025
43652ff
Allow TCP candidates
ladvoc Jun 25, 2025
ecf1bf6
Remove condition
ladvoc Jun 25, 2025
d5a4edc
Reduce signaling reconnect timeout
ladvoc Jun 25, 2025
093cd40
Remove assertions
ladvoc Jun 25, 2025
da8c7fe
Remove comment
ladvoc Jun 25, 2025
46efc93
Pass subscriber media to engine
ladvoc Jun 25, 2025
464eb8e
Support sub audio rendering
ladvoc Jun 25, 2025
06b1dee
Set signaling options
ladvoc Jun 26, 2025
f80d75b
Add check for subscriber primary
ladvoc Jun 26, 2025
b6c49c9
Enable AEC
ladvoc Jun 26, 2025
2421775
Temporarily disable ICE servers
ladvoc Jun 26, 2025
63686d9
Ensure token is not empty
ladvoc Jun 27, 2025
90dfca3
Handle leave requests from server
ladvoc Jun 28, 2025
baa4e9a
Move WebSocket options
ladvoc Jun 28, 2025
bf02841
Remove unused field
ladvoc Jun 28, 2025
744fa19
Improve peer state handling
ladvoc Jun 28, 2025
42f914b
Format
ladvoc Jun 28, 2025
b86aed0
Add null check
ladvoc Jun 28, 2025
2b292ea
Sandbox token enhancements
ladvoc Jul 1, 2025
767609a
Consolidate components
ladvoc Jul 1, 2025
9d68a0c
Remove file prefixes
ladvoc Jul 1, 2025
e939470
Add extern C
ladvoc Jul 1, 2025
a3daa96
Remove prefix
ladvoc Jul 1, 2025
7af17b5
Add khash component
ladvoc Jul 4, 2025
57b93ea
Initial support for RPC
ladvoc Jul 4, 2025
a51b5dc
Use application error code
ladvoc Jul 4, 2025
47c07fd
Add RPC handlers to demo
ladvoc Jul 4, 2025
c6214b1
Allow access to board LEDs
ladvoc Jul 4, 2025
bcb3814
Enable LED control via RPC
ladvoc Jul 4, 2025
cb89a78
Add demo agent
ladvoc Jul 4, 2025
83abf00
Document agent
ladvoc Jul 7, 2025
8c0b086
Migrate from solutions repo
ladvoc Jul 8, 2025
bc567cd
Relocate nanopb component
ladvoc Jul 8, 2025
a79cca4
Relocate khash component
ladvoc Jul 8, 2025
488be40
Relocate core components
ladvoc Jul 8, 2025
329607e
Move third party deps to subdirectory
ladvoc Jul 8, 2025
9f28ac0
Move to examples directory
ladvoc Jul 8, 2025
b7cf16a
Rename example
ladvoc Jul 8, 2025
9a8151b
Add linguist attributes
ladvoc Jul 8, 2025
bb23b27
Add common as a dependency
ladvoc Jul 8, 2025
d36de3c
Add README
ladvoc Jul 8, 2025
40077cc
Move deps to SDK component
ladvoc Jul 8, 2025
2c01ded
Add fields to component manifest
ladvoc Jul 8, 2025
614d9bb
Add khash component manifest and license
ladvoc Jul 9, 2025
0842acc
Add fields to nanopb component manifest
ladvoc Jul 9, 2025
324aea0
Add issue config
ladvoc Jul 9, 2025
8d2894f
Add Doxygen configuration
ladvoc Jul 9, 2025
7865d79
Refine docs
ladvoc Jul 9, 2025
5ae8575
Add doc build workflow
ladvoc Jul 9, 2025
648c81f
Deploy docs
ladvoc Jul 10, 2025
2f94336
Patch peer default
ladvoc Jul 10, 2025
b40fa1a
Merge pull request #4 from livekit/migrate
ladvoc Jul 10, 2025
bac2c96
Refactor publish data
ladvoc Jul 10, 2025
c47782e
Add support for receiving data packets
ladvoc Jul 10, 2025
b4a3a2e
Docs
ladvoc Jul 10, 2025
a7172e9
Add esp-webrtc-solution submodule
ladvoc Jul 10, 2025
183b6fa
Use deps from submodule
ladvoc Jul 10, 2025
1aca5aa
Remove vendored deps
ladvoc Jul 10, 2025
0b8778b
Use esp-webrtc-solution v1.0.0
ladvoc Jul 10, 2025
9406031
Use esp-webrtc-solution HEAD
ladvoc Jul 11, 2025
ac89ea1
Use BSP for demo
ladvoc Jul 11, 2025
f9dd064
Handle thread scheduler internally
ladvoc Jul 11, 2025
5338582
Use I2C 0 for BSP
ladvoc Jul 11, 2025
7a5e7d5
Remove string mapping function
ladvoc Jul 11, 2025
48df2e4
Fix warnings
ladvoc Jul 12, 2025
8ac57e6
Room connection state
ladvoc Jul 15, 2025
d3e10cb
Remove unused types
ladvoc Jul 15, 2025
ac177b0
Room and participant info
ladvoc Jul 15, 2025
2a95be1
Doc style
ladvoc Jul 15, 2025
3866279
Minor doc fixes
ladvoc Jul 15, 2025
bac6e46
Fill in README
ladvoc Jul 15, 2025
6df3599
Add banner and repo nav
ladvoc Jul 15, 2025
b1b74fb
Set env vars
ladvoc Jul 12, 2025
9f0cebf
Use Kconfig for common component
ladvoc Jul 16, 2025
8f9c201
Update example README
ladvoc Jul 16, 2025
cbc465c
Fix undefined build var
ladvoc Jul 16, 2025
566fbe6
Fix warning
ladvoc Jul 16, 2025
24114ee
Update READMEs
ladvoc Jul 16, 2025
bea0b74
Remove unused files
ladvoc Jul 16, 2025
81b74c4
Remove unused includes
ladvoc Jul 16, 2025
3b9488f
Patch peer default
ladvoc Jul 16, 2025
60c3de5
Simplify and document media setup
ladvoc Jul 16, 2025
edda895
Remove repl setup
ladvoc Jul 16, 2025
3fef7b9
Remove macro from main
ladvoc Jul 16, 2025
26c23cf
Remove loop from app main
ladvoc Jul 16, 2025
b2e9e62
Rename file
ladvoc Jul 16, 2025
2d67892
Trim build
ladvoc Jul 16, 2025
88ee509
Remove env vars from CI
ladvoc Jul 16, 2025
8f0dbae
Minimum IDF version
ladvoc Jul 16, 2025
577f1c2
Upgrade to esp-webrtc-solution v1.2
ladvoc Jul 16, 2025
7957057
Update IDF Docker tags
ladvoc Jul 16, 2025
2fc5e2d
Rename step
ladvoc Jul 16, 2025
16aa970
Fix identifier
ladvoc Jul 16, 2025
c253149
Data channel upgrade
ladvoc Jul 17, 2025
53b76f6
Log level
ladvoc Jul 17, 2025
159e3c4
Rename file
ladvoc Jul 17, 2025
be9a3c7
Set board type with kconfig
ladvoc Jul 17, 2025
963d46c
Set default target
ladvoc Jul 17, 2025
ac13187
Reorganize READMEs
ladvoc Jul 17, 2025
43293c4
Enhance RPC handler
ladvoc Jul 17, 2025
7210cc8
Add method to get connection state string
ladvoc Jul 17, 2025
d6e4563
Docs
ladvoc Jul 17, 2025
47ae0e7
Enhance example
ladvoc Jul 17, 2025
a990d81
Remove unnecessary line
ladvoc Jul 17, 2025
418cdfd
Reorder
ladvoc Jul 17, 2025
2198887
Simplify
ladvoc Jul 17, 2025
e44a7ce
Remove p4 config for now
ladvoc Jul 17, 2025
2fd6934
Move voice agent docs to dedicated README
ladvoc Jul 18, 2025
bc02dfb
Add disclaimer
ladvoc Jul 18, 2025
67869ba
Mark optional config fields
ladvoc Jul 18, 2025
7a54df9
Use void return type
ladvoc Jul 18, 2025
1cfac51
Make debug level
ladvoc Jul 18, 2025
6cddce7
Don't persist URL
ladvoc Jul 18, 2025
3f5f87e
Form URL using asprintf
ladvoc Jul 18, 2025
ba8bcd5
Add method to update subscription
ladvoc Jul 18, 2025
459a87a
Keep track of local participant
ladvoc Jul 19, 2025
c366617
Add cast
ladvoc Jul 19, 2025
96b8919
Expose track details
ladvoc Jul 19, 2025
8567b07
Disable auto subscribe
ladvoc Jul 19, 2025
eeaf118
Update lock file
ladvoc Jul 19, 2025
e4f3e10
Document known issues
ladvoc Jul 19, 2025
4e89f4b
Adjust heading levels
ladvoc Jul 19, 2025
cc7b2df
Fix broken links
ladvoc Jul 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
components/third_party/* linguist-vendored
components/livekit/protocol/*.c linguist-generated
components/livekit/protocol/*.h linguist-generated
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: LiveKit Community Slack
url: https://livekit.io/join-slack
about: Get your questions answered
Binary file added .github/banner_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/banner_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions .github/workflows/build_examples.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Build Examples
on:
workflow_call: {}
workflow_dispatch: {}
jobs:
build-examples:
name: Build Examples
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [esp32s3]
idf_version: [release-v5.4, release-v5.5]
steps:
- name: Checkout
uses: actions/checkout@v4
with: { submodules: recursive }
- name: Build All
uses: espressif/esp-idf-ci-action@v1
with:
esp_idf_version: ${{ matrix.idf_version }}
command: |
pip install idf-build-apps
idf-build-apps build -p ./examples --recursive --target ${{ matrix.target }}
16 changes: 16 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: CI
on:
schedule:
- cron: 0 0 * * 1
workflow_dispatch:
pull_request:
types: [opened, reopened, synchronize]
push:
branches: [main]
concurrency:
group: "ci"
cancel-in-progress: true
jobs:
build-examples:
name: Build Examples
uses: ./.github/workflows/build_examples.yml
36 changes: 36 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Build Documentation
on:
workflow_dispatch:
push:
branches: [main]
concurrency:
group: "docs"
cancel-in-progress: true
jobs:
build-docs:
name: Build Documentation
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Doxygen
uses: mattnotmitt/doxygen-action@v1.12.0
with: { working-directory: docs }
- name: Configure Pages
uses: actions/configure-pages@v5
- name: Upload Generated Docs
uses: actions/upload-pages-artifact@v3
with: { path: docs/output }
deploy:
needs: build-docs
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
41 changes: 41 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
.config
*.o
*.pyc

# gtags
GTAGS
GRTAGS
GPATH

# emacs
.dir-locals.el

# emacs temp file suffixes
*~
.#*
\#*#
# MacOS directory files
.DS_Store

# eclipse setting
.settings

# Example project files

**/sdkconfig
**/sdkconfig.old
**/build
**/managed_components
**/dependencies.lock
**/dist

# gcov coverage reports
*.gcda
*.gcno
coverage.info
coverage_report/

.vscode

# Doxygen
docs/output
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "components/third_party/esp-webrtc-solution"]
path = components/third_party/esp-webrtc-solution
url = https://github.com/espressif/esp-webrtc-solution
69 changes: 69 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<!--BEGIN_BANNER_IMAGE-->
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/.github/banner_dark.png">
<source media="(prefers-color-scheme: light)" srcset="/.github/banner_light.png">
<img style="width:100%;" alt="The LiveKit icon, the name of the repository and some sample code in the background." src="https://raw.githubusercontent.com/livekit/client-sdk-esp32/main/.github/banner_light.png">
</picture>
<!--END_BANNER_IMAGE-->

# ESP-32 SDK for LiveKit

Use this SDK to add realtime video, audio and data features to your ESP-32 projects. By connecting to [LiveKit](https://livekit.io/) Cloud or a self-hosted server, you can quickly build applications such as multi-modal AI, live streaming, or video calls with minimal setup.

> [!WARNING]
> This SDK is currently in Developer Preview mode and not ready for production use.
> There will be bugs and APIs may change during this period.

## Features

- **Supported chipsets**: ESP32-S3 and ESP32-P4
- **Bidirectional audio**: Opus encoding, acoustic echo cancellation (AEC)
- **Bidirectional video**: *coming soon*
- **Real-time data**: data packets, remote method calls (RPC)

## Installation

In your application's IDF component manifest, add LiveKit as a Git dependency:

```yaml
dependencies:
livekit:
git: https://github.com/livekit/client-sdk-esp32.git
path: components/livekit
version: <current version tag>
```

Please be sure to pin to a specific version tag as subsequent 0.x.x releases may have breaking changes. In the future, this SDK will be added to the [ESP component registry](https://components.espressif.com).

## Examples

One of the best ways to get started with LiveKit is by reviewing the examples and choosing one as a starting point for your project:

- [Voice Agent](./examples/voice_agent/README.md): conversational AI voice agent that interacts with hardware based on user requests.
- *More examples coming soon*

## Documentation

Please refer to the [LiveKit Docs](https://docs.livekit.io/home/) for an introduction to the platform and its features, or to the API reference (*TODO: Not published yet*) for specifics about this SDK.

## Known Issues

- In some cases, a remote participant leaving the room can lead to lead to a disconnect.

## Getting Help & Contributing

We invite you to join the [LiveKit Community Slack](https://livekit.io/join-slack) to get your questions answered, suggest improvements, or discuss how you can best contribute to this SDK.

<!--BEGIN_REPO_NAV-->
<br/><table>
<thead><tr><th colspan="2">LiveKit Ecosystem</th></tr></thead>
<tbody>
<tr><td>LiveKit SDKs</td><td><a href="https://github.com/livekit/client-sdk-js">Browser</a> · <a href="https://github.com/livekit/client-sdk-swift">iOS/macOS/visionOS</a> · <a href="https://github.com/livekit/client-sdk-android">Android</a> · <a href="https://github.com/livekit/client-sdk-flutter">Flutter</a> · <a href="https://github.com/livekit/client-sdk-react-native">React Native</a> · <a href="https://github.com/livekit/rust-sdks">Rust</a> · <a href="https://github.com/livekit/node-sdks">Node.js</a> · <a href="https://github.com/livekit/python-sdks">Python</a> · <a href="https://github.com/livekit/client-sdk-unity">Unity</a> · <a href="https://github.com/livekit/client-sdk-unity-web">Unity (WebGL)</a> · <b>ESP-32</b></td></tr><tr></tr>
<tr><td>Server APIs</td><td><a href="https://github.com/livekit/node-sdks">Node.js</a> · <a href="https://github.com/livekit/server-sdk-go">Golang</a> · <a href="https://github.com/livekit/server-sdk-ruby">Ruby</a> · <a href="https://github.com/livekit/server-sdk-kotlin">Java/Kotlin</a> · <a href="https://github.com/livekit/python-sdks">Python</a> · <a href="https://github.com/livekit/rust-sdks">Rust</a> · <a href="https://github.com/agence104/livekit-server-sdk-php">PHP (community)</a> · <a href="https://github.com/pabloFuente/livekit-server-sdk-dotnet">.NET (community)</a></td></tr><tr></tr>
<tr><td>UI Components</td><td><a href="https://github.com/livekit/components-js">React</a> · <a href="https://github.com/livekit/components-android">Android Compose</a> · <a href="https://github.com/livekit/components-swift">SwiftUI</a></td></tr><tr></tr>
<tr><td>Agents Frameworks</td><td><a href="https://github.com/livekit/agents">Python</a> · <a href="https://github.com/livekit/agents-js">Node.js</a> · <a href="https://github.com/livekit/agent-playground">Playground</a></td></tr><tr></tr>
<tr><td>Services</td><td><a href="https://github.com/livekit/livekit">LiveKit server</a> · <a href="https://github.com/livekit/egress">Egress</a> · <a href="https://github.com/livekit/ingress">Ingress</a> · <a href="https://github.com/livekit/sip">SIP</a></td></tr><tr></tr>
<tr><td>Resources</td><td><a href="https://docs.livekit.io">Docs</a> · <a href="https://github.com/livekit-examples">Example apps</a> · <a href="https://livekit.io/cloud">Cloud</a> · <a href="https://docs.livekit.io/home/self-hosting/deployment">Self-hosting</a> · <a href="https://github.com/livekit/livekit-cli">CLI</a></td></tr>
</tbody>
</table>
<!--END_REPO_NAV-->
24 changes: 24 additions & 0 deletions components/livekit/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
idf_component_register(
SRC_DIRS ./core ./protocol
PRIV_INCLUDE_DIRS ./core ./protocol
INCLUDE_DIRS ./include
REQUIRES
av_render
esp_capture
PRIV_REQUIRES
esp_codec_dev
esp_netif
esp_timer
esp_websocket_client
esp_webrtc
json
mbedtls
media_lib_sal
peer_default
webrtc_utils
nanopb
khash
)

idf_component_get_property(LIVEKIT_SDK_VERSION ${COMPONENT_NAME} COMPONENT_VERSION)
target_compile_definitions(${COMPONENT_LIB} PUBLIC "LIVEKIT_SDK_VERSION=\"${LIVEKIT_SDK_VERSION}\"")
34 changes: 34 additions & 0 deletions components/livekit/core/common.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@

#pragma once

#include "esp_peer.h"
#include "esp_capture.h"
#include "av_render.h"

#ifdef __cplusplus
extern "C" {
#endif

/// State of an engine component or the engine itself.
typedef enum {
CONNECTION_STATE_DISCONNECTED = 0, /*!< Disconnected */
CONNECTION_STATE_CONNECTING = 1, /*!< Establishing connection */
CONNECTION_STATE_CONNECTED = 2, /*!< Connected */
CONNECTION_STATE_RECONNECTING = 3, /*!< Connection was previously established, but was lost */
CONNECTION_STATE_FAILED = 4 /*!< Connection failed */
} connection_state_t;

typedef struct {
esp_peer_media_dir_t audio_dir;
esp_peer_media_dir_t video_dir;

esp_peer_audio_stream_info_t audio_info;
esp_peer_video_stream_info_t video_info;

esp_capture_handle_t capturer;
av_render_handle_t renderer;
} engine_media_options_t;

#ifdef __cplusplus
}
#endif
Loading