SDV Media: Uso de cámaras

SDV Media permite el uso de cámaras de video a través de la API de Linux V4L2. Es posible usar las APIs de V4L2 directamente, pero se recomienda a los desarrolladores de aplicaciones que usen bibliotecas auxiliares del espacio del usuario. Por ejemplo:

  • Crate libv4l-rs para Rust (recomendado)
  • libv4l2 para C++. Esta biblioteca no se proporciona de forma predeterminada en SDV Media.

Modos de búfer compatibles

Los mantenedores de V4L2 upstream consideran que el modo de búfer USERPTR está en desuso, por lo que SDV Media no lo admite. En su lugar, usa el modo MMAP o DMABUF.

Usar cámaras

Cada dispositivo de video (cámaras, codificadores y decodificadores) expuesto por el hipervisor aparecerá como un dispositivo independiente llamado /dev/videoN (con un valor numérico de N).

Las aplicaciones pueden usar ioctl de VIDIOC_QUERYCAP para consultar las capacidades de los dispositivos de video. Los dispositivos de cámara informan la compatibilidad con V4L2_CAP_VIDEO_CAPTURE o V4L2_CAP_VIDEO_CAPTURE_MPLANE.

Para obtener detalles sobre el flujo de captura de video, consulta Video for Linux API: Input/Output (API de Video for Linux: entrada/salida).

Considera estas muestras de código:

Cómo configurar dispositivos de bucle invertido de video

Para las pruebas, SDV Media proporciona un módulo del kernel v4l2loopback, que se puede usar para emular cámaras de video por completo dentro de la VM invitada. De forma predeterminada, inicializa un solo dispositivo de cámara virtual. Para agregar más, pasa los parámetros de configuración al módulo a través de la línea de comandos del kernel. Por ejemplo, para inicializar 4 dispositivos, agrega lo siguiente:

v4l2loopback.devices=4

Para ver una lista completa de las opciones de módulos disponibles, consulta el README de v4l2loopback o las fuentes del módulo en el repositorio del kernel de Android.