#pragma once #include "engine/models/demucs/assets.h" #include "engine/framework/audio/fft.h" #include #include #include #include #include namespace engine::models::demucs { class HTDemucsPostprocessor { public: HTDemucsPostprocessor( const HTDemucsConfig & config, size_t fft_threads, const std::vector & stft_window); void combine_chunk_into( const float * freq_output, const float * time_output, int64_t input_samples, float freq_mean, float freq_std, float time_mean, float time_std, float * output); private: HTDemucsConfig config_; size_t fft_threads_ = 1; std::vector stft_window_; std::shared_ptr fft_plan_; std::vector window_sq_; std::vector window_sums_; std::vector window_inverse_; std::vector> spectrum_; std::vector framed_; std::vector accum_; float fft_scale_ = 1.0f; }; } // namespace engine::models::demucs