From f81d35d20f04ebec01915cb78a882e45b7ee8800 Mon Sep 17 00:00:00 2001 From: winlin Date: Thu, 14 May 2020 15:01:12 +0800 Subject: [PATCH] RTC: Rename padding API. --- trunk/src/app/srs_app_rtc_conn.cpp | 2 -- trunk/src/app/srs_app_rtc_queue.cpp | 1 - trunk/src/kernel/srs_kernel_rtc_rtp.cpp | 45 +++++++------------------ trunk/src/kernel/srs_kernel_rtc_rtp.hpp | 9 ++--- 4 files changed, 14 insertions(+), 43 deletions(-) diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 44cf8785d..5ccac9172 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -860,7 +860,6 @@ srs_error_t SrsRtcPlayer::send_packets(std::vector& pkts, SrsRtc if (nack_enabled_) { SrsRtpPacket2* nack = new SrsRtpPacket2(); nack->rtp_header = pkt->rtp_header; - nack->padding = pkt->padding; // TODO: FIXME: Should avoid memory copying. SrsRtpRawPayload* payload = new SrsRtpRawPayload(); @@ -1035,7 +1034,6 @@ srs_error_t SrsRtcPlayer::send_packets_gso(vector& pkts, SrsRtcO if (nack_enabled_) { SrsRtpPacket2* nack = new SrsRtpPacket2(); nack->rtp_header = packet->rtp_header; - nack->padding = packet->padding; // TODO: FIXME: Should avoid memory copying. SrsRtpRawPayload* payload = new SrsRtpRawPayload(); diff --git a/trunk/src/app/srs_app_rtc_queue.cpp b/trunk/src/app/srs_app_rtc_queue.cpp index 134de8ae7..a610e31b1 100644 --- a/trunk/src/app/srs_app_rtc_queue.cpp +++ b/trunk/src/app/srs_app_rtc_queue.cpp @@ -620,7 +620,6 @@ void SrsRtpVideoQueue::covert_frame(std::vector& frame, SrsR // TODO: FIXME: Should covert to multiple NALU RTP packet to avoid copying. SrsRtpPacket2* pkt = new SrsRtpPacket2(); pkt->rtp_header = head->rtp_header; - pkt->padding = head->padding; SrsRtpFUAPayload2* head_payload = dynamic_cast(head->payload); pkt->nalu_type = head_payload->nalu_type; diff --git a/trunk/src/kernel/srs_kernel_rtc_rtp.cpp b/trunk/src/kernel/srs_kernel_rtc_rtp.cpp index 0f880bb30..bdec386c9 100644 --- a/trunk/src/kernel/srs_kernel_rtc_rtp.cpp +++ b/trunk/src/kernel/srs_kernel_rtc_rtp.cpp @@ -35,7 +35,6 @@ using namespace std; SrsRtpHeader::SrsRtpHeader() { - padding = false; padding_length = 0; extension = false; cc = 0; @@ -47,17 +46,6 @@ SrsRtpHeader::SrsRtpHeader() 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() { } @@ -86,7 +74,7 @@ srs_error_t SrsRtpHeader::decode(SrsBuffer* buf) */ uint8_t first = buf->read_1bytes(); - padding = (first & 0x20); + bool padding = (first & 0x20); extension = (first & 0x10); cc = (first & 0x0F); @@ -142,7 +130,7 @@ srs_error_t SrsRtpHeader::encode(SrsBuffer* buf) // The version, padding, extension and cc, total 1 byte. uint8_t v = 0x80 | cc; - if (padding) { + if (padding_length > 0) { v |= 0x20; } if (extension) { @@ -250,17 +238,12 @@ uint32_t SrsRtpHeader::get_ssrc() const return ssrc; } -void SrsRtpHeader::set_padding(bool v) -{ - padding = v; -} - -void SrsRtpHeader::set_padding_length(uint8_t v) +void SrsRtpHeader::set_padding(uint8_t v) { padding_length = v; } -uint8_t SrsRtpHeader::get_padding_length() const +uint8_t SrsRtpHeader::get_padding() const { return padding_length; } @@ -283,7 +266,6 @@ ISrsRtpPacketDecodeHandler::~ISrsRtpPacketDecodeHandler() SrsRtpPacket2::SrsRtpPacket2() { - padding = 0; payload = NULL; decode_handler = NULL; @@ -301,22 +283,18 @@ SrsRtpPacket2::~SrsRtpPacket2() void SrsRtpPacket2::set_padding(int size) { - rtp_header.set_padding(size > 0); - rtp_header.set_padding_length(size); + rtp_header.set_padding(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) { - rtp_header.set_padding(padding + size > 0); - rtp_header.set_padding_length(rtp_header.get_padding_length() + size); + rtp_header.set_padding(rtp_header.get_padding() + size); if (cached_payload_size) { cached_payload_size += size; } - padding += size; } void SrsRtpPacket2::set_decode_handler(ISrsRtpPacketDecodeHandler* h) @@ -335,7 +313,6 @@ SrsRtpPacket2* SrsRtpPacket2::copy() cp->rtp_header = rtp_header; cp->payload = payload? payload->copy():NULL; - cp->padding = padding; cp->nalu_type = nalu_type; cp->shared_msg = shared_msg? shared_msg->copy():NULL; @@ -350,7 +327,8 @@ SrsRtpPacket2* SrsRtpPacket2::copy() int SrsRtpPacket2::nb_bytes() { 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; } @@ -367,7 +345,8 @@ srs_error_t SrsRtpPacket2::encode(SrsBuffer* buf) 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)) { 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. - padding = rtp_header.get_padding_length(); + uint8_t padding = rtp_header.get_padding(); if (!buf->require(padding)) { return srs_error_wrap(err, "requires padding %d bytes", padding); } diff --git a/trunk/src/kernel/srs_kernel_rtc_rtp.hpp b/trunk/src/kernel/srs_kernel_rtc_rtp.hpp index a84cee11d..3c8da5cca 100644 --- a/trunk/src/kernel/srs_kernel_rtc_rtp.hpp +++ b/trunk/src/kernel/srs_kernel_rtc_rtp.hpp @@ -61,7 +61,6 @@ class SrsSharedPtrMessage; class SrsRtpHeader { private: - bool padding; uint8_t padding_length; bool extension; uint8_t cc; @@ -76,7 +75,6 @@ private: public: SrsRtpHeader(); virtual ~SrsRtpHeader(); - void reset(); public: virtual srs_error_t decode(SrsBuffer* buf); virtual srs_error_t encode(SrsBuffer* buf); @@ -92,9 +90,8 @@ public: uint32_t get_timestamp() const; void set_ssrc(uint32_t v); uint32_t get_ssrc() const; - void set_padding(bool v); - void set_padding_length(uint8_t v); - uint8_t get_padding_length() const; + void set_padding(uint8_t v); + uint8_t get_padding() const; }; class ISrsRtpPayloader : public ISrsCodec @@ -123,8 +120,6 @@ public: // TODO: FIXME: Rename to header. SrsRtpHeader rtp_header; ISrsRtpPayloader* payload; - // TODO: FIXME: Merge into rtp_header. - int padding; // Helper fields. public: // The first byte as nalu type, for video decoder only.