Train_Identify_arm/nvidia_ascend_engine/common_engine/DataDealEngine/DataDealEngine.cpp

1 line
14 KiB
C++
Raw Normal View History

#include "DataDealEngine.h" using namespace ai_matrix; extern std::atomic_uint64_t g_i64ReRunTimeStamp; extern std::atomic_uint32_t g_iReRunOrigFrameId; extern std::atomic_uint32_t g_iReRunFrameId; DataDealEngine::DataDealEngine() {} DataDealEngine::~DataDealEngine() {} APP_ERROR DataDealEngine::Init() { strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0"; strPort1_ = engineName_ + "_" + std::to_string(engineId_) + "_1"; strPort2_ = engineName_ + "_" + std::to_string(engineId_) + "_2"; strResultPath_ = MyYaml::GetIns()->GetPathValue("gc_result_path"); iPushDirection_ = MyYaml::GetIns()->GetIntValue("gc_push_direction"); dataSourceConfig_ = MyYaml::GetIns()->GetDataSourceConfigById(engineId_); //获取摄像机参数 iIntervalTime_ = (dataSourceConfig_.iSkipInterval - 1) * 40 * 1000; mapUseDataSouceCfg_ = MyYaml::GetIns()->GetUseDataSourceConfig(); std::string delimiter(","); for (auto iter = mapUseDataSouceCfg_.begin(); iter!=mapUseDataSouceCfg_.end(); iter++) { int iSourceId = iter->first; std::vector<std::string> vecSplit = MyUtils::getins()->split(iter->second.strTarget, delimiter); std::vector<std::string> vecPushPorts; for (auto iter = vecSplit.begin(); iter != vecSplit.end(); iter++) { if (*iter == "NUM") { vecPushPorts.push_back(strPort0_); } else if (*iter == "CHKDATE") { vecPushPorts.push_back(strPort1_); } else if(*iter == "CONTAINER" || *iter == "CONTAINER_T") { vecPushPorts.push_back(strPort2_); } } mapSourcePushPort_[iSourceId] = vecPushPorts; } InitParam(); LogInfo << "engineId_:" << engineId_ << " DataDealEngine Init ok"; return APP_ERR_OK; } APP_ERROR DataDealEngine::DeInit() { LogInfo << "engineId_:" << engineId_ << " DataDealEngine DeInit ok"; return APP_ERR_OK; } /** * 参数初始化(列车结束时需调用) * inParam : N/A * outParam: N/A * return : N/A */ void DataDealEngine::InitParam() { iOrigDataNO_ = 1; strDataDir_ = ""; moveData_.i64TimeStamp = 0; moveData_.bHasTrain = false; moveData_.bIsEnd = false; iDataNO_ = 1; strTrainDate_ = ""; strTrainName_ = ""; iDirection_ = DIRECTION_UNKNOWN; bNotPushFlag_ = false; } /** * 图片数据解码 * inParam : RawData &rawData :图片数据 * outParam: std::shared_ptr<DecodedData> pDecodedData :解码数据 * return : true(编码成功)/false(编码失败) */ bool DataDealEngine::GetJpegdOut(std::shared_ptr<DecodedData> pDecodedData, RawData &rawData) { return true; } /** * 读取图片和文本 * inParam : N/A * outParam: N/A * return : N/A */ bool DataDealEngine::ReadFileInfo(Json::Value &jvFrameInfo, RawData &rawData, std::string &strFileName, std::string &strImgName) { //图片或文件不存在时休眠10ms直接return重新获取。 if (access(strFileName.c_str(), F_OK) != 0 || access(strImgName.c_str(), F_OK) != 0) { LogWarn << "txt:" << strFileName << " or image:" << strImgName << " no exist"; return false; } if (!MyUtils::getins()->ReadJsonInfo(jvFrameInfo, strFileName)) { LogError << "Failed to read txt:" << strFileName; return false; } //读取图片内容 // int iRet = ReadFile(strImgName, rawData); // if (iRet != APP_ERR_OK) // { // LogError << "Failed to read image:" << strImgName; // return false; // } return true; } /** * push数据到队列队列满时则休眠一段时间再push。 * inParam : const std::string strPort push的端口 : const std::shared_ptr<ProcessData> &pProcessData push的数据 * outParam: N/A * return : N/A */ void DataDealEngine::PushData(const std::string &strPort, const std::shared_ptr<ProcessData> &pProcessData) { while (true) { int iRet = outputQueMap_[strPort]->push(std: