OBSBasicStats.hpp 1.7 KB

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