UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
vuMeterWidget.hpp
Go to the documentation of this file.
1#ifndef VUMETERWIDGET_HPP
2#define VUMETERWIDGET_HPP
3
4#include <QTimer>
5#include <QWidget>
6#include <QPaintEvent>
7#include <memory>
8#include <atomic>
9#include <chrono>
10#include <string_view>
11
12class ControlPort;
13
14class VuMeterWidget : public QWidget{
15 Q_OBJECT
16public:
17 VuMeterWidget(QWidget *parent);
18
19 void parseLine(std::string_view line);
21 void setParsePrefix(std::string_view prefix);
22
23 void setOnRightSide(bool side) { onRightSide = side; }
24
25protected:
26 void paintEvent(QPaintEvent *paintEvent);
27
28private:
29 using clock = std::chrono::steady_clock;
30 struct PeakMaximum {
31 double val = 0;
32 clock::time_point ts;
33 };
34
35 static const int max_channels = 8;
36 std::string parsePrefix = "stats ARECV";
37
38 int channels = 0;
41
45
46 bool onRightSide = false;
47
48 QTimer timer;
50 clock::time_point lastUpdate;
51
53 bool connected = false;
54
55 void paintMeter(QPainter&, int x, int y, int width, int height, double peak, double rms, double maxPeak);
56 void paintScale(QPainter&, int x, int y, int width, int height, bool leftTicks, bool rightTicks);
57
58public slots:
59 void updateVal();
60
61private slots:
63};
64
65#endif
std::chrono::steady_clock clock
void setOnRightSide(bool side)
static const int max_channels
void setParsePrefix(std::string_view prefix)
double rmsLevel[max_channels]
std::string parsePrefix
void parseLine(std::string_view line)
void paintMeter(QPainter &, int x, int y, int width, int height, double peak, double rms, double maxPeak)
double rms[max_channels]
ControlPort * controlPort
VuMeterWidget(QWidget *parent)
double peak[max_channels]
void onControlPortConnect()
void setControlPort(ControlPort *controlPort)
void paintScale(QPainter &, int x, int y, int width, int height, bool leftTicks, bool rightTicks)
clock::time_point lastUpdate
void paintEvent(QPaintEvent *paintEvent)
PeakMaximum maximumLevel[max_channels]
double barLevel[max_channels]
const char * parent
Definition settings.cpp:198