派生自 development/c++

pans
2019-04-03 da184ac7eef8ca74e12bdc63abf205e2fd5f9917
QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -7,10 +7,11 @@
using std::string;
void *gRtspAnalysManagerCamera = nullptr;
RtspAnalysManager::RtspAnalysManager(LDBTool *_dbTool) : m_lDBTool(nullptr), m_maxCount(50), m_currentCount(0) {
    INFO("MYH DEBUG HERE");
    m_lDBTool = new LDBTool;
//    INFO("MYH DEBUG HERE");
    m_lDBTool = _dbTool;
    init();
}
@@ -39,7 +40,10 @@
//初始化函数
void RtspAnalysManager::init() {
    INFO("MYH DEBUG HERE")
//    INFO("MYH DEBUG HERE")
    gRtspAnalysManagerCamera = this;
    DBG("gRtspAnalysManagerCamera ADDR:" << gRtspAnalysManagerCamera);
    m_GB28181_Enable = appPref.getIntData("GB28181_Enable");
    //#todo GB28181
@@ -58,22 +62,23 @@
//                                                 item.str_password.toStdString(), item.str_brand.toStdString());
                INFO("cam add is " << item.str_addr.toStdString());
                addCamera(t_camIdex, rtsp_url);
                sleep(1);
            }
        } else {
            ERR("searchCamDevTableAll size is 0");
            ERR("searchCamDevTableByType size is 0");
        }
    } else {
        auto lst = m_lDBTool->searchCamDevTableAll();
        auto lst = m_lDBTool->searchCamDevTableByType(0);
        Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
        //设置视频的最长和最短时间间隔
        appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration);
        appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration);
        if (lst.size() > 0) {
            int startCamNO = appPref.getIntData("CamStart") * appPref.getIntData("CamStep");
            int CamCount = appPref.getIntData("CamStep");
            INFO("StartCamNO: " << startCamNO << " CamStep: " << CamCount);
            int startCamNO = appPref.getIntData("CamStartNO");
            int CamCount = appPref.getIntData("CamEndNO") - appPref.getIntData("CamStartNO") + 1;
            INFO("StartCamNO: " << startCamNO << " CamCount: " << CamCount);
            auto itor = lst.begin();
            if (startCamNO >= lst.size()) {
@@ -115,7 +120,7 @@
//
//        }
        } else {
            ERR("searchCamDevTableAll size is 0");
            ERR("searchCamDevTableByType size is 0");
        }
    }
}
@@ -152,7 +157,7 @@
        //#todo end
        if (m_controllers_videoCapElem.find(index) == m_controllers_videoCapElem.end()) {
            INFO("MYH DEBUG HERE");
//            INFO("MYH DEBUG HERE");
            if (m_currentCount >= m_maxCount) {
                ERR("addCamera faild, camera's num is full!")
                return -1;
@@ -165,9 +170,12 @@
            m_imgRedisCRwLock.unlock();
            //VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, int gpuIdx = -1)
            m_controllers_videoCapElem[index] = new BASICGB28181::VideoCaptureElementWithRtp(
                const_cast<string &>(index),
                25, 0, 0, this);
//            m_controllers_videoCapElem[index] = new BASICGB28181::VideoCaptureElementWithRtp(
//                const_cast<string &>(index),
//                25, 0, 0, this);
            m_controllers_videoCapElem[index] = new PushStreamAppPipeController(const_cast<string &>(index),
                                                                                25, 0, 0, this);
            m_controllers_videoCapElem[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration,
                                                                     lst_dev.n_cut_max_duration);
            m_controllers_videoCapElem[index]->start();
@@ -251,7 +259,7 @@
 * @return
 */
int RtspAnalysManager::removeAll() {
    INFO("MYH DEBUG HERE");
//    INFO("MYH DEBUG HERE");
    if (m_GB28181_Enable) {
        for (auto controller: m_controllers_videoCapElem) {
@@ -272,7 +280,7 @@
        }
        m_controllers.clear();
    }
    INFO("MYH DEBUG HERE");
//    INFO("MYH DEBUG HERE");
    m_imgRedisCRwLock.wrlock();
    for (auto controller: m_imgRedisControllers) {
@@ -287,7 +295,7 @@
    m_currentCount = 0;
    INFO("MYH DEBUG HERE");
//    INFO("MYH DEBUG HERE");
    return 0;
}
@@ -310,7 +318,7 @@
            auto pCaptureElem = m_controllers_videoCapElem.find(nameSt.m_camId);
            if (pCaptureElem != m_controllers_videoCapElem.end()) {
//#todo ~~~~~~!!!!!!! 这里有bug 需要放开调试
//                pCaptureElem->second->SaveVideo(name);
                pCaptureElem->second->SaveVideo(name);
            } else {
                ERR("Can not Find CamId " << nameSt.m_camId);
            }
@@ -330,18 +338,18 @@
//保存视频到RtspImageRedis的队列,由RtspCaptureElement调用
bool RtspAnalysManager::SaveImageToRedis(const std::string &camId, const std::string &imageName, const cv::Mat &img) {
    INFO("MYH DEBUG HERE  " << camId);
//    INFO("MYH DEBUG HERE  " << camId);
//    m_imgRedisCRwLock.rdlock();
    auto item = m_imgRedisControllers.find(camId);
    if (item != m_imgRedisControllers.end()) {
        INFO("Save Succeed Cam: " << camId << " ImageKey: " << imageName);
//        INFO("Save Succeed Cam: " << camId << " ImageKey: " << imageName);
        item->second->SaveImage(imageName, img);
    } else {
        ERR("Save Failed Cam: " << camId << " ImageKey: " << imageName);
//        ERR("Save Failed Cam: " << camId << " ImageKey: " << imageName);
    }
//    m_imgRedisCRwLock.unlock();
    INFO("MYH DEBUG HERE");
//    INFO("MYH DEBUG HERE");
    return true;
}