mirror of
https://github.com/ossrs/srs.git
synced 2025-02-15 04:42:04 +00:00
Refine srs_update_system_time in time unit
This commit is contained in:
parent
9b7c0802a9
commit
6c12aa0eca
26 changed files with 123 additions and 108 deletions
|
@ -103,6 +103,12 @@ else
|
||||||
srs_undefine_macro "SRS_AUTO_MEM_WATCH" $SRS_AUTO_HEADERS_H
|
srs_undefine_macro "SRS_AUTO_MEM_WATCH" $SRS_AUTO_HEADERS_H
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ $SRS_UTEST = YES ]; then
|
||||||
|
srs_define_macro "SRS_AUTO_UTEST" $SRS_AUTO_HEADERS_H
|
||||||
|
else
|
||||||
|
srs_undefine_macro "SRS_AUTO_UTEST" $SRS_AUTO_HEADERS_H
|
||||||
|
fi
|
||||||
|
|
||||||
# whether compile ffmpeg tool
|
# whether compile ffmpeg tool
|
||||||
if [ $SRS_FFMPEG_TOOL = YES ]; then
|
if [ $SRS_FFMPEG_TOOL = YES ]; then
|
||||||
srs_define_macro "SRS_AUTO_FFMPEG_TOOL" $SRS_AUTO_HEADERS_H
|
srs_define_macro "SRS_AUTO_FFMPEG_TOOL" $SRS_AUTO_HEADERS_H
|
||||||
|
|
|
@ -184,8 +184,7 @@ srs_error_t SrsBandwidth::do_bandwidth_check(SrsKbpsLimit* limit)
|
||||||
_rtmp->set_recv_timeout(publish_sample.duration_ms * 2);
|
_rtmp->set_recv_timeout(publish_sample.duration_ms * 2);
|
||||||
|
|
||||||
// start test.
|
// start test.
|
||||||
srs_update_system_time();
|
srs_utime_t start_time = srs_update_system_time();
|
||||||
int64_t start_time = srs_get_system_time_ms();
|
|
||||||
|
|
||||||
// sample play
|
// sample play
|
||||||
if ((err = play_start(&play_sample, limit)) != srs_success) {
|
if ((err = play_start(&play_sample, limit)) != srs_success) {
|
||||||
|
@ -210,18 +209,17 @@ srs_error_t SrsBandwidth::do_bandwidth_check(SrsKbpsLimit* limit)
|
||||||
}
|
}
|
||||||
|
|
||||||
// stop test.
|
// stop test.
|
||||||
srs_update_system_time();
|
srs_utime_t end_time = srs_update_system_time();
|
||||||
int64_t end_time = srs_get_system_time_ms();
|
|
||||||
|
|
||||||
srs_trace("bandwidth ok. duartion=%dms(%d+%d), play=%dkbps, publish=%dkbps",
|
|
||||||
(int)(end_time - start_time), play_sample.actual_duration_ms,
|
|
||||||
publish_sample.actual_duration_ms, play_sample.kbps,
|
|
||||||
publish_sample.kbps);
|
|
||||||
|
|
||||||
if ((err = do_final(play_sample, publish_sample, start_time, end_time)) != srs_success) {
|
if ((err = do_final(play_sample, publish_sample, start_time, end_time)) != srs_success) {
|
||||||
return srs_error_wrap(err, "final");
|
return srs_error_wrap(err, "final");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
srs_trace("bandwidth ok. duartion=%dms(%d+%d), play=%dkbps, publish=%dkbps",
|
||||||
|
srsu2msi(end_time - start_time), play_sample.actual_duration_ms,
|
||||||
|
publish_sample.actual_duration_ms, play_sample.kbps,
|
||||||
|
publish_sample.kbps);
|
||||||
|
|
||||||
srs_usleep(_SRS_BANDWIDTH_FINAL_WAIT);
|
srs_usleep(_SRS_BANDWIDTH_FINAL_WAIT);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
|
@ -261,10 +259,9 @@ srs_error_t SrsBandwidth::play_checking(SrsBandwidthSample* sample, SrsKbpsLimit
|
||||||
memset(random_data, 'A', size);
|
memset(random_data, 'A', size);
|
||||||
|
|
||||||
int data_count = 1;
|
int data_count = 1;
|
||||||
srs_update_system_time();
|
srs_utime_t starttime = srs_update_system_time();
|
||||||
int64_t starttime = srs_get_system_time_ms();
|
while (srsu2ms(srs_get_system_time() - starttime) < sample->duration_ms) {
|
||||||
while ((srs_get_system_time_ms() - starttime) < sample->duration_ms) {
|
srs_usleep(sample->interval_ms * SRS_UTIME_MILLISECONDS);
|
||||||
srs_usleep(sample->interval_ms);
|
|
||||||
|
|
||||||
// TODO: FIXME: use shared ptr message.
|
// TODO: FIXME: use shared ptr message.
|
||||||
SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_playing();
|
SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_playing();
|
||||||
|
@ -285,7 +282,7 @@ srs_error_t SrsBandwidth::play_checking(SrsBandwidthSample* sample, SrsKbpsLimit
|
||||||
limit->send_limit();
|
limit->send_limit();
|
||||||
}
|
}
|
||||||
srs_update_system_time();
|
srs_update_system_time();
|
||||||
sample->calc_kbps((int)_rtmp->get_send_bytes(), (int)(srs_get_system_time_ms() - starttime));
|
sample->calc_kbps((int)_rtmp->get_send_bytes(), srsu2msi(srs_get_system_time() - starttime));
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -344,9 +341,8 @@ srs_error_t SrsBandwidth::publish_checking(SrsBandwidthSample* sample, SrsKbpsLi
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
|
||||||
// recv publish msgs until @duration_ms ms
|
// recv publish msgs until @duration_ms ms
|
||||||
srs_update_system_time();
|
srs_utime_t starttime = srs_update_system_time();
|
||||||
int64_t starttime = srs_get_system_time_ms();
|
while (srsu2ms(srs_get_system_time() - starttime) < sample->duration_ms) {
|
||||||
while ((srs_get_system_time_ms() - starttime) < sample->duration_ms) {
|
|
||||||
SrsCommonMessage* msg = NULL;
|
SrsCommonMessage* msg = NULL;
|
||||||
SrsBandwidthPacket* pkt = NULL;
|
SrsBandwidthPacket* pkt = NULL;
|
||||||
if ((err = _rtmp->expect_message<SrsBandwidthPacket>(&msg, &pkt)) != srs_success) {
|
if ((err = _rtmp->expect_message<SrsBandwidthPacket>(&msg, &pkt)) != srs_success) {
|
||||||
|
@ -364,7 +360,7 @@ srs_error_t SrsBandwidth::publish_checking(SrsBandwidthSample* sample, SrsKbpsLi
|
||||||
limit->recv_limit();
|
limit->recv_limit();
|
||||||
}
|
}
|
||||||
srs_update_system_time();
|
srs_update_system_time();
|
||||||
sample->calc_kbps((int)_rtmp->get_recv_bytes(), (int)(srs_get_system_time_ms() - starttime));
|
sample->calc_kbps((int)_rtmp->get_recv_bytes(), srsu2msi(srs_get_system_time() - starttime));
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -401,7 +397,7 @@ srs_error_t SrsBandwidth::publish_stop(SrsBandwidthSample* sample, SrsKbpsLimit*
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_error_t SrsBandwidth::do_final(SrsBandwidthSample& play_sample, SrsBandwidthSample& publish_sample, int64_t start_time, int64_t& end_time)
|
srs_error_t SrsBandwidth::do_final(SrsBandwidthSample& play_sample, SrsBandwidthSample& publish_sample, srs_utime_t start_time, srs_utime_t& end_time)
|
||||||
{
|
{
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
|
||||||
|
@ -409,8 +405,8 @@ srs_error_t SrsBandwidth::do_final(SrsBandwidthSample& play_sample, SrsBandwidth
|
||||||
// flash client will close connection when got this packet,
|
// flash client will close connection when got this packet,
|
||||||
// for the publish queue may contains packets.
|
// for the publish queue may contains packets.
|
||||||
SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_finish();
|
SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_finish();
|
||||||
pkt->data->set("start_time", SrsAmf0Any::number(start_time));
|
pkt->data->set("start_time", SrsAmf0Any::number(srsu2ms(start_time)));
|
||||||
pkt->data->set("end_time", SrsAmf0Any::number(end_time));
|
pkt->data->set("end_time", SrsAmf0Any::number(srsu2ms(end_time)));
|
||||||
pkt->data->set("play_kbps", SrsAmf0Any::number(play_sample.kbps));
|
pkt->data->set("play_kbps", SrsAmf0Any::number(play_sample.kbps));
|
||||||
pkt->data->set("publish_kbps", SrsAmf0Any::number(publish_sample.kbps));
|
pkt->data->set("publish_kbps", SrsAmf0Any::number(publish_sample.kbps));
|
||||||
pkt->data->set("play_bytes", SrsAmf0Any::number(play_sample.bytes));
|
pkt->data->set("play_bytes", SrsAmf0Any::number(play_sample.bytes));
|
||||||
|
|
|
@ -193,7 +193,7 @@ private:
|
||||||
* for flash client, the sent queue is fullfill with publishing call messages,
|
* for flash client, the sent queue is fullfill with publishing call messages,
|
||||||
* so server never expect the final packet from it.
|
* so server never expect the final packet from it.
|
||||||
*/
|
*/
|
||||||
virtual srs_error_t do_final(SrsBandwidthSample& play_sample, SrsBandwidthSample& publish_sample, int64_t start_time, int64_t& end_time);
|
virtual srs_error_t do_final(SrsBandwidthSample& play_sample, SrsBandwidthSample& publish_sample, srs_utime_t start_time, srs_utime_t& end_time);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -6247,9 +6247,9 @@ bool SrsConfig::get_hls_cleanup(string vhost)
|
||||||
return SRS_CONF_PERFER_TRUE(conf->arg0());
|
return SRS_CONF_PERFER_TRUE(conf->arg0());
|
||||||
}
|
}
|
||||||
|
|
||||||
int SrsConfig::get_hls_dispose(string vhost)
|
srs_utime_t SrsConfig::get_hls_dispose(string vhost)
|
||||||
{
|
{
|
||||||
static int DEFAULT = 0;
|
static srs_utime_t DEFAULT = 0;
|
||||||
|
|
||||||
SrsConfDirective* conf = get_hls(vhost);
|
SrsConfDirective* conf = get_hls(vhost);
|
||||||
if (!conf) {
|
if (!conf) {
|
||||||
|
@ -6261,7 +6261,7 @@ int SrsConfig::get_hls_dispose(string vhost)
|
||||||
return DEFAULT;
|
return DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ::atoi(conf->arg0().c_str());
|
return (srs_utime_t)(::atoi(conf->arg0().c_str()) * SRS_UTIME_SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SrsConfig::get_hls_wait_keyframe(string vhost)
|
bool SrsConfig::get_hls_wait_keyframe(string vhost)
|
||||||
|
|
|
@ -1230,9 +1230,9 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual bool get_hls_cleanup(std::string vhost);
|
virtual bool get_hls_cleanup(std::string vhost);
|
||||||
/**
|
/**
|
||||||
* the timeout to dispose the hls.
|
* the timeout in srs_utime_t to dispose the hls.
|
||||||
*/
|
*/
|
||||||
virtual int get_hls_dispose(std::string vhost);
|
virtual srs_utime_t get_hls_dispose(std::string vhost);
|
||||||
/**
|
/**
|
||||||
* whether reap the ts when got keyframe.
|
* whether reap the ts when got keyframe.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -36,7 +36,7 @@ SrsConnection::SrsConnection(IConnectionManager* cm, srs_netfd_t c, string cip)
|
||||||
manager = cm;
|
manager = cm;
|
||||||
stfd = c;
|
stfd = c;
|
||||||
ip = cip;
|
ip = cip;
|
||||||
create_time = srs_get_system_time_ms();
|
create_time = srsu2ms(srs_get_system_time());
|
||||||
|
|
||||||
skt = new SrsStSocket();
|
skt = new SrsStSocket();
|
||||||
clk = new SrsWallClock();
|
clk = new SrsWallClock();
|
||||||
|
|
|
@ -162,7 +162,7 @@ SrsMpdWriter::SrsMpdWriter()
|
||||||
{
|
{
|
||||||
req = NULL;
|
req = NULL;
|
||||||
timeshit = update_period = fragment = 0;
|
timeshit = update_period = fragment = 0;
|
||||||
last_update_mpd = -1;
|
last_update_mpd = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsMpdWriter::~SrsMpdWriter()
|
SrsMpdWriter::~SrsMpdWriter()
|
||||||
|
@ -190,10 +190,10 @@ srs_error_t SrsMpdWriter::write(SrsFormat* format)
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
|
||||||
// MPD is not expired?
|
// MPD is not expired?
|
||||||
if (last_update_mpd != -1 && srs_get_system_time_ms() - last_update_mpd < int64_t(srsu2ms(update_period))) {
|
if (last_update_mpd != 0 && srs_get_system_time() - last_update_mpd < update_period) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
last_update_mpd = srs_get_system_time_ms();
|
last_update_mpd = srs_get_system_time();
|
||||||
|
|
||||||
string mpd_path = srs_path_build_stream(mpd_file, req->vhost, req->app, req->stream);
|
string mpd_path = srs_path_build_stream(mpd_file, req->vhost, req->app, req->stream);
|
||||||
string full_path = home + "/" + mpd_path;
|
string full_path = home + "/" + mpd_path;
|
||||||
|
|
|
@ -84,7 +84,7 @@ class SrsMpdWriter
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
SrsRequest* req;
|
SrsRequest* req;
|
||||||
int64_t last_update_mpd;
|
srs_utime_t last_update_mpd;
|
||||||
private:
|
private:
|
||||||
// The duration of fragment in srs_utime_t.
|
// The duration of fragment in srs_utime_t.
|
||||||
srs_utime_t fragment;
|
srs_utime_t fragment;
|
||||||
|
|
|
@ -870,7 +870,7 @@ srs_error_t SrsHlsController::on_publish(SrsRequest* req)
|
||||||
// whether use floor(timestamp/hls_fragment) for variable timestamp
|
// whether use floor(timestamp/hls_fragment) for variable timestamp
|
||||||
bool ts_floor = _srs_config->get_hls_ts_floor(vhost);
|
bool ts_floor = _srs_config->get_hls_ts_floor(vhost);
|
||||||
// the seconds to dispose the hls.
|
// the seconds to dispose the hls.
|
||||||
int hls_dispose = _srs_config->get_hls_dispose(vhost);
|
srs_utime_t hls_dispose = _srs_config->get_hls_dispose(vhost);
|
||||||
|
|
||||||
bool hls_keys = _srs_config->get_hls_keys(vhost);
|
bool hls_keys = _srs_config->get_hls_keys(vhost);
|
||||||
int hls_fragments_per_key = _srs_config->get_hls_fragments_per_key(vhost);
|
int hls_fragments_per_key = _srs_config->get_hls_fragments_per_key(vhost);
|
||||||
|
@ -891,9 +891,9 @@ srs_error_t SrsHlsController::on_publish(SrsRequest* req)
|
||||||
if ((err = muxer->segment_open()) != srs_success) {
|
if ((err = muxer->segment_open()) != srs_success) {
|
||||||
return srs_error_wrap(err, "hls: segment open");
|
return srs_error_wrap(err, "hls: segment open");
|
||||||
}
|
}
|
||||||
srs_trace("hls: win=%.2f, frag=%.2f, prefix=%s, path=%s, m3u8=%s, ts=%s, aof=%.2f, floor=%d, clean=%d, waitk=%d, dispose=%d",
|
srs_trace("hls: win=%.2f, frag=%.2f, prefix=%s, path=%s, m3u8=%s, ts=%s, aof=%.2f, floor=%d, clean=%d, waitk=%d, dispose=%dms",
|
||||||
hls_window, hls_fragment, entry_prefix.c_str(), path.c_str(), m3u8_file.c_str(),
|
hls_window, hls_fragment, entry_prefix.c_str(), path.c_str(), m3u8_file.c_str(),
|
||||||
ts_file.c_str(), hls_aof_ratio, ts_floor, cleanup, wait_keyframe, hls_dispose);
|
ts_file.c_str(), hls_aof_ratio, ts_floor, cleanup, wait_keyframe, srsu2msi(hls_dispose));
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -1061,7 +1061,7 @@ void SrsHls::dispose()
|
||||||
|
|
||||||
// Ignore when hls_dispose disabled.
|
// Ignore when hls_dispose disabled.
|
||||||
// @see https://github.com/ossrs/srs/issues/865
|
// @see https://github.com/ossrs/srs/issues/865
|
||||||
int hls_dispose = _srs_config->get_hls_dispose(req->vhost);
|
srs_utime_t hls_dispose = _srs_config->get_hls_dispose(req->vhost);
|
||||||
if (!hls_dispose) {
|
if (!hls_dispose) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1074,21 +1074,21 @@ srs_error_t SrsHls::cycle()
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
|
||||||
if (last_update_time <= 0) {
|
if (last_update_time <= 0) {
|
||||||
last_update_time = srs_get_system_time_ms();
|
last_update_time = srs_get_system_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!req) {
|
if (!req) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int hls_dispose = _srs_config->get_hls_dispose(req->vhost) * 1000;
|
srs_utime_t hls_dispose = _srs_config->get_hls_dispose(req->vhost);
|
||||||
if (hls_dispose <= 0) {
|
if (hls_dispose <= 0) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
if (srs_get_system_time_ms() - last_update_time <= hls_dispose) {
|
if (srs_get_system_time() - last_update_time <= hls_dispose) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
last_update_time = srs_get_system_time_ms();
|
last_update_time = srs_get_system_time();
|
||||||
|
|
||||||
if (!disposable) {
|
if (!disposable) {
|
||||||
return err;
|
return err;
|
||||||
|
@ -1120,7 +1120,7 @@ srs_error_t SrsHls::on_publish()
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
|
||||||
// update the hls time, for hls_dispose.
|
// update the hls time, for hls_dispose.
|
||||||
last_update_time = srs_get_system_time_ms();
|
last_update_time = srs_get_system_time();
|
||||||
|
|
||||||
// support multiple publish.
|
// support multiple publish.
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
|
@ -1170,7 +1170,7 @@ srs_error_t SrsHls::on_audio(SrsSharedPtrMessage* shared_audio, SrsFormat* forma
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the hls time, for hls_dispose.
|
// update the hls time, for hls_dispose.
|
||||||
last_update_time = srs_get_system_time_ms();
|
last_update_time = srs_get_system_time();
|
||||||
|
|
||||||
SrsSharedPtrMessage* audio = shared_audio->copy();
|
SrsSharedPtrMessage* audio = shared_audio->copy();
|
||||||
SrsAutoFree(SrsSharedPtrMessage, audio);
|
SrsAutoFree(SrsSharedPtrMessage, audio);
|
||||||
|
@ -1227,7 +1227,7 @@ srs_error_t SrsHls::on_video(SrsSharedPtrMessage* shared_video, SrsFormat* forma
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the hls time, for hls_dispose.
|
// update the hls time, for hls_dispose.
|
||||||
last_update_time = srs_get_system_time_ms();
|
last_update_time = srs_get_system_time();
|
||||||
|
|
||||||
SrsSharedPtrMessage* video = shared_video->copy();
|
SrsSharedPtrMessage* video = shared_video->copy();
|
||||||
SrsAutoFree(SrsSharedPtrMessage, video);
|
SrsAutoFree(SrsSharedPtrMessage, video);
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include <srs_kernel_file.hpp>
|
#include <srs_kernel_file.hpp>
|
||||||
#include <srs_app_async_call.hpp>
|
#include <srs_app_async_call.hpp>
|
||||||
#include <srs_app_fragment.hpp>
|
#include <srs_app_fragment.hpp>
|
||||||
|
#include <srs_core_time.hpp>
|
||||||
|
|
||||||
class SrsFormat;
|
class SrsFormat;
|
||||||
class SrsSharedPtrMessage;
|
class SrsSharedPtrMessage;
|
||||||
|
@ -319,7 +320,7 @@ private:
|
||||||
SrsRequest* req;
|
SrsRequest* req;
|
||||||
bool enabled;
|
bool enabled;
|
||||||
bool disposable;
|
bool disposable;
|
||||||
int64_t last_update_time;
|
srs_utime_t last_update_time;
|
||||||
private:
|
private:
|
||||||
// If the diff=dts-previous_audio_dts is about 23,
|
// If the diff=dts-previous_audio_dts is about 23,
|
||||||
// that's the AAC samples is 1024, and we use the samples to calc the dts.
|
// that's the AAC samples is 1024, and we use the samples to calc the dts.
|
||||||
|
|
|
@ -681,7 +681,7 @@ srs_error_t SrsGoApiRequests::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMess
|
||||||
server->set("sigature", SrsJsonAny::str(RTMP_SIG_SRS_KEY));
|
server->set("sigature", SrsJsonAny::str(RTMP_SIG_SRS_KEY));
|
||||||
server->set("version", SrsJsonAny::str(RTMP_SIG_SRS_VERSION));
|
server->set("version", SrsJsonAny::str(RTMP_SIG_SRS_VERSION));
|
||||||
server->set("link", SrsJsonAny::str(RTMP_SIG_SRS_URL));
|
server->set("link", SrsJsonAny::str(RTMP_SIG_SRS_URL));
|
||||||
server->set("time", SrsJsonAny::integer(srs_get_system_time_ms()));
|
server->set("time", SrsJsonAny::integer(srsu2ms(srs_get_system_time())));
|
||||||
|
|
||||||
return srs_api_response(w, r, obj->dumps());
|
return srs_api_response(w, r, obj->dumps());
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ srs_error_t SrsIngesterFFMPEG::initialize(SrsFFMPEG* ff, string v, string i)
|
||||||
ffmpeg = ff;
|
ffmpeg = ff;
|
||||||
vhost = v;
|
vhost = v;
|
||||||
id = i;
|
id = i;
|
||||||
starttime = srs_get_system_time_ms();
|
starttime = srs_get_system_time();
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ string SrsIngesterFFMPEG::uri()
|
||||||
|
|
||||||
int SrsIngesterFFMPEG::alive()
|
int SrsIngesterFFMPEG::alive()
|
||||||
{
|
{
|
||||||
return (int)(srs_get_system_time_ms() - starttime);
|
return srsu2msi(srs_get_system_time() - starttime);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SrsIngesterFFMPEG::equals(string v)
|
bool SrsIngesterFFMPEG::equals(string v)
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include <srs_app_thread.hpp>
|
#include <srs_app_thread.hpp>
|
||||||
#include <srs_app_reload.hpp>
|
#include <srs_app_reload.hpp>
|
||||||
|
#include <srs_core_time.hpp>
|
||||||
|
|
||||||
class SrsFFMPEG;
|
class SrsFFMPEG;
|
||||||
class SrsConfDirective;
|
class SrsConfDirective;
|
||||||
|
@ -44,7 +45,7 @@ private:
|
||||||
std::string vhost;
|
std::string vhost;
|
||||||
std::string id;
|
std::string id;
|
||||||
SrsFFMPEG* ffmpeg;
|
SrsFFMPEG* ffmpeg;
|
||||||
int64_t starttime;
|
srs_utime_t starttime;
|
||||||
public:
|
public:
|
||||||
SrsIngesterFFMPEG();
|
SrsIngesterFFMPEG();
|
||||||
virtual ~SrsIngesterFFMPEG();
|
virtual ~SrsIngesterFFMPEG();
|
||||||
|
|
|
@ -81,7 +81,7 @@ SrsPithyPrint::SrsPithyPrint(int _stage_id)
|
||||||
{
|
{
|
||||||
stage_id = _stage_id;
|
stage_id = _stage_id;
|
||||||
client_id = enter_stage();
|
client_id = enter_stage();
|
||||||
previous_tick = srs_get_system_time_ms();
|
previous_tick = srs_get_system_time();
|
||||||
_age = 0;
|
_age = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,12 +208,12 @@ void SrsPithyPrint::elapse()
|
||||||
SrsStageInfo* stage = _srs_stages[stage_id];
|
SrsStageInfo* stage = _srs_stages[stage_id];
|
||||||
srs_assert(stage != NULL);
|
srs_assert(stage != NULL);
|
||||||
|
|
||||||
int64_t diff = srs_get_system_time_ms() - previous_tick;
|
srs_utime_t diff = srs_get_system_time() - previous_tick;
|
||||||
diff = srs_max(0, diff);
|
diff = srs_max(0, diff);
|
||||||
|
|
||||||
stage->elapse(diff * SRS_UTIME_MILLISECONDS);
|
stage->elapse(diff);
|
||||||
_age += diff;
|
_age += diff;
|
||||||
previous_tick = srs_get_system_time_ms();
|
previous_tick = srs_get_system_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SrsPithyPrint::can_print()
|
bool SrsPithyPrint::can_print()
|
||||||
|
@ -226,7 +226,7 @@ bool SrsPithyPrint::can_print()
|
||||||
|
|
||||||
int64_t SrsPithyPrint::age()
|
int64_t SrsPithyPrint::age()
|
||||||
{
|
{
|
||||||
return _age;
|
return srsu2ms(_age);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -76,9 +76,8 @@ class SrsPithyPrint
|
||||||
private:
|
private:
|
||||||
int client_id;
|
int client_id;
|
||||||
int stage_id;
|
int stage_id;
|
||||||
// in ms.
|
srs_utime_t _age;
|
||||||
int64_t _age;
|
srs_utime_t previous_tick;
|
||||||
int64_t previous_tick;
|
|
||||||
private:
|
private:
|
||||||
SrsPithyPrint(int _stage_id);
|
SrsPithyPrint(int _stage_id);
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -61,8 +61,8 @@ using namespace std;
|
||||||
// when got these videos or audios, pure audio or video, mix ok.
|
// when got these videos or audios, pure audio or video, mix ok.
|
||||||
#define SRS_MIX_CORRECT_PURE_AV 10
|
#define SRS_MIX_CORRECT_PURE_AV 10
|
||||||
|
|
||||||
// the time to cleanup source in ms.
|
// the time to cleanup source.
|
||||||
#define SRS_SOURCE_CLEANUP 30000
|
#define SRS_SOURCE_CLEANUP (30 * SRS_UTIME_SECONDS)
|
||||||
|
|
||||||
int _srs_time_jitter_string2int(std::string time_jitter)
|
int _srs_time_jitter_string2int(std::string time_jitter)
|
||||||
{
|
{
|
||||||
|
@ -1767,7 +1767,7 @@ SrsSource::SrsSource()
|
||||||
|
|
||||||
_can_publish = true;
|
_can_publish = true;
|
||||||
_pre_source_id = _source_id = -1;
|
_pre_source_id = _source_id = -1;
|
||||||
die_at = -1;
|
die_at = 0;
|
||||||
|
|
||||||
play_edge = new SrsPlayEdge();
|
play_edge = new SrsPlayEdge();
|
||||||
publish_edge = new SrsPublishEdge();
|
publish_edge = new SrsPublishEdge();
|
||||||
|
@ -1821,7 +1821,7 @@ srs_error_t SrsSource::cycle()
|
||||||
bool SrsSource::expired()
|
bool SrsSource::expired()
|
||||||
{
|
{
|
||||||
// unknown state?
|
// unknown state?
|
||||||
if (die_at == -1) {
|
if (die_at == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1835,7 +1835,7 @@ bool SrsSource::expired()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t now = srs_get_system_time_ms();
|
srs_utime_t now = srs_get_system_time();
|
||||||
if (now > die_at + SRS_SOURCE_CLEANUP) {
|
if (now > die_at + SRS_SOURCE_CLEANUP) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -2433,7 +2433,7 @@ void SrsSource::on_unpublish()
|
||||||
|
|
||||||
// no consumer, stream is die.
|
// no consumer, stream is die.
|
||||||
if (consumers.empty()) {
|
if (consumers.empty()) {
|
||||||
die_at = srs_get_system_time_ms();
|
die_at = srs_get_system_time();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2498,7 +2498,7 @@ void SrsSource::on_consumer_destroy(SrsConsumer* consumer)
|
||||||
|
|
||||||
if (consumers.empty()) {
|
if (consumers.empty()) {
|
||||||
play_edge->on_all_client_stop();
|
play_edge->on_all_client_stop();
|
||||||
die_at = srs_get_system_time_ms();
|
die_at = srs_get_system_time();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include <srs_app_st.hpp>
|
#include <srs_app_st.hpp>
|
||||||
#include <srs_app_reload.hpp>
|
#include <srs_app_reload.hpp>
|
||||||
#include <srs_core_performance.hpp>
|
#include <srs_core_performance.hpp>
|
||||||
|
#include <srs_core_time.hpp>
|
||||||
|
|
||||||
class SrsFormat;
|
class SrsFormat;
|
||||||
class SrsRtmpFormat;
|
class SrsRtmpFormat;
|
||||||
|
@ -606,7 +607,7 @@ private:
|
||||||
bool _can_publish;
|
bool _can_publish;
|
||||||
// The last die time, when all consumers quit and no publisher,
|
// The last die time, when all consumers quit and no publisher,
|
||||||
// we will remove the source when source die.
|
// we will remove the source when source die.
|
||||||
int64_t die_at;
|
srs_utime_t die_at;
|
||||||
public:
|
public:
|
||||||
SrsSource();
|
SrsSource();
|
||||||
virtual ~SrsSource();
|
virtual ~SrsSource();
|
||||||
|
|
|
@ -138,7 +138,7 @@ srs_error_t SrsStatisticStream::dumps(SrsJsonObject* obj)
|
||||||
obj->set("name", SrsJsonAny::str(stream.c_str()));
|
obj->set("name", SrsJsonAny::str(stream.c_str()));
|
||||||
obj->set("vhost", SrsJsonAny::integer(vhost->id));
|
obj->set("vhost", SrsJsonAny::integer(vhost->id));
|
||||||
obj->set("app", SrsJsonAny::str(app.c_str()));
|
obj->set("app", SrsJsonAny::str(app.c_str()));
|
||||||
obj->set("live_ms", SrsJsonAny::integer(srs_get_system_time_ms()));
|
obj->set("live_ms", SrsJsonAny::integer(srsu2ms(srs_get_system_time())));
|
||||||
obj->set("clients", SrsJsonAny::integer(nb_clients));
|
obj->set("clients", SrsJsonAny::integer(nb_clients));
|
||||||
obj->set("frames", SrsJsonAny::integer(nb_frames));
|
obj->set("frames", SrsJsonAny::integer(nb_frames));
|
||||||
obj->set("send_bytes", SrsJsonAny::integer(kbps->get_send_bytes()));
|
obj->set("send_bytes", SrsJsonAny::integer(kbps->get_send_bytes()));
|
||||||
|
@ -208,7 +208,7 @@ SrsStatisticClient::SrsStatisticClient()
|
||||||
conn = NULL;
|
conn = NULL;
|
||||||
req = NULL;
|
req = NULL;
|
||||||
type = SrsRtmpConnUnknown;
|
type = SrsRtmpConnUnknown;
|
||||||
create = srs_get_system_time_ms();
|
create = srs_get_system_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsStatisticClient::~SrsStatisticClient()
|
SrsStatisticClient::~SrsStatisticClient()
|
||||||
|
@ -229,7 +229,7 @@ srs_error_t SrsStatisticClient::dumps(SrsJsonObject* obj)
|
||||||
obj->set("url", SrsJsonAny::str(req->get_stream_url().c_str()));
|
obj->set("url", SrsJsonAny::str(req->get_stream_url().c_str()));
|
||||||
obj->set("type", SrsJsonAny::str(srs_client_type_string(type).c_str()));
|
obj->set("type", SrsJsonAny::str(srs_client_type_string(type).c_str()));
|
||||||
obj->set("publish", SrsJsonAny::boolean(srs_client_type_is_publish(type)));
|
obj->set("publish", SrsJsonAny::boolean(srs_client_type_is_publish(type)));
|
||||||
obj->set("alive", SrsJsonAny::number((srs_get_system_time_ms() - create) / 1000.0));
|
obj->set("alive", SrsJsonAny::number(srsu2ms(srs_get_system_time() - create) / 1000.0));
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,7 +124,7 @@ public:
|
||||||
SrsRequest* req;
|
SrsRequest* req;
|
||||||
SrsRtmpConnType type;
|
SrsRtmpConnType type;
|
||||||
int id;
|
int id;
|
||||||
int64_t create;
|
srs_utime_t create;
|
||||||
public:
|
public:
|
||||||
SrsStatisticClient();
|
SrsStatisticClient();
|
||||||
virtual ~SrsStatisticClient();
|
virtual ~SrsStatisticClient();
|
||||||
|
|
|
@ -236,7 +236,7 @@ void srs_update_system_rusage()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_srs_system_rusage.sample_time = srs_get_system_time_ms();
|
_srs_system_rusage.sample_time = srsu2ms(srs_get_system_time());
|
||||||
|
|
||||||
_srs_system_rusage.ok = true;
|
_srs_system_rusage.ok = true;
|
||||||
}
|
}
|
||||||
|
@ -427,7 +427,7 @@ void srs_update_proc_stat()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
r.sample_time = srs_get_system_time_ms();
|
r.sample_time = srsu2ms(srs_get_system_time());
|
||||||
|
|
||||||
// calc usage in percent
|
// calc usage in percent
|
||||||
SrsProcSystemStat& o = _srs_system_cpu_system_stat;
|
SrsProcSystemStat& o = _srs_system_cpu_system_stat;
|
||||||
|
@ -453,7 +453,7 @@ void srs_update_proc_stat()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
r.sample_time = srs_get_system_time_ms();
|
r.sample_time = srsu2ms(srs_get_system_time());
|
||||||
|
|
||||||
// calc usage in percent
|
// calc usage in percent
|
||||||
SrsProcSelfStat& o = _srs_system_cpu_self_stat;
|
SrsProcSelfStat& o = _srs_system_cpu_self_stat;
|
||||||
|
@ -505,7 +505,7 @@ bool srs_get_disk_vmstat_stat(SrsDiskStat& r)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
r.sample_time = srs_get_system_time_ms();
|
r.sample_time = srsu2ms(srs_get_system_time());
|
||||||
|
|
||||||
static char buf[1024];
|
static char buf[1024];
|
||||||
while (fgets(buf, sizeof(buf), f)) {
|
while (fgets(buf, sizeof(buf), f)) {
|
||||||
|
@ -531,7 +531,7 @@ bool srs_get_disk_vmstat_stat(SrsDiskStat& r)
|
||||||
bool srs_get_disk_diskstats_stat(SrsDiskStat& r)
|
bool srs_get_disk_diskstats_stat(SrsDiskStat& r)
|
||||||
{
|
{
|
||||||
r.ok = true;
|
r.ok = true;
|
||||||
r.sample_time = srs_get_system_time_ms();
|
r.sample_time = srsu2ms(srs_get_system_time());
|
||||||
|
|
||||||
// if disabled, ignore all devices.
|
// if disabled, ignore all devices.
|
||||||
SrsConfDirective* conf = _srs_config->get_stats_disk_device();
|
SrsConfDirective* conf = _srs_config->get_stats_disk_device();
|
||||||
|
@ -731,7 +731,7 @@ void srs_update_meminfo()
|
||||||
// Fuck all of you who use osx for a long time and never patch the osx features for srs.
|
// Fuck all of you who use osx for a long time and never patch the osx features for srs.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
r.sample_time = srs_get_system_time_ms();
|
r.sample_time = srsu2ms(srs_get_system_time());
|
||||||
r.MemActive = r.MemTotal - r.MemFree;
|
r.MemActive = r.MemTotal - r.MemFree;
|
||||||
r.RealInUse = r.MemActive - r.Buffers - r.Cached;
|
r.RealInUse = r.MemActive - r.Buffers - r.Cached;
|
||||||
r.NotInUse = r.MemTotal - r.RealInUse;
|
r.NotInUse = r.MemTotal - r.RealInUse;
|
||||||
|
@ -795,7 +795,7 @@ void srs_update_platform_info()
|
||||||
{
|
{
|
||||||
SrsPlatformInfo& r = _srs_system_platform_info;
|
SrsPlatformInfo& r = _srs_system_platform_info;
|
||||||
|
|
||||||
r.srs_startup_time = srs_get_system_startup_time_ms();
|
r.srs_startup_time = srsu2ms(srs_get_system_startup_time());
|
||||||
|
|
||||||
#ifndef SRS_OSX
|
#ifndef SRS_OSX
|
||||||
if (true) {
|
if (true) {
|
||||||
|
@ -940,7 +940,7 @@ void srs_update_network_devices()
|
||||||
_nb_srs_system_network_devices = i + 1;
|
_nb_srs_system_network_devices = i + 1;
|
||||||
srs_info("scan network device ifname=%s, total=%d", r.name, _nb_srs_system_network_devices);
|
srs_info("scan network device ifname=%s, total=%d", r.name, _nb_srs_system_network_devices);
|
||||||
|
|
||||||
r.sample_time = srs_get_system_time_ms();
|
r.sample_time = srsu2ms(srs_get_system_time());
|
||||||
r.ok = true;
|
r.ok = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1090,7 +1090,7 @@ void srs_update_rtmp_server(int nb_conn, SrsKbps* kbps)
|
||||||
r.ok = true;
|
r.ok = true;
|
||||||
|
|
||||||
r.nb_conn_srs = nb_conn;
|
r.nb_conn_srs = nb_conn;
|
||||||
r.sample_time = srs_get_system_time_ms();
|
r.sample_time = srsu2ms(srs_get_system_time());
|
||||||
|
|
||||||
r.rbytes = kbps->get_recv_bytes();
|
r.rbytes = kbps->get_recv_bytes();
|
||||||
r.rkbps = kbps->get_recv_kbps();
|
r.rkbps = kbps->get_recv_kbps();
|
||||||
|
@ -1199,7 +1199,7 @@ void srs_api_dump_summaries(SrsJsonObject* obj)
|
||||||
self_mem_percent = (float)(r->r.ru_maxrss / (double)m->MemTotal);
|
self_mem_percent = (float)(r->r.ru_maxrss / (double)m->MemTotal);
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t now = srs_get_system_time_ms();
|
int64_t now = srsu2ms(srs_get_system_time());
|
||||||
double srs_uptime = (now - p->srs_startup_time) / 100 / 10.0;
|
double srs_uptime = (now - p->srs_startup_time) / 100 / 10.0;
|
||||||
|
|
||||||
int64_t n_sample_time = 0;
|
int64_t n_sample_time = 0;
|
||||||
|
|
|
@ -101,25 +101,25 @@ srs_error_t srs_avc_nalu_read_bit(SrsBitBuffer* stream, int8_t& v)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t _srs_system_time_us_cache = 0;
|
srs_utime_t _srs_system_time_us_cache = 0;
|
||||||
int64_t _srs_system_time_startup_time = 0;
|
srs_utime_t _srs_system_time_startup_time = 0;
|
||||||
|
|
||||||
int64_t srs_get_system_time_ms()
|
srs_utime_t srs_get_system_time()
|
||||||
{
|
{
|
||||||
if (_srs_system_time_us_cache <= 0) {
|
if (_srs_system_time_us_cache <= 0) {
|
||||||
srs_update_system_time();
|
srs_update_system_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
return _srs_system_time_us_cache / 1000;
|
return _srs_system_time_us_cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t srs_get_system_startup_time_ms()
|
srs_utime_t srs_get_system_startup_time_ms()
|
||||||
{
|
{
|
||||||
if (_srs_system_time_startup_time <= 0) {
|
if (_srs_system_time_startup_time <= 0) {
|
||||||
srs_update_system_time();
|
srs_update_system_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
return _srs_system_time_startup_time / 1000;
|
return _srs_system_time_startup_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_utime_t srs_update_system_time()
|
srs_utime_t srs_update_system_time()
|
||||||
|
|
|
@ -42,9 +42,9 @@ class SrsBitBuffer;
|
||||||
extern srs_error_t srs_avc_nalu_read_uev(SrsBitBuffer* stream, int32_t& v);
|
extern srs_error_t srs_avc_nalu_read_uev(SrsBitBuffer* stream, int32_t& v);
|
||||||
extern srs_error_t srs_avc_nalu_read_bit(SrsBitBuffer* stream, int8_t& v);
|
extern srs_error_t srs_avc_nalu_read_bit(SrsBitBuffer* stream, int8_t& v);
|
||||||
|
|
||||||
// get current system time in ms, use cache to avoid performance problem
|
// get current system time in srs_utime_t, use cache to avoid performance problem
|
||||||
extern int64_t srs_get_system_time_ms();
|
extern srs_utime_t srs_get_system_time();
|
||||||
extern int64_t srs_get_system_startup_time_ms();
|
extern srs_utime_t srs_get_system_startup_time_ms();
|
||||||
// the deamon st-thread will update it.
|
// the deamon st-thread will update it.
|
||||||
extern srs_utime_t srs_update_system_time();
|
extern srs_utime_t srs_update_system_time();
|
||||||
|
|
||||||
|
|
|
@ -137,8 +137,7 @@ int SrsBandwidthClient::bandwidth_check(
|
||||||
) {
|
) {
|
||||||
int ret = ERROR_SUCCESS;
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
srs_update_system_time();
|
*start_time = srsu2ms(srs_update_system_time());
|
||||||
*start_time = srs_get_system_time_ms();
|
|
||||||
|
|
||||||
// play
|
// play
|
||||||
if ((ret = play_start()) != ERROR_SUCCESS) {
|
if ((ret = play_start()) != ERROR_SUCCESS) {
|
||||||
|
@ -193,8 +192,7 @@ int SrsBandwidthClient::bandwidth_check(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_update_system_time();
|
*end_time = srsu2ms(srs_update_system_time());
|
||||||
*end_time = srs_get_system_time_ms();
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -313,9 +311,8 @@ int SrsBandwidthClient::publish_checking(int duration_ms, int play_kbps)
|
||||||
}
|
}
|
||||||
|
|
||||||
int data_count = 1;
|
int data_count = 1;
|
||||||
srs_update_system_time();
|
int64_t starttime = srsu2ms(srs_update_system_time());
|
||||||
int64_t starttime = srs_get_system_time_ms();
|
while ((srsu2ms(srs_get_system_time()) - starttime) < duration_ms) {
|
||||||
while ((srs_get_system_time_ms() - starttime) < duration_ms) {
|
|
||||||
// TODO: FIXME: use shared ptr message.
|
// TODO: FIXME: use shared ptr message.
|
||||||
SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_publishing();
|
SrsBandwidthPacket* pkt = SrsBandwidthPacket::create_publishing();
|
||||||
|
|
||||||
|
@ -336,13 +333,12 @@ int SrsBandwidthClient::publish_checking(int duration_ms, int play_kbps)
|
||||||
}
|
}
|
||||||
|
|
||||||
// use the play kbps to control the publish
|
// use the play kbps to control the publish
|
||||||
srs_update_system_time();
|
int elaps = (int)(srsu2ms(srs_update_system_time()) - starttime);
|
||||||
int elaps = (int)(srs_get_system_time_ms() - starttime);
|
|
||||||
if (elaps > 0) {
|
if (elaps > 0) {
|
||||||
int current_kbps = (int)(_rtmp->get_send_bytes() * 8 / elaps);
|
int current_kbps = (int)(_rtmp->get_send_bytes() * 8 / elaps);
|
||||||
while (current_kbps > play_kbps) {
|
while (current_kbps > play_kbps) {
|
||||||
srs_update_system_time();
|
srs_update_system_time();
|
||||||
elaps = (int)(srs_get_system_time_ms() - starttime);
|
elaps = (int)(srsu2ms(srs_get_system_time()) - starttime);
|
||||||
current_kbps = (int)(_rtmp->get_send_bytes() * 8 / elaps);
|
current_kbps = (int)(_rtmp->get_send_bytes() * 8 / elaps);
|
||||||
usleep(100 * 1000); // TODO: FIXME: magic number.
|
usleep(100 * 1000); // TODO: FIXME: magic number.
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,7 +113,7 @@ SrsWallClock::~SrsWallClock()
|
||||||
|
|
||||||
int64_t SrsWallClock::time_ms()
|
int64_t SrsWallClock::time_ms()
|
||||||
{
|
{
|
||||||
return srs_get_system_time_ms();
|
return srsu2ms(srs_get_system_time());
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsKbps::SrsKbps(SrsWallClock* c) : is(c), os(c)
|
SrsKbps::SrsKbps(SrsWallClock* c) : is(c), os(c)
|
||||||
|
|
|
@ -1867,6 +1867,14 @@ VOID TEST(ConfigUnitTest, CheckDefaultValues)
|
||||||
EXPECT_EQ(10 * SRS_UTIME_SECONDS, conf.get_dvr_duration("v"));
|
EXPECT_EQ(10 * SRS_UTIME_SECONDS, conf.get_dvr_duration("v"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF));
|
||||||
|
EXPECT_EQ(0, conf.get_hls_dispose(""));
|
||||||
|
|
||||||
|
EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost v{hls{hls_dispose 10;}}"));
|
||||||
|
EXPECT_EQ(10 * SRS_UTIME_SECONDS, conf.get_hls_dispose("v"));
|
||||||
|
}
|
||||||
|
|
||||||
if (true) {
|
if (true) {
|
||||||
srs_utime_t t0 = srs_update_system_time();
|
srs_utime_t t0 = srs_update_system_time();
|
||||||
srs_usleep(10 * SRS_UTIME_MILLISECONDS);
|
srs_usleep(10 * SRS_UTIME_MILLISECONDS);
|
||||||
|
@ -1874,5 +1882,13 @@ VOID TEST(ConfigUnitTest, CheckDefaultValues)
|
||||||
|
|
||||||
EXPECT_TRUE(t1 - t0 >= 10 * SRS_UTIME_MILLISECONDS);
|
EXPECT_TRUE(t1 - t0 >= 10 * SRS_UTIME_MILLISECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
srs_utime_t t0 = srs_get_system_time();
|
||||||
|
srs_utime_t t1 = srs_update_system_time();
|
||||||
|
|
||||||
|
EXPECT_TRUE(t0 > 0);
|
||||||
|
EXPECT_TRUE(t1 >= t0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1482,15 +1482,14 @@ VOID TEST(KernelBufferTest, CoverAll)
|
||||||
*/
|
*/
|
||||||
VOID TEST(KernelUtilityTest, UtilityTime)
|
VOID TEST(KernelUtilityTest, UtilityTime)
|
||||||
{
|
{
|
||||||
int64_t time = srs_get_system_time_ms();
|
srs_utime_t time = srs_get_system_time();
|
||||||
EXPECT_TRUE(time > 0);
|
EXPECT_TRUE(time > 0);
|
||||||
|
|
||||||
int64_t time1 = srs_get_system_time_ms();
|
srs_utime_t time1 = srs_get_system_time();
|
||||||
EXPECT_EQ(time, time1);
|
EXPECT_EQ(time, time1);
|
||||||
|
|
||||||
usleep(1000);
|
usleep(1 * SRS_UTIME_MILLISECONDS);
|
||||||
srs_update_system_time();
|
time1 = srs_update_system_time();
|
||||||
time1 = srs_get_system_time_ms();
|
|
||||||
EXPECT_TRUE(time1 > time);
|
EXPECT_TRUE(time1 > time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1499,15 +1498,15 @@ VOID TEST(KernelUtilityTest, UtilityTime)
|
||||||
*/
|
*/
|
||||||
VOID TEST(KernelUtilityTest, UtilityStartupTime)
|
VOID TEST(KernelUtilityTest, UtilityStartupTime)
|
||||||
{
|
{
|
||||||
int64_t time = srs_get_system_startup_time_ms();
|
srs_utime_t time = srs_get_system_startup_time();
|
||||||
EXPECT_TRUE(time > 0);
|
EXPECT_TRUE(time > 0);
|
||||||
|
|
||||||
int64_t time1 = srs_get_system_startup_time_ms();
|
srs_utime_t time1 = srs_get_system_startup_time();
|
||||||
EXPECT_EQ(time, time1);
|
EXPECT_EQ(time, time1);
|
||||||
|
|
||||||
usleep(1000);
|
usleep(1 * SRS_UTIME_MILLISECONDS);
|
||||||
srs_update_system_time();
|
srs_update_system_time();
|
||||||
time1 = srs_get_system_startup_time_ms();
|
time1 = srs_get_system_startup_time();
|
||||||
EXPECT_EQ(time, time1);
|
EXPECT_EQ(time, time1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3182,7 +3181,7 @@ VOID TEST(KernelUtilityTest, CoverTimeUtilityAll)
|
||||||
{
|
{
|
||||||
_srs_system_time_us_cache = 0;
|
_srs_system_time_us_cache = 0;
|
||||||
_srs_system_time_startup_time = 0;
|
_srs_system_time_startup_time = 0;
|
||||||
EXPECT_TRUE(srs_get_system_startup_time_ms() > 0);
|
EXPECT_TRUE(srs_get_system_startup_time() > 0);
|
||||||
|
|
||||||
_srs_system_time_us_cache -= 300*1000 * 1000 + 1;
|
_srs_system_time_us_cache -= 300*1000 * 1000 + 1;
|
||||||
EXPECT_TRUE(srs_update_system_time() > 0);
|
EXPECT_TRUE(srs_update_system_time() > 0);
|
||||||
|
|
Loading…
Reference in a new issue