83 std::unique_ptr<platf::audio_control_t>
control;
void capture(safe::mail_t mail, config_t config, void *channel_data)
Run the capture loop for this backend.
Definition audio.cpp:157
opus_stream_config_t stream_configs[MAX_STREAM_CONFIG]
Opus stream layouts and bitrates advertised to clients.
Definition audio.cpp:51
bool is_audio_ctx_sink_available(const audio_ctx_t &ctx)
Check if the audio sink held by audio context is available.
Definition audio.cpp:281
audio_ctx_ref_t get_audio_ctx_ref()
Get the reference to the audio context.
Definition audio.cpp:276
std::pair< void *, buffer_t > packet_t
Encoded audio packet paired with platform channel metadata.
Definition audio.h:96
stream_config_e
Supported Opus channel layouts advertised to Moonlight clients.
Definition audio.h:18
@ HIGH_STEREO
High stereo.
Definition audio.h:20
@ SURROUND51
Surround 5.1.
Definition audio.h:21
@ STEREO
Stereo.
Definition audio.h:19
@ HIGH_SURROUND71
High surround 7.1.
Definition audio.h:24
@ HIGH_SURROUND51
High surround 5.1.
Definition audio.h:22
@ SURROUND71
Surround 7.1.
Definition audio.h:23
@ MAX_STREAM_CONFIG
Maximum audio stream configuration.
Definition audio.h:25
Declarations for common platform specific utilities.
audio_t audio
Default audio configuration values used before file and CLI overrides.
Definition config.cpp:705
Handles process-wide communication.
Definition globals.h:34
Shared audio device state used while streams are active.
Definition audio.h:79
std::unique_ptr< platf::audio_control_t > control
Platform audio-control implementation.
Definition audio.h:83
bool restore_sink
Whether Sunshine should restore the original sink when capture ends.
Definition audio.h:85
platf::sink_t sink
Original sink captured before Sunshine switched devices.
Definition audio.h:86
std::unique_ptr< std::atomic_bool > sink_flag
Tracks whether the capture sink was already switched.
Definition audio.h:81
Audio capture and encoder settings for a stream.
Definition audio.h:55
flags_e
Boolean audio feature flags.
Definition audio.h:59
@ HIGH_QUALITY
High quality audio.
Definition audio.h:60
@ MAX_FLAGS
Maximum number of flags.
Definition audio.h:64
@ CONTINUOUS_AUDIO
Continuous audio.
Definition audio.h:63
@ CUSTOM_SURROUND_PARAMS
Custom surround parameters.
Definition audio.h:62
@ HOST_AUDIO
Host audio.
Definition audio.h:61
int packetDuration
Packet duration in milliseconds requested by the client.
Definition audio.h:67
stream_params_t customStreamParams
Custom Opus layout used when CUSTOM_SURROUND_PARAMS is enabled.
Definition audio.h:71
int channels
Number of audio channels requested by the client.
Definition audio.h:68
int mask
Speaker mask describing the requested channel layout.
Definition audio.h:69
std::bitset< MAX_FLAGS > flags
Enabled audio feature flags.
Definition audio.h:73
Static Opus encoder layout for one advertised audio mode.
Definition audio.h:31
std::int32_t sampleRate
Opus sample rate in hertz.
Definition audio.h:32
int streams
Number of Opus streams in the layout.
Definition audio.h:34
int channelCount
Number of audio channels in the Opus layout.
Definition audio.h:33
int coupledStreams
Number of stereo-coupled Opus streams.
Definition audio.h:35
const std::uint8_t * mapping
Channel mapping table passed to the Opus encoder.
Definition audio.h:36
int bitrate
Target bitrate in bits per second.
Definition audio.h:37
Custom Opus channel layout supplied by configuration.
Definition audio.h:43
int streams
Number of Opus streams in the custom layout.
Definition audio.h:45
int channelCount
Number of audio channels in the Opus layout.
Definition audio.h:44
int coupledStreams
Number of stereo-coupled Opus streams.
Definition audio.h:46
std::uint8_t mapping[8]
Channel mapping table for up to eight speakers.
Definition audio.h:47
Host and virtual audio sink names for audio routing.
Definition common.h:528
Pointer wrapper state protected by synchronization.
Definition thread_safe.h:552
Declarations for thread-safe data structures.
std::shared_ptr< mail_raw_t > mail_t
Shared mailbox handle used by event and queue wrappers.
Definition thread_safe.h:737
Declarations for utility functions.