mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
SRT: Hide srt implements from API.
This commit is contained in:
parent
d39ec3cf45
commit
6009395c10
9 changed files with 157 additions and 127 deletions
|
@ -13,55 +13,57 @@
|
|||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
#include <srt/srt.h>
|
||||
|
||||
class SrsSrtSocket;
|
||||
|
||||
typedef int srs_srt_t;
|
||||
extern srs_srt_t srs_srt_socket_invalid();
|
||||
|
||||
// Create srt socket only, with libsrt's default option.
|
||||
extern srs_error_t srs_srt_socket(SRTSOCKET* pfd);
|
||||
extern srs_error_t srs_srt_socket(srs_srt_t* pfd);
|
||||
extern srs_error_t srs_srt_close(srs_srt_t fd);
|
||||
|
||||
// Create srt socket with srs recommend default option(tsbpdmode=false,tlpktdrop=false,latency=0,sndsyn=0,rcvsyn=0)
|
||||
extern srs_error_t srs_srt_socket_with_default_option(SRTSOCKET* pfd);
|
||||
extern srs_error_t srs_srt_socket_with_default_option(srs_srt_t* pfd);
|
||||
|
||||
// For server, listen at SRT endpoint.
|
||||
extern srs_error_t srs_srt_listen(SRTSOCKET srt_fd, std::string ip, int port);
|
||||
extern srs_error_t srs_srt_listen(srs_srt_t srt_fd, std::string ip, int port);
|
||||
|
||||
// Set read/write no block.
|
||||
extern srs_error_t srs_srt_nonblock(SRTSOCKET srt_fd);
|
||||
extern srs_error_t srs_srt_nonblock(srs_srt_t srt_fd);
|
||||
|
||||
// Set SRT options.
|
||||
extern srs_error_t srs_srt_set_maxbw(SRTSOCKET srt_fd, int maxbw);
|
||||
extern srs_error_t srs_srt_set_mss(SRTSOCKET srt_fd, int mss);
|
||||
extern srs_error_t srs_srt_set_payload_size(SRTSOCKET srt_fd, int payload_size);
|
||||
extern srs_error_t srs_srt_set_connect_timeout(SRTSOCKET srt_fd, int timeout);
|
||||
extern srs_error_t srs_srt_set_peer_idle_timeout(SRTSOCKET srt_fd, int timeout);
|
||||
extern srs_error_t srs_srt_set_tsbpdmode(SRTSOCKET srt_fd, bool tsbpdmode);
|
||||
extern srs_error_t srs_srt_set_sndbuf(SRTSOCKET srt_fd, int sndbuf);
|
||||
extern srs_error_t srs_srt_set_rcvbuf(SRTSOCKET srt_fd, int rcvbuf);
|
||||
extern srs_error_t srs_srt_set_tlpktdrop(SRTSOCKET srt_fd, bool tlpktdrop);
|
||||
extern srs_error_t srs_srt_set_latency(SRTSOCKET srt_fd, int latency);
|
||||
extern srs_error_t srs_srt_set_rcv_latency(SRTSOCKET srt_fd, int rcv_latency);
|
||||
extern srs_error_t srs_srt_set_peer_latency(SRTSOCKET srt_fd, int peer_latency);
|
||||
extern srs_error_t srs_srt_set_streamid(SRTSOCKET srt_fd, const std::string& streamid);
|
||||
extern srs_error_t srs_srt_set_maxbw(srs_srt_t srt_fd, int maxbw);
|
||||
extern srs_error_t srs_srt_set_mss(srs_srt_t srt_fd, int mss);
|
||||
extern srs_error_t srs_srt_set_payload_size(srs_srt_t srt_fd, int payload_size);
|
||||
extern srs_error_t srs_srt_set_connect_timeout(srs_srt_t srt_fd, int timeout);
|
||||
extern srs_error_t srs_srt_set_peer_idle_timeout(srs_srt_t srt_fd, int timeout);
|
||||
extern srs_error_t srs_srt_set_tsbpdmode(srs_srt_t srt_fd, bool tsbpdmode);
|
||||
extern srs_error_t srs_srt_set_sndbuf(srs_srt_t srt_fd, int sndbuf);
|
||||
extern srs_error_t srs_srt_set_rcvbuf(srs_srt_t srt_fd, int rcvbuf);
|
||||
extern srs_error_t srs_srt_set_tlpktdrop(srs_srt_t srt_fd, bool tlpktdrop);
|
||||
extern srs_error_t srs_srt_set_latency(srs_srt_t srt_fd, int latency);
|
||||
extern srs_error_t srs_srt_set_rcv_latency(srs_srt_t srt_fd, int rcv_latency);
|
||||
extern srs_error_t srs_srt_set_peer_latency(srs_srt_t srt_fd, int peer_latency);
|
||||
extern srs_error_t srs_srt_set_streamid(srs_srt_t srt_fd, const std::string& streamid);
|
||||
|
||||
// Get SRT options.
|
||||
extern srs_error_t srs_srt_get_maxbw(SRTSOCKET srt_fd, int& maxbw);
|
||||
extern srs_error_t srs_srt_get_mss(SRTSOCKET srt_fd, int& mss);
|
||||
extern srs_error_t srs_srt_get_payload_size(SRTSOCKET srt_fd, int& payload_size);
|
||||
extern srs_error_t srs_srt_get_connect_timeout(SRTSOCKET srt_fd, int& timeout);
|
||||
extern srs_error_t srs_srt_get_peer_idle_timeout(SRTSOCKET srt_fd, int& timeout);
|
||||
extern srs_error_t srs_srt_get_tsbpdmode(SRTSOCKET srt_fd, bool& tsbpdmode);
|
||||
extern srs_error_t srs_srt_get_sndbuf(SRTSOCKET srt_fd, int& sndbuf);
|
||||
extern srs_error_t srs_srt_get_rcvbuf(SRTSOCKET srt_fd, int& rcvbuf);
|
||||
extern srs_error_t srs_srt_get_tlpktdrop(SRTSOCKET srt_fd, bool& tlpktdrop);
|
||||
extern srs_error_t srs_srt_get_latency(SRTSOCKET srt_fd, int& latency);
|
||||
extern srs_error_t srs_srt_get_rcv_latency(SRTSOCKET srt_fd, int& rcv_latency);
|
||||
extern srs_error_t srs_srt_get_peer_latency(SRTSOCKET srt_fd, int& peer_latency);
|
||||
extern srs_error_t srs_srt_get_streamid(SRTSOCKET srt_fd, std::string& streamid);
|
||||
extern srs_error_t srs_srt_get_maxbw(srs_srt_t srt_fd, int& maxbw);
|
||||
extern srs_error_t srs_srt_get_mss(srs_srt_t srt_fd, int& mss);
|
||||
extern srs_error_t srs_srt_get_payload_size(srs_srt_t srt_fd, int& payload_size);
|
||||
extern srs_error_t srs_srt_get_connect_timeout(srs_srt_t srt_fd, int& timeout);
|
||||
extern srs_error_t srs_srt_get_peer_idle_timeout(srs_srt_t srt_fd, int& timeout);
|
||||
extern srs_error_t srs_srt_get_tsbpdmode(srs_srt_t srt_fd, bool& tsbpdmode);
|
||||
extern srs_error_t srs_srt_get_sndbuf(srs_srt_t srt_fd, int& sndbuf);
|
||||
extern srs_error_t srs_srt_get_rcvbuf(srs_srt_t srt_fd, int& rcvbuf);
|
||||
extern srs_error_t srs_srt_get_tlpktdrop(srs_srt_t srt_fd, bool& tlpktdrop);
|
||||
extern srs_error_t srs_srt_get_latency(srs_srt_t srt_fd, int& latency);
|
||||
extern srs_error_t srs_srt_get_rcv_latency(srs_srt_t srt_fd, int& rcv_latency);
|
||||
extern srs_error_t srs_srt_get_peer_latency(srs_srt_t srt_fd, int& peer_latency);
|
||||
extern srs_error_t srs_srt_get_streamid(srs_srt_t srt_fd, std::string& streamid);
|
||||
|
||||
// Get SRT socket info.
|
||||
extern srs_error_t srs_srt_get_local_ip_port(SRTSOCKET srt_fd, std::string& ip, int& port);
|
||||
extern srs_error_t srs_srt_get_remote_ip_port(SRTSOCKET srt_fd, std::string& ip, int& port);
|
||||
extern srs_error_t srs_srt_get_local_ip_port(srs_srt_t srt_fd, std::string& ip, int& port);
|
||||
extern srs_error_t srs_srt_get_remote_ip_port(srs_srt_t srt_fd, std::string& ip, int& port);
|
||||
|
||||
// Get SRT stats.
|
||||
class SrsSrtStat
|
||||
|
@ -82,7 +84,7 @@ public:
|
|||
int pktRetrans();
|
||||
int pktSndDrop();
|
||||
public:
|
||||
srs_error_t fetch(SRTSOCKET srt_fd, bool clear);
|
||||
srs_error_t fetch(srs_srt_t srt_fd, bool clear);
|
||||
};
|
||||
|
||||
// Srt poller, subscribe/unsubscribed events and wait them fired.
|
||||
|
@ -99,6 +101,8 @@ public:
|
|||
// Wait for the fds in its epoll to be fired in specified timeout_ms, where the pn_fds is the number of active fds.
|
||||
// Note that for ST, please always use timeout_ms(0) and switch coroutine by yourself.
|
||||
virtual srs_error_t wait(int timeout_ms, int* pn_fds) = 0;
|
||||
public:
|
||||
virtual int size() = 0;
|
||||
};
|
||||
ISrsSrtPoller* srs_srt_poller_new();
|
||||
|
||||
|
@ -106,15 +110,15 @@ ISrsSrtPoller* srs_srt_poller_new();
|
|||
class SrsSrtSocket
|
||||
{
|
||||
public:
|
||||
SrsSrtSocket(ISrsSrtPoller* srt_poller, SRTSOCKET srt_fd);
|
||||
SrsSrtSocket(ISrsSrtPoller* srt_poller, srs_srt_t srt_fd);
|
||||
virtual ~SrsSrtSocket();
|
||||
public: // IO API
|
||||
srs_error_t connect(const std::string& ip, int port);
|
||||
srs_error_t accept(SRTSOCKET* client_srt_fd);
|
||||
srs_error_t accept(srs_srt_t* client_srt_fd);
|
||||
srs_error_t recvmsg(void* buf, size_t size, ssize_t* nread);
|
||||
srs_error_t sendmsg(void* buf, size_t size, ssize_t* nwrite);
|
||||
public:
|
||||
SRTSOCKET fd() const { return srt_fd_; }
|
||||
srs_srt_t fd() const { return srt_fd_; }
|
||||
int events() const { return events_; }
|
||||
public:
|
||||
void set_recv_timeout(srs_utime_t tm) { recv_timeout_ = tm; }
|
||||
|
@ -148,7 +152,7 @@ private:
|
|||
srs_error_t check_error();
|
||||
|
||||
private:
|
||||
SRTSOCKET srt_fd_;
|
||||
srs_srt_t srt_fd_;
|
||||
// Mark if some error occured in srt socket.
|
||||
bool has_error_;
|
||||
// When read operator like recvmsg/accept would block, wait this condition timeout or notified,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue