SDV Media: Use cameras

SDV Media consente l'utilizzo di videocamere tramite l'API Linux V4L2. È possibile utilizzare direttamente le API V4L2, ma gli sviluppatori di applicazioni sono invitati a utilizzare le librerie di assistenza dello spazio utente. Ad esempio:

  • libv4l-rs crate per Rust (consigliato),
  • libv4l2 per C++. Questa libreria non è fornita per impostazione predefinita in SDV Media.

Modalità buffer supportate

La modalità buffer USERPTR è considerata obsoleta dai gestori upstream di V4L2 e pertanto non è supportata da SDV Media. Utilizza invece la modalità MMAP o DMABUF.

Utilizzare le videocamere

Ogni dispositivo video (videocamere, encoder e decoder) esposto dall'hypervisor verrà visualizzato come un dispositivo separato denominato /dev/videoN (con un valore numerico di N).

Le applicazioni possono utilizzare VIDIOC_QUERYCAP ioctl per eseguire query sulle funzionalità dei dispositivi video. I dispositivi della videocamera segnalano il supporto per V4L2_CAP_VIDEO_CAPTURE o V4L2_CAP_VIDEO_CAPTURE_MPLANE.

Per i dettagli del flusso di acquisizione video, consulta API Video for Linux: Input/Output.

Considera questi esempi di codice:

Configurare i dispositivi di loopback video

Per i test, SDV Media fornisce un modulo kernel v4l2loopback, che può essere utilizzato per emulare le videocamere interamente all'interno della VM guest. Per impostazione predefinita, inizializza un singolo dispositivo videocamera virtuale. Per aggiungerne altri, passa i parametri di configurazione al modulo tramite la riga di comando del kernel. Ad esempio, per inizializzare 4 dispositivi, aggiungi:

v4l2loopback.devices=4

Per visualizzare un elenco completo delle opzioni del modulo disponibili, consulta il file README di v4l2loopback o le origini del modulo nel repository del kernel Android.