Sunshine v2026.319.132152
Self-hosted game stream host for Moonlight.
audio.h
Go to the documentation of this file.
1
5#pragma once
6
7// local includes
8#include "platform/common.h"
9#include "thread_safe.h"
10#include "utility.h"
11
12#include <bitset>
13
14namespace audio {
24
26 std::int32_t sampleRate;
27 int channelCount;
28 int streams;
29 int coupledStreams;
30 const std::uint8_t *mapping;
31 int bitrate;
32 };
33
35 int channelCount;
36 int streams;
37 int coupledStreams;
38 std::uint8_t mapping[8];
39 };
40
41 extern opus_stream_config_t stream_configs[MAX_STREAM_CONFIG];
42
43 struct config_t {
51
52 int packetDuration;
53 int channels;
54 int mask;
55
56 stream_params_t customStreamParams;
57
58 std::bitset<MAX_FLAGS> flags;
59 };
60
61 struct audio_ctx_t {
62 // We want to change the sink for the first stream only
63 std::unique_ptr<std::atomic_bool> sink_flag;
64
65 std::unique_ptr<platf::audio_control_t> control;
66
67 bool restore_sink;
68 platf::sink_t sink;
69 };
70
72 using packet_t = std::pair<void *, buffer_t>;
74
75 void capture(safe::mail_t mail, config_t config, void *channel_data);
76
88
104} // namespace audio
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:254
audio_ctx_ref_t get_audio_ctx_ref()
Get the reference to the audio context.
Definition audio.cpp:249
stream_config_e
Definition audio.h:15
@ HIGH_STEREO
High stereo.
Definition audio.h:17
@ SURROUND51
Surround 5.1.
Definition audio.h:18
@ STEREO
Stereo.
Definition audio.h:16
@ HIGH_SURROUND71
High surround 7.1.
Definition audio.h:21
@ HIGH_SURROUND51
High surround 5.1.
Definition audio.h:19
@ SURROUND71
Surround 7.1.
Definition audio.h:20
@ MAX_STREAM_CONFIG
Maximum audio stream configuration.
Definition audio.h:22
Declarations for common platform specific utilities.
Handles process-wide communication.
Definition globals.h:34
Definition audio.h:61
Definition audio.h:43
flags_e
Definition audio.h:44
@ HIGH_QUALITY
High quality audio.
Definition audio.h:45
@ MAX_FLAGS
Maximum number of flags.
Definition audio.h:49
@ CONTINUOUS_AUDIO
Continuous audio.
Definition audio.h:48
@ CUSTOM_SURROUND_PARAMS
Custom surround parameters.
Definition audio.h:47
@ HOST_AUDIO
Host audio.
Definition audio.h:46
Definition audio.h:25
Definition audio.h:34
Definition common.h:389
Definition thread_safe.h:357
Declarations for thread-safe data structures.
Declarations for utility functions.