bool TrackerThread::init() { try { m_pImagingContext = GLContext::create( GLConfig(false, false, true, 1, GLConfig::AUTO, false)); createBandpassFilter(); AVG_TRACE(Logger::category::CONFIG, Logger::severity::INFO, "Using fragment shaders for imaging operations."); } catch (Exception& e) { AVG_LOG_WARNING(e.getStr()); AVG_TRACE(Logger::category::CONFIG, Logger::severity::WARNING, "Using CPU for imaging operations (slow and inaccurate)."); m_pImagingContext = 0; m_pBandpassFilter = FilterPtr(new FilterFastBandpass()); } try { m_StartTime = TimeSource::get()->getCurrentMillisecs(); m_HistoryDelay = m_pConfig->getIntParam("/tracker/historydelay/@value"); } catch (Exception& e) { AVG_LOG_WARNING(e.getStr()); } // Done in TrackerInputDevice::ctor to work around Leopard/libdc1394 threading issue. // m_pCamera->open(); return true; }
void FWCamera::getCameraImageFormats(dc1394camera_t* pCamera, CameraInfo* camInfo) { dc1394video_modes_t videoModes; dc1394framerates_t framerates; dc1394error_t err = dc1394_video_get_supported_modes(pCamera, &videoModes); if (err != DC1394_SUCCESS) { AVG_ASSERT(false); return; } for (unsigned i = 0; i < videoModes.num; i++) { //Covers only libavg supported formats, other capabilities are ignored if (videoModes.modes[i] >= DC1394_VIDEO_MODE_320x240_YUV422 && videoModes.modes[i] <= DC1394_VIDEO_MODE_1600x1200_MONO16){ PixelFormat pixFormat = getPFFromVideoMode(videoModes.modes[i]); IntPoint size = getFrameSizeFromVideoMode(videoModes.modes[i]); FrameratesVector framerateList; err = dc1394_video_get_supported_framerates(pCamera, videoModes.modes[i], &framerates); if (err != DC1394_SUCCESS) { AVG_LOG_WARNING("Camera: No framerates. Error was: " << err); } else { for (unsigned j = 0; j < framerates.num; j++) { float rate = framerateToFloat(framerates.framerates[j]); framerateList.push_back(rate); } } CameraImageFormat format = CameraImageFormat(size,pixFormat,framerateList); camInfo->addImageFormat(format); } } }
void FWCamera::getWhitebalance(int* pU, int* pV) const { #ifdef AVG_ENABLE_1394_2 dc1394error_t err = dc1394_feature_whitebalance_get_value(m_pCamera, (uint32_t*)pU, (uint32_t*)pV); if (err != DC1394_SUCCESS) { AVG_LOG_WARNING("Camera: Unable to get whitebalance setting. Error was " << err); } #endif }
void FWCamera::setFeatureOneShot(CameraFeature feature) { #ifdef AVG_ENABLE_1394_2 dc1394feature_t featureID = getFeatureID(feature); dc1394error_t err = dc1394_feature_set_mode(m_pCamera, featureID, DC1394_FEATURE_MODE_ONE_PUSH_AUTO); if (err != DC1394_SUCCESS) { AVG_LOG_WARNING("Camera: Unable to set one-shot for " << cameraFeatureToString(feature) << ". Error was " << err); } #endif }
xmlNodePtr TrackerConfig::getXmlNode(const std::string& sXPathExpr) const { xmlXPathObjectPtr xpElement = findConfigNodes(sXPathExpr); xmlNodeSetPtr nodes = xpElement->nodesetval; if (!nodes || nodes->nodeNr == 0) { throw (Exception(AVG_ERR_OPTION_UNKNOWN, string("getParam(): cannot find requested element ")+sXPathExpr)); } else if (nodes->nodeNr > 1) { AVG_LOG_WARNING( "getXmlNode(): expression selects more than one node. Returning the first."); } return nodes->nodeTab[0]; }
void TrackerConfig::save() { AVG_TRACE(Logger::category::CONFIG, Logger::severity::INFO, "Saving tracker configuration to " << m_sFilename << "."); if (m_Doc) { if (fileExists(m_sFilename)) { string sBakFile = m_sFilename + ".bak"; unlink(sBakFile.c_str()); if (rename(m_sFilename.c_str(), sBakFile.c_str())) { AVG_LOG_WARNING("Cannot create tracker config backup. Backing " "it up on current workdir."); copyFile(m_sFilename, "avgtrackerrc.bak"); } } xmlSaveFileEnc(m_sFilename.c_str(), m_Doc, "utf-8"); } else throw (Exception(AVG_ERR_FILEIO, "save(): tracker configuration not initialized")); }
string TrackerConfig::getParam(const string& sXPathExpr) const { xmlXPathObjectPtr xpElement = findConfigNodes(sXPathExpr); xmlNodeSetPtr nodes = xpElement->nodesetval; if (!nodes || nodes->nodeNr == 0) { throw (Exception(AVG_ERR_OPTION_UNKNOWN, string("getParam(): cannot find requested element ")+sXPathExpr)); } else if (nodes->nodeNr > 1) { AVG_LOG_WARNING( "getParam(): expression selects more than one node. Returning the first."); } xmlChar* xsRc = xmlNodeGetContent(nodes->nodeTab[0]); string sValue((char *)xsRc); xmlFree(xsRc); xmlXPathFreeObject(xpElement); return sValue; }
void FWCamera::setFeature(CameraFeature feature, int value, bool bIgnoreOldValue) { #ifdef AVG_ENABLE_1394_2 if (hasFeature(feature)) { if (bIgnoreOldValue || m_Features[feature] != value) { m_Features[feature] = value; if (feature == CAM_FEATURE_STROBE_DURATION) { try { setStrobeDuration(value); } catch (Exception& e) { AVG_LOG_WARNING(string("Camera: Setting strobe duration failed. ") + e.getStr()); } } else { dc1394feature_t featureID = getFeatureID(feature); setFeature(featureID, value); // dumpCameraInfo(); } } } #endif }
void TrackerConfig::loadConfigFile(const string& sFilename) { // TODO: There is duplicated code here and in Player::loadFile which belongs // in a lower-level xml handling class. registerDTDEntityLoader("trackerconfig.dtd", g_pTrackerConfigDTD); xmlDtdPtr dtd; string sDTDFName = "trackerconfig.dtd"; dtd = xmlParseDTD(NULL, (const xmlChar*) sDTDFName.c_str()); if (!dtd) { AVG_LOG_WARNING("DTD not found at " << sDTDFName << ". Not validating trackerconfig files."); } // xmlParseFile crashes for some reason under Lion. string sFileContents; readWholeFile(sFilename, sFileContents); m_Doc = xmlParseMemory(sFileContents.c_str(), sFileContents.length()); if (!m_Doc) { AVG_LOG_ERROR("Could not open tracker config file " << sFilename << ". Using defaults which will probably not work."); return; } xmlValidCtxtPtr cvp = xmlNewValidCtxt(); cvp->error = xmlParserValidityError; cvp->warning = xmlParserValidityWarning; int isValid = xmlValidateDtd(cvp, m_Doc, dtd); xmlFreeValidCtxt(cvp); if (!isValid) { throw (Exception(AVG_ERR_XML_PARSE, sFilename + " does not validate.")); } m_pRoot = xmlDocGetRootElement(m_Doc); xmlFreeDtd(dtd); m_sFilename = sFilename; AVG_TRACE(Logger::category::CONFIG, Logger::severity::INFO, "Reading Tracker config file from " << sFilename); }
void FWCamera::setFeature(dc1394feature_t feature, int value) { #ifdef AVG_ENABLE_1394_2 dc1394error_t err; if (value == -1) { err = dc1394_feature_set_mode(m_pCamera, feature, DC1394_FEATURE_MODE_AUTO); err = dc1394_feature_set_power(m_pCamera, feature, DC1394_OFF); } else { dc1394_feature_set_mode(m_pCamera, feature, DC1394_FEATURE_MODE_MANUAL); err = dc1394_feature_set_power(m_pCamera, feature, DC1394_ON); err = dc1394_feature_set_value(m_pCamera, feature, value); } if (err != DC1394_SUCCESS) { AVG_LOG_WARNING("Camera: Unable to set " << feature << ". Error was " << err); } /* dc1394feature_info_t featureInfo; featureInfo.id = feature; err = dc1394_feature_get(m_pCamera, &featureInfo); dc1394_feature_print(&featureInfo, stdout); */ #endif }
void FWCamera::setWhitebalance(int u, int v, bool bIgnoreOldValue) { #ifdef AVG_ENABLE_1394_2 if (hasFeature(CAM_FEATURE_WHITE_BALANCE)) { if (bIgnoreOldValue || u != m_WhitebalanceU || v != m_WhitebalanceV) { m_WhitebalanceU = u; m_WhitebalanceV = v; dc1394error_t err; if (u == -1) { err = dc1394_feature_set_mode(m_pCamera, DC1394_FEATURE_WHITE_BALANCE, DC1394_FEATURE_MODE_AUTO); } else { err = dc1394_feature_set_mode(m_pCamera, DC1394_FEATURE_WHITE_BALANCE, DC1394_FEATURE_MODE_MANUAL); err = dc1394_feature_whitebalance_set_value(m_pCamera, u, v); } if (err != DC1394_SUCCESS) { AVG_LOG_WARNING("Camera: Unable to set whitebalance. Error was " << err); } } } #endif }
ProcessThread::ProcessThread(CQueue& CmdQ): WorkerThread<ProcessThread>("WorkerThread", CmdQ) { AVG_LOG_WARNING("WORKER THREAD INIT"); }
bool ProcessThread::work(){ AVG_LOG_WARNING("work"); usleep(10); return true; }
void ProcessThread::deinit(){ AVG_LOG_WARNING("Deinit Thread"); }
bool ProcessThread::init(){ AVG_LOG_WARNING("Inited worker thread"); return true; }