1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
[]
= "moq-cli"
= "Media over QUIC"
= ["Luke Curley <kixelated@gmail.com>"]
= "https://github.com/moq-dev/moq"
= "MIT OR Apache-2.0"
= "0.10.0"
= "2024"
= true
= ["quic", "http3", "webtransport", "media", "live"]
= ["multimedia", "network-programming", "web-programming"]
# The package is `moq-cli`, but the binary it ships is `moq`.
[[]]
= "moq"
= "src/main.rs"
# `libmoq`'s staticlib is also named `moq`, so a `cargo doc` selecting both renders
# them to `target/doc/moq` and the two rustdoc processes race to clean it (#3094).
# This binary's page is the one to give up: nothing links it, and a bin target has
# no public API to render, whereas docs.rs/libmoq is the published C API reference.
= false
[]
= ["iroh", "quinn", "websocket", "nvidia", "pipewire"]
= ["moq-native/iroh"]
= ["moq-native/jemalloc"]
= ["moq-native/noq"]
= ["moq-native/quinn"]
= ["moq-native/quiche"]
# qlog trace capture (`--client-quic-qlog <DIR>`). Off by default: it compiles the
# qlog machinery into the enabled backends and is only wanted for debugging or
# congestion-control testing.
= ["moq-native/qlog"]
= ["moq-native/websocket"]
# Device capture (camera + microphone) + encode/publish. Off by default because
# it pulls in moq-video + moq-audio capture, which add system build deps on Linux
# (camera: `v4l`/v4l2-sys-mit needs libclang + V4L2 headers via bindgen; mic: cpal
# needs ALSA/libasound), plus binary size. macOS/Windows use OS frameworks, no
# extra install. H.264 is vendored static (openh264), so no system ffmpeg/libav.
# Enable with `cargo build -p moq-cli --features capture`.
= ["dep:moq-video", "dep:moq-audio", "moq-video/capture", "moq-audio/capture"]
# Just-in-time transcoding (`moq ... transcode`). Off by default because it pulls
# in moq-video and its codec dependencies. Enable with
# `cargo build -p moq-cli --features transcode`.
= ["dep:moq-transcode", "dep:moq-video"]
# Native playback (`moq ... play`): decode into a wgpu window and a cpal
# speaker. Off by default because it pulls both graphics and audio device stacks
# into a binary that may only be routing containers or serving gateways.
= ["dep:moq-video", "moq-video/render", "dep:moq-audio", "moq-audio/playback", "dep:pollster", "dep:winit"]
# NVIDIA hardware codecs (NVENC + NVDEC) on Linux, on by default. Just turns on
# the matching moq-video feature, so it only bites when something else pulls in
# moq-video: `capture`, `transcode`, or `play`. For a build with no CUDA
# dependencies, drop it:
# cargo build -p moq-cli --no-default-features --features "iroh quinn websocket capture"
= ["moq-video?/nvidia", "moq-transcode?/nvidia"]
# Compatibility aliases for the pre-consolidation names, kept so a manifest that
# already asks for the old split still resolves. Undocumented on purpose: the
# feature tables name only `nvidia`.
= ["nvidia"]
= ["nvidia"]
# Intel/AMD VAAPI hardware encoding (Linux). Off by default because the backend is
# unvalidated on hardware; enable it explicitly alongside `capture` or `transcode`.
= ["moq-video?/vaapi", "moq-transcode?/vaapi"]
# Screen capture for `capture --display` on Linux (xdg-desktop-portal + PipeWire),
# on by default like the hardware codecs above and trimmable the same way. Only
# bites when `capture` pulls in moq-video; links libpipewire-0.3 at build time.
# Also reaches audio, so `devices`, microphone capture and playback go through
# the sound server rather than its ALSA plugin on a machine running one.
= ["moq-video?/pipewire", "moq-audio?/pipewire"]
# The other Linux sound server. Off by default, unlike `pipewire`: PulseAudio is
# what a machine runs when it is not running PipeWire, so enabling both by
# default would link a client library most builds never reach for.
= ["moq-audio?/pulseaudio"]
[]
= { = true, = ["backtrace"] }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true, = true }
# `server` enables the HTTP egress server for `moq export hls`; the importer is always available.
= { = true, = ["server"] }
= { = true }
# Raw qmux listeners are part of the CLI surface. `uds` compiles only on Unix.
= { = true, = false, = ["aws-lc-rs", "tcp", "uds"] }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true, = true }
= { = true, = true }
= { = true, = true }
= { = "0.23", = ["aws-lc-rs"], = false }
= { = true, = ["full"] }
= { = true }
= { = true }
= { = true }
= { = "0.30.13", = true }
[]
= { = true }
[]
# `test-util` enables `tokio::time::pause` so the TS round-trip test simulates the
# exporter drain timeouts instantly instead of waiting on the wall clock.
= { = true, = ["test-util"] }