#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, bool realtime_chat) override; void Feed(const 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; 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; bool is_speaking_ = false; void AudioProcessorTask(); }; #endif