控制V4L2 / VB2缓冲区分配?

时间:2014-06-04 12:57:39

标签: linux linux-kernel linux-device-driver v4l2

我正在尝试为我所拥有的特殊相机设备编写符合V4L2标准的驱动程序,但该设备对于V4L2的缓冲系统似乎并不特别友好。它不需要单独分配的缓冲区,而是需要一个连续的内存块,它能够容纳一组缓冲区(通常为4个),然后它提供一个状态寄存器,告诉你哪个是最新的(在每个帧是DMA和#39之后更新) ; ed到主持人)。因此它基本上只需要一个大的DMA分配内存块来处理,而不是4个最可能分离的内存块。

如何在V4L中使用它?我看到的关于VIDIOC_CREATE_BUFSVIDIOC_REQBUFS的所有内容都是缓冲区的内部分配,我无法获得任何基于V4L的内容(如qv4l2无法成功QBUF 1}}和DQBUF使用其内部结构。

如何做到这一点?

1 个答案:

答案 0 :(得分:1)

为了完成,我终于在“meye”驱动程序中找到了解决方案。我删除了所有VB2并编写了我自己的reqbuf,querybuf,qbuf和dqbuf,以及我自己的mmap例程来处理分配。一切正常!