From 6dac1806279b85e4a82da608ba0eb65d839eb3ce Mon Sep 17 00:00:00 2001 From: winlin Date: Thu, 25 Feb 2021 14:06:18 +0800 Subject: [PATCH] Kernel: Never depends on another globals for global variables --- trunk/src/app/srs_app_conn.cpp | 8 +-- trunk/src/app/srs_app_hourglass.cpp | 2 +- trunk/src/app/srs_app_hybrid.cpp | 84 ++++++++++++------------- trunk/src/app/srs_app_listener.cpp | 8 +-- trunk/src/app/srs_app_rtc_conn.cpp | 18 +++--- trunk/src/app/srs_app_rtc_server.cpp | 6 +- trunk/src/app/srs_app_rtc_source.cpp | 18 +++--- trunk/src/kernel/srs_kernel_kbps.cpp | 14 ++++- trunk/src/kernel/srs_kernel_kbps.hpp | 4 +- trunk/src/kernel/srs_kernel_rtc_rtp.cpp | 2 +- trunk/src/protocol/srs_service_log.cpp | 4 +- 11 files changed, 90 insertions(+), 78 deletions(-) diff --git a/trunk/src/app/srs_app_conn.cpp b/trunk/src/app/srs_app_conn.cpp index 17301c4c4..9851313ea 100644 --- a/trunk/src/app/srs_app_conn.cpp +++ b/trunk/src/app/srs_app_conn.cpp @@ -38,10 +38,10 @@ using namespace std; #include -SrsPps* _srs_pps_ids = new SrsPps(_srs_clock); -SrsPps* _srs_pps_fids = new SrsPps(_srs_clock); -SrsPps* _srs_pps_fids_level0 = new SrsPps(_srs_clock); -SrsPps* _srs_pps_dispose = new SrsPps(_srs_clock); +SrsPps* _srs_pps_ids = new SrsPps(); +SrsPps* _srs_pps_fids = new SrsPps(); +SrsPps* _srs_pps_fids_level0 = new SrsPps(); +SrsPps* _srs_pps_dispose = new SrsPps(); ISrsDisposingHandler::ISrsDisposingHandler() { diff --git a/trunk/src/app/srs_app_hourglass.cpp b/trunk/src/app/srs_app_hourglass.cpp index f899a8b6b..b5c84ed9a 100644 --- a/trunk/src/app/srs_app_hourglass.cpp +++ b/trunk/src/app/srs_app_hourglass.cpp @@ -30,7 +30,7 @@ using namespace std; #include -SrsPps* _srs_pps_timer = new SrsPps(_srs_clock); +SrsPps* _srs_pps_timer = new SrsPps(); ISrsHourGlass::ISrsHourGlass() { diff --git a/trunk/src/app/srs_app_hybrid.cpp b/trunk/src/app/srs_app_hybrid.cpp index b8645bb4f..9a310b2ae 100644 --- a/trunk/src/app/srs_app_hybrid.cpp +++ b/trunk/src/app/srs_app_hybrid.cpp @@ -44,10 +44,10 @@ extern unsigned long long _st_stat_recvfrom; extern unsigned long long _st_stat_recvfrom_eagain; extern unsigned long long _st_stat_sendto; extern unsigned long long _st_stat_sendto_eagain; -SrsPps* _srs_pps_recvfrom = new SrsPps(_srs_clock); -SrsPps* _srs_pps_recvfrom_eagain = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sendto = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sendto_eagain = new SrsPps(_srs_clock); +SrsPps* _srs_pps_recvfrom = new SrsPps(); +SrsPps* _srs_pps_recvfrom_eagain = new SrsPps(); +SrsPps* _srs_pps_sendto = new SrsPps(); +SrsPps* _srs_pps_sendto_eagain = new SrsPps(); extern unsigned long long _st_stat_read; extern unsigned long long _st_stat_read_eagain; @@ -55,12 +55,12 @@ extern unsigned long long _st_stat_readv; extern unsigned long long _st_stat_readv_eagain; extern unsigned long long _st_stat_writev; extern unsigned long long _st_stat_writev_eagain; -SrsPps* _srs_pps_read = new SrsPps(_srs_clock); -SrsPps* _srs_pps_read_eagain = new SrsPps(_srs_clock); -SrsPps* _srs_pps_readv = new SrsPps(_srs_clock); -SrsPps* _srs_pps_readv_eagain = new SrsPps(_srs_clock); -SrsPps* _srs_pps_writev = new SrsPps(_srs_clock); -SrsPps* _srs_pps_writev_eagain = new SrsPps(_srs_clock); +SrsPps* _srs_pps_read = new SrsPps(); +SrsPps* _srs_pps_read_eagain = new SrsPps(); +SrsPps* _srs_pps_readv = new SrsPps(); +SrsPps* _srs_pps_readv_eagain = new SrsPps(); +SrsPps* _srs_pps_writev = new SrsPps(); +SrsPps* _srs_pps_writev_eagain = new SrsPps(); extern unsigned long long _st_stat_recvmsg; extern unsigned long long _st_stat_recvmsg_eagain; @@ -68,21 +68,21 @@ extern unsigned long long _st_stat_sendmsg; extern unsigned long long _st_stat_sendmsg_eagain; extern unsigned long long _st_stat_sendmmsg; extern unsigned long long _st_stat_sendmmsg_eagain; -SrsPps* _srs_pps_recvmsg = new SrsPps(_srs_clock); -SrsPps* _srs_pps_recvmsg_eagain = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sendmsg = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sendmsg_eagain = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sendmmsg = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sendmmsg_eagain = new SrsPps(_srs_clock); +SrsPps* _srs_pps_recvmsg = new SrsPps(); +SrsPps* _srs_pps_recvmsg_eagain = new SrsPps(); +SrsPps* _srs_pps_sendmsg = new SrsPps(); +SrsPps* _srs_pps_sendmsg_eagain = new SrsPps(); +SrsPps* _srs_pps_sendmmsg = new SrsPps(); +SrsPps* _srs_pps_sendmmsg_eagain = new SrsPps(); extern unsigned long long _st_stat_epoll; extern unsigned long long _st_stat_epoll_zero; extern unsigned long long _st_stat_epoll_shake; extern unsigned long long _st_stat_epoll_spin; -SrsPps* _srs_pps_epoll = new SrsPps(_srs_clock); -SrsPps* _srs_pps_epoll_zero = new SrsPps(_srs_clock); -SrsPps* _srs_pps_epoll_shake = new SrsPps(_srs_clock); -SrsPps* _srs_pps_epoll_spin = new SrsPps(_srs_clock); +SrsPps* _srs_pps_epoll = new SrsPps(); +SrsPps* _srs_pps_epoll_zero = new SrsPps(); +SrsPps* _srs_pps_epoll_shake = new SrsPps(); +SrsPps* _srs_pps_epoll_spin = new SrsPps(); extern unsigned long long _st_stat_sched_15ms; extern unsigned long long _st_stat_sched_20ms; @@ -93,26 +93,26 @@ extern unsigned long long _st_stat_sched_40ms; extern unsigned long long _st_stat_sched_80ms; extern unsigned long long _st_stat_sched_160ms; extern unsigned long long _st_stat_sched_s; -SrsPps* _srs_pps_sched_15ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sched_20ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sched_25ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sched_30ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sched_35ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sched_40ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sched_80ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sched_160ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sched_s = new SrsPps(_srs_clock); +SrsPps* _srs_pps_sched_15ms = new SrsPps(); +SrsPps* _srs_pps_sched_20ms = new SrsPps(); +SrsPps* _srs_pps_sched_25ms = new SrsPps(); +SrsPps* _srs_pps_sched_30ms = new SrsPps(); +SrsPps* _srs_pps_sched_35ms = new SrsPps(); +SrsPps* _srs_pps_sched_40ms = new SrsPps(); +SrsPps* _srs_pps_sched_80ms = new SrsPps(); +SrsPps* _srs_pps_sched_160ms = new SrsPps(); +SrsPps* _srs_pps_sched_s = new SrsPps(); #endif -SrsPps* _srs_pps_clock_15ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_clock_20ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_clock_25ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_clock_30ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_clock_35ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_clock_40ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_clock_80ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_clock_160ms = new SrsPps(_srs_clock); -SrsPps* _srs_pps_timer_s = new SrsPps(_srs_clock); +SrsPps* _srs_pps_clock_15ms = new SrsPps(); +SrsPps* _srs_pps_clock_20ms = new SrsPps(); +SrsPps* _srs_pps_clock_25ms = new SrsPps(); +SrsPps* _srs_pps_clock_30ms = new SrsPps(); +SrsPps* _srs_pps_clock_35ms = new SrsPps(); +SrsPps* _srs_pps_clock_40ms = new SrsPps(); +SrsPps* _srs_pps_clock_80ms = new SrsPps(); +SrsPps* _srs_pps_clock_160ms = new SrsPps(); +SrsPps* _srs_pps_timer_s = new SrsPps(); #if defined(SRS_DEBUG) && defined(SRS_DEBUG_STATS) extern int _st_active_count; @@ -120,10 +120,10 @@ extern unsigned long long _st_stat_thread_run; extern unsigned long long _st_stat_thread_idle; extern unsigned long long _st_stat_thread_yield; extern unsigned long long _st_stat_thread_yield2; -SrsPps* _srs_pps_thread_run = new SrsPps(_srs_clock); -SrsPps* _srs_pps_thread_idle = new SrsPps(_srs_clock); -SrsPps* _srs_pps_thread_yield = new SrsPps(_srs_clock); -SrsPps* _srs_pps_thread_yield2 = new SrsPps(_srs_clock); +SrsPps* _srs_pps_thread_run = new SrsPps(); +SrsPps* _srs_pps_thread_idle = new SrsPps(); +SrsPps* _srs_pps_thread_yield = new SrsPps(); +SrsPps* _srs_pps_thread_yield2 = new SrsPps(); #endif ISrsHybridServer::ISrsHybridServer() diff --git a/trunk/src/app/srs_app_listener.cpp b/trunk/src/app/srs_app_listener.cpp index ce335ce6d..ec131230b 100755 --- a/trunk/src/app/srs_app_listener.cpp +++ b/trunk/src/app/srs_app_listener.cpp @@ -45,11 +45,11 @@ using namespace std; #include -SrsPps* _srs_pps_rpkts = new SrsPps(_srs_clock); -SrsPps* _srs_pps_addrs = new SrsPps(_srs_clock); -SrsPps* _srs_pps_fast_addrs = new SrsPps(_srs_clock); +SrsPps* _srs_pps_rpkts = new SrsPps(); +SrsPps* _srs_pps_addrs = new SrsPps(); +SrsPps* _srs_pps_fast_addrs = new SrsPps(); -SrsPps* _srs_pps_spkts = new SrsPps(_srs_clock); +SrsPps* _srs_pps_spkts = new SrsPps(); // set the max packet size. #define SRS_UDP_MAX_PACKET_SIZE 65535 diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 1b3329fe7..683247235 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -60,15 +60,15 @@ using namespace std; #include -SrsPps* _srs_pps_sstuns = new SrsPps(_srs_clock); -SrsPps* _srs_pps_srtcps = new SrsPps(_srs_clock); -SrsPps* _srs_pps_srtps = new SrsPps(_srs_clock); - -SrsPps* _srs_pps_pli = new SrsPps(_srs_clock); -SrsPps* _srs_pps_twcc = new SrsPps(_srs_clock); -SrsPps* _srs_pps_rr = new SrsPps(_srs_clock); -SrsPps* _srs_pps_pub = new SrsPps(_srs_clock); -SrsPps* _srs_pps_conn = new SrsPps(_srs_clock); +SrsPps* _srs_pps_sstuns = new SrsPps(); +SrsPps* _srs_pps_srtcps = new SrsPps(); +SrsPps* _srs_pps_srtps = new SrsPps(); + +SrsPps* _srs_pps_pli = new SrsPps(); +SrsPps* _srs_pps_twcc = new SrsPps(); +SrsPps* _srs_pps_rr = new SrsPps(); +SrsPps* _srs_pps_pub = new SrsPps(); +SrsPps* _srs_pps_conn = new SrsPps(); extern SrsPps* _srs_pps_snack; extern SrsPps* _srs_pps_snack2; diff --git a/trunk/src/app/srs_app_rtc_server.cpp b/trunk/src/app/srs_app_rtc_server.cpp index 5dc93c269..c4453a8d7 100644 --- a/trunk/src/app/srs_app_rtc_server.cpp +++ b/trunk/src/app/srs_app_rtc_server.cpp @@ -46,9 +46,9 @@ using namespace std; #include extern SrsPps* _srs_pps_rpkts; -SrsPps* _srs_pps_rstuns = new SrsPps(_srs_clock); -SrsPps* _srs_pps_rrtps = new SrsPps(_srs_clock); -SrsPps* _srs_pps_rrtcps = new SrsPps(_srs_clock); +SrsPps* _srs_pps_rstuns = new SrsPps(); +SrsPps* _srs_pps_rrtps = new SrsPps(); +SrsPps* _srs_pps_rrtcps = new SrsPps(); extern SrsPps* _srs_pps_addrs; extern SrsPps* _srs_pps_fast_addrs; diff --git a/trunk/src/app/srs_app_rtc_source.cpp b/trunk/src/app/srs_app_rtc_source.cpp index eb5d30f20..95e0cc17e 100644 --- a/trunk/src/app/srs_app_rtc_source.cpp +++ b/trunk/src/app/srs_app_rtc_source.cpp @@ -51,15 +51,15 @@ #include // The NACK sent by us(SFU). -SrsPps* _srs_pps_snack = new SrsPps(_srs_clock); -SrsPps* _srs_pps_snack2 = new SrsPps(_srs_clock); -SrsPps* _srs_pps_sanack = new SrsPps(_srs_clock); -SrsPps* _srs_pps_svnack = new SrsPps(_srs_clock); - -SrsPps* _srs_pps_rnack = new SrsPps(_srs_clock); -SrsPps* _srs_pps_rnack2 = new SrsPps(_srs_clock); -SrsPps* _srs_pps_rhnack = new SrsPps(_srs_clock); -SrsPps* _srs_pps_rmnack = new SrsPps(_srs_clock); +SrsPps* _srs_pps_snack = new SrsPps(); +SrsPps* _srs_pps_snack2 = new SrsPps(); +SrsPps* _srs_pps_sanack = new SrsPps(); +SrsPps* _srs_pps_svnack = new SrsPps(); + +SrsPps* _srs_pps_rnack = new SrsPps(); +SrsPps* _srs_pps_rnack2 = new SrsPps(); +SrsPps* _srs_pps_rhnack = new SrsPps(); +SrsPps* _srs_pps_rmnack = new SrsPps(); // Firefox defaults as 109, Chrome is 111. const int kAudioPayloadType = 111; diff --git a/trunk/src/kernel/srs_kernel_kbps.cpp b/trunk/src/kernel/srs_kernel_kbps.cpp index c76f4c33e..6c2e9cb2a 100644 --- a/trunk/src/kernel/srs_kernel_kbps.cpp +++ b/trunk/src/kernel/srs_kernel_kbps.cpp @@ -59,9 +59,9 @@ void srs_pps_update(SrsRateSample& sample, int64_t nn, srs_utime_t now) sample.update(nn, now, pps); } -SrsPps::SrsPps(SrsWallClock* c) +SrsPps::SrsPps() { - clk_ = c; + clk_ = NULL; sugar = 0; } @@ -69,6 +69,11 @@ SrsPps::~SrsPps() { } +void SrsPps::set_clock(SrsWallClock* clk) +{ + clk_ = clk; +} + void SrsPps::update() { update(sugar); @@ -76,6 +81,11 @@ void SrsPps::update() void SrsPps::update(int64_t nn) { + // Lazy setup the clock. + if (!clk_) { + clk_ = _srs_clock; + } + srs_utime_t now = clk_->now(); srs_pps_init(sample_10s_, nn, now); diff --git a/trunk/src/kernel/srs_kernel_kbps.hpp b/trunk/src/kernel/srs_kernel_kbps.hpp index deddf8166..99842a26e 100644 --- a/trunk/src/kernel/srs_kernel_kbps.hpp +++ b/trunk/src/kernel/srs_kernel_kbps.hpp @@ -61,9 +61,11 @@ public: // Sugar for target to stat. int64_t sugar; public: - SrsPps(SrsWallClock* clk); + SrsPps(); virtual ~SrsPps(); public: + // Setup the clock, use global clock if not set. + void set_clock(SrsWallClock* clk); // Update with the nn which is target. void update(); // Update with the nn. diff --git a/trunk/src/kernel/srs_kernel_rtc_rtp.cpp b/trunk/src/kernel/srs_kernel_rtc_rtp.cpp index 806ba3e67..979bdf3de 100644 --- a/trunk/src/kernel/srs_kernel_rtc_rtp.cpp +++ b/trunk/src/kernel/srs_kernel_rtc_rtp.cpp @@ -36,7 +36,7 @@ using namespace std; #include -SrsPps* _srs_pps_objs_rtps = new SrsPps(_srs_clock); +SrsPps* _srs_pps_objs_rtps = new SrsPps(); /* @see https://tools.ietf.org/html/rfc1889#section-5.1 0 1 2 3 diff --git a/trunk/src/protocol/srs_service_log.cpp b/trunk/src/protocol/srs_service_log.cpp index fbd1e4b9e..8c3be6eda 100644 --- a/trunk/src/protocol/srs_service_log.cpp +++ b/trunk/src/protocol/srs_service_log.cpp @@ -35,8 +35,8 @@ using namespace std; #include -SrsPps* _srs_pps_cids_get = new SrsPps(_srs_clock); -SrsPps* _srs_pps_cids_set = new SrsPps(_srs_clock); +SrsPps* _srs_pps_cids_get = new SrsPps(); +SrsPps* _srs_pps_cids_set = new SrsPps(); #define SRS_BASIC_LOG_SIZE 8192