window-basic-status-bar.hpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #pragma once
  2. #include <QStatusBar>
  3. #include <QPointer>
  4. #include <QTimer>
  5. #include <util/platform.h>
  6. #include <obs.h>
  7. class QLabel;
  8. class OBSBasicStatusBar : public QStatusBar {
  9. Q_OBJECT
  10. private:
  11. QLabel *droppedFrames;
  12. QLabel *sessionTime;
  13. QLabel *cpuUsage;
  14. QLabel *kbps;
  15. obs_output_t *streamOutput = nullptr;
  16. obs_output_t *recordOutput = nullptr;
  17. int retries = 0;
  18. int activeRefs = 0;
  19. int totalSeconds = 0;
  20. int bitrateUpdateSeconds = 0;
  21. uint64_t lastBytesSent = 0;
  22. uint64_t lastBytesSentTime = 0;
  23. QPointer<QTimer> refreshTimer;
  24. void DecRef();
  25. void IncRef();
  26. obs_output_t *GetOutput();
  27. void UpdateBandwidth();
  28. void UpdateSessionTime();
  29. void UpdateDroppedFrames();
  30. static void OBSOutputReconnect(void *data, calldata_t *params);
  31. static void OBSOutputReconnectSuccess(void *data, calldata_t *params);
  32. private slots:
  33. void Reconnect();
  34. void ReconnectSuccess();
  35. void UpdateStatusBar();
  36. void UpdateCPUUsage();
  37. public:
  38. OBSBasicStatusBar(QWidget *parent);
  39. void StreamStarted(obs_output_t *output);
  40. void StreamStopped();
  41. void RecordingStarted(obs_output_t *output);
  42. void RecordingStopped();
  43. };