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:
parent
d5c514cdcb
commit
3bd56bb3a3
3 changed files with 37 additions and 18 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue