1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

add srt parameter configure

This commit is contained in:
runner365 2020-02-12 20:02:55 +08:00
parent 6f4c124f58
commit 24f286684e
6 changed files with 227 additions and 6 deletions

View file

@ -131,13 +131,14 @@ void srt_handle::add_newconn(SRT_CONN_PTR conn_ptr, int events) {
int val_i;
int opt_len = sizeof(int);
val_i = 1000;
srt_setsockopt(conn_ptr->get_conn(), 0, SRTO_LATENCY, &val_i, opt_len);
val_i = 2048;
srt_setsockopt(conn_ptr->get_conn(), 0, SRTO_MAXBW, &val_i, opt_len);
srt_getsockopt(conn_ptr->get_conn(), 0, SRTO_LATENCY, &val_i, &opt_len);
srs_trace("srto SRTO_LATENCY=%d", val_i);
srt_getsockopt(conn_ptr->get_conn(), 0, SRTO_PEERLATENCY, &val_i, &opt_len);
srs_trace("srto SRTO_PEERLATENCY=%d", val_i);
srt_getsockopt(conn_ptr->get_conn(), 0, SRTO_RCVLATENCY, &val_i, &opt_len);
srs_trace("srto SRTO_RCVLATENCY=%d", val_i);
srt_getsockopt(conn_ptr->get_conn(), 0, SRTO_SNDBUF, &val_i, &opt_len);
srs_trace("srto SRTO_SNDBUF=%d", val_i);
srt_getsockopt(conn_ptr->get_conn(), 0, SRTO_RCVBUF, &val_i, &opt_len);

View file

@ -25,6 +25,54 @@ srt_server::~srt_server()
}
int srt_server::init_srt_parameter() {
const int DEF_LATENCY = 188*7;
int opt_len = sizeof(int);
if (_server_socket == -1) {
return -1;
}
int maxbw = _srs_config->get_srto_maxbw();
srt_setsockopt(_server_socket, 0, SRTO_MAXBW, &maxbw, opt_len);
int mss = _srs_config->get_srto_mss();
srt_setsockopt(_server_socket, 0, SRTO_MSS, &mss, opt_len);
bool tlpkdrop = _srs_config->get_srto_tlpkdrop();
int tlpkdrop_i = tlpkdrop ? 1 : 0;
srt_setsockopt(_server_socket, 0, SRTO_TLPKTDROP, &tlpkdrop_i, opt_len);
int connection_timeout = _srs_config->get_srto_conntimeout();
srt_setsockopt(_server_socket, 0, SRTO_CONNTIMEO, &connection_timeout, opt_len);
int send_buff = _srs_config->get_srto_sendbuf();
srt_setsockopt(_server_socket, 0, SRTO_SNDBUF, &send_buff, opt_len);
int recv_buff = _srs_config->get_srto_recvbuf();
srt_setsockopt(_server_socket, 0, SRTO_RCVBUF, &recv_buff, opt_len);
int payload_size = _srs_config->get_srto_payloadsize();
srt_setsockopt(_server_socket, 0, SRTO_PAYLOADSIZE, &payload_size, opt_len);
int latency = _srs_config->get_srto_latency();
if (DEF_LATENCY != latency) {
srt_setsockopt(_server_socket, 0, SRTO_LATENCY, &latency, opt_len);
}
int recv_latency = _srs_config->get_srto_recv_latency();
if (DEF_LATENCY != recv_latency) {
srt_setsockopt(_server_socket, 0, SRTO_RCVLATENCY, &recv_latency, opt_len);
}
int peer_latency = _srs_config->get_srto_peer_latency();
if (DEF_LATENCY != peer_latency) {
srt_setsockopt(_server_socket, 0, SRTO_PEERLATENCY, &recv_latency, opt_len);
}
srs_trace("init srt parameter, maxbw:%d, mss:%d, tlpkdrop:%d, connect timeout:%d, \
send buff:%d, recv buff:%d, payload size:%d, latency:%d, recv latency:%d, peer latency:%d",
maxbw, mss, tlpkdrop, connection_timeout, send_buff, recv_buff, payload_size,
latency, recv_latency, peer_latency);
return 0;
}
int srt_server::init_srt() {
if (_server_socket != -1) {
return -1;
@ -54,6 +102,8 @@ int srt_server::init_srt() {
return -2;
}
init_srt_parameter();
_pollid = srt_epoll_create();
if (_pollid < -1) {
srs_error("srt server srt_epoll_create error, port=%d", _listen_port);

View file

@ -21,6 +21,8 @@ public:
private:
//init srt socket and srt epoll
int init_srt();
int init_srt_parameter();
//srt main epoll loop
void on_work();
//accept new srt connection