From 080acae08ec8cfe413c3e6e45bcf7f9222dfa02d Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期四, 24 十月 2019 16:50:28 +0800 Subject: [PATCH] update --- csrc/worker/rec.hpp | 23 ++++++++++++++--------- 1 files changed, 14 insertions(+), 9 deletions(-) diff --git a/csrc/worker/rec.hpp b/csrc/worker/rec.hpp index 5ac00a9..fc6ba0d 100644 --- a/csrc/worker/rec.hpp +++ b/csrc/worker/rec.hpp @@ -2,12 +2,14 @@ #define _cffmpeg_rec_hpp_ #include <string> -#include <memory> #include <unordered_map> #include <list> #include <mutex> #include "../buz/recorder.hpp" + +struct AVPacket; +class CPacket; namespace ffwrapper { @@ -22,9 +24,7 @@ { private: ffwrapper::FormatIn *recRef_; - int maxduration_; - int minduration_; - + int min_cache_len_; // 褰曞儚鐨勫疄渚�,瀵瑰簲浠诲姟 std::unordered_map<std::string, std::unique_ptr<buz::Recorder> > map_rec_; // 澶氱嚎绋嬫坊鍔犱换鍔″疄渚�,鍦ㄨ娴佺嚎绋嬩娇鐢ㄥ綍鍍�,浣嗘槸娣诲姞鍦ㄥ彟涓�涓嚎绋� @@ -41,35 +41,40 @@ std::mutex mtx_recInfo_; // 缂撳瓨鐨勮棰戝抚,绛夊緟firerecsignal瑙﹀彂寮�濮嬪綍鍍� - std::list<buz::CPacket> list_pkt_; + std::list<CPacket> list_pkt_; // 澶氱嚎绋�,鐢熶骇鑰呯嚎绋媟eader push pkt,娑堣垂鑰�,褰曞儚绾跨▼pop std::mutex mtx_pkt_; private: + // 鏌ユ壘缂撳瓨涓殑褰曞埗甯� + void findRecFramesIndex(const int64_t &fired_id, const int duration, int &start, int &end); + // 褰曞儚瀹炰緥鐨勫洖璋冨嚱鏁�,褰曞儚瀹屾垚鍚庤缃綍鍍忔枃浠惰矾寰�,id鍜屽抚id void setRecInfo(std::string &id, int &index, std::string &path); // 缂撳瓨瑙嗛鍖� - void cachePacket(std::shared_ptr<ffwrapper::CodedData> data, int64_t &id); + void cachePacket(const CPacket &pkt); // 涓㈠純缂撳瓨 int shrinkCache(); // 鍒涘缓褰曞儚瀹炰緥寮�濮嬪綍鍍� - std::unique_ptr<buz::Recorder> startRec(std::string id, std::string dir, const int mind, const int maxd, const bool audio); + std::unique_ptr<buz::Recorder> startRec(std::string id, std::string dir, const int64_t &frameID, const int mind, const int maxd, const bool audio); // 娓呴櫎缂撳瓨,鏂嚎閲嶈繛鏃堕渶瑕� void clear(); public: - void NewRec(const char* id, const char *output, const int mindur, const int maxdur, const bool audio); + void NewRec(const char* id, const char *output, const int64_t &frameID, const int mindur, const int maxdur, const bool audio); // 鍑嗗濂藉綍鍍� void Load(ffwrapper::FormatIn *in); void Unload(); const bool Loaded() const; // 缂撳瓨褰曞儚鐨勮棰戝寘,绛夊緟瑙﹀彂褰曞儚,鎴栫洿鎺ユ斁鍒板綍鍍忕紦瀛� - void SetPacket(std::shared_ptr<ffwrapper::CodedData> data, int64_t &id); + void SetPacket(const CPacket &pkt); // 瑙﹀彂褰曞儚 void FireRecSignal(const char* sid,const int64_t &id); // 鑾峰彇褰曞儚鏂囦欢璺緞鍜屽抚id void GetRecInfo(std::string &recID, int &index, std::string &path); + // 璁剧疆褰曞埗鏃堕暱浣滀负缂撳瓨 + void SetRecMinCacheTime(const int min); public: rec(); ~rec(); -- Gitblit v1.8.0