ESPHome 2025.5.0
Loading...
Searching...
No Matches
esphome::mixer_speaker::SourceSpeaker Class Reference

#include <mixer_speaker.h>

Inheritance diagram for esphome::mixer_speaker::SourceSpeaker:
esphome::speaker::Speaker esphome::Component

Public Member Functions

void dump_config () override
 
void setup () override
 
void loop () override
 
size_t play (const uint8_t *data, size_t length, TickType_t ticks_to_wait) override
 
size_t play (const uint8_t *data, size_t length) override
 
void start () override
 
void stop () override
 
void finish () override
 
bool has_buffered_data () const override
 
void set_mute_state (bool mute_state) override
 Mute state changes are passed to the parent's output speaker.
 
bool get_mute_state () override
 
void set_volume (float volume) override
 Volume state changes are passed to the parent's output speaker.
 
float get_volume () override
 
void set_pause_state (bool pause_state) override
 
bool get_pause_state () const override
 
size_t process_data_from_source (TickType_t ticks_to_wait)
 Transfers audio from the ring buffer into the transfer buffer.
 
void apply_ducking (uint8_t decibel_reduction, uint32_t duration)
 Sets the ducking level for the source speaker.
 
void set_buffer_duration (uint32_t buffer_duration_ms)
 
void set_parent (MixerSpeaker *parent)
 
void set_timeout (uint32_t ms)
 
std::weak_ptr< audio::AudioSourceTransferBufferget_transfer_buffer ()
 
- Public Member Functions inherited from esphome::speaker::Speaker
size_t play (const std::vector< uint8_t > &data)
 
bool is_running () const
 
bool is_stopped () const
 
void set_audio_dac (audio_dac::AudioDac *audio_dac)
 
void set_audio_stream_info (const audio::AudioStreamInfo &audio_stream_info)
 
audio::AudioStreamInfoget_audio_stream_info ()
 
void add_audio_output_callback (std::function< void(uint32_t, int64_t)> &&callback)
 Callback function for sending the duration of the audio written to the speaker since the last callback.
 
- Public Member Functions inherited from esphome::Component
virtual float get_setup_priority () const
 priority of setup().
 
float get_actual_setup_priority () const
 
void set_setup_priority (float priority)
 
virtual float get_loop_priority () const
 priority of loop().
 
void call ()
 
virtual void on_shutdown ()
 
virtual void on_safe_shutdown ()
 
uint32_t get_component_state () const
 
virtual void mark_failed ()
 Mark this component as failed.
 
void mark_failed (const char *message)
 
bool is_failed () const
 
bool is_ready () const
 
virtual bool can_proceed ()
 
bool status_has_warning () const
 
bool status_has_error () const
 
void status_set_warning (const char *message="unspecified")
 
void status_set_error (const char *message="unspecified")
 
void status_clear_warning ()
 
void status_clear_error ()
 
void status_momentary_warning (const std::string &name, uint32_t length=5000)
 
void status_momentary_error (const std::string &name, uint32_t length=5000)
 
bool has_overridden_loop () const
 
void set_component_source (const char *source)
 Set where this component was loaded from for some debug messages.
 
const char * get_component_source () const
 Get the integration where this component was declared as a string.
 
bool should_warn_of_blocking (uint32_t blocking_time)
 

Protected Member Functions

esp_err_t start_ ()
 
void stop_ ()
 
- Protected Member Functions inherited from esphome::Component
virtual void call_loop ()
 
virtual void call_setup ()
 
virtual void call_dump_config ()
 
void set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a unique name.
 
void set_interval (uint32_t interval, std::function< void()> &&f)
 
bool cancel_interval (const std::string &name)
 Cancel an interval function.
 
void set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f)
 Set an retry function with a unique name.
 
void set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f)
 
bool cancel_retry (const std::string &name)
 Cancel a retry function.
 
void set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a unique name.
 
void set_timeout (uint32_t timeout, std::function< void()> &&f)
 
bool cancel_timeout (const std::string &name)
 Cancel a timeout function.
 
void defer (const std::string &name, std::function< void()> &&f)
 Defer a callback to the next loop() call.
 
void defer (std::function< void()> &&f)
 Defer a callback to the next loop() call.
 
bool cancel_defer (const std::string &name)
 Cancel a defer callback using the specified name, name must not be empty.
 

Static Protected Member Functions

static void duck_samples (int16_t *input_buffer, uint32_t input_samples_to_duck, int8_t *current_ducking_db_reduction, uint32_t *ducking_transition_samples_remaining, uint32_t samples_per_ducking_step, int8_t db_change_per_ducking_step)
 Ducks audio samples by a specified amount.
 

Protected Attributes

MixerSpeakerparent_
 
std::shared_ptr< audio::AudioSourceTransferBuffertransfer_buffer_
 
std::weak_ptr< RingBufferring_buffer_
 
uint32_t buffer_duration_ms_
 
uint32_t last_seen_data_ms_ {0}
 
optional< uint32_t > timeout_ms_
 
bool stop_gracefully_ {false}
 
bool pause_state_ {false}
 
int8_t target_ducking_db_reduction_ {0}
 
