V4L2编程相关总结

来源:互联网 发布:张明淳 工程矩阵答案 编辑:程序博客网 时间:2024/06/06 11:39

 主程序框架:       

 1. options_init();

 2.options_deal(argc, argv);

 3. video_init();

 4.screen_init();

  5.screen_mainloop();

  6.screen_quit();

  7.video_quit();

 

3.视频初始化
 3.1 video_open();                           fd = open(device, O_RDWR);    //打开设备

 3.2 video_set_format();                 VIDIOC_S_FMT       //设定格式,查看格式为VIDIOC_GFMT

 3.3 buffer_init();                              //缓冲区初始化,见下文

 3.4 video_streamon();                       VIDIOC_STREAMON     //打开采集

 

3.3缓冲区初始化

3.3.1 缓冲区请求,VIDIOC_REQBUFS,    应用程序缓冲获得了calloc()

3.3.2 缓冲区映射, VIDIOC_QUERYBUF(把VIDIO_REQBUFS 中分配的数据缓存转换成物理地址)

3.3.3 缓冲区入队VIDIO_QBUF

 

5屏幕显示主循环

5.1 出队,VIDIOC_DQBUF   //从缓冲区获取一个缓冲帧,前提是所有的队列已经入好。

5.2 处理采集回来的图像

5.3 VIDIOC_QBUF         // 将取出的缓冲帧放回缓冲区

 

7视频采集退出

 7.1  关闭采集  VIDIO_STREAMOFF

7.2  关闭视频文件指针close(fd)

7.3 释放缓存,解除映射关系unmmap();

                        

原创粉丝点击