Un unico produttore, più consumatori per il trasporto del buffer della fotocamera

Questa funzionalità introduce un insieme di metodi che consente ai client della videocamera di aggiungere e rimuovere dinamicamente le piattaforme di output mentre la sessione di acquisizione è attiva e lo streaming della videocamera è in corso. Una nuova uscita può essere mappata a uno stream specifico della videocamera condivisa selezionato dall'utente. Una volta aggiunta, una superficie può essere rimossa in qualsiasi momento.

L'idea generale è condividere i buffer associati a un determinato stream della videocamera in più superfici di output. Un contatore di riferimento interno tiene traccia degli buffer man mano che diventano pronti per un'ulteriore elaborazione lato consumer. Quando tutti i consumatori completano le rispettive attività, il buffer viene rimosso dalla coda ed è disponibile per la videocamera.

Condivisione del buffer

Figura 1. Condivisione del buffer

La Figura 1 mostra uno scenario di esempio in cui i buffer elaborati dallo stream della videocamera 2 vengono collegati e scollegati dinamicamente, conteggiati e gestiti dal componente di suddivisione dello stream all'interno di uno stream di output condiviso dedicato all'interno del servizio della videocamera.

Esempi e origine

L'implementazione di base di questa funzionalità è disponibile nel modulo Camera3StreamSplitter. La documentazione relativa a questa funzionalità è disponibile nella documentazione di riferimento per gli sviluppatori:

Implementazione

Non è richiesta alcuna implementazione a livello di HAL della fotocamera, poiché questa funzionalità è implementata a livello di framework.

Convalida

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