控制V4L2/VB2缓冲区分配?

3
我正在尝试为我拥有的特殊相机设备编写一个符合V4L2标准的驱动程序,但是该设备似乎不太适应V4L2的缓冲系统。它需要一个能够容纳一组缓冲区(通常为4个)的单个连续内存块,并提供状态寄存器告诉您哪个是最新的(每帧DMA到主机后更新)。因此,它基本上只需要一个单独的大DMA分配内存块来工作,而不是4个最可能分开的。

我该如何在V4L中使用它?关于VIDIOC_CREATE_BUFSVIDIOC_REQBUFS等的所有内容都会对缓冲区进行内部分配,而且我无法让任何基于V4L的东西(例如qv4l2)在没有成功的QBUFDQBUF的情况下使用它们的内部结构。

这该怎么办?

1个回答

1

仅为完整起见,我最终在“meye”驱动程序中找到了解决方案。我删除了所有VB2内容,并编写了自己的reqbuf、querybuf、qbuf和dqbuf,以及处理分配的自己的mmap例程。现在一切都正常工作了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接