window-basic-status-bar.hpp 2.0 KB

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