FloatImg/v4l2/t.c

94 lines
1.9 KiB
C
Raw Normal View History

2019-05-25 02:40:13 +11:00
/*
* tests pour capturer les webcams
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>
#include <string.h>
2019-07-03 07:23:12 +11:00
#include <sys/ioctl.h>
2019-07-27 09:02:28 +11:00
#include <inttypes.h>
2019-07-03 07:23:12 +11:00
#include <linux/videodev2.h>
2019-07-03 04:35:08 +11:00
2019-06-05 19:57:39 +11:00
#include "../floatimg.h"
2019-08-11 03:37:52 +11:00
#include "funcs.h"
2019-05-25 02:40:13 +11:00
2019-07-03 04:35:08 +11:00
#include "v4l2_pr_structs.h"
2019-05-25 02:40:13 +11:00
int verbosity;
2019-05-26 01:16:24 +11:00
/* --------------------------------------------------------------------- */
2020-01-29 08:11:20 +11:00
int essai_get_fmt(char *dev, int k)
2019-05-26 01:16:24 +11:00
{
2020-07-24 23:04:54 +11:00
int vfd, foo;
struct v4l2_format fmt;
2020-07-24 23:04:54 +11:00
// struct v4l2_requestbuffers reqbuf;
2019-05-26 01:16:24 +11:00
2023-02-14 00:27:01 +11:00
#if DEBUG_LEVEL
2019-05-26 01:16:24 +11:00
fprintf(stderr, ">>> %s ( '%s' %d )\n", __func__, dev, k);
2023-02-14 00:27:01 +11:00
#endif
2019-05-26 01:16:24 +11:00
vfd = open_device(dev);
2019-07-29 11:53:28 +11:00
if (verbosity) fprintf(stderr, "\topen %s -> %d\n", dev, vfd);
2019-05-26 01:16:24 +11:00
2020-01-29 08:11:20 +11:00
memset(&fmt, 0, sizeof(fmt));
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
foo = ioctl(vfd, VIDIOC_G_FMT, &fmt);
2023-02-14 00:27:01 +11:00
if (verbosity) fprintf(stderr, "%s: ioctl -> %d\n", __func__, foo);
2020-01-29 08:11:20 +11:00
if (0 != foo) {
perror("ioctl G_FMT");
return -1;
}
2019-07-03 07:23:12 +11:00
2019-08-24 08:56:36 +11:00
pr_v4l2_format("after ioctl VIDIOC_G_FMT", &fmt);
2019-07-03 07:23:12 +11:00
2020-01-23 04:53:55 +11:00
/* this function is bugged */
2019-05-26 01:16:24 +11:00
2020-01-29 08:11:20 +11:00
close(vfd);
2019-05-26 01:16:24 +11:00
return k;
}
2019-05-25 02:40:13 +11:00
/* --------------------------------------------------------------------- */
2019-07-03 04:35:08 +11:00
2019-05-25 02:40:13 +11:00
void help(int k)
{
puts("Options :");
2019-05-25 20:56:56 +11:00
puts("\t-d\tselect the video device");
2019-05-25 03:34:07 +11:00
puts("\t-K\tset the K parameter");
2019-05-25 02:40:13 +11:00
puts("\t-v\tincrease verbosity");
if (verbosity) { puts(""); fimg_print_version(1); }
2019-05-25 02:40:13 +11:00
exit(0);
}
/* --------------------------------------------------------------------- */
int main(int argc, char *argv[])
{
int foo, opt;
2019-05-26 01:16:24 +11:00
char *device = "/dev/video0";
2019-05-25 02:40:13 +11:00
int K = 0;
2019-05-26 01:16:24 +11:00
while ((opt = getopt(argc, argv, "d:hK:v")) != -1) {
2019-05-25 02:40:13 +11:00
switch(opt) {
2019-05-26 01:16:24 +11:00
case 'd': device = optarg; break;
2019-05-25 02:40:13 +11:00
case 'h': help(0); break;
case 'K': K = atol(optarg); break;
case 'v': verbosity++; break;
}
}
if (verbosity) fimg_print_version(0);
2020-01-29 08:11:20 +11:00
foo = essai_get_fmt(device, K);
2023-02-14 00:27:01 +11:00
if (verbosity || foo) fprintf(stderr, "%s: essai -> %d\n", __func__, foo);
2019-05-26 01:16:24 +11:00
2019-05-25 02:40:13 +11:00
return 0;
}
/* --------------------------------------------------------------------- */