Refine get_send_min_interval in time unit

pull/1651/head
winlin 6 years ago
parent c1b64ba24f
commit 402e614471

@ -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)

@ -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.
*/

@ -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);
}
}

@ -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

@ -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"));
}
}

Loading…
Cancel
Save