派生自 development/c++

xuxiuxi
2019-03-08 9a0afe1ccce6fd3a6882b4c19b72cee579a54dd1
QiaoJiaSystem/StructureApp/NewRecordVideoElement.cpp
@@ -5,29 +5,38 @@
//#todo index int -> string
NewRecordVideoElement::NewRecordVideoElement(std::string camid) :
//videoEncoderElement(cv::Size(1920, 1080), 5, 0),
camID(camid)
camID(camid),
m_bSaveWH(false)
{
   // basicPath();
    //isRecord=false;
    m_cutPath= appPref.getStringData("user.loop.absolute.path");
     recordInit(60,360);
     recordInit(appPref.getIntData("n_cut_min_duration"),appPref.getIntData("n_cut_max_duration"));
}
NewRecordVideoElement::~NewRecordVideoElement() {
    std::queue<ImgInfo> empty;
    empty.swap(m_imgBufQue);
//m_imgBufQue.clear();
}
std::string NewRecordVideoElement::startRecord() {
//    ImgInfo info=m_HiredisTool.getImage(camID);
     ImgInfo info;
     getImg(info);
    std::string srcPath= getFileName(info.time);
    m_filename=srcPath;
    DBG("m_filename: " << m_filename);
   // DBG("m_filename: " << m_filename);
    if(!m_bSaveWH)
    {
       m_bSaveWH=m_hiredisTool.hashSet(camID,"width",info.img.cols) && m_hiredisTool.hashSet(camID,"height",info.img.rows);
       DBG("m_bSaveWH="<<m_bSaveWH);
    }
    m_hiredisTool.pushImageBuf(m_filename,info.img);
     m_hiredisTool.addFileInfo(m_filename,RECORD_DOING);
@@ -38,12 +47,13 @@
    ImgInfo info;
    getImg(info);
    DBG("m_filename: " << m_filename);
    DBG("recordDelay:" << recordDelay);
    DBG("videoLength:" << videoLength);
    DBG("sdkTrigger:" << sdkTrigger);
//    DBG("m_filename: " << m_filename);
//    DBG("recordDelay:" << recordDelay);
//    DBG("videoLength:" << videoLength);
//    DBG("sdkTrigger:" << sdkTrigger);
    m_hiredisTool.pushImageBuf(m_filename,info.img);
    m_hiredisTool.addFileInfo(m_filename,RECORD_ENDING);
}
void NewRecordVideoElement::doRecord() {
@@ -80,7 +90,7 @@
    QDateTime dt = QDateTime::fromString(QString::fromStdString(timeStamp), "yyyy-MM-dd hh:mm:ss:zzz");
     std::string t_strTime=dt.toString("yyyyMMddhh").toStdString();
     DBG("t_strTime="<<t_strTime);
    // DBG("t_strTime="<<t_strTime);
     t_FilePath.append(camID + "/" + t_strTime.substr(0, 6)+ "/" +t_strTime.substr(6, 2) + "/");
     //YYYYMMDDHH
      t_FilePath.append(t_strTime.substr(0,10)+ "/");
@@ -93,36 +103,43 @@
}
void NewRecordVideoElement::pushImgBuf(const std::string& time,cv::Mat& img)
{
//    std::string tmp="camId="+camID+"pushImgBuf";
//    ClockTimer cl(tmp);
     ImgInfo info;
     img.copyTo(info.img);
//     info.img=img;
     info.time=time;
     m_imgBufQue.push(info);
    // if(isRecord)
    // DBG("camId="<<camID<<"pushtime="<<info.time);
//     int size=m_imgBufQue.size();
//     DBG("m_imgBufQue size="<<size);
}
 void NewRecordVideoElement::getImg(ImgInfo& info)
 {
//     std::string tmp="camId="+camID+"getImg";
//     ClockTimer cl(tmp);
        info=m_imgBufQue.front();
        int size=m_imgBufQue.size();
        DBG("m_imgBufQue size="<<size<<" camId="<<camID<<" fileMin="<<fileMin/2);
//        DBG("m_imgBufQue size="<<size<<" camId="<<camID<<" fileMin="<<fileMin/2);
        if(size>fileMin/2)
        {
             m_imgBufQue.pop();
        }
 }
 void NewRecordVideoElement::threadFunc()
 {
//        Record();
 }
 void NewRecordVideoElement::threadInitial()
 {
//        if(isRecord)
//        DBG("camId="<<camID<<"gettime="<<info.time);
 }
// void NewRecordVideoElement::threadFunc()
// {
//       Record();
// }
// void NewRecordVideoElement::threadInitial()
// {
// }
 void NewRecordVideoElement::Record() {
     switch(recordStatus)
@@ -193,9 +210,11 @@
     }
 }
 void NewRecordVideoElement::setSdkTrigger(bool isTrigger) {
//     std::string tmp="camId="+camID+"setSdkTrigger";
//     ClockTimer cl(tmp);
     if(isTrigger)
     {
         DBG("setSdkTrigger time=" << AppUtil::getTimeUSecString());
//         DBG("setSdkTrigger time=" << AppUtil::getTimeUSecString());
         triggerDelay = 0;
         sdkTrigger = true;
     }
@@ -213,8 +232,8 @@
 void NewRecordVideoElement::recordInit(int videoMin, int videoMax) {
     sdkTrigger = false;
     fileMin = videoMin;
     fileMax = videoMax;
     fileMin = videoMin*8;//fps=8
     fileMax = videoMax*8;
     triggerDelay = fileMin/2;
     recordStatus = RECORD_STOP;