v4l2解析

v4l2的学习建议和流程解析:
    http://www.cnblogs.com/silence-hust/p/4464291.html


补充:

枚举设备所支持的image format:  VIDIOC_ENUM_FMT

struct v4l2_fmtdesc fmtdesc;
fmtdesc.index = 0;
fmtdesc.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
ret = ioctl(Handle, VIDIOC_ENUM_FMT, &fmtdesc);

使用ioctl VIDIOC_ENUM_FMT 依次询问,type为:V4L2_BUF_TYPE_VIDEO_CAPTUREindex从0开始,依次增加,直到返回. Driver会填充结构体struct v4l2_fmtdesc的其它内容,如果index超出范围,则返回-1。
struct v4l2_fmtdesc
{
 __u32 index;                  // 需要填充,从0开始,依次上升。
 enum v4l2_buf_type type;      //Camera,则填写V4L2_BUF_TYPE_VIDEO_CAPTURE
 __u32 flags;                  // 如果压缩的,则Driver 填写:V4L2_FMT_FLAG_COMPRESSED,否则为0 
 __u8 description[32];         // image format的描述,如:YUV 4:2:2 (YUYV)
 __u32 pixelformat;        //所支持的格式。 如:V4L2_PIX_FMT_UYVY
 __u32 reserved[4];
}; 

这样,则知道当前硬件支持什么样的image format. 下一步,则可以设置image 了。当然,设置之前,还可以读取当前缺省设置。
posted @ 2017-09-23 19:42  gluo-dreamer  阅读(176)  评论(0编辑  收藏  举报