]> git.sesse.net Git - nageru/blob - vumeter.h
Add a peak display.
[nageru] / vumeter.h
1 #ifndef VUMETER_H
2 #define VUMETER_H
3
4 #include <QWidget>
5 #include <QLabel>
6 #include <QPaintEvent>
7
8 #include <mutex>
9
10 class VUMeter : public QWidget
11 {
12         Q_OBJECT
13
14 public:
15         VUMeter(QWidget *parent);
16
17         void set_level(float level_lufs) {
18                 std::unique_lock<std::mutex> lock(level_mutex);
19                 this->level_lufs = level_lufs;
20                 update();
21         }
22
23 private:
24         void paintEvent(QPaintEvent *event) override;
25
26         std::mutex level_mutex;
27         float level_lufs = -HUGE_VAL;
28 };
29
30 extern VUMeter *global_vu_meter;
31 extern QLabel *global_peak_display;
32
33 #endif