#pragma once #include #include #include #include #include class QLabel; class OBSBasicStatusBar : public QStatusBar { Q_OBJECT private: QLabel *delayInfo; QLabel *droppedFrames; QLabel *sessionTime; QLabel *cpuUsage; QLabel *kbps; obs_output_t *streamOutput = nullptr; obs_output_t *recordOutput = nullptr; bool active = false; int retries = 0; int totalSeconds = 0; int reconnectTimeout = 0; int delaySecTotal = 0; int delaySecStarting = 0; int delaySecStopping = 0; int startSkippedFrameCount = 0; int startTotalFrameCount = 0; int lastSkippedFrameCount = 0; int bitrateUpdateSeconds = 0; uint64_t lastBytesSent = 0; uint64_t lastBytesSentTime = 0; QPointer refreshTimer; obs_output_t *GetOutput(); void Activate(); void Deactivate(); void UpdateDelayMsg(); void UpdateBandwidth(); void UpdateSessionTime(); void UpdateDroppedFrames(); static void OBSOutputReconnect(void *data, calldata_t *params); static void OBSOutputReconnectSuccess(void *data, calldata_t *params); private slots: void Reconnect(int seconds); void ReconnectSuccess(); void UpdateStatusBar(); void UpdateCPUUsage(); public: OBSBasicStatusBar(QWidget *parent); void StreamDelayStarting(int sec); void StreamDelayStopping(int sec); void StreamStarted(obs_output_t *output); void StreamStopped(); void RecordingStarted(obs_output_t *output); void RecordingStopped(); };