[microphone] simplify mute handling to avoid unnecessary copies (#9303)

This commit is contained in:
Kevin Ahrendt 2025-07-03 17:17:01 +01:00 committed by GitHub
parent 1ef7b2d64f
commit 547c7d6dc8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 7 additions and 11 deletions

View File

@ -5,17 +5,15 @@ namespace microphone {
void Microphone::add_data_callback(std::function<void(const std::vector<uint8_t> &)> &&data_callback) {
std::function<void(const std::vector<uint8_t> &)> mute_handled_callback =
[this, data_callback](const std::vector<uint8_t> &data) { data_callback(this->silence_audio_(data)); };
[this, data_callback](const std::vector<uint8_t> &data) {
if (this->mute_state_) {
data_callback(std::vector<uint8_t>(data.size(), 0));
} else {
data_callback(data);
};
};
this->data_callbacks_.add(std::move(mute_handled_callback));
}
std::vector<uint8_t> Microphone::silence_audio_(std::vector<uint8_t> data) {
if (this->mute_state_) {
std::memset((void *) data.data(), 0, data.size());
}
return data;
}
} // namespace microphone
} // namespace esphome

View File

@ -33,8 +33,6 @@ class Microphone {
audio::AudioStreamInfo get_audio_stream_info() { return this->audio_stream_info_; }
protected:
std::vector<uint8_t> silence_audio_(std::vector<uint8_t> data);
State state_{STATE_STOPPED};
bool mute_state_{false};