window-basic-stats.hpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #pragma once
  2. #include <obs.hpp>
  3. #include <util/platform.h>
  4. #include <obs-frontend-api.h>
  5. #include <QPointer>
  6. #include <QWidget>
  7. #include <QTimer>
  8. #include <QLabel>
  9. #include <QList>
  10. class QGridLayout;
  11. class QCloseEvent;
  12. class OBSBasicStats : public QWidget {
  13. Q_OBJECT
  14. QLabel *fps = nullptr;
  15. QLabel *cpuUsage = nullptr;
  16. QLabel *hddSpace = nullptr;
  17. QLabel *recordTimeLeft = nullptr;
  18. QLabel *memUsage = nullptr;
  19. QLabel *renderTime = nullptr;
  20. QLabel *skippedFrames = nullptr;
  21. QLabel *missedFrames = nullptr;
  22. QGridLayout *outputLayout = nullptr;
  23. os_cpu_usage_info_t *cpu_info = nullptr;
  24. QTimer timer;
  25. QTimer recTimeLeft;
  26. uint64_t num_bytes = 0;
  27. std::vector<long double> bitrates;
  28. struct OutputLabels {
  29. QPointer<QLabel> name;
  30. QPointer<QLabel> status;
  31. QPointer<QLabel> droppedFrames;
  32. QPointer<QLabel> megabytesSent;
  33. QPointer<QLabel> bitrate;
  34. uint64_t lastBytesSent = 0;
  35. uint64_t lastBytesSentTime = 0;
  36. int first_total = 0;
  37. int first_dropped = 0;
  38. void Update(obs_output_t *output, bool rec);
  39. void Reset(obs_output_t *output);
  40. long double kbps = 0.0l;
  41. };
  42. QList<OutputLabels> outputLabels;
  43. void AddOutputLabels(QString name);
  44. void Update();
  45. virtual void closeEvent(QCloseEvent *event) override;
  46. static void OBSFrontendEvent(enum obs_frontend_event event, void *ptr);
  47. public:
  48. OBSBasicStats(QWidget *parent = nullptr, bool closable = true);
  49. ~OBSBasicStats();
  50. static void InitializeValues();
  51. void StartRecTimeLeft();
  52. void ResetRecTimeLeft();
  53. private:
  54. QPointer<QObject> shortcutFilter;
  55. private slots:
  56. void RecordingTimeLeft();
  57. public slots:
  58. void Reset();
  59. protected:
  60. virtual void showEvent(QShowEvent *event) override;
  61. virtual void hideEvent(QHideEvent *event) override;
  62. };