diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 401ecc01f..ffab0f6e5 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -1212,8 +1212,6 @@ srs_error_t SrsRtcSenderThread::packet_nalus(SrsSharedPtrMessage* msg, SrsRtcPac packet->payload = raw; } else { - SrsAutoFree(SrsRtpRawNALUs, raw); - // Package NALUs in FU-A RTP packets. int fu_payload_size = kRtpMaxPayloadSize; diff --git a/trunk/src/kernel/srs_kernel_rtp.cpp b/trunk/src/kernel/srs_kernel_rtp.cpp index 0215cb1a6..a61b360a3 100644 --- a/trunk/src/kernel/srs_kernel_rtp.cpp +++ b/trunk/src/kernel/srs_kernel_rtp.cpp @@ -157,19 +157,19 @@ SrsRtpPacket2::SrsRtpPacket2() cache_raw = new SrsRtpRawPayload(); cache_fua = new SrsRtpFUAPayload2(); cache_payload = 0; - using_cache = false; } SrsRtpPacket2::~SrsRtpPacket2() { // We may use the cache as payload. - if (using_cache) { + if (payload == cache_raw || payload == cache_fua) { payload = NULL; } srs_freep(payload); srs_freep(extra_payload); srs_freep(cache_raw); + srs_freep(cache_fua); } void SrsRtpPacket2::set_padding(int size) @@ -198,25 +198,20 @@ void SrsRtpPacket2::reset() srs_freep(extra_payload); // We may use the cache as payload. - if (using_cache) { + if (payload == cache_raw || payload == cache_fua) { payload = NULL; - } else { - srs_freep(payload); } - - using_cache = false; + srs_freep(payload); } SrsRtpRawPayload* SrsRtpPacket2::reuse_raw() { - using_cache = true; payload = cache_raw; return cache_raw; } SrsRtpFUAPayload2* SrsRtpPacket2::reuse_fua() { - using_cache = true; payload = cache_fua; return cache_fua; } diff --git a/trunk/src/kernel/srs_kernel_rtp.hpp b/trunk/src/kernel/srs_kernel_rtp.hpp index eb811ee29..31b59ec85 100644 --- a/trunk/src/kernel/srs_kernel_rtp.hpp +++ b/trunk/src/kernel/srs_kernel_rtp.hpp @@ -92,7 +92,6 @@ public: private: SrsRtpRawPayload* cache_raw; SrsRtpFUAPayload2* cache_fua; - bool using_cache; int cache_payload; public: SrsRtpPacket2();