flexaudio-os-macos 0.2.0

macOS system and per-process audio capture backend (Core Audio process taps) for flexaudio.
Documentation

flexaudio-os-macos

macOS audio capture backend for the flexaudio workspace, built on Core Audio Process Taps via objc2-core-audio.

Provides two CaptureBackend implementations:

  • MacSystemBackend — records the full system audio output mix via a Core Audio process tap with an EXCLUDE-self configuration (captures everything playing on the system). The macOS equivalent of WASAPI loopback on Windows.
  • MacProcessBackend — records audio from a specific process (INCLUDE tap), or everything except that process (EXCLUDE tap), using CATapDescription → process tap → private aggregate device → IOProc callback.

Because the ObjC objects involved (Retained<CATapDescription>, RcBlock, TapChain) are !Send, the entire tap chain is created and torn down on a dedicated thread; only Send-safe handles (stop flag, JoinHandle, cached format) cross thread boundaries.

Platform requirement: Core Audio Process Taps require macOS 14.4 or later. Attempting to start a backend on an older OS returns Error::UnsupportedOsVersion. The crate compiles as an empty stub on non-macOS targets (#![cfg(target_os = "macos")]).

Most users should use the flexaudio facade crate instead of this one directly. Depend on flexaudio-os-macos only if you are building a custom macOS audio pipeline that needs direct access to MacSystemBackend or MacProcessBackend.

License

MIT © 2026 tubome / Studio Sadola.