![]() |
Sunshine master
Self-hosted game stream host for Moonlight.
|
Implementation of macOS audio capture with dual input paths. More...
import "av_audio.h"#include "coreaudio_helpers.h"#include "src/logging.h"#include "src/utility.h"import <AudioToolbox/AudioConverter.h>import <CoreAudio/CATapDescription.h>Functions | |
| OSStatus | platf::audioConverterComplexInputProc (AudioConverterRef inAudioConverter, UInt32 *ioNumberDataPackets, AudioBufferList *ioData, AudioStreamPacketDescription **outDataPacketDescription, void *inUserData) |
| Real-time AudioConverter input callback for format conversion. Provides audio data to AudioConverter during format conversion process using pure C++ for optimal performance. This function must avoid all Objective-C runtime calls to meet real-time audio constraints. | |
| OSStatus | platf::systemAudioIOProc (AudioObjectID inDevice, const AudioTimeStamp *inNow, const AudioBufferList *inInputData, const AudioTimeStamp *inInputTime, AudioBufferList *outOutputData, const AudioTimeStamp *inOutputTime, void *inClientData) |
| Real-time audio processing function for Core Audio IOProc callbacks. Handles system-wide audio capture with format conversion and buffering using pure C++ for optimal performance. This function must avoid all Objective-C runtime calls to meet real-time audio constraints. | |
Implementation of macOS audio capture with dual input paths.
This file implements the AVAudio class which provides two distinct audio capture methods:
The implementation handles format conversion, real-time audio processing, and provides a unified interface for both capture methods through a shared circular buffer.
| OSStatus platf::audioConverterComplexInputProc | ( | AudioConverterRef | inAudioConverter, |
| UInt32 * | ioNumberDataPackets, | ||
| AudioBufferList * | ioData, | ||
| AudioStreamPacketDescription ** | outDataPacketDescription, | ||
| void * | inUserData ) |
Real-time AudioConverter input callback for format conversion. Provides audio data to AudioConverter during format conversion process using pure C++ for optimal performance. This function must avoid all Objective-C runtime calls to meet real-time audio constraints.
| inAudioConverter | The audio converter requesting input data |
| ioNumberDataPackets | Number of data packets to provide |
| ioData | Buffer list to fill with audio data |
| outDataPacketDescription | Packet description for output data |
| inUserData | User data containing AudioConverterInputData structure |
| OSStatus platf::systemAudioIOProc | ( | AudioObjectID | inDevice, |
| const AudioTimeStamp * | inNow, | ||
| const AudioBufferList * | inInputData, | ||
| const AudioTimeStamp * | inInputTime, | ||
| AudioBufferList * | outOutputData, | ||
| const AudioTimeStamp * | inOutputTime, | ||
| void * | inClientData ) |
Real-time audio processing function for Core Audio IOProc callbacks. Handles system-wide audio capture with format conversion and buffering using pure C++ for optimal performance. This function must avoid all Objective-C runtime calls to meet real-time audio constraints.
| inDevice | The audio device identifier |
| inNow | Current audio time stamp |
| inInputData | Input audio buffer list from the device |
| inInputTime | Time stamp for input data |
| outOutputData | Output audio buffer list (not used in our implementation) |
| inOutputTime | Time stamp for output data |
| inClientData | Client data containing AVAudioIOProcData structure |