From e90f0629ed2d801eb5ad5ff0360253dc11fde455 Mon Sep 17 00:00:00 2001 From: winlin Date: Thu, 16 Apr 2020 13:13:02 +0800 Subject: [PATCH] Refactor RTP cache reset --- trunk/src/kernel/srs_kernel_rtp.cpp | 30 +++++++++-------------------- trunk/src/kernel/srs_kernel_rtp.hpp | 3 +-- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/trunk/src/kernel/srs_kernel_rtp.cpp b/trunk/src/kernel/srs_kernel_rtp.cpp index 870b292ee..6f2918abb 100644 --- a/trunk/src/kernel/srs_kernel_rtp.cpp +++ b/trunk/src/kernel/srs_kernel_rtp.cpp @@ -55,27 +55,15 @@ SrsRtpHeader::SrsRtpHeader() extension_length = 0; } -SrsRtpHeader::SrsRtpHeader(const SrsRtpHeader& rhs) +void SrsRtpHeader::reset() { - operator=(rhs); -} - -SrsRtpHeader& SrsRtpHeader::operator=(const SrsRtpHeader& rhs) -{ - padding = rhs.padding; - extension = rhs.extension; - cc = rhs.cc; - marker = rhs.marker; - payload_type = rhs.payload_type; - sequence = rhs.sequence; - timestamp = rhs.timestamp; - ssrc = rhs.ssrc; - for (size_t i = 0; i < cc; ++i) { - csrc[i] = rhs.csrc[i]; - } - extension_length = rhs.extension_length; - - return *this; + // 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() @@ -173,7 +161,7 @@ void SrsRtpPacket2::set_padding(int size) void SrsRtpPacket2::reset() { - memset((void*)&rtp_header, 0, sizeof(SrsRtpHeader)); + rtp_header.reset(); padding = 0; srs_freep(payload); } diff --git a/trunk/src/kernel/srs_kernel_rtp.hpp b/trunk/src/kernel/srs_kernel_rtp.hpp index 1b4fd2de6..57fdbd706 100644 --- a/trunk/src/kernel/srs_kernel_rtp.hpp +++ b/trunk/src/kernel/srs_kernel_rtp.hpp @@ -56,8 +56,7 @@ private: public: SrsRtpHeader(); virtual ~SrsRtpHeader(); - SrsRtpHeader(const SrsRtpHeader& rhs); - SrsRtpHeader& operator=(const SrsRtpHeader& rhs); + void reset(); public: srs_error_t decode(SrsBuffer* stream); srs_error_t encode(SrsBuffer* stream);