Linux内核用一个被称为V4L2的机制来管理摄像头图像信息,它的核心工作原理就像日本料理店常见的流转餐桌,大厨将美食不断放到空盘子里,客人不断拿来吃。
拓展:
在内核中,摄像头所捕获的视频数据,我们可以通过一个队列来存储,我们所做的工作大致是这样的:首先配置好摄像头的相关参数,使之能正常工作,然后申请若干个内核视频缓存,并且将它们一一送到队列中,就好比三个空盘子被一一放到传送带上一样。
然后我们还需要将这三个内核的缓存区通过mmap函数映射到用户空间,这样我们在用户层就可以操作摄像头数据了,紧接着我们就可以启动摄像头了开始数据捕获,每捕获一帧数据我们就可以做一个出队操作,读取数据,然后将读过数据的内核缓存再次入队,依次循环。
原文:http://vincent040.blog.51cto.com/4747533/1748108