From 8f44600c2e5d6141aebf49536a6ddbafc6c18d75 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期五, 30 七月 2021 10:55:25 +0800
Subject: [PATCH] bug fixed gb28181

---
 csrc/thirdparty/gb28181/include/PsToEs.hpp |   21 +++++++++++++++++++--
 1 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/csrc/thirdparty/gb28181/include/PsToEs.hpp b/csrc/thirdparty/gb28181/include/PsToEs.hpp
index 21c10d9..2a6cb6f 100644
--- a/csrc/thirdparty/gb28181/include/PsToEs.hpp
+++ b/csrc/thirdparty/gb28181/include/PsToEs.hpp
@@ -109,13 +109,23 @@
 		printf("GB28181API end!\n");
 		// m_rtpQueue.clearAll();
 		m_rtpQueue.clearAll([](frameBuffInfo *info){
-			delete[] info->buff;
-			delete info;
+			if (info){
+				delete[] info->buff;
+				delete info;
+			}
 		});
 		deleteCamera();
 	}
 
 	bool pushInfo(unsigned char *data, int datalen) {
+
+		while(m_rtpQueue.count_queue() > 120){
+            auto p = m_rtpQueue.popNotWait();
+            if (p){
+                delete[] p->buff;
+                delete p;
+            }
+        }
 
 		frameBuffInfo *info = new frameBuffInfo();
 		info->buff = new unsigned char[datalen];
@@ -155,6 +165,13 @@
 				info->buff = new unsigned char[buffinfo->buffLen - len]{};
 				memcpy(info->buff, buffinfo->buff + len, buffinfo->buffLen - len);
 
+				while(_this->m_rtpQueue.count_queue() > 120){
+                    auto p = _this->m_rtpQueue.popNotWait();
+                    if (p){
+                        delete[] p->buff;
+                        delete p;
+                    }
+                }
 //				printf("/甯ч暱澶т簬info->buffLen:%d\n", info->buffLen);
 				_this->m_rtpQueue.push_front_one(info);
 //				printf("/甯ч暱澶т簬info->buffLen\n");

--
Gitblit v1.8.0