Compare commits

..

No commits in common. "d11947bd7ce77bf1ebb4f5fb603c5e11b702c69b" and "db037c5d12681cda2d9a53bbbd0ef1aabbb4b6fa" have entirely different histories.

4 changed files with 9 additions and 50 deletions

View File

@ -3,13 +3,3 @@
------------- -------------
------------------------------------------------------------------------
<paulk-leonov> tth: en faisant de la revue de patch sur V4L2, j'apprends
que V4L2_FMT_FLAG et V4L2_PIX_FMT_FLAG n'ont rien à voir:
le premier concerne le champ flags de la structure de l'ioctl enum_fmt
et le second le champ flag de la structure de g_fmt.

View File

@ -8,8 +8,6 @@ int init_device(int notused);
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
int x_add_rgb2fimg(unsigned char *src, int w, int h, FloatImg *d);
int x_rgb2fimg(unsigned char *src, int w, int h, FloatImg *d); int x_rgb2fimg(unsigned char *src, int w, int h, FloatImg *d);
int x_rgb2file(unsigned char *src, int w, int h, char *fname); int x_rgb2file(unsigned char *src, int w, int h, char *fname);

View File

@ -91,15 +91,15 @@ struct timeval tv;
int r, fd = -1; int r, fd = -1;
unsigned int i, n_buffers; unsigned int i, n_buffers;
char *dev_name = "/dev/video0"; char *dev_name = "/dev/video0";
char out_name[256];
FILE *fout; FILE *fout;
struct buffer *buffers; struct buffer *buffers;
int foo, bar; int foo, bar;
double period = 10.0; /* delai entre les captures */ int period = 10; /* delai entre les captures */
int nbre_capt = 1; /* nombre de captures */ int nbre_capt = 1; /* nombre de captures */
int opt; int opt;
double t_final; double t_debut, t_final;
char *dest_dir = "."; /* no trailing slash */ char *dest_dir = "."; /* no trailing slash */
char *outfile = "out.pnm"; char *outfile = "out.pnm";
@ -114,14 +114,13 @@ while ((opt = getopt(argc, argv, "d:hn:o:O:p:v")) != -1) {
case 'n': nbre_capt = atoi(optarg); break; case 'n': nbre_capt = atoi(optarg); break;
case 'O': dest_dir = optarg; break; case 'O': dest_dir = optarg; break;
case 'o': outfile = optarg; break; case 'o': outfile = optarg; break;
case 'p': period = 1e6*atof(optarg); break; case 'p': period = atoi(optarg); break;
case 'v': verbosity++; break; case 'v': verbosity++; break;
} }
} }
if (verbosity) { if (verbosity) {
fprintf(stderr, "running %s pid=%d\n", argv[0], getpid()); fprintf(stderr, "running %s pid=%d\n", argv[0], getpid());
fprintf(stderr, "period is %.3f microseconds\n", period);
} }
fd = v4l2_open(dev_name, O_RDWR | O_NONBLOCK, 0); fd = v4l2_open(dev_name, O_RDWR | O_NONBLOCK, 0);
@ -173,7 +172,7 @@ for (n_buffers = 0; n_buffers < req.count; ++n_buffers) {
} }
} }
(void)fimg_timer_set(0); t_debut = fimg_timer_set(0);
for (i = 0; i < n_buffers; ++i) { for (i = 0; i < n_buffers; ++i) {
CLEAR(buf); CLEAR(buf);
@ -219,11 +218,6 @@ for (i = 0; i < nbre_capt; i++) {
return errno; return errno;
} }
if(verbosity > 1) {
printf("%6d %9.3f\n", i, fimg_timer_get(0));
}
CLEAR(buf); CLEAR(buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP; buf.memory = V4L2_MEMORY_MMAP;
@ -246,15 +240,9 @@ for (i = 0; i < nbre_capt; i++) {
#endif #endif
#if SAVE_AS_CUMUL #if SAVE_AS_CUMUL
/**
x_rgb2fimg(buffers[buf.index].start, x_rgb2fimg(buffers[buf.index].start,
fmt.fmt.pix.width, fmt.fmt.pix.height, &grab); fmt.fmt.pix.width, fmt.fmt.pix.height, &grab);
fimg_add(&grab, &cumul, &cumul); fimg_add(&grab, &cumul, &cumul);
**/
x_add_rgb2fimg(buffers[buf.index].start,
fmt.fmt.pix.width, fmt.fmt.pix.height, &cumul);
#endif #endif
#if SAVE_AS_FIMG #if SAVE_AS_FIMG
@ -265,8 +253,8 @@ for (i = 0; i < nbre_capt; i++) {
out_name); out_name);
#endif #endif
if (nbre_capt > 1 && period > 1.0) { if (nbre_capt > 1 && period) {
usleep(period); sleep(period);
} }
xioctl(fd, VIDIOC_QBUF, &buf); xioctl(fd, VIDIOC_QBUF, &buf);

View File

@ -9,11 +9,11 @@
int x_upscaler(unsigned char *src, int w, int h, FloatImg *d) int x_upscaler(unsigned char *src, int w, int h, FloatImg *d)
{ {
int x, y, xx, yy; int x, y, xx, yy;
// float *rp, *gp, *bp; float *rp, *gp, *bp;
float r, g, b; float r, g, b;
static unsigned short modz; static unsigned short modz;
// rp = d->R, gp = d->G, bp = d->B; rp = d->R, gp = d->G, bp = d->B;
for (y=0; y<h; y++) { for (y=0; y<h; y++) {
yy = (y*2) + ! (modz & 1); yy = (y*2) + ! (modz & 1);
@ -49,23 +49,6 @@ for (iter=0; iter<size; iter++) {
return 0; return 0;
} }
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
/* --------------------------------------------------------------------- */
int x_add_rgb2fimg(unsigned char *src, int w, int h, FloatImg *d)
{
int iter, size;
float *rp, *gp, *bp;
size = w * h;
rp = d->R, gp = d->G, bp = d->B;
for (iter=0; iter<size; iter++) {
*rp++ += (float)*src++;
*gp++ += (float)*src++;
*bp++ += (float)*src++;
}
return 0;
}
int x_rgb2file(unsigned char *src, int w, int h, char *fname) int x_rgb2file(unsigned char *src, int w, int h, char *fname)
{ {
FloatImg buff; FloatImg buff;