⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 struct-v4l.c

📁 基于s3c2410的摄像头驱动
💻 C
字号:
#include <stdio.h>#include <sys/ioctl.h>#include <sys/time.h>#include <linux/videodev.h>#include "struct-dump.h"#include "struct-v4l.h"/* ---------------------------------------------------------------------- */char *bits_vid_cap[32] = {	"CAPTURE",	"TUNER",	"TELETEXT",	"OVERLAY",	"CHROMAKEY",	"CLIPPING",	"FRAMERAM",	"SCALES",	"MONOCHROME",	"SUBCAPTURE",	"MPEG_DECODER",	"MPEG_ENCODER",	"MJPEG_DECODER",	"MJPEG_ENCODER",};char *bits_chan_flags[32] = {	"TUNER",	"AUDIO",};char *desc_chan_type[] = {	[ VIDEO_TYPE_TV     ] = "TV",	[ VIDEO_TYPE_CAMERA ] = "CAMERA",};char *bits_tuner_flags[32] = {	"PAL",	"NTSC",	"SECAM",	"LOW",	"NORM",	"?",	"?",	"STEREO_ON",	"RDS_ON",	"MBS_ON",};char *desc_tuner_mode[] = {	[ VIDEO_MODE_PAL ]   = "PAL",	[ VIDEO_MODE_NTSC ]  = "NTSC",	[ VIDEO_MODE_SECAM ] = "SECAM",	[ VIDEO_MODE_AUTO ]  = "AUTO",};char *desc_pict_palette[] = {	[ VIDEO_PALETTE_GREY ]    = "GREY",	[ VIDEO_PALETTE_HI240 ]   = "HI240",	[ VIDEO_PALETTE_RGB565 ]  = "RGB565",	[ VIDEO_PALETTE_RGB24 ]   = "RGB24",	[ VIDEO_PALETTE_RGB32 ]   = "RGB32",	[ VIDEO_PALETTE_RGB555 ]  = "RGB555",	[ VIDEO_PALETTE_YUV422 ]  = "YUV422",	[ VIDEO_PALETTE_YUYV ]    = "YUYV",	[ VIDEO_PALETTE_UYVY ]    = "UYVY",	[ VIDEO_PALETTE_YUV420 ]  = "YUV420",	[ VIDEO_PALETTE_YUV411 ]  = "YUV411",	[ VIDEO_PALETTE_RAW ]     = "RAW",	[ VIDEO_PALETTE_YUV422P ] = "YUV422P",	[ VIDEO_PALETTE_YUV411P ] = "YUV411P",	[ VIDEO_PALETTE_YUV420P ] = "YUV420P",	[ VIDEO_PALETTE_YUV410P ] = "YUV410P",};char *bits_audio_flags[32] = {	"MUTE",	"MUTABLE",	"VOLUME",	"BASS",	"TREBLE",	"BALANCE",};char *bits_audio_mode[32] = {	"MONO",	"STEREO",	"LANG1",	"LANG2",};/* ---------------------------------------------------------------------- */struct struct_desc desc_video_capability[] = {{	.type   = STRING,	.name   = "name",	.length = 32,},{	.type   = BITS32,	.name   = "type",	.bits   = bits_vid_cap,},{	.type   = SINT32,	.name   = "channels",},{	.type   = SINT32,	.name   = "audios",},{	.type   = SINT32,	.name   = "maxwidth",},{	.type   = SINT32,	.name   = "maxheight",},{	.type   = SINT32,	.name   = "minwidth",},{	.type   = SINT32,	.name   = "minheight",},{	/* end of list */}};struct struct_desc desc_video_channel[] = {{	.type   = SINT32,	.name   = "channel",},{	.type   = STRING,	.name   = "name",	.length = 32,},{	.type   = SINT32,	.name   = "tuners",},{	.type   = BITS32,	.name   = "flags",	.bits   = bits_chan_flags},{	.type   = ENUM16,	.name   = "type",	.enums  = desc_chan_type,	.length = sizeof(desc_chan_type) / sizeof(char*),},{	.type   = UINT16,	.name   = "norm",},{	/* end of list */}};struct struct_desc desc_video_tuner[] = {{	.type   = SINT32,	.name   = "tuner",},{	.type   = STRING,	.name   = "name",	.length = 32,},{	.type   = UINT32,	.name   = "rangelow",},{	.type   = UINT32,	.name   = "rangehigh",},{	.type   = BITS32,	.name   = "flags",	.bits   = bits_tuner_flags,},{	.type   = ENUM16,	.name   = "mode",	.enums  = desc_tuner_mode,	.length = sizeof(desc_tuner_mode) / sizeof(char*),},{	.type   = UINT16,	.name   = "signal",},{	/* end of list */}};struct struct_desc desc_video_picture[] = {{	.type   = UINT16,	.name   = "brightness",},{	.type   = UINT16,	.name   = "hue",},{	.type   = UINT16,	.name   = "colour",},{	.type   = UINT16,	.name   = "contrast",},{	.type   = UINT16,	.name   = "whiteness",},{	.type   = UINT16,	.name   = "depth",},{	.type   = ENUM16,	.name   = "palette",	.enums  = desc_pict_palette,	.length = sizeof(desc_pict_palette) / sizeof(char*),},{	/* end of list */}};struct struct_desc desc_video_audio[] = {{	.type   = SINT32,	.name   = "audio",},{	.type   = UINT16,	.name   = "volume",},{	.type   = UINT16,	.name   = "bass",},{	.type   = UINT16,	.name   = "treble",},{	.type   = PADDING,	.length = 2,},{	.type   = BITS32,	.name   = "flags",	.bits   = bits_audio_flags,},{	.type   = STRING,	.name   = "name",	.length = 16,},{	.type   = BITS16,	.name   = "mode",	.bits   = bits_audio_mode,},{	.type   = UINT16,	.name   = "balance",},{	.type   = UINT16,	.name   = "step",},{	/* end of list */}};struct struct_desc desc_video_window[] = {{	.type   = UINT32,	.name   = "x",},{	.type   = UINT32,	.name   = "y",},{	.type   = UINT32,	.name   = "width",},{	.type   = UINT32,	.name   = "height",},{	.type   = UINT32,	.name   = "chromakey",},{	.type   = UINT32,	.name   = "flags",},{	/* end of list */}};struct struct_desc desc_video_buffer[] = {{	.type   = PTR,	.name   = "base",},{	.type   = SINT32,	.name   = "height",},{	.type   = SINT32,	.name   = "width",},{	.type   = SINT32,	.name   = "depth",},{	.type   = SINT32,	.name   = "bytesperline",},{	/* end of list */}};struct struct_desc desc_video_mmap[] = {{	.type   = UINT32,	.name   = "frame",},{	.type   = SINT32,	.name   = "height",},{	.type   = SINT32,	.name   = "width",},{	.type   = UINT32,	.name   = "format",},{	/* end of list */}};struct struct_desc desc_video_mbuf[] = {{	.type   = SINT32,	.name   = "size",},{	.type   = SINT32,	.name   = "frames",},{	.type   = SINT32,	.name   = "offsets",        /* FIXME len=32 */},{	/* end of list */}};/* ---------------------------------------------------------------------- */struct ioctl_desc ioctls_v4l1[256] = {	[_IOC_NR(VIDIOCGCAP)] = {		.name = "VIDIOCGCAP",		.desc = desc_video_capability,	},	[_IOC_NR(VIDIOCGCHAN)] = {		.name = "VIDIOCGCHAN",		.desc = desc_video_channel,	},	[_IOC_NR(VIDIOCSCHAN)] = {		.name = "VIDIOCSCHAN",		.desc = desc_video_channel,	},	[_IOC_NR(VIDIOCGTUNER)] = {		.name = "VIDIOCGTUNER",		.desc = desc_video_tuner,	},	[_IOC_NR(VIDIOCSTUNER)] = {		.name = "VIDIOCSTUNER",		.desc = desc_video_tuner,	},	[_IOC_NR(VIDIOCGPICT)] = {		.name = "VIDIOCGPICT",		.desc = desc_video_picture,	},	[_IOC_NR(VIDIOCSPICT)] = {		.name = "VIDIOCSPICT",		.desc = desc_video_picture,	},	[_IOC_NR(VIDIOCCAPTURE)] = {		.name = "VIDIOCCAPTURE",		.desc = desc_int,	},	[_IOC_NR(VIDIOCGWIN)] = {		.name = "VIDIOCGWIN",		.desc = desc_video_window,	},	[_IOC_NR(VIDIOCSWIN)] = {		.name = "VIDIOCSWIN",		.desc = desc_video_window,	},	[_IOC_NR(VIDIOCGFBUF)] = {		.name = "VIDIOCGFBUF",		.desc = desc_video_buffer,	},	[_IOC_NR(VIDIOCSFBUF)] = {		.name = "VIDIOCSFBUF",		.desc = desc_video_buffer,	},	[_IOC_NR(VIDIOCKEY)] = {		.name = "VIDIOCKEY",//		.desc = desc_video_key,	},	[_IOC_NR(VIDIOCGFREQ)] = {		.name = "VIDIOCGFREQ",		.desc = desc_long,	},	[_IOC_NR(VIDIOCSFREQ)] = {		.name = "VIDIOCSFREQ",		.desc = desc_long,	},	[_IOC_NR(VIDIOCGAUDIO)] = {		.name = "VIDIOCGAUDIO",		.desc = desc_video_audio,	},	[_IOC_NR(VIDIOCSAUDIO)] = {		.name = "VIDIOCSAUDIO",		.desc = desc_video_audio,	},	[_IOC_NR(VIDIOCSYNC)] = {		.name = "VIDIOCSYNC",		.desc = desc_int,	},	[_IOC_NR(VIDIOCMCAPTURE)] = {		.name = "VIDIOCMCAPTURE",		.desc = desc_video_mmap,	},	[_IOC_NR(VIDIOCGMBUF)] = {		.name = "VIDIOCGMBUF",		.desc = desc_video_mbuf,	},	[_IOC_NR(VIDIOCGUNIT)] = {		.name = "VIDIOCGUNIT",//		.desc = desc_video_unit,	},	[_IOC_NR(VIDIOCGCAPTURE)] = {		.name = "VIDIOCGCAPTURE",//		.desc = desc_video_capture,	},	[_IOC_NR(VIDIOCSCAPTURE)] = {		.name = "VIDIOCSCAPTURE",//		.desc = desc_video_capture,	},	[_IOC_NR(VIDIOCSPLAYMODE)] = {		.name = "VIDIOCSPLAYMODE",//		.desc = desc_video_play_mode,	},	[_IOC_NR(VIDIOCSWRITEMODE)] = {		.name = "VIDIOCSWRITEMODE",		.desc = desc_int,	},	[_IOC_NR(VIDIOCGPLAYINFO)] = {		.name = "VIDIOCGPLAYINFO",//		.desc = desc_video_info,	},	[_IOC_NR(VIDIOCSMICROCODE)] = {		.name = "VIDIOCSMICROCODE",//		.desc = desc_video_code,	},	[_IOC_NR(VIDIOCGVBIFMT)] = {		.name = "VIDIOCGVBIFMT",//		.desc = desc_vbi_format,	},	[_IOC_NR(VIDIOCSVBIFMT)] = {		.name = "VIDIOCSVBIFMT",//		.desc = desc_vbi_format,	},};/* ---------------------------------------------------------------------- *//* * Local variables: * c-basic-offset: 8 * End: */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -