#include #include namespace icl{ DefaultGrabEngine::DefaultGrabEngine(UnicapDevice *device, bool useDMA): m_poDevice(device), m_iCurrBuf(0), m_bUseDMA(useDMA), m_bStarted(false){ UnicapFormat fmt = m_poDevice->getCurrentUnicapFormat(); for(int i=0;ibuffer_type = useDMA ? UNICAP_BUFFER_TYPE_SYSTEM : UNICAP_BUFFER_TYPE_USER; } device->setFormat(fmt); } DefaultGrabEngine::~DefaultGrabEngine(){ unicap_stop_capture (m_poDevice->getUnicapHandle()); for(int i=0;igetUnicapHandle()); m_bStarted = true; unicap_queue_buffer(m_poDevice->getUnicapHandle(),&m_oBuf[NEXT_IDX()]); } unicap_data_buffer_t *returned_buffer; static const int MAX_TRYS = 10; static const long WAIT_TIME = 100000; int i=0; for(;igetUnicapHandle(), &returned_buffer))){ break; }else{ usleep(WAIT_TIME); } }if(i==MAX_TRYS){ ERROR_LOG("Failed to wait for the buffer to be filled! ( tried "<getUnicapHandle(),&m_oBuf[NEXT_IDX()]); return returned_buffer->data; } }