我正在尝试为我所拥有的特殊相机设备编写符合V4L2标准的驱动程序,但该设备对于V4L2的缓冲系统似乎并不特别友好。它不需要单独分配的缓冲区,而是需要一个连续的内存块,它能够容纳一组缓冲区(通常为4个),然后它提供一个状态寄存器,告诉你哪个是最新的(在每个帧是DMA和#39之后更新) ; ed到主持人)。因此它基本上只需要一个大的DMA分配内存块来处理,而不是4个最可能分离的内存块。
如何在V4L中使用它?我看到的关于VIDIOC_CREATE_BUFS
,VIDIOC_REQBUFS
的所有内容都是缓冲区的内部分配,我无法获得任何基于V4L的内容(如qv4l2
无法成功QBUF
1}}和DQBUF
使用其内部结构。
如何做到这一点?
答案 0 :(得分:1)
为了完成,我终于在“meye”驱动程序中找到了解决方案。我删除了所有VB2并编写了我自己的reqbuf,querybuf,qbuf和dqbuf,以及我自己的mmap例程来处理分配。一切正常!