Trasporto buffer di fotocamere multiple per singolo produttore e consumatore

Questa funzionalità introduce una serie di metodi che consentono ai client della telecamera di aggiungere e rimuovere dinamicamente le superfici di output mentre la sessione di acquisizione è attiva e lo streaming della telecamera è in corso. Un nuovo output può essere mappato su uno specifico flusso di telecamera condivisa selezionato dall'utente. Dopo aver aggiunto una superficie, è possibile rimuoverla in qualsiasi momento.

L'idea generale è quella di condividere i buffer associati a un particolare flusso di telecamera all'interno di diverse superfici di output. Un contatore di riferimento interno tiene traccia dei buffer man mano che diventano pronti per l'ulteriore elaborazione da parte del consumatore. Quando tutti i consumatori completano le rispettive attività, il buffer viene rimosso dalla coda ed è disponibile per la fotocamera.

Condivisione del buffer

Figura 1. Condivisione del buffer

La Figura 1 illustra uno scenario di esempio in cui i buffer elaborati dal flusso della telecamera 2 vengono collegati e scollegati dinamicamente, conteggiati i riferimenti e gestiti dal componente divisore del flusso all'interno di un flusso di output condiviso dedicato all'interno del servizio della telecamera.

Esempi e fonte

L'implementazione principale di questa funzionalità può essere trovata nel modulo Camera3StreamSplitter . La documentazione su questa funzionalità è disponibile nel riferimento per gli sviluppatori:

Implementazione

Non è richiesta alcuna implementazione sul lato HAL della fotocamera poiché questa funzionalità è implementata sul lato del framework.

Validazione

La tua implementazione deve superare i casi CTS che coprono questa funzionalità dal modulo MultiViewTest e dalla libreria JNI nativa per l'API nativa.