diff --git a/trunk/src/app/srs_app_pithy_print.cpp b/trunk/src/app/srs_app_pithy_print.cpp index 40c1a9b4b..cdf23569a 100644 --- a/trunk/src/app/srs_app_pithy_print.cpp +++ b/trunk/src/app/srs_app_pithy_print.cpp @@ -165,6 +165,30 @@ bool SrsErrorPithyPrint::can_print(int error_code, uint32_t* pnn) return new_stage || stage->can_print(); } +SrsAlonePithyPrint::SrsAlonePithyPrint() : info_(0) +{ + previous_tick_ = srs_get_system_time(); +} + +SrsAlonePithyPrint::~SrsAlonePithyPrint() +{ +} + +void SrsAlonePithyPrint::elapse() +{ + srs_utime_t diff = srs_get_system_time() - previous_tick_; + previous_tick_ = srs_get_system_time(); + + diff = srs_max(0, diff); + + info_.elapse(diff); +} + +bool SrsAlonePithyPrint::can_print() +{ + return info_.can_print(); +} + // The global stage manager for pithy print, multiple stages. static SrsStageManager* _srs_stages = new SrsStageManager(); diff --git a/trunk/src/app/srs_app_pithy_print.hpp b/trunk/src/app/srs_app_pithy_print.hpp index d1b044553..e9c51fe0f 100644 --- a/trunk/src/app/srs_app_pithy_print.hpp +++ b/trunk/src/app/srs_app_pithy_print.hpp @@ -89,6 +89,20 @@ public: bool can_print(int err, uint32_t* pnn = NULL); }; +// An standalone pithy print, without shared stages. +class SrsAlonePithyPrint +{ +private: + SrsStageInfo info_; + srs_utime_t previous_tick_; +public: + SrsAlonePithyPrint(); + virtual ~SrsAlonePithyPrint(); +public: + virtual void elapse(); + virtual bool can_print(); +}; + // The stage is used for a collection of object to do print, // the print time in a stage is constant and not changed, // that is, we always got one message to print every specified time.