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

For #307, reuse fua cache payload for RTP

This commit is contained in:
winlin 2020-04-16 14:51:36 +08:00
parent d5c514cdcb
commit 3bd56bb3a3
3 changed files with 37 additions and 18 deletions

View file

@ -148,12 +148,13 @@ SrsRtpPacket2::SrsRtpPacket2()
padding = 0;
cache_raw = new SrsRtpRawPayload();
cache_fua = new SrsRtpFUAPayload();
}
SrsRtpPacket2::~SrsRtpPacket2()
{
// We may use the cache as payload.
if (payload == cache_raw) {
if (payload == cache_raw || payload == cache_fua) {
payload = NULL;
}
@ -173,7 +174,7 @@ void SrsRtpPacket2::reset()
padding = 0;
// We may use the cache as payload.
if (payload == cache_raw) {
if (payload == cache_raw || payload == cache_fua) {
payload = NULL;
}
@ -186,6 +187,13 @@ SrsRtpRawPayload* SrsRtpPacket2::reuse_raw()
return cache_raw;
}
SrsRtpFUAPayload* SrsRtpPacket2::reuse_fua()
{
payload = cache_fua;
cache_fua->reset();
return cache_fua;
}
int SrsRtpPacket2::nb_bytes()
{
return rtp_header.header_size() + (payload? payload->nb_bytes():0) + padding;
@ -421,6 +429,16 @@ SrsRtpFUAPayload::~SrsRtpFUAPayload()
nalus.clear();
}
void SrsRtpFUAPayload::reset()
{
vector<SrsSample*>::iterator it;
for (it = nalus.begin(); it != nalus.end(); ++it) {
SrsSample* p = *it;
srs_freep(p);
}
nalus.clear();
}
int SrsRtpFUAPayload::nb_bytes()
{
int size = 2;