[package] name = "jolt-moq" description = "freeq's AV media plane — MoQ over QUIC, Opus and H.264 — behind a C ABI" version.workspace = true edition.workspace = true license.workspace = true repository.workspace = true [lib] # The object jolt loads. `rlib` beside it so the crate's own tests — and any # Rust consumer that would rather not go through C — can use it directly. name = "joltmoq" crate-type = ["cdylib", "rlib"] [features] # cpal's native PipeWire host, on by default. Without it only ALSA PCMs are # visible ("pipewire", "sysdefault") and the real OS sources a browser would # offer — "EMEET SmartCam C960 Mono" and friends — cannot be picked at all, so # device selection in a call becomes guesswork. # # It is a feature rather than unconditional because it builds `libspa-sys`, # which needs pkg-config and PipeWire's own headers on the build machine. The # flake at the workspace root supplies them; `--no-default-features` is for a # machine that has neither and only needs the crate to compile. default = ["pipewire"] pipewire = ["cpal/pipewire"] [dependencies] jolt-abi.workspace = true log.workspace = true iroh-live = { git = "https://github.com/n0-computer/iroh-live", rev = "edd9bcc530a615f3ab3a6919e96790a077905376", default-features = false, features = [ "opus", "h264", "capture-camera", ] } moq-native = { git = "https://github.com/Frando/moq", branch = "deps/iroh-main", default-features = false, features = [ "noq", "websocket", "aws-lc-rs", ] } moq-lite = { git = "https://github.com/Frando/moq", branch = "deps/iroh-main" } # aws-lc-rs rather than ring, to match what moq-native and iroh already pull in. rustls = { version = "0.23", default-features = false, features = ["aws-lc-rs"] } cpal = { path = "../../third-party/rust/cpal" } # V4L2 capture: the fallback path for cameras rusty-capture mishandles. v4l2r = "0.0.7" # JPEG only — the V4L2 path converts MJPEG frames, and nothing here reads or # writes a picture file, so the rest of the format set is dead weight. image = { version = "0.25", default-features = false, features = ["jpeg"] } # One query parameter (`inst=`) needs escaping. That is the whole use. urlencoding = "2" libc = "0.2" n0-future = "0.3" tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time"] } anyhow = "1" url = "2" rand = "0.8" env_logger = "0.11"