Declarations for macOS audio capture with dual input paths. More...
import <AudioToolbox/AudioToolbox.h>import <AVFoundation/AVFoundation.h>import <CoreAudio/AudioHardwareTapping.h>import <CoreAudio/CoreAudio.h>#include <functional>#include "third-party/TPCircularBuffer/TPCircularBuffer.h"Go to the source code of this file.
Classes | |
| struct | AudioConverterInputData |
| Data structure for AudioConverter input callback. Contains audio data and metadata needed for format conversion during audio processing. More... | |
| class | AVAudio |
| Core Audio capture class for macOS audio input and system-wide audio tapping. Provides functionality for both microphone capture via AVFoundation and system-wide audio capture via Core Audio taps (requires macOS 14.0+). More... | |
| struct | AVAudioIOProcData |
| IOProc client data structure for Core Audio system taps. Contains configuration and conversion data for real-time audio processing. More... | |
Typedefs | |
| using | platf::microphone_permission_callback_t = std::function<void(bool)> |
| Completion callback for a microphone permission request. | |
| using | platf::microphone_permission_request_t = std::function<void(microphone_permission_callback_t)> |
| Function that starts a microphone permission request. | |
Functions | |
| OSStatus | platf::audioConverterComplexInputProc (AudioConverterRef _Nullable inAudioConverter, UInt32 *_Nonnull ioNumberDataPackets, AudioBufferList *_Nonnull ioData, AudioStreamPacketDescription *_Nullable *_Nullable outDataPacketDescription, void *_Nonnull inUserData) |
| Provide captured PCM frames to AudioConverter. | |
| bool | platf::request_microphone_permission () |
| Ensure Sunshine has permission to capture microphone audio. | |
| bool | platf::request_microphone_permission (AVAuthorizationStatus authorization_status, const microphone_permission_request_t &request_access) |
| Resolve microphone access from an AVFoundation authorization state. | |
| OSStatus | platf::systemAudioIOProc (AudioObjectID inDevice, const AudioTimeStamp *_Nullable inNow, const AudioBufferList *_Nullable inInputData, const AudioTimeStamp *_Nullable inInputTime, AudioBufferList *_Nullable outOutputData, const AudioTimeStamp *_Nullable inOutputTime, void *_Nullable inClientData) |
| Receive system-audio tap samples from Core Audio. | |
Declarations for macOS audio capture with dual input paths.
This header defines the AVAudio class which provides distinct audio capture methods:
The system-wide audio tap allows capturing audio from all applications and system sounds, while microphone capture focuses on input from physical or virtual microphone devices.
| OSStatus platf::audioConverterComplexInputProc | ( | AudioConverterRef _Nullable | inAudioConverter, |
| UInt32 *_Nonnull | ioNumberDataPackets, | ||
| AudioBufferList *_Nonnull | ioData, | ||
| AudioStreamPacketDescription *_Nullable *_Nullable | outDataPacketDescription, | ||
| void *_Nonnull | inUserData ) |
Provide captured PCM frames to AudioConverter.
| inAudioConverter | In audio converter. |
| ioNumberDataPackets | Requested and returned packet count. |
| ioData | Buffer list filled with input audio. |
| outDataPacketDescription | Optional packet description output. |
| inUserData | AudioConverterInputData state used by the callback. |
| bool platf::request_microphone_permission | ( | ) |
Ensure Sunshine has permission to capture microphone audio.
Requests access and waits for the user's response when authorization has not yet been determined.
| bool platf::request_microphone_permission | ( | AVAuthorizationStatus | authorization_status, |
| const microphone_permission_request_t & | request_access ) |
Resolve microphone access from an AVFoundation authorization state.
| authorization_status | Current authorization state for audio capture. |
| request_access | Function used to request access when authorization has not been determined. |
| OSStatus platf::systemAudioIOProc | ( | AudioObjectID | inDevice, |
| const AudioTimeStamp *_Nullable | inNow, | ||
| const AudioBufferList *_Nullable | inInputData, | ||
| const AudioTimeStamp *_Nullable | inInputTime, | ||
| AudioBufferList *_Nullable | outOutputData, | ||
| const AudioTimeStamp *_Nullable | inOutputTime, | ||
| void *_Nullable | inClientData ) |
Receive system-audio tap samples from Core Audio.
| inDevice | In device. |
| inNow | In now. |
| inInputData | In input data. |
| inInputTime | In input time. |
| outOutputData | Out output data. |
| inOutputTime | In output time. |
| inClientData | In client data. |