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

Upgrade libsrt to v1.5.3. v5.0.183 v6.0.81 (#3808)

fix https://github.com/ossrs/srs/issues/3155
Build srt-1-fit fails with `standard attributes in middle of
decl-specifiers` on GCC 12,Arch Linux.

See https://github.com/Haivision/srt/releases/tag/v1.5.3
This commit is contained in:
Haibo Chen 2023-09-21 22:23:56 +08:00 committed by GitHub
parent f9bba0a9b0
commit c5e067fb0b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
94 changed files with 5974 additions and 6273 deletions

View file

@ -91,19 +91,27 @@ struct CSrtMuxerConfig
int iUDPSndBufSize; // UDP sending buffer size
int iUDPRcvBufSize; // UDP receiving buffer size
bool operator==(const CSrtMuxerConfig& other) const
// NOTE: this operator is not reversable. The syntax must use:
// muxer_entry == socket_entry
bool isCompatWith(const CSrtMuxerConfig& other) const
{
#define CEQUAL(field) (field == other.field)
return CEQUAL(iIpTTL)
&& CEQUAL(iIpToS)
&& CEQUAL(iIpV6Only)
&& CEQUAL(bReuseAddr)
#ifdef SRT_ENABLE_BINDTODEVICE
&& CEQUAL(sBindToDevice)
#endif
&& CEQUAL(iUDPSndBufSize)
&& CEQUAL(iUDPRcvBufSize);
&& CEQUAL(iUDPRcvBufSize)
&& (other.iIpV6Only == -1 || CEQUAL(iIpV6Only))
// NOTE: iIpV6Only is not regarded because
// this matches only in case of IPv6 with "any" address.
// And this aspect must be checked separately because here
// this procedure has no access to neither the address,
// nor the IP version (family).
#undef CEQUAL
&& true;
}
CSrtMuxerConfig()
@ -150,6 +158,16 @@ public:
return set(s.c_str(), s.size());
}
size_t copy(char* s, size_t length) const
{
if (!s)
return 0;
size_t copy_len = std::min((size_t)len, length);
memcpy(s, stor, copy_len);
return copy_len;
}
std::string str() const
{
return len == 0 ? std::string() : std::string(stor);
@ -176,6 +194,13 @@ struct CSrtConfig: CSrtMuxerConfig
DEF_LINGER_S = 3*60, // 3 minutes
DEF_CONNTIMEO_S = 3; // 3 seconds
enum
{
CIPHER_MODE_AUTO = 0,
CIPHER_MODE_AES_CTR = 1,
CIPHER_MODE_AES_GCM = 2
};
static const int COMM_RESPONSE_TIMEOUT_MS = 5 * 1000; // 5 seconds
static const uint32_t COMM_DEF_MIN_STABILITY_TIMEOUT_MS = 60; // 60 ms
@ -189,8 +214,8 @@ struct CSrtConfig: CSrtMuxerConfig
size_t zExpPayloadSize; // Expected average payload size (user option)
// Options
bool bSynSending; // Sending syncronization mode
bool bSynRecving; // Receiving syncronization mode
bool bSynSending; // Sending synchronization mode
bool bSynRecving; // Receiving synchronization mode
int iFlightFlagSize; // Maximum number of packets in flight from the peer side
int iSndBufSize; // Maximum UDT sender buffer size
int iRcvBufSize; // Maximum UDT receiver buffer size
@ -202,6 +227,9 @@ struct CSrtConfig: CSrtMuxerConfig
int iSndTimeOut; // sending timeout in milliseconds
int iRcvTimeOut; // receiving timeout in milliseconds
int64_t llMaxBW; // maximum data transfer rate (threshold)
#ifdef ENABLE_MAXREXMITBW
int64_t llMaxRexmitBW; // maximum bandwidth limit for retransmissions (Bytes/s).
#endif
// These fields keep the options for encryption
// (SRTO_PASSPHRASE, SRTO_PBKEYLEN). Crypto object is
@ -224,6 +252,7 @@ struct CSrtConfig: CSrtMuxerConfig
int iPeerIdleTimeout_ms; // Timeout for hearing anything from the peer (ms).
uint32_t uMinStabilityTimeout_ms;
int iRetransmitAlgo;
int iCryptoMode; // SRTO_CRYPTOMODE
int64_t llInputBW; // Input stream rate (bytes/sec). 0: use internally estimated input bandwidth
int64_t llMinInputBW; // Minimum input stream rate estimate (bytes/sec)
@ -263,6 +292,9 @@ struct CSrtConfig: CSrtMuxerConfig
, iSndTimeOut(-1)
, iRcvTimeOut(-1)
, llMaxBW(-1)
#ifdef ENABLE_MAXREXMITBW
, llMaxRexmitBW(-1)
#endif
, bDataSender(false)
, bMessageAPI(true)
, bTSBPD(true)
@ -275,6 +307,7 @@ struct CSrtConfig: CSrtMuxerConfig
, iPeerIdleTimeout_ms(COMM_RESPONSE_TIMEOUT_MS)
, uMinStabilityTimeout_ms(COMM_DEF_MIN_STABILITY_TIMEOUT_MS)
, iRetransmitAlgo(1)
, iCryptoMode(CIPHER_MODE_AUTO)
, llInputBW(0)
, llMinInputBW(0)
, iOverheadBW(25)