Sobre el proyecto
CPAL (Biblioteca de Audio Multiplataforma) es una biblioteca Rust de bajo nivel para entrada y salida de audio. Está pensada como capa base; el README dirige a los usuarios que buscan reproducción y captura de mayor nivel hacia Rodio o bibliotecas similares.
Capacidades descritas en el README:
- Enumerar hosts de audio, dispositivos y sus configuraciones de flujo compatibles.
- Buscar dispositivos por ID estable o por rol de entrada/salida predeterminado.
- Inspeccionar metadatos del dispositivo: nombre, fabricante, tipo y tipo de bus.
- Construir flujos de entrada y salida con formatos de muestra en tiempo de compilación o ejecución.
- Reproducir, pausar y consultar el tamaño del búfer y el reloj de un flujo.
Plataformas y backends predeterminados:
- Android: AAudio
- BSD: ALSA (opcional JACK, PipeWire, PulseAudio)
- iOS, macOS, tvOS, visionOS: CoreAudio (macOS opcionalmente JACK)
- Linux: ALSA (opcional JACK, PipeWire, PulseAudio)
- WebAssembly: API de Audio Web (opcional Audio Worklet)
- Windows: WASAPI (opcional ASIO, JACK)
Las características opcionales incluyen asio, audioworklet, custom, jack, pipewire, pulseaudio, realtime, realtime-dbus y wasm-bindgen. El README documenta dependencias de compilación (por ejemplo, libasound2-dev en Debian/Ubuntu para ALSA, requerida incluso al usar JACK, PipeWire o PulseAudio), versiones mínimas de Rust y de SO/tiempo de ejecución por backend, y pasos de configuración para Android (cargo-apk, inicialización de contexto JNI), ASIO (CPAL_ASIO_DIR, LLVM/Clang, LIBCLANG_PATH, Visual Studio, compilación cruzada MinGW-w64) y WebAssembly.
La guía de solución de problemas cubre dispositivos predeterminados faltantes, contención de dispositivos ALSA/PipeWire/PulseAudio (DeviceBusy cuando un servidor de sonido mantiene el dispositivo predeterminado de ALSA), configuración del tamaño del búfer y sus compensaciones de latencia, fallos de remuestreo en PipeWire, promoción de prioridad en tiempo real de ALSA (SCHED_FIFO, CAP_SYS_NICE, límites rtprio, rtkit vía D-Bus) y errores de compilación. Se discuten dispositivos dúplex: CPAL no compone dispositivos por sí mismo y requiere un dispositivo que ya admita captura y reproducción, con el plugin asym de ALSA o puertos de cliente JACK como opciones.
El repositorio incluye ejemplos en examples/ (por ejemplo, beep), ejecutables con cargo run --example beep y banderas de características para backends específicos de plataforma. La licencia es Apache-2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.