/* * fonctions pour afficher les structures de V4L2 */ #include #include #include #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 "???"; } /* --------------------------------------------------------------------- */ static void pr_capabilities(uint32_t caps) { fputs(" ", FP); if (caps & V4L2_CAP_VIDEO_CAPTURE) fputs("vcapt ", FP); if (caps & V4L2_CAP_VIDEO_OUTPUT) fputs("vout ", FP); if (caps & V4L2_CAP_VIDEO_OVERLAY) fputs("overlay ", FP); if (caps & V4L2_CAP_VBI_CAPTURE) fputs("vbicapt ", FP); if (caps & V4L2_CAP_VBI_OUTPUT) fputs("vbiout ", FP); /* to be continued */ if (caps & V4L2_CAP_AUDIO) fputs("audio ", FP); if (caps & V4L2_CAP_SDR_CAPTURE) fputs("sdrcapt ", FP); if (caps & V4L2_CAP_EXT_PIX_FORMAT) fputs("extpix ", FP); if (caps & V4L2_CAP_SDR_OUTPUT) fputs("sdrout ", FP); if (caps & V4L2_CAP_READWRITE) fputs("rwsysc ", FP); if (caps & V4L2_CAP_ASYNCIO) fputs("asyncio ", FP); if (caps & V4L2_CAP_STREAMING) fputs("stream ", FP); fputs("\n", FP); } /* --------------------------------------------------------------------- */ int pr_v4l2_capability(char *txt, struct v4l2_capability *ptr) { fprintf(FP, "-- v4l2_capability, %-15s %p\n", txt, ptr); fprintf(FP, " driver %s\n", ptr->driver); fprintf(FP, " card %s\n", ptr->card); fprintf(FP, " bus info %s\n", ptr->bus_info); fprintf(FP, " version 0x%X\n", ptr->version); fprintf(FP, " capabilities 0x%X\n", ptr->capabilities); pr_capabilities(ptr->capabilities); fprintf(FP, " device caps 0x%X\n", ptr->device_caps); return -1; } /* --------------------------------------------------------------------- */ static char *str_input_type(int t) { switch (t) { case V4L2_INPUT_TYPE_TUNER: return "tuner"; case V4L2_INPUT_TYPE_CAMERA: return "camera"; case V4L2_INPUT_TYPE_TOUCH: return "touch"; } return "???"; } /* --------------------------------------------------------------------- */ static void pr_input_status(uint32_t st) { if (st & V4L2_IN_ST_NO_POWER) fputs("nopower", FP); if (st & V4L2_IN_ST_NO_SIGNAL) fputs("nosignal", FP); if (st & V4L2_IN_ST_NO_COLOR) fputs("nocolor", FP); /* to be continued */ } /* --------------------------------------------------------------------- */ int pr_v4l2_input(char *txt, struct v4l2_input *ptr) { fprintf(FP, "-- v4l2_input, %-15s %p\n", txt, ptr); fprintf(FP, " index %d\n", ptr->index); fprintf(FP, " name %s\n", ptr->name); fprintf(FP, " type %d %s\n", ptr->type, str_input_type(ptr->type)); fprintf(FP, " audioset 0x%X\n", ptr->audioset); fprintf(FP, " tuner 0x%X\n", ptr->tuner); /* XXX v4l2_std_id std; */ fprintf(FP, " status %d\n", ptr->status); pr_input_status(ptr->status); fprintf(FP, " capabilities 0x%X\n", ptr->capabilities); return -1; } /* --------------------------------------------------------------------- */ 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: fprintf(FP, "type is %d\n", ptr->type); break; } fputs(".\n", FP); return 0; } /* --------------------------------------------------------------------- */ int pr_v4l2_requestbuffers(char *txt, struct v4l2_requestbuffers *ptr) { fprintf(FP, "-- v4l2_requestbuffers, %s %p\n", txt, ptr); fprintf(FP, " type %d\n", ptr->type); /* enum v4l2_buf_type */ return 0; } /* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */