diff --git a/trunk/src/app/srs_app_config.cpp b/trunk/src/app/srs_app_config.cpp index 0b9129e5d..d78988895 100644 --- a/trunk/src/app/srs_app_config.cpp +++ b/trunk/src/app/srs_app_config.cpp @@ -4730,9 +4730,9 @@ bool SrsConfig::get_tcp_nodelay(string vhost) return SRS_CONF_PERFER_FALSE(conf->arg0()); } -double SrsConfig::get_send_min_interval(string vhost) +srs_utime_t SrsConfig::get_send_min_interval(string vhost) { - static double DEFAULT = 0.0; + static srs_utime_t DEFAULT = 0; SrsConfDirective* conf = get_vhost(vhost); if (!conf) { @@ -4749,7 +4749,7 @@ double SrsConfig::get_send_min_interval(string vhost) return DEFAULT; } - return ::atof(conf->arg0().c_str()); + return srs_utime_t(::atof(conf->arg0().c_str()) * SRS_UTIME_MILLISECONDS); } bool SrsConfig::get_reduce_sequence_header(string vhost) diff --git a/trunk/src/app/srs_app_config.hpp b/trunk/src/app/srs_app_config.hpp index 70707f10e..697e23ec0 100644 --- a/trunk/src/app/srs_app_config.hpp +++ b/trunk/src/app/srs_app_config.hpp @@ -796,9 +796,9 @@ public: */ virtual bool get_tcp_nodelay(std::string vhost); /** - * the minimal send interval in ms. + * the minimal send interval in srs_utime_t. */ - virtual double get_send_min_interval(std::string vhost); + virtual srs_utime_t get_send_min_interval(std::string vhost); /** * whether reduce the sequence header. */ diff --git a/trunk/src/app/srs_app_rtmp_conn.cpp b/trunk/src/app/srs_app_rtmp_conn.cpp index 4e9323ca5..886174841 100644 --- a/trunk/src/app/srs_app_rtmp_conn.cpp +++ b/trunk/src/app/srs_app_rtmp_conn.cpp @@ -265,9 +265,9 @@ srs_error_t SrsRtmpConn::on_reload_vhost_play(string vhost) // send_min_interval if (true) { - double v = _srs_config->get_send_min_interval(vhost); + srs_utime_t v = _srs_config->get_send_min_interval(vhost); if (v != send_min_interval) { - srs_trace("apply smi %.2f=>%.2f", send_min_interval, v); + srs_trace("apply smi %d=>%d ms", srsu2msi(send_min_interval), srsu2msi(v)); send_min_interval = v; } } @@ -692,8 +692,8 @@ srs_error_t SrsRtmpConn::do_playing(SrsSource* source, SrsConsumer* consumer, Sr // initialize the send_min_interval send_min_interval = _srs_config->get_send_min_interval(req->vhost); - srs_trace("start play smi=%.2f, mw_sleep=%d, mw_enabled=%d, realtime=%d, tcp_nodelay=%d", - send_min_interval, srsu2msi(mw_sleep), mw_enabled, realtime, tcp_nodelay); + srs_trace("start play smi=%dms, mw_sleep=%d, mw_enabled=%d, realtime=%d, tcp_nodelay=%d", + srsu2msi(send_min_interval), srsu2msi(mw_sleep), mw_enabled, realtime, tcp_nodelay); while (true) { // collect elapse for pithy print. @@ -788,7 +788,7 @@ srs_error_t SrsRtmpConn::do_playing(SrsSource* source, SrsConsumer* consumer, Sr // apply the minimal interval for delivery stream in ms. if (send_min_interval > 0) { - srs_usleep((int64_t)(send_min_interval * 1000)); + srs_usleep(send_min_interval); } } diff --git a/trunk/src/app/srs_app_rtmp_conn.hpp b/trunk/src/app/srs_app_rtmp_conn.hpp index 2e55ffe1a..458f39b19 100644 --- a/trunk/src/app/srs_app_rtmp_conn.hpp +++ b/trunk/src/app/srs_app_rtmp_conn.hpp @@ -116,8 +116,8 @@ private: // for realtime // @see https://github.com/ossrs/srs/issues/257 bool realtime; - // the minimal interval in ms for delivery stream. - double send_min_interval; + // the minimal interval in srs_utime_t for delivery stream. + srs_utime_t send_min_interval; // publish 1st packet timeout in srs_utime_t srs_utime_t publish_1stpkt_timeout; // publish normal packet timeout in srs_utime_t diff --git a/trunk/src/utest/srs_utest_config.cpp b/trunk/src/utest/srs_utest_config.cpp index 0a05b854c..e59662c87 100644 --- a/trunk/src/utest/srs_utest_config.cpp +++ b/trunk/src/utest/srs_utest_config.cpp @@ -1878,9 +1878,11 @@ VOID TEST(ConfigUnitTest, CheckDefaultValuesVhost) if (true) { EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF)); EXPECT_EQ(30 * SRS_UTIME_SECONDS, conf.get_queue_length("")); + EXPECT_EQ(0, conf.get_send_min_interval("")); - EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost v{play{queue_length 100;}}")); + EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost v{play{queue_length 100;send_min_interval 10;}}")); EXPECT_EQ(100 * SRS_UTIME_SECONDS, conf.get_queue_length("v")); + EXPECT_EQ(10 * SRS_UTIME_MILLISECONDS, conf.get_send_min_interval("v")); } }