window-basic-stats.hpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #pragma once
  2. #include <obs.hpp>
  3. #include <util/platform.h>
  4. #include <QPointer>
  5. #include <QWidget>
  6. #include <QTimer>
  7. #include <QLabel>
  8. #include <QList>
  9. class QGridLayout;
  10. class QCloseEvent;
  11. class OBSBasicStats : public QWidget {
  12. Q_OBJECT
  13. QLabel *fps = nullptr;
  14. QLabel *cpuUsage = nullptr;
  15. QLabel *hddSpace = nullptr;
  16. QLabel *recordTimeLeft = nullptr;
  17. QLabel *memUsage = nullptr;
  18. QLabel *renderTime = nullptr;
  19. QLabel *skippedFrames = nullptr;
  20. QLabel *missedFrames = nullptr;
  21. QGridLayout *outputLayout = nullptr;
  22. os_cpu_usage_info_t *cpu_info = nullptr;
  23. QTimer timer;
  24. QTimer recTimeLeft;
  25. uint64_t num_bytes = 0;
  26. std::vector<long double> bitrates;
  27. struct OutputLabels {
  28. QPointer<QLabel> name;
  29. QPointer<QLabel> status;
  30. QPointer<QLabel> droppedFrames;
  31. QPointer<QLabel> megabytesSent;
  32. QPointer<QLabel> bitrate;
  33. uint64_t lastBytesSent = 0;
  34. uint64_t lastBytesSentTime = 0;
  35. int first_total = 0;
  36. int first_dropped = 0;
  37. void Update(obs_output_t *output, bool rec);
  38. void Reset(obs_output_t *output);
  39. long double kbps = 0.0l;
  40. };
  41. QList<OutputLabels> outputLabels;
  42. void AddOutputLabels(QString name);
  43. void Update();
  44. void Reset();
  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. protected:
  58. virtual void showEvent(QShowEvent *event) override;
  59. virtual void hideEvent(QHideEvent *event) override;
  60. };