[FEATURE] macOS: Implement Audio Capturing using the newer CoreAudio ProcessTap API
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 28/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- cpp, macos
- Área
- audio-video-rtc, desktop
Línea de trabajo
Start with the SDL2 CoreAudio wrapper and compare its capture flow with the AudioCap Process Tap setup and Apple's Core Audio Taps documentation. The work is done when macOS users can choose external input or a process, persist the selected process, and receive a fallback or message when it is unavailable.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Is Your Enhancement Related to a Problem?
Currently, the projectMSDL application can only capture audio from external sources like microphones and line-in. It uses the SDL2 CoreAudio wrapper, which only provides very basic access to macOS audio APIs.
Your Suggested Enhancement
Since macOS 14.4, Apple introduces a new API in CoreAudio called "Process Taps", which enables any application to record audio from a specific application once the user allows the application to do so. The API is poorly documented, but there is a GitHub project demonstrating how to use it.
Due to how this API works, it'll require some macOS-specific changes in the UI to select the process to capture from instead of an audio device. Capturing from external sources using the standard CoreAudio API should still be possible though, so this can be implemented as a choice, e.g. a "Capture Source" dropdown or radio button with "External Input" and "Process" choices.
If a process is chosen by the user, the selected process name or executable path should be stored in the configuration file, so the same application to record from can be selected again on the next launch (as the Process Tap API uses the process ID). There should be either a fallback or user message if the selected process isn't available (either on startup or when terminated) to avoid confusion if audio capture suddenly stops working.
Alternative Solutions
No response
Additional Context
(Short) introduction to Taps in Apple's developer docs: https://developer.apple.com/documentation/coreaudio/capturing-system-audio-with-core-audio-taps?language=objc
- Lenguaje dominante
- C++
- Estrellas
- 121
- Forks
- 65
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de projectM-visualizer/frontend-sdl-cpp
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
projectM-visualizer/frontend-sdl-cpp#138 · 1 reacción ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
projectM-visualizer/frontend-sdl-cpp#134 · 4 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
projectM-visualizer/frontend-sdl-cpp#120 · 1 comentario ·
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
projectM-visualizer/frontend-sdl-cpp#118 · 2 comentarios ·
Todos los issues de projectM-visualizer/frontend-sdl-cpp
Issues similares
-
P2: A timed rotation maneuver does nothing on a ship that had an earlier timed lateral maneuverAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
scp-fs2open/fs2open.github.com#7914 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
eclipse-score/inc_someip_gateway#356 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
HarperFast/rocksdb-js#945 ·
Los mantenedores suelen responder en 1 día
-
A failed COMMIT leaves the DuckLake transaction registered, leaking the whole DuckDB instanceAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día