Line data Source code
1 : #pragma once
2 : #include <array>
3 : #include <cstdint>
4 :
5 : #include "audio/dsp/level_analyzer.h"
6 : #include "audio/dsp/spectrum_analyzer.h"
7 : #include "audio/engine/i_audio_engine.h"
8 :
9 : namespace Amplitron {
10 :
11 5 : class AudioMetricsService {
12 : public:
13 : void update(IAudioEngine& engine, float dt);
14 :
15 3 : const LevelAnalyzer& level_analyzer() const { return level_analyzer_; }
16 5 : const SpectrumAnalyzer& spectrum_analyzer() const { return spectrum_analyzer_; }
17 :
18 : private:
19 : LevelAnalyzer level_analyzer_;
20 : SpectrumAnalyzer spectrum_analyzer_;
21 5 : uint64_t analyzer_last_sequence_ = 0;
22 5 : std::array<float, IAudioEngine::ANALYZER_FFT_SIZE> analyzer_input_buf_{};
23 5 : std::array<float, IAudioEngine::ANALYZER_FFT_SIZE> analyzer_output_buf_{};
24 : };
25 :
26 : } // namespace Amplitron
|