Skip to main content

Crate moq_audio

Crate moq_audio 

Source
Expand description

Native audio capture, encoding, and decoding for Media over QUIC.

Counterpart to moq-video for audio tracks, and shaped the same way. Sits on top of moq_mux and hang and adds the missing piece for native callers: Rust-native Opus and uncompressed PCM codecs that turn raw samples into HANG audio tracks and back.

  • capture describes an audio source (capture::Config) and grabs buffers per platform: a microphone via cpal (CoreAudio / WASAPI / ALSA) everywhere, or macOS system audio via ScreenCaptureKit. capture::Source picks between them and capture::devices lists the inputs and hands back the ids it takes. Requires the capture feature, so these names are unlinked here: they don’t exist in a default build.
  • encode encodes PCM and publishes it through moq_mux::container, registering the rendition in the hang catalog. Two entry points:
    • encode::publish_capture captures a microphone and publishes it (turnkey). It encodes strictly on demand: the track and catalog are advertised up front, but the device opens only while a subscriber is listening and is released when the last one leaves.
    • encode::Producer publishes PCM you hand it.
  • decode subscribes to an encoded track and decodes it back to PCM. decode::Consumer is the mirror of encode::Producer.

Format mirrors WebCodecs AudioData.format; the helpers convert between any supported layout and the interleaved f32 representation libopus expects. Frame is a thin owned buffer: a timestamp and a payload. PCM layout lives on the producer / consumer via encode::Input / decode::Config, not on each frame, so callers can’t drift between calls.

Modules§

decode
Subscribe to an encoded audio track and decode it to raw PCM.
encode
Encode raw PCM and publish it as a moq audio track.

Structs§

Frame
One unit of raw PCM crossing the codec boundary: what encode::Producer::write takes and what decode::Consumer::read returns.
Resampler
Sample-rate converter over interleaved f32 PCM.

Enums§

Error
Errors returned by moq-audio.
Format
Raw PCM sample format.