static int k4w2_v4l2_stop(k4w2_t ctx) { k4w2_v4l2 * v4l2 = (k4w2_v4l2 *)ctx; CHANNEL ch; if (0== v4l2->thread) return K4W2_ERROR; v4l2->shutdown = 1; THREAD_JOIN(v4l2->thread); v4l2->thread = 0; for (ch = ctx->begin; ch <= ctx->end; ++ch) { stop_camera(&v4l2->cam[ch]); } return K4W2_SUCCESS; }
void VideoInput::run() { _init = false; _stop = false; bool success = start_camera(); _init = true; if (!success) { return; } int error = 0; int max_error = 10; int warmup = 10000; QTime timer; timer.start(); while(_video_capture && !_stop && error<max_error) { IplImage * frame = cvQueryFrame(_video_capture); if (frame) { //ok error = 0; emit new_image(cv::Mat(frame)); } else { //error if (timer.elapsed()>warmup) {error++;} } } //clean up stop_camera(); QApplication::processEvents(); }
VideoInput::~VideoInput() { stop_camera(); }
VideoInput::~VideoInput() { stop_camera(true); }
VideoToGet::~VideoToGet() { stop_camera(); }