libmoq
C bindings for moq-lite via FFI, enabling MoQ integration in C/C++ applications and other languages.
Overview
libmoq provides:
- C API - Header files for C integration
- FFI bindings - Safe Rust-to-C interface
- Build system integration - CMake and pkg-config support
Installation
From Source
bash
git clone https://github.com/moq-dev/moq
cd moq/rs/libmoq
cargo build --releaseThe library will be in target/release/libmoq.a (static) or target/release/libmoq.so (dynamic).
Using Cargo
bash
cargo install libmoqUsage
C Header
c
#include <moq.h>
int main() {
// Initialize connection
moq_connection_t* conn = moq_connect("https://relay.example.com/demo");
if (!conn) {
fprintf(stderr, "Failed to connect\n");
return 1;
}
// Create broadcast
moq_broadcast_t* broadcast = moq_broadcast_new("my-broadcast");
// Create track
moq_track_t* track = moq_track_new(broadcast, "chat");
// Publish data
moq_group_t* group = moq_group_append(track);
moq_frame_write(group, "Hello, MoQ!", 11);
moq_group_close(group);
// Publish to relay
moq_publish(conn, broadcast);
// Cleanup
moq_broadcast_free(broadcast);
moq_connection_free(conn);
return 0;
}Linking
With CMake:
cmake
find_package(moq REQUIRED)
target_link_libraries(myapp moq)With pkg-config:
bash
gcc -o myapp myapp.c $(pkg-config --cflags --libs moq)API Reference
Full API documentation: docs.rs/libmoq
Use Cases
- C/C++ applications - Native integration without Rust toolchain
- Language bindings - Build bindings for Python, Go, etc.
- Legacy systems - Integrate MoQ into existing C codebases
- Embedded systems - Where Rust runtime isn't available
Next Steps
- Use moq-lite for Rust applications
- Deploy a relay server
- Read the Concepts guide