关闭

linux下V4L视频采集总结

标签: linuxvideostruct数据结构buffer测试
6650人阅读 评论(1) 收藏 举报
分类:

视频采集,调用V4L模块参数进行视频原始数据的采集。熟悉/include/linux/videodev.h,根据这个头文件来定义自己的video device的数据结构,下面是几个重要的数据结构,定义在videodev.h里   
struct video_mmap vmmap;
struct video_capability videocap;
struct video_mbuf videombuf;
struct video_picture videopict;
struct video_window videowin;
struct video_channel videochan;
struct video_param videoparam;

用mmap方法做视频采集最重要是以下两个数据结构
struct video_mmap
{
 unsigned int frame;  /* Frame (0 - n) for double buffer */
 int  height,width;
 unsigned int format;  /* should be VIDEO_PALETTE_* */
};

#define VIDEO_MAX_FRAME  32

struct video_mbuf
{
 int size;  /* Total memory to map */
 int frames;  /* Frames */
 int offsets[VIDEO_MAX_FRAME];
};
一般来说,可以通过ioctl相应的get参数获取这几个数据结构中的数据,使用mmap方法就要知道内存影射区buffers的大小,本课题使用的OV511 WebEye V2000系列摄像头都是double buffer,即buffer[0],buffer[1];整个buffers的大小为struct video_mbuf的size值,frames此时应该为2,offsets为偏移量。在使用mmap函数以后,返回的指针就指在offsets[0]上,此时的offsets[0]可以看为0,offsets[1]的大小则应该等于一个buffer的大小。
在采集之前不要忘记对视频参数的设置,重要的参数有fromat,dept,各个摄像头对其自身的参数设定都不一样,为了获得更好的软件兼容性,可以做一个format参数的probe函数,测试所有可能的fromat值是否受硬件摄像头的支持,demo代码如下:
int pal[] ={VIDEO_PALETTE_JPEG,VIDEO_PALETTE_YUV420P,VIDEO_PALETTE_RGB24,VIDEO_PALETTE_RGB565,VIDEO_PALETTE_RGB32};
struct video_picture pict;
//定义所有可能的palette format值
ioctl (vd->fd, VIDIOCGPICT, &pict);
//通过ioctl对video_picture pict的get命令,把包含format的参数保存到video_picture pict中
for(i = 0; i < 5 ; i++)
//做一个循环,验证上述5个format的可用性
pict.palette = pal[i];
  
printf("try palette %d depth %d/n",pict.palette,pict.depth);
if (ioctl (vd->fd, VIDIOCSPICT, &pict) < 0)
     {
        printf("Couldnt set palette first try %d /n", pal[i]);
     
     }
//设置成功则返回大于0值,返回小于0则说明该format值不可用
//实验证明WebeyeV2000只支持VIDEO_PALETTE_YUV420P,而Z-Star的对上面五种format都支持
 if (ioctl (vd->fd, VIDIOCGPICT, &pict) < 0)
      {
        printf("Couldnt get palette %d /n", pal[i]);
     
      }

先干活去了,明天接着写mmap的采集和处理                                                 

to be continue........

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:198647次
    • 积分:2674
    • 等级:
    • 排名:第13556名
    • 原创:70篇
    • 转载:19篇
    • 译文:0篇
    • 评论:91条
    最新评论