ESPHome 2026.2.1
Loading...
Searching...
No Matches
resampler_speaker.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef USE_ESP32
4
8
10
11#include <freertos/FreeRTOS.h>
12#include <freertos/event_groups.h>
13
14namespace esphome {
15namespace resampler {
16
18 public:
19 float get_setup_priority() const override { return esphome::setup_priority::DATA; }
20 void dump_config() override;
21 void setup() override;
22 void loop() override;
23
24 size_t play(const uint8_t *data, size_t length, TickType_t ticks_to_wait) override;
25 size_t play(const uint8_t *data, size_t length) override { return this->play(data, length, 0); }
26
27 void start() override;
28 void stop() override;
29 void finish() override;
30
31 void set_pause_state(bool pause_state) override { this->output_speaker_->set_pause_state(pause_state); }
32 bool get_pause_state() const override { return this->output_speaker_->get_pause_state(); }
33
34 bool has_buffered_data() const override;
35
37 void set_mute_state(bool mute_state) override;
38 bool get_mute_state() override { return this->output_speaker_->get_mute_state(); }
39
41 void set_volume(float volume) override;
42 float get_volume() override { return this->output_speaker_->get_volume(); }
43
44 void set_output_speaker(speaker::Speaker *speaker) { this->output_speaker_ = speaker; }
45 void set_task_stack_in_psram(bool task_stack_in_psram) { this->task_stack_in_psram_ = task_stack_in_psram; }
46
47 void set_target_bits_per_sample(uint8_t target_bits_per_sample) {
48 this->target_bits_per_sample_ = target_bits_per_sample;
49 }
50 void set_target_sample_rate(uint32_t target_sample_rate) { this->target_sample_rate_ = target_sample_rate; }
51
52 void set_filters(uint16_t filters) { this->filters_ = filters; }
53 void set_taps(uint16_t taps) { this->taps_ = taps; }
54
55 void set_buffer_duration(uint32_t buffer_duration_ms) { this->buffer_duration_ms_ = buffer_duration_ms; }
56
57 protected:
62 esp_err_t start_();
63
68 esp_err_t start_task_();
69
73
75 void set_start_error_(esp_err_t err);
76
78 void delete_task_();
79
81 void send_command_(uint32_t command_bit, bool wake_loop = false);
82
83 inline bool requires_resampling_() const;
84 static void resample_task(void *params);
85
86 EventGroupHandle_t event_group_{nullptr};
87
88 std::weak_ptr<RingBuffer> ring_buffer_;
89
91
94
95 TaskHandle_t task_handle_{nullptr};
96 StaticTask_t task_stack_;
97 StackType_t *task_stack_buffer_{nullptr};
98
100
101 uint16_t taps_;
102 uint16_t filters_;
103
106
108 uint32_t state_start_ms_{0};
109
111};
112
113} // namespace resampler
114} // namespace esphome
115
116#endif
void set_start_error_(esp_err_t err)
Sets the appropriate status error based on the start failure reason.
void set_volume(float volume) override
Volume state changes are passed to the parent's output speaker.
void set_target_sample_rate(uint32_t target_sample_rate)
void set_pause_state(bool pause_state) override
void set_target_bits_per_sample(uint8_t target_bits_per_sample)
std::weak_ptr< RingBuffer > ring_buffer_
size_t play(const uint8_t *data, size_t length) override
audio::AudioStreamInfo target_stream_info_
void set_output_speaker(speaker::Speaker *speaker)
void set_buffer_duration(uint32_t buffer_duration_ms)
esp_err_t start_()
Starts the output speaker after setting the resampled stream info.
size_t play(const uint8_t *data, size_t length, TickType_t ticks_to_wait) override
float get_setup_priority() const override
void set_task_stack_in_psram(bool task_stack_in_psram)
void enter_stopping_state_()
Transitions to STATE_STOPPING, records the stopping timestamp, sends the task stop command if the tas...
void delete_task_()
Deletes the resampler task if suspended, deallocates the task stack, and resets the related pointers.
void send_command_(uint32_t command_bit, bool wake_loop=false)
Sends a command via event group bits, enables the loop, and optionally wakes the main loop.
esp_err_t start_task_()
Starts the resampler task after allocating the task stack.
void set_mute_state(bool mute_state) override
Mute state changes are passed to the parent's output speaker.
virtual float get_volume()
Definition speaker.h:79
virtual bool get_pause_state() const
Definition speaker.h:62
virtual void set_pause_state(bool pause_state)
Definition speaker.h:61
virtual bool get_mute_state()
Definition speaker.h:93
const float DATA
For components that import data from directly connected sensors like DHT.
Definition component.cpp:84
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
uint16_t length
Definition tt21100.cpp:0