static int main_loop(struct camera *cam, struct quirc *q, struct mjpeg_decoder *mj) { struct dthash dt; dthash_init(&dt, printer_timeout); for (;;) { int w, h; int i, count; uint8_t *buf = quirc_begin(q, &w, &h); const struct camera_buffer *head; const struct camera_parms *parms = camera_get_parms(cam); if (camera_dequeue_one(cam) < 0) { perror("camera_dequeue_one"); return -1; } head = camera_get_head(cam); switch (parms->format) { case CAMERA_FORMAT_MJPEG: mjpeg_decode_gray(mj, head->addr, head->size, buf, w, w, h); break; case CAMERA_FORMAT_YUYV: yuyv_to_luma(head->addr, w * 2, w, h, buf, w); break; default: fprintf(stderr, "Unknown frame format\n"); return -1; } if (camera_enqueue_all(cam) < 0) { perror("camera_enqueue_all"); return -1; } quirc_end(q); count = quirc_count(q); for (i = 0; i < count; i++) { struct quirc_code code; struct quirc_data data; quirc_extract(q, i, &code); if (!quirc_decode(&code, &data)) print_data(&data, &dt, want_verbose); } } }
static int main_loop(struct camera *cam, struct quirc *q, struct mjpeg_decoder *mj) { struct dthash dt; dthash_init(&dt, printer_timeout); for (;;) { int w, h; int i, count; uint8_t *buf = quirc_begin(q, &w, &h); if (camera_update(cam) < 0) return -1; switch (cam->format) { case CAMERA_FORMAT_MJPEG: mjpeg_decode_gray(mj, cam->mem, cam->mem_len, buf, w, w, h); break; case CAMERA_FORMAT_YUYV: yuyv_to_luma(cam->mem, w * 2, w, h, buf, w); break; } quirc_end(q); count = quirc_count(q); for (i = 0; i < count; i++) { struct quirc_code code; struct quirc_data data; quirc_extract(q, i, &code); if (!quirc_decode(&code, &data)) print_data(&data, &dt, want_verbose); } } }