#ifndef AFE_AUDIO_PROCESSOR_H #define AFE_AUDIO_PROCESSOR_H #include #include #include #include #include #include #include #include "audio_processor.h" #include "audio_codec.h" class AfeAudioProcessor : public AudioProcessor { public: AfeAudioProcessor(); ~AfeAudioProcessor(); void Initialize(AudioCodec* codec, int frame_duration_ms) override; void Feed(std::vector&& data) override; void Start() override; void Stop() override; bool IsRunning() override; void OnOutput(std::function&& data)> callback) override; void OnVadStateChange(std::function callback) override; size_t GetFeedSize() override; void EnableDeviceAec(bool enable) override; private: EventGroupHandle_t event_group_ = nullptr; esp_afe_sr_iface_t* afe_iface_ = nullptr; esp_afe_sr_data_t* afe_data_ = nullptr; std::function&& data)> output_callback_; std::function vad_state_change_callback_; AudioCodec* codec_ = nullptr; int frame_samples_ = 0; bool is_speaking_ = false; std::vector output_buffer_; void AudioProcessorTask(); }; #endif