Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -800,8 +800,11 @@ namespace config {
audio_t audio {
{}, // audio_sink
{}, // virtual_sink
{}, // mic_sink
{}, // mic_capture_device
500, // mic_buffer_ms
3, // mic_buffer_packets
true, // stream audio
true, // install_steam_drivers
true, // keep_sink_default
true, // auto_capture
};
Expand Down Expand Up @@ -1659,8 +1662,11 @@ namespace config {

string_f(vars, "audio_sink", audio.sink);
string_f(vars, "virtual_sink", audio.virtual_sink);
string_f(vars, "mic_sink", audio.mic_sink);
string_f(vars, "mic_capture_device", audio.mic_capture_device);
int_f(vars, "mic_buffer_ms", audio.mic_buffer_ms);
int_f(vars, "mic_buffer_packets", audio.mic_buffer_packets);
bool_f(vars, "stream_audio", audio.stream);
bool_f(vars, "install_steam_audio_drivers", audio.install_steam_drivers);
bool_f(vars, "keep_sink_default", audio.keep_default);
bool_f(vars, "auto_capture_sink", audio.auto_capture);

Expand Down
5 changes: 4 additions & 1 deletion src/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,11 @@ namespace config {
struct audio_t {
std::string sink;
std::string virtual_sink;
std::string mic_sink; // Render endpoint for mic passthrough (e.g. "CABLE Input")
std::string mic_capture_device; // Capture endpoint to set as default (e.g. "CABLE Output")
int mic_buffer_ms; // Underrun gap threshold in milliseconds
int mic_buffer_packets; // Jitter buffer prebuffer packet count
bool stream;
bool install_steam_drivers;
bool keep_default;
bool auto_capture;
};
Expand Down
24 changes: 24 additions & 0 deletions src/platform/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -527,12 +527,36 @@ namespace platf {
virtual ~mic_t() = default;
};

class speaker_t {
public:
virtual int write(const float *samples, std::uint32_t frame_count) = 0;
virtual ~speaker_t() = default;
};

struct capture_snapshot_t {
std::wstring console_id;
std::wstring comms_id;
std::wstring multimedia_id;
};

class audio_control_t {
public:
virtual int set_sink(const std::string &sink) = 0;

virtual std::unique_ptr<mic_t> microphone(const std::uint8_t *mapping, int channels, std::uint32_t sample_rate, std::uint32_t frame_size) = 0;

virtual std::unique_ptr<speaker_t> virtual_microphone(const std::string &device_name, std::uint32_t sample_rate, std::uint32_t frame_size) = 0;

virtual capture_snapshot_t snapshot_capture_defaults() { return {}; }

virtual void switch_capture_to(const std::string &device_name) {}

virtual void restore_capture_from(const capture_snapshot_t &snapshot) {}

virtual std::string get_current_default_capture_name() { return {}; }

virtual void reset_default_capture_to_first_real() {}

/**
* @brief Check if the audio sink is available in the system.
* @param sink Sink to be checked.
Expand Down
Loading