Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105/* quirc -- QR-code recognition library * Copyright (C) 2010-2014 Daniel Beer <dlbeer@gmail.com> * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
#ifndef CAMERA_H_#define CAMERA_H_
#include <stddef.h>
#define CAMERA_MAX_BUFFERS 32
typedef enum { CAMERA_FORMAT_UNKNOWN = 0, CAMERA_FORMAT_MJPEG, CAMERA_FORMAT_YUYV} camera_format_t;
struct camera_parms { camera_format_t format; int width; int height; int pitch_bytes; int interval_n; int interval_d;};
struct camera_buffer { void *addr; size_t size; unsigned long offset;};
struct camera { int fd;
struct camera_parms parms;
struct camera_buffer buf_desc[CAMERA_MAX_BUFFERS]; int buf_count;
/* Stream state */ int s_on; int s_qc; int s_qhead;};
/* Initialize/destroy a camera. No resources are allocated. */void camera_init(struct camera *c);void camera_destroy(struct camera *c);
/* Open/close the camera device */int camera_open(struct camera *c, const char *path, int target_w, int target_h, int tr_n, int tr_d);void camera_close(struct camera *c);
static inline int camera_get_fd(const struct camera *c){ return c->fd;}
static inline const struct camera_parms *camera_get_parms (const struct camera *c){ return &c->parms;}
/* Map buffers */int camera_map(struct camera *c, int buf_count);void camera_unmap(struct camera *c);
static inline int camera_get_buf_count(const struct camera *c){ return c->buf_count;}
/* Switch streaming on/off */int camera_on(struct camera *c);void camera_off(struct camera *c);
/* Enqueue/dequeue buffers (count = 0 means enqueue all) */int camera_enqueue_all(struct camera *c);int camera_dequeue_one(struct camera *c);
/* Fetch the oldest dequeued buffer */static inline const struct camera_buffer *camera_get_head (const struct camera *c){ return &c->buf_desc[(c->s_qhead + c->buf_count - 1) % c->buf_count];}
#endif