mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
For #307, RTC RTP support padding
This commit is contained in:
parent
216b3bf414
commit
0bb61f7d98
2 changed files with 27 additions and 0 deletions
|
@ -157,6 +157,7 @@ void SrsRtpHeader::set_ssrc(uint32_t ssrc)
|
||||||
SrsRtpPacket2::SrsRtpPacket2()
|
SrsRtpPacket2::SrsRtpPacket2()
|
||||||
{
|
{
|
||||||
payload = NULL;
|
payload = NULL;
|
||||||
|
padding = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsRtpPacket2::~SrsRtpPacket2()
|
SrsRtpPacket2::~SrsRtpPacket2()
|
||||||
|
@ -164,6 +165,17 @@ SrsRtpPacket2::~SrsRtpPacket2()
|
||||||
srs_freep(payload);
|
srs_freep(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SrsRtpPacket2::set_padding(int size)
|
||||||
|
{
|
||||||
|
rtp_header.set_padding(size > 0);
|
||||||
|
padding = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
int SrsRtpPacket2::nb_bytes()
|
||||||
|
{
|
||||||
|
return rtp_header.header_size() + (payload? payload->nb_bytes():0) + padding;
|
||||||
|
}
|
||||||
|
|
||||||
srs_error_t SrsRtpPacket2::encode(SrsBuffer* buf)
|
srs_error_t SrsRtpPacket2::encode(SrsBuffer* buf)
|
||||||
{
|
{
|
||||||
srs_error_t err = srs_success;
|
srs_error_t err = srs_success;
|
||||||
|
@ -176,6 +188,14 @@ srs_error_t SrsRtpPacket2::encode(SrsBuffer* buf)
|
||||||
return srs_error_wrap(err, "encode payload");
|
return srs_error_wrap(err, "encode payload");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (padding) {
|
||||||
|
if (!buf->require(padding)) {
|
||||||
|
return srs_error_new(ERROR_RTC_RTP_MUXER, "requires %d bytes", padding);
|
||||||
|
}
|
||||||
|
memset(buf->data(), padding, padding);
|
||||||
|
buf->skip(padding);
|
||||||
|
}
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,7 @@ public:
|
||||||
int64_t get_timestamp() const { return timestamp; }
|
int64_t get_timestamp() const { return timestamp; }
|
||||||
void set_ssrc(uint32_t ssrc);
|
void set_ssrc(uint32_t ssrc);
|
||||||
uint32_t get_ssrc() const { return ssrc; }
|
uint32_t get_ssrc() const { return ssrc; }
|
||||||
|
void set_padding(bool v) { padding = v; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class SrsRtpPacket2
|
class SrsRtpPacket2
|
||||||
|
@ -81,10 +82,16 @@ class SrsRtpPacket2
|
||||||
public:
|
public:
|
||||||
SrsRtpHeader rtp_header;
|
SrsRtpHeader rtp_header;
|
||||||
ISrsEncoder* payload;
|
ISrsEncoder* payload;
|
||||||
|
int padding;
|
||||||
public:
|
public:
|
||||||
SrsRtpPacket2();
|
SrsRtpPacket2();
|
||||||
virtual ~SrsRtpPacket2();
|
virtual ~SrsRtpPacket2();
|
||||||
public:
|
public:
|
||||||
|
// Append size of bytes as padding.
|
||||||
|
virtual void set_padding(int size);
|
||||||
|
// interface ISrsEncoder
|
||||||
|
public:
|
||||||
|
virtual int nb_bytes();
|
||||||
virtual srs_error_t encode(SrsBuffer* buf);
|
virtual srs_error_t encode(SrsBuffer* buf);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue