1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-15 04:42:04 +00:00

RTC: Rename padding API.

This commit is contained in:
winlin 2020-05-14 15:01:12 +08:00
parent e8973c2343
commit f81d35d20f
4 changed files with 14 additions and 43 deletions

View file

@ -860,7 +860,6 @@ srs_error_t SrsRtcPlayer::send_packets(std::vector<SrsRtpPacket2*>& pkts, SrsRtc
if (nack_enabled_) { if (nack_enabled_) {
SrsRtpPacket2* nack = new SrsRtpPacket2(); SrsRtpPacket2* nack = new SrsRtpPacket2();
nack->rtp_header = pkt->rtp_header; nack->rtp_header = pkt->rtp_header;
nack->padding = pkt->padding;
// TODO: FIXME: Should avoid memory copying. // TODO: FIXME: Should avoid memory copying.
SrsRtpRawPayload* payload = new SrsRtpRawPayload(); SrsRtpRawPayload* payload = new SrsRtpRawPayload();
@ -1035,7 +1034,6 @@ srs_error_t SrsRtcPlayer::send_packets_gso(vector<SrsRtpPacket2*>& pkts, SrsRtcO
if (nack_enabled_) { if (nack_enabled_) {
SrsRtpPacket2* nack = new SrsRtpPacket2(); SrsRtpPacket2* nack = new SrsRtpPacket2();
nack->rtp_header = packet->rtp_header; nack->rtp_header = packet->rtp_header;
nack->padding = packet->padding;
// TODO: FIXME: Should avoid memory copying. // TODO: FIXME: Should avoid memory copying.
SrsRtpRawPayload* payload = new SrsRtpRawPayload(); SrsRtpRawPayload* payload = new SrsRtpRawPayload();

View file

@ -620,7 +620,6 @@ void SrsRtpVideoQueue::covert_frame(std::vector<SrsRtpVideoPacket*>& frame, SrsR
// TODO: FIXME: Should covert to multiple NALU RTP packet to avoid copying. // TODO: FIXME: Should covert to multiple NALU RTP packet to avoid copying.
SrsRtpPacket2* pkt = new SrsRtpPacket2(); SrsRtpPacket2* pkt = new SrsRtpPacket2();
pkt->rtp_header = head->rtp_header; pkt->rtp_header = head->rtp_header;
pkt->padding = head->padding;
SrsRtpFUAPayload2* head_payload = dynamic_cast<SrsRtpFUAPayload2*>(head->payload); SrsRtpFUAPayload2* head_payload = dynamic_cast<SrsRtpFUAPayload2*>(head->payload);
pkt->nalu_type = head_payload->nalu_type; pkt->nalu_type = head_payload->nalu_type;

View file

@ -35,7 +35,6 @@ using namespace std;
SrsRtpHeader::SrsRtpHeader() SrsRtpHeader::SrsRtpHeader()
{ {
padding = false;
padding_length = 0; padding_length = 0;
extension = false; extension = false;
cc = 0; cc = 0;
@ -47,17 +46,6 @@ SrsRtpHeader::SrsRtpHeader()
extension_length = 0; extension_length = 0;
} }
void SrsRtpHeader::reset()
{
// We only reset the optional fields, the required field such as ssrc
// will always be set by user.
padding = false;
extension = false;
cc = 0;
marker = false;
extension_length = 0;
}
SrsRtpHeader::~SrsRtpHeader() SrsRtpHeader::~SrsRtpHeader()
{ {
} }
@ -86,7 +74,7 @@ srs_error_t SrsRtpHeader::decode(SrsBuffer* buf)
*/ */
uint8_t first = buf->read_1bytes(); uint8_t first = buf->read_1bytes();
padding = (first & 0x20); bool padding = (first & 0x20);
extension = (first & 0x10); extension = (first & 0x10);
cc = (first & 0x0F); cc = (first & 0x0F);
@ -142,7 +130,7 @@ srs_error_t SrsRtpHeader::encode(SrsBuffer* buf)
// The version, padding, extension and cc, total 1 byte. // The version, padding, extension and cc, total 1 byte.
uint8_t v = 0x80 | cc; uint8_t v = 0x80 | cc;
if (padding) { if (padding_length > 0) {
v |= 0x20; v |= 0x20;
} }
if (extension) { if (extension) {
@ -250,17 +238,12 @@ uint32_t SrsRtpHeader::get_ssrc() const
return ssrc; return ssrc;
} }
void SrsRtpHeader::set_padding(bool v) void SrsRtpHeader::set_padding(uint8_t v)
{
padding = v;
}
void SrsRtpHeader::set_padding_length(uint8_t v)
{ {
padding_length = v; padding_length = v;
} }
uint8_t SrsRtpHeader::get_padding_length() const uint8_t SrsRtpHeader::get_padding() const
{ {
return padding_length; return padding_length;
} }
@ -283,7 +266,6 @@ ISrsRtpPacketDecodeHandler::~ISrsRtpPacketDecodeHandler()
SrsRtpPacket2::SrsRtpPacket2() SrsRtpPacket2::SrsRtpPacket2()
{ {
padding = 0;
payload = NULL; payload = NULL;
decode_handler = NULL; decode_handler = NULL;
@ -301,22 +283,18 @@ SrsRtpPacket2::~SrsRtpPacket2()
void SrsRtpPacket2::set_padding(int size) void SrsRtpPacket2::set_padding(int size)
{ {
rtp_header.set_padding(size > 0); rtp_header.set_padding(size);
rtp_header.set_padding_length(size);
if (cached_payload_size) { if (cached_payload_size) {
cached_payload_size += size - padding; cached_payload_size += size - rtp_header.get_padding();
} }
padding = size;
} }
void SrsRtpPacket2::add_padding(int size) void SrsRtpPacket2::add_padding(int size)
{ {
rtp_header.set_padding(padding + size > 0); rtp_header.set_padding(rtp_header.get_padding() + size);
rtp_header.set_padding_length(rtp_header.get_padding_length() + size);
if (cached_payload_size) { if (cached_payload_size) {
cached_payload_size += size; cached_payload_size += size;
} }
padding += size;
} }
void SrsRtpPacket2::set_decode_handler(ISrsRtpPacketDecodeHandler* h) void SrsRtpPacket2::set_decode_handler(ISrsRtpPacketDecodeHandler* h)
@ -335,7 +313,6 @@ SrsRtpPacket2* SrsRtpPacket2::copy()
cp->rtp_header = rtp_header; cp->rtp_header = rtp_header;
cp->payload = payload? payload->copy():NULL; cp->payload = payload? payload->copy():NULL;
cp->padding = padding;
cp->nalu_type = nalu_type; cp->nalu_type = nalu_type;
cp->shared_msg = shared_msg? shared_msg->copy():NULL; cp->shared_msg = shared_msg? shared_msg->copy():NULL;
@ -350,7 +327,8 @@ SrsRtpPacket2* SrsRtpPacket2::copy()
int SrsRtpPacket2::nb_bytes() int SrsRtpPacket2::nb_bytes()
{ {
if (!cached_payload_size) { if (!cached_payload_size) {
cached_payload_size = rtp_header.nb_bytes() + (payload? payload->nb_bytes():0) + padding; int nn_payload = (payload? payload->nb_bytes():0);
cached_payload_size = rtp_header.nb_bytes() + nn_payload + rtp_header.get_padding();
} }
return cached_payload_size; return cached_payload_size;
} }
@ -367,7 +345,8 @@ srs_error_t SrsRtpPacket2::encode(SrsBuffer* buf)
return srs_error_wrap(err, "rtp payload"); return srs_error_wrap(err, "rtp payload");
} }
if (padding > 0) { if (rtp_header.get_padding() > 0) {
uint8_t padding = rtp_header.get_padding();
if (!buf->require(padding)) { if (!buf->require(padding)) {
return srs_error_new(ERROR_RTC_RTP_MUXER, "requires %d bytes", padding); return srs_error_new(ERROR_RTC_RTP_MUXER, "requires %d bytes", padding);
} }
@ -387,7 +366,7 @@ srs_error_t SrsRtpPacket2::decode(SrsBuffer* buf)
} }
// We must skip the padding bytes before parsing payload. // We must skip the padding bytes before parsing payload.
padding = rtp_header.get_padding_length(); uint8_t padding = rtp_header.get_padding();
if (!buf->require(padding)) { if (!buf->require(padding)) {
return srs_error_wrap(err, "requires padding %d bytes", padding); return srs_error_wrap(err, "requires padding %d bytes", padding);
} }

View file

@ -61,7 +61,6 @@ class SrsSharedPtrMessage;
class SrsRtpHeader class SrsRtpHeader
{ {
private: private:
bool padding;
uint8_t padding_length; uint8_t padding_length;
bool extension; bool extension;
uint8_t cc; uint8_t cc;
@ -76,7 +75,6 @@ private:
public: public:
SrsRtpHeader(); SrsRtpHeader();
virtual ~SrsRtpHeader(); virtual ~SrsRtpHeader();
void reset();
public: public:
virtual srs_error_t decode(SrsBuffer* buf); virtual srs_error_t decode(SrsBuffer* buf);
virtual srs_error_t encode(SrsBuffer* buf); virtual srs_error_t encode(SrsBuffer* buf);
@ -92,9 +90,8 @@ public:
uint32_t get_timestamp() const; uint32_t get_timestamp() const;
void set_ssrc(uint32_t v); void set_ssrc(uint32_t v);
uint32_t get_ssrc() const; uint32_t get_ssrc() const;
void set_padding(bool v); void set_padding(uint8_t v);
void set_padding_length(uint8_t v); uint8_t get_padding() const;
uint8_t get_padding_length() const;
}; };
class ISrsRtpPayloader : public ISrsCodec class ISrsRtpPayloader : public ISrsCodec
@ -123,8 +120,6 @@ public:
// TODO: FIXME: Rename to header. // TODO: FIXME: Rename to header.
SrsRtpHeader rtp_header; SrsRtpHeader rtp_header;
ISrsRtpPayloader* payload; ISrsRtpPayloader* payload;
// TODO: FIXME: Merge into rtp_header.
int padding;
// Helper fields. // Helper fields.
public: public:
// The first byte as nalu type, for video decoder only. // The first byte as nalu type, for video decoder only.