int8_t current_ducking_db_reduction_ {0}
 
int8_t db_change_per_ducking_step_ {1}
 
uint32_t ducking_transition_samples_remaining_ {0}
 
uint32_t samples_per_ducking_step_ {0}
 
uint32_t pending_playback_frames_ {0}
 
- Protected Attributes inherited from esphome::speaker::Speaker
State state_ {STATE_STOPPED}
 
audio::AudioStreamInfo audio_stream_info_
 
float volume_ {1.0f}
 
bool mute_state_ {false}
 
audio_dac::AudioDacaudio_dac_ {nullptr}
 
CallbackManager< void(uint32_t, int64_t)> audio_output_callback_ {}
 
- Protected Attributes inherited from esphome::Component
uint32_t component_state_ {0x0000}
 State of this component.
 
float setup_priority_override_ {NAN}
 
const char * component_source_ {nullptr}
 
uint32_t warn_if_blocking_over_ {WARN_IF_BLOCKING_OVER_MS}
 
std::string error_message_ {}
 

Detailed Description

Definition at line 39 of file mixer_speaker.h.

Member Function Documentation

◆ apply_ducking()

void esphome::mixer_speaker::SourceSpeaker::apply_ducking ( uint8_t decibel_reduction,
uint32_t duration )

Sets the ducking level for the source speaker.

Parameters
decibel_reduction(uint8_t) The dB reduction level. For example, 0 is no change, 10 is a reduction by 10 dB
duration(uint32_t) The number of milliseconds to transition from the current level to the new level

Definition at line 213 of file mixer_speaker.cpp.

◆ duck_samples()

void esphome::mixer_speaker::SourceSpeaker::duck_samples ( int16_t * input_buffer,
uint32_t input_samples_to_duck,
int8_t * current_ducking_db_reduction,
uint32_t * ducking_transition_samples_remaining,
uint32_t samples_per_ducking_step,
int8_t db_change_per_ducking_step )
staticprotected

Ducks audio samples by a specified amount.

When changing the ducking amount, it can transition gradually over a specified amount of samples.

Parameters
input_bufferbuffer with audio samples to be ducked in place
input_samples_to_ducknumber of samples to process in input_buffer
current_ducking_db_reductionpointer to the current dB reduction
ducking_transition_samples_remainingpointer to the total number of samples left before the the transition is finished
samples_per_ducking_steptotal number of samples per ducking step for the transition
db_change_per_ducking_stepthe change in dB reduction per step

Definition at line 244 of file mixer_speaker.cpp.

◆ dump_config()

void esphome::mixer_speaker::SourceSpeaker::dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 45 of file mixer_speaker.cpp.

◆ finish()

void esphome::mixer_speaker::SourceSpeaker::finish ( )
overridevirtual

Reimplemented from esphome::speaker::Speaker.

Definition at line 171 of file mixer_speaker.cpp.

◆ get_mute_state()

bool esphome::mixer_speaker::SourceSpeaker::get_mute_state ( )
overridevirtual

Reimplemented from esphome::speaker::Speaker.

Definition at line 182 of file mixer_speaker.cpp.

◆ get_pause_state()

bool esphome::mixer_speaker::SourceSpeaker::get_pause_state ( ) const
inlineoverridevirtual

Reimplemented from esphome::speaker::Speaker.

Definition at line 63 of file mixer_speaker.h.

◆ get_transfer_buffer()

std::weak_ptr< audio::AudioSourceTransferBuffer > esphome::mixer_speaker::SourceSpeaker::get_transfer_buffer ( )
inline

Definition at line 79 of file mixer_speaker.h.

◆ get_volume()

float esphome::mixer_speaker::SourceSpeaker::get_volume ( )
overridevirtual

Reimplemented from esphome::speaker::Speaker.

Definition at line 189 of file mixer_speaker.cpp.

◆ has_buffered_data()

bool esphome::mixer_speaker::SourceSpeaker::has_buffered_data ( ) const
overridevirtual

Implements esphome::speaker::Speaker.

Definition at line 173 of file mixer_speaker.cpp.

◆ loop()

void esphome::mixer_speaker::SourceSpeaker::loop ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 67 of file mixer_speaker.cpp.

◆ play() [1/2]

size_t esphome::mixer_speaker::SourceSpeaker::play ( const uint8_t * data,
size_t length )
inlineoverridevirtual

Implements esphome::speaker::Speaker.

Definition at line 46 of file mixer_speaker.h.

◆ play() [2/2]

size_t esphome::mixer_speaker::SourceSpeaker::play ( const uint8_t * data,
size_t length,
TickType_t ticks_to_wait )
override

Definition at line 117 of file mixer_speaker.cpp.

◆ process_data_from_source()

size_t esphome::mixer_speaker::SourceSpeaker::process_data_from_source ( TickType_t ticks_to_wait)

Transfers audio from the ring buffer into the transfer buffer.

Ducks audio while transferring.

Parameters
ticks_to_waitFreeRTOS ticks to wait while waiting to read from the ring buffer.
Returns
Number of bytes transferred from the ring buffer.

Definition at line 191 of file mixer_speaker.cpp.

◆ set_buffer_duration()

void esphome::mixer_speaker::SourceSpeaker::set_buffer_duration ( uint32_t buffer_duration_ms)
inline

Definition at line 75 of file mixer_speaker.h.

◆ set_mute_state()

void esphome::mixer_speaker::SourceSpeaker::set_mute_state ( bool mute_state)
overridevirtual

Mute state changes are passed to the parent's output speaker.

Reimplemented from esphome::speaker::Speaker.

Definition at line 177 of file mixer_speaker.cpp.

◆ set_parent()

void esphome::mixer_speaker::SourceSpeaker::set_parent ( MixerSpeaker * parent)
inline

Definition at line 76 of file mixer_speaker.h.

◆ set_pause_state()

void esphome::mixer_speaker::SourceSpeaker::set_pause_state ( bool pause_state)
inlineoverridevirtual

Reimplemented from esphome::speaker::Speaker.

Definition at line 62 of file mixer_speaker.h.

◆ set_timeout()

void esphome::mixer_speaker::SourceSpeaker::set_timeout ( uint32_t ms)
inline

Definition at line 77 of file mixer_speaker.h.

◆ set_volume()

void esphome::mixer_speaker::SourceSpeaker::set_volume ( float volume)
overridevirtual

Volume state changes are passed to the parent's output speaker.

Reimplemented from esphome::speaker::Speaker.

Definition at line 184 of file mixer_speaker.cpp.

◆ setup()

void esphome::mixer_speaker::SourceSpeaker::setup ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 55 of file mixer_speaker.cpp.

◆ start()

void esphome::mixer_speaker::SourceSpeaker::start ( )
overridevirtual

Implements esphome::speaker::Speaker.

Definition at line 132 of file mixer_speaker.cpp.

◆ start_()

esp_err_t esphome::mixer_speaker::SourceSpeaker::start_ ( )
protected

Definition at line 134 of file mixer_speaker.cpp.

◆ stop()

void esphome::mixer_speaker::SourceSpeaker::stop ( )
overridevirtual

Implements esphome::speaker::Speaker.

Definition at line 161 of file mixer_speaker.cpp.

◆ stop_()

void esphome::mixer_speaker::SourceSpeaker::stop_ ( )
protected

Definition at line 167 of file mixer_speaker.cpp.

Field Documentation

◆ buffer_duration_ms_

uint32_t esphome::mixer_speaker::SourceSpeaker::buffer_duration_ms_
protected

Definition at line 104 of file mixer_speaker.h.

◆ current_ducking_db_reduction_

int8_t esphome::mixer_speaker::SourceSpeaker::current_ducking_db_reduction_ {0}
protected

Definition at line 112 of file mixer_speaker.h.

◆ db_change_per_ducking_step_

int8_t esphome::mixer_speaker::SourceSpeaker::db_change_per_ducking_step_ {1}
protected

Definition at line 113 of file mixer_speaker.h.

◆ ducking_transition_samples_remaining_

uint32_t esphome::mixer_speaker::SourceSpeaker::ducking_transition_samples_remaining_ {0}
protected

Definition at line 114 of file mixer_speaker.h.

◆ last_seen_data_ms_

uint32_t esphome::mixer_speaker::SourceSpeaker::last_seen_data_ms_ {0}
protected

Definition at line 105 of file mixer_speaker.h.

◆ parent_

MixerSpeaker* esphome::mixer_speaker::SourceSpeaker::parent_
protected

Definition at line 99 of file mixer_speaker.h.

◆ pause_state_

bool esphome::mixer_speaker::SourceSpeaker::pause_state_ {false}
protected

Definition at line 109 of file mixer_speaker.h.

◆ pending_playback_frames_

uint32_t esphome::mixer_speaker::SourceSpeaker::pending_playback_frames_ {0}
protected

Definition at line 117 of file mixer_speaker.h.

◆ ring_buffer_

std::weak_ptr<RingBuffer> esphome::mixer_speaker::SourceSpeaker::ring_buffer_
protected

Definition at line 102 of file mixer_speaker.h.

◆ samples_per_ducking_step_

uint32_t esphome::mixer_speaker::SourceSpeaker::samples_per_ducking_step_ {0}
protected

Definition at line 115 of file mixer_speaker.h.

◆ stop_gracefully_

bool esphome::mixer_speaker::SourceSpeaker::stop_gracefully_ {false}
protected

Definition at line 107 of file mixer_speaker.h.

◆ target_ducking_db_reduction_

int8_t esphome::mixer_speaker::SourceSpeaker::target_ducking_db_reduction_ {0}
protected

Definition at line 111 of file mixer_speaker.h.

◆ timeout_ms_

optional<uint32_t> esphome::mixer_speaker::SourceSpeaker::timeout_ms_
protected

Definition at line 106 of file mixer_speaker.h.

◆ transfer_buffer_

std::shared_ptr<audio::AudioSourceTransferBuffer> esphome::mixer_speaker::SourceSpeaker::transfer_buffer_
protected

Definition at line 101 of file mixer_speaker.h.


The documentation for this class was generated from the following files: