Compare commits

...

3 Commits

Author SHA1 Message Date
phyto dc7734b49d is pid display futil ? 2019-07-02 19:36:55 +02:00
phyto 56d46d44d9 a few debug tools 2019-07-02 19:35:08 +02:00
phyto 18a5a5229f debug grabvidseq 2019-07-02 07:17:11 +02:00
5 changed files with 110 additions and 9 deletions

View File

@ -5,12 +5,15 @@ DEPS = ../floatimg.h ../libfloatimg.a Makefile
all: grabvidseq t
t: t.c Makefile ${DEPS} funcs.o
gcc ${COPT} $< funcs.o ../libfloatimg.a -o $@
t: t.c Makefile ${DEPS} funcs.o v4l2_pr_structs.o
gcc ${COPT} $< funcs.o v4l2_pr_structs.o ../libfloatimg.a -o $@
funcs.o: funcs.c funcs.h Makefile
gcc ${COPT} -c $<
v4l2_pr_structs.o: v4l2_pr_structs.c v4l2_pr_structs.h Makefile
gcc ${COPT} -c $<
# ---------------
# external things

View File

@ -145,7 +145,7 @@ for (n_buffers = 0; n_buffers < req.count; ++n_buffers) {
fd, buf.m.offset);
if (MAP_FAILED == buffers[n_buffers].start) {
perror("mmap");
perror("v4l2_mmap");
exit(EXIT_FAILURE);
}
}
@ -161,8 +161,11 @@ for (i = 0; i < n_buffers; ++i) {
}
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
xioctl(fd, VIDIOC_STREAMON, &type);
if (verbosity) fprintf(stderr,"pid %d grabbing %d picz...\n",
getpid(), nbre_capt);
for (i = 0; i < nbre_capt; i++) {
do {
FD_ZERO(&fds);
@ -186,7 +189,7 @@ for (i = 0; i < nbre_capt; i++) {
xioctl(fd, VIDIOC_DQBUF, &buf);
sprintf(out_name, "%s/%05d.ppm", dest_dir, i);
if (verbosity) fprintf(stderr, "--> %s\n", out_name);
if (verbosity > 1) fprintf(stderr, "--> %s\n", out_name);
fout = fopen(out_name, "w");
if (!fout) {
@ -206,7 +209,7 @@ for (i = 0; i < nbre_capt; i++) {
}
t_final = fimg_timer_get(0);
fprintf(stderr, "elapsed time %g s\n", t_final);
fprintf(stderr, "pid %d : elapsed time %g s\n", getpid(), t_final);
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
xioctl(fd, VIDIOC_STREAMOFF, &type);

View File

@ -8,27 +8,49 @@
#include <math.h>
#include <string.h>
#include <linux/videodev2.h>
#include "funcs.h"
#include "../floatimg.h"
#include "v4l2_pr_structs.h"
int verbosity;
/* --------------------------------------------------------------------- */
int essai(char *dev, int k)
{
int vfd, foo;
int vfd, foo;
struct v4l2_format fmt;
fprintf(stderr, ">>> %s ( '%s' %d )\n", __func__, dev, k);
vfd = open_device(dev);
fprintf(stderr, "\topen %s -> %d\n", dev, vfd);
foo = init_device(0);
fprintf(stderr, "\tinit -> %d\n", foo);
memset(&fmt, 0, sizeof(fmt));
pr_v4l2_format("after 0", &fmt);
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
fmt.fmt.pix.width = 640;
fmt.fmt.pix.height = 480;
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB24;
fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
pr_v4l2_format("before ioctl", &fmt);
return k;
}
/* --------------------------------------------------------------------- */
int liste_des_devices(int K)
{
fprintf(stderr, "%s not implemented\n", __func__);
return -1;
}
/* --------------------------------------------------------------------- */
void help(int k)
{
puts("Options :");

64
v4l2/v4l2_pr_structs.c Normal file
View File

@ -0,0 +1,64 @@
/*
* fonctions pour afficher les structures de V4L2
*/
#include <stdio.h>
#include <linux/videodev2.h>
#include "v4l2_pr_structs.h"
#define FP (stdout)
extern int verbosity;
/* --------------------------------------------------------------------- */
static char *fmttype2str(int type)
{
switch(type) {
case 0: return "[zero]";
case 1: return "video capture";
case 2: return "video output";
case 13: return "META capture";
}
return "???";
}
/* --------------------------------------------------------------------- */
int pr_v4l2_format(char *txt, struct v4l2_format *ptr)
{
fprintf(FP, "-- v4l2_format, %-15s %p\n", txt, ptr);
fprintf(FP, " type %d %s\n", ptr->type,/* enum v4l2_buf_type */
fmttype2str(ptr->type));
switch(ptr->type) {
case 1: // fputs(" Capture\n", FP);
fprintf(FP, " dims %dx%d\n",
ptr->fmt.pix.width,
ptr->fmt.pix.height);
break;
default: fputs(" ???\n", FP); break;
}
fputs(".\n", FP);
return 0;
}
/* --------------------------------------------------------------------- */
int pr_v4l2_requestbuffers(char *txt, struct v4l2_requestbuffers *ptr)
{
fprintf(FP, "-- v4l2_requestbuffers, at %p\n", ptr);
fprintf(FP, " type %d\n", ptr->type); /* enum v4l2_buf_type */
return 0;
}
/* --------------------------------------------------------------------- */
/* --------------------------------------------------------------------- */
/* --------------------------------------------------------------------- */

9
v4l2/v4l2_pr_structs.h Normal file
View File

@ -0,0 +1,9 @@
/*
* fonctions pour afficher les structures de V4L2
*/
/* --------------------------------------------------------------------- */
int pr_v4l2_format(char *txt, struct v4l2_format *ptr);
int pr_v4l2_requestbuffers(char *txt, struct v4l2_requestbuffers *ptr);
/* --------------------------------------------------------------------- */