16class WaveformViewerProcessor :
public QObject
24 NOTIFY stereoPortChanged REQUIRED)
26 QVector<float> waveformData READ waveformData NOTIFY waveformDataChanged)
28 int bufferSize READ bufferSize WRITE setBufferSize NOTIFY bufferSizeChanged)
30 int displayPoints READ displayPoints WRITE setDisplayPoints NOTIFY
35 explicit WaveformViewerProcessor (QObject * parent =
nullptr);
36 ~WaveformViewerProcessor ()
override;
45 QVector<float> waveformData ()
const {
return waveform_data_; }
47 int bufferSize ()
const {
return static_cast<int> (buffer_size_); }
48 void setBufferSize (
int size);
50 int displayPoints ()
const {
return static_cast<int> (display_points_); }
51 void setDisplayPoints (
int points);
57 void waveformDataChanged ();
58 void bufferSizeChanged ();
59 void displayPointsChanged ();
60 void stereoPortChanged ();
65 void process_audio ();
67 static constexpr size_t DEFAULT_BUFFER_SIZE = 2048;
68 static constexpr size_t DEFAULT_DISPLAY_POINTS = 256;
70 size_t buffer_size_{};
71 size_t display_points_{};
73 QPointer<dsp::AudioPort> port_obj_;
74 std::optional<dsp::RingBufferOwningPortMixin::RingBufferReader> ring_reader_;
76 QVector<float> waveform_data_;
77 std::vector<float> mono_buffer_;
78 std::vector<float> left_buffer_;
79 std::vector<float> right_buffer_;
81 QTimer * update_timer_ =
nullptr;
83 QPointer<dsp::AudioEngine> audio_engine_;