window-basic-status-bar.hpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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 *delayInfo;
  12. QLabel *droppedFrames;
  13. QLabel *streamTime;
  14. QLabel *recordTime;
  15. QLabel *cpuUsage;
  16. QLabel *kbps;
  17. QLabel *statusSquare;
  18. obs_output_t *streamOutput = nullptr;
  19. obs_output_t *recordOutput = nullptr;
  20. bool active = false;
  21. bool overloadedNotify = true;
  22. int retries = 0;
  23. int totalStreamSeconds = 0;
  24. int totalRecordSeconds = 0;
  25. int reconnectTimeout = 0;
  26. int delaySecTotal = 0;
  27. int delaySecStarting = 0;
  28. int delaySecStopping = 0;
  29. int startSkippedFrameCount = 0;
  30. int startTotalFrameCount = 0;
  31. int lastSkippedFrameCount = 0;
  32. int bitrateUpdateSeconds = 0;
  33. uint64_t lastBytesSent = 0;
  34. uint64_t lastBytesSentTime = 0;
  35. QPixmap transparentPixmap;
  36. QPixmap greenPixmap;
  37. QPixmap grayPixmap;
  38. QPixmap redPixmap;
  39. float lastCongestion = 0.0f;
  40. QPointer<QTimer> refreshTimer;
  41. obs_output_t *GetOutput();
  42. void Activate();
  43. void Deactivate();
  44. void UpdateDelayMsg();
  45. void UpdateBandwidth();
  46. void UpdateStreamTime();
  47. void UpdateRecordTime();
  48. void UpdateDroppedFrames();
  49. static void OBSOutputReconnect(void *data, calldata_t *params);
  50. static void OBSOutputReconnectSuccess(void *data, calldata_t *params);
  51. private slots:
  52. void Reconnect(int seconds);
  53. void ReconnectSuccess();
  54. void UpdateStatusBar();
  55. void UpdateCPUUsage();
  56. public:
  57. OBSBasicStatusBar(QWidget *parent);
  58. void StreamDelayStarting(int sec);
  59. void StreamDelayStopping(int sec);
  60. void StreamStarted(obs_output_t *output);
  61. void StreamStopped();
  62. void RecordingStarted(obs_output_t *output);
  63. void RecordingStopped();
  64. void ReconnectClear();
  65. };