From bf65b73569037e57d2e6ac2b0273aff7cb176867 Mon Sep 17 00:00:00 2001 From: Kevin Ahrendt Date: Wed, 12 Mar 2025 14:34:38 -0500 Subject: [PATCH] [speaker, resampler, mixer] Make volume and mute getters virtual (#8391) --- esphome/components/mixer/speaker/mixer_speaker.cpp | 4 ++++ esphome/components/mixer/speaker/mixer_speaker.h | 2 ++ esphome/components/resampler/speaker/resampler_speaker.h | 2 ++ esphome/components/speaker/speaker.h | 4 ++-- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/esphome/components/mixer/speaker/mixer_speaker.cpp b/esphome/components/mixer/speaker/mixer_speaker.cpp index d9231154a3..121a62392c 100644 --- a/esphome/components/mixer/speaker/mixer_speaker.cpp +++ b/esphome/components/mixer/speaker/mixer_speaker.cpp @@ -177,11 +177,15 @@ void SourceSpeaker::set_mute_state(bool mute_state) { this->parent_->get_output_speaker()->set_mute_state(mute_state); } +bool SourceSpeaker::get_mute_state() { return this->parent_->get_output_speaker()->get_mute_state(); } + void SourceSpeaker::set_volume(float volume) { this->volume_ = volume; this->parent_->get_output_speaker()->set_volume(volume); } +float SourceSpeaker::get_volume() { return this->parent_->get_output_speaker()->get_volume(); } + size_t SourceSpeaker::process_data_from_source(TickType_t ticks_to_wait) { if (!this->transfer_buffer_.use_count()) { return 0; diff --git a/esphome/components/mixer/speaker/mixer_speaker.h b/esphome/components/mixer/speaker/mixer_speaker.h index b2cb3e1e39..0bd6b5f4c8 100644 --- a/esphome/components/mixer/speaker/mixer_speaker.h +++ b/esphome/components/mixer/speaker/mixer_speaker.h @@ -53,9 +53,11 @@ class SourceSpeaker : public speaker::Speaker, public Component { /// @brief Mute state changes are passed to the parent's output speaker void set_mute_state(bool mute_state) override; + bool get_mute_state() override; /// @brief Volume state changes are passed to the parent's output speaker void set_volume(float volume) override; + float get_volume() override; void set_pause_state(bool pause_state) override { this->pause_state_ = pause_state; } bool get_pause_state() const override { return this->pause_state_; } diff --git a/esphome/components/resampler/speaker/resampler_speaker.h b/esphome/components/resampler/speaker/resampler_speaker.h index c44f740fa2..d5e3f2b6d6 100644 --- a/esphome/components/resampler/speaker/resampler_speaker.h +++ b/esphome/components/resampler/speaker/resampler_speaker.h @@ -34,9 +34,11 @@ class ResamplerSpeaker : public Component, public speaker::Speaker { /// @brief Mute state changes are passed to the parent's output speaker void set_mute_state(bool mute_state) override; + bool get_mute_state() override { return this->output_speaker_->get_mute_state(); } /// @brief Volume state changes are passed to the parent's output speaker void set_volume(float volume) override; + float get_volume() override { return this->output_speaker_->get_volume(); } void set_output_speaker(speaker::Speaker *speaker) { this->output_speaker_ = speaker; } void set_task_stack_in_psram(bool task_stack_in_psram) { this->task_stack_in_psram_ = task_stack_in_psram; } diff --git a/esphome/components/speaker/speaker.h b/esphome/components/speaker/speaker.h index 74c4822eca..c4cf912fa6 100644 --- a/esphome/components/speaker/speaker.h +++ b/esphome/components/speaker/speaker.h @@ -76,7 +76,7 @@ class Speaker { } #endif }; - float get_volume() { return this->volume_; } + virtual float get_volume() { return this->volume_; } virtual void set_mute_state(bool mute_state) { this->mute_state_ = mute_state; @@ -90,7 +90,7 @@ class Speaker { } #endif } - bool get_mute_state() { return this->mute_state_; } + virtual bool get_mute_state() { return this->mute_state_; } #ifdef USE_AUDIO_DAC void set_audio_dac(audio_dac::AudioDac *audio_dac) { this->audio_dac_ = audio_dac; }