MX51 V4L2 output 驱动

来源:互联网 发布:安卓投影软件 编辑:程序博客网 时间:2024/06/05 15:33


之前调试MXC V4L2驱动一直没有注意到output/mxc_v4l2_output.c这个文件,因为capture/*.c已经提供了still capture, stream capture, 以及overlay没仔细的去看mxc_v4l2_output.c提供的功能,直到前几天负责维护overlay hal的同事提出打开了overlay hal /dev/video16这个设备节点,才让我跟到这个文件中

先从/dev/video0 和video16说起:

MXC V4L2生成了三个设备节点, /dev/radio0 /dev/video0以及/dev/video16, /dev/radio0就不讨论了,项目中没接触到。

/dev/video0是mxc_v4l2_capture驱动创建的设备节点, 而/dev/video16是mxc_v4l2_output驱动创建的设备节点。

/dev/video0节点既可用于capture又可用来overlay,

而/dev/video1完全是为push mode overlay模式服务的,所谓push mode模式(以下几行纯属臆测):应用通过stream capture从/dev/video0 dequeue到图像buffer数据,然后把这个指针再传给/dev/video16(当然是通过VIDIOC_Q_BUF),output 模块会直接将queue进来的buffer直接输出到framebuffer,这就完成了Overlay功能

push mode overlay和 /dev/video0支持的直接overlay的区别是,  push mode overlay需要应用空间参与数据的处理,用户空间参与的代价就是cpu占用率,好处是用空间有机会接触到每一帧传送到 framebuffer的数据。而直接overlay是你按下按钮,所有数据直接从camera流动到framebuffer, 中间没有任何机会接触数据,只能在frame buffer这里截获数据,速度是真快呀。

http://www.61ic.com/MCU/Freescale/MCU/201107/36247.html
原创粉丝点击