diff --git a/libv4l2cpp b/libv4l2cpp index 81181c8..3eff050 160000 --- a/libv4l2cpp +++ b/libv4l2cpp @@ -1 +1 @@ -Subproject commit 81181c8ca49c56533dbf6b6fe59f13c77ba7f576 +Subproject commit 3eff050e79e76eecd240a07e5406f0787ca4af3f diff --git a/src/V4L2DeviceSource.cpp b/src/V4L2DeviceSource.cpp index ad6b75c..9a3b247 100644 --- a/src/V4L2DeviceSource.cpp +++ b/src/V4L2DeviceSource.cpp @@ -103,28 +103,20 @@ void* V4L2DeviceSource::thread() int ret = select(fd+1, &fdset, NULL, NULL, &tv); if (ret == 1) { - if (FD_ISSET(fd, &fdset)) + LOG(DEBUG) << "waitingFrame\tdelay:" << (1000-(tv.tv_usec/1000)) << "ms"; + if (this->getNextFrame() <= 0) { - LOG(DEBUG) << "waitingFrame\tdelay:" << (1000-(tv.tv_usec/1000)) << "ms"; - if (this->getNextFrame() <= 0) + if (errno == EAGAIN) { - if (errno == EAGAIN) - { - LOG(NOTICE) << "Retrying getNextFrame"; - } - else - { - LOG(ERROR) << "error:" << strerror(errno); - stop=1; - } + LOG(DEBUG) << "Retrying getNextFrame"; + } + else + { + LOG(ERROR) << "error:" << strerror(errno); + stop=1; } } } - else if (ret == -1) - { - LOG(ERROR) << "stop " << strerror(errno); - stop=1; - } } LOG(NOTICE) << "end thread"; return NULL; @@ -208,10 +200,12 @@ int V4L2DeviceSource::getNextFrame() if (frameSize < 0) { LOG(NOTICE) << "V4L2DeviceSource::getNextFrame errno:" << errno << " " << strerror(errno); + delete [] buffer; } else if (frameSize == 0) { - LOG(NOTICE) << "V4L2DeviceSource::getNextFrame no data errno:" << errno << " " << strerror(errno); + LOG(DEBUG) << "V4L2DeviceSource::getNextFrame no data errno:" << errno << " " << strerror(errno); + delete [] buffer; } else {