ESPHome 2025.5.0
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/event_groups.h>
12#include <freertos/FreeRTOS.h>
13
14namespace esphome {
15namespace resampler {
16
18 public:
19 float get_setup_priority() const override { return esphome::setup_priority::DATA; }
20 void setup() override;
21 void loop() override;
22
23 size_t play(const uint8_t *data, size_t length, TickType_t ticks_to_wait) override;
24 size_t play(const uint8_t *data, size_t length) override { return this->play(data, length, 0); }
25
26 void start() override;
27 void stop() override;
28 void finish() override;
29
30 void set_pause_state(bool pause_state) override { this->output_speaker_->set_pause_state(pause_state); }
31 bool get_pause_state() const override { return this->output_speaker_->get_pause_state(); }
32
33 bool has_buffered_data() const override;
34
36 void set_mute_state(bool mute_state) override;
37 bool get_mute_state() override { return this->output_speaker_->get_mute_state(); }
38
40 void set_volume(float volume) override;
41 float get_volume() override { return this->output_speaker_->get_volume(); }
42
43 void set_output_speaker(speaker::Speaker *speaker) { this->output_speaker_ = speaker; }
44 void set_task_stack_in_psram(bool task_stack_in_psram) { this->task_stack_in_psram_ = task_stack_in_psram; }
45
46 void set_target_bits_per_sample(uint8_t target_bits_per_sample) {
47 this->target_bits_per_sample_ = target_bits_per_sample;
48 }
49 void set_target_sample_rate(uint32_t target_sample_rate) { this->target_sample_rate_ = target_sample_rate; }
50
51 void set_filters(uint16_t filters) { this->filters_ = filters; }
52 void set_taps(uint16_t taps) { this->taps_ = taps; }
53
54 void set_buffer_duration(uint32_t buffer_duration_ms) { this->buffer_duration_ms_ = buffer_duration_ms; }
55
56 protected:
61 esp_err_t start_();
62
67 esp_err_t start_task_();
68
70 void stop_();
71
75 esp_err_t delete_task_();
76
77 inline bool requires_resampling_() const;
78 static void resample_task(void *params);
79
80 EventGroupHandle_t event_group_{nullptr};
81
82 std::weak_ptr<RingBuffer> ring_buffer_;
83
85
87 bool task_created_{false};
88
89 TaskHandle_t task_handle_{nullptr};
90 StaticTask_t task_stack_;
91 StackType_t *task_stack_buffer_{nullptr};
92
94
95 uint16_t taps_;
96 uint16_t filters_;
97
100
102
104};
105
106} // namespace resampler
107} // namespace esphome
108
109#endif
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)
esp_err_t delete_task_()
Deallocates the task stack and resets the pointers.
esp_err_t start_task_()
Starts the resampler task after allocating the task stack.
void stop_()
Stops the output speaker. If the resampling task is running, it sends the stop command.
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:19
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
uint16_t length
Definition tt21100.cpp:0