Pregunta

Estoy intentando escribir un controlador compatible con V4L2 para un dispositivo de cámara especial que tengo, pero el dispositivo no parece particularmente compatible con el sistema de búfer de V4L2.En lugar de los búferes asignados por separado, quiere un único bloque de memoria contiguo capaz de contener un conjunto de búferes (generalmente 4) y luego proporciona un registro de estado que le indica cuál es el último (actualizado después de que cada cuadro se somete a DMA). al anfitrión).Por lo tanto, básicamente necesita solo un gran fragmento de memoria asignado por DMA para trabajar, no 4 probablemente separados.

¿Cómo puedo usar esto con V4L?Todo lo que veo sobre VIDIOC_CREATE_BUFS, VIDIOC_REQBUFS y eso es lo que ocurre con la asignación interna de los buffers, y no puedo obtener nada basado en V4L (como qv4l2 trabajar sin éxito QBUF y DQBUF que utiliza su estructura interna.

¿Cómo se puede hacer esto?

¿Fue útil?

Solución

Solo para completar, finalmente encontré una solución en el conductor "Meye".Lo eliminé todo VB2 y escribí mi propio reqbuf, QUERYBUF, QBUF y DQBUF, junto con mis propias rutinas MMAP para manejar la asignación.¡Y todo funciona!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top