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.
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.