feat(display): Configure display device based on user config (#3441)

This commit is contained in:
Lukas Senionis
2025-01-08 03:40:48 +02:00
committed by GitHub
parent df0bc3f82f
commit 76bea8acb9
22 changed files with 1690 additions and 95 deletions

View File

@@ -550,6 +550,14 @@ namespace platf {
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;
/**
* @brief Check if the audio sink is available in the system.
* @param sink Sink to be checked.
* @returns True if available, false otherwise.
*/
virtual bool
is_sink_available(const std::string &sink) = 0;
virtual std::optional<sink_t>
sink_info() = 0;

View File

@@ -473,6 +473,12 @@ namespace platf {
return ::platf::microphone(mapping, channels, sample_rate, frame_size, get_monitor_name(sink_name));
}
bool
is_sink_available(const std::string &sink) override {
BOOST_LOG(warning) << "audio_control_t::is_sink_available() unimplemented: "sv << sink;
return true;
}
int
set_sink(const std::string &sink) override {
auto alarm = safe::make_alarm<int>();

View File

@@ -81,6 +81,12 @@ namespace platf {
return mic;
}
bool
is_sink_available(const std::string &sink) override {
BOOST_LOG(warning) << "audio_control_t::is_sink_available() unimplemented: "sv << sink;
return true;
}
std::optional<sink_t>
sink_info() override {
sink_t sink;

View File

@@ -722,6 +722,13 @@ namespace platf::audio {
return sink;
}
bool
is_sink_available(const std::string &sink) override {
const auto match_list = match_all_fields(from_utf8(sink));
const auto matched = find_device_id(match_list);
return static_cast<bool>(matched);
}
/**
* @brief Extract virtual audio sink information possibly encoded in the sink name.
* @param sink The sink name