Sunshine master
Self-hosted game stream host for Moonlight.
av_audio.h File Reference

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 "third-party/TPCircularBuffer/TPCircularBuffer.h"
Include dependency graph for av_audio.h:
This graph shows which files directly or indirectly include this file:

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...
 

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.
 
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.
 

Detailed Description

Declarations for macOS audio capture with dual input paths.

This header defines the AVAudio class which provides distinct audio capture methods:

  1. Microphone capture - Uses AVFoundation framework to capture from specific microphone devices
  2. System-wide audio tap - Uses Core Audio taps to capture all system audio output (macOS 14.0+)

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.

Function Documentation

◆ audioConverterComplexInputProc()

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.

Parameters
inAudioConverterIn audio converter.
ioNumberDataPacketsRequested and returned packet count.
ioDataBuffer list filled with input audio.
outDataPacketDescriptionOptional packet description output.
inUserDataAudioConverterInputData state used by the callback.
Returns
Core Audio status code from the callback.

◆ systemAudioIOProc()

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.

Parameters
inDeviceIn device.
inNowIn now.
inInputDataIn input data.
inInputTimeIn input time.
outOutputDataOut output data.
inOutputTimeIn output time.
inClientDataIn client data.
Returns
Core Audio status code from the IO callback.