From ab3d17cd44625a762fc10f0f1fd8f2c46b980aff Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期二, 26 四月 2022 11:42:19 +0800 Subject: [PATCH] capture use cpu and add arm version --- csrc/thirdparty/gb28181/include/PsToEs.hpp | 24 +++++++++++++++++++++--- 1 files changed, 21 insertions(+), 3 deletions(-) diff --git a/csrc/thirdparty/gb28181/include/PsToEs.hpp b/csrc/thirdparty/gb28181/include/PsToEs.hpp index 21c10d9..4128360 100644 --- a/csrc/thirdparty/gb28181/include/PsToEs.hpp +++ b/csrc/thirdparty/gb28181/include/PsToEs.hpp @@ -77,7 +77,8 @@ pthread_mutex_unlock(&mtx); } - void clearAll(std::function<void(T)> fn){ + template<class F> + void clearAll(F&& fn){ pthread_mutex_lock(&mtx); while (!q.empty()){ T value = q.front(); @@ -109,13 +110,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 +166,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