Questa funzionalità introduce un insieme di metodi che consentono ai client della videocamera di aggiungere e rimuovere dinamicamente le superfici di output mentre la sessione di acquisizione è attiva e lo streaming della videocamera è in corso. Un nuovo output può essere mappato a uno stream di una videocamera condivisa specifico selezionato dall'utente. Una volta aggiunta, una piattaforma può essere rimossa in qualsiasi momento.
L'idea generale è quella di condividere i buffer associati a un particolare flusso della videocamera all'interno di diverse superfici di output. Un contatore di riferimenti interni tiene traccia dei buffer man mano che diventano pronti per l'ulteriore elaborazione lato consumer. Quando tutti i consumatori completano le rispettive attività, il buffer viene rimosso dalla coda e diventa disponibile per la videocamera.
Figura 1. Condivisione del buffer
La figura 1 mostra uno scenario di esempio in cui i buffer elaborati dallo stream 2 della videocamera vengono collegati e scollegati dinamicamente, conteggiati in base ai riferimenti e gestiti dal componente di suddivisione dello stream all'interno di uno stream di output condiviso dedicato nel servizio della videocamera.
Esempi e fonte
L'implementazione principale di questa funzionalità si trova nel modulo
Camera3StreamSplitter. La documentazione su questa funzionalità è disponibile nel riferimento per gli sviluppatori:
Implementazione
Non è richiesta alcuna implementazione sul lato HAL della videocamera, poiché questa funzionalità è implementata sul lato framework.
Convalida
La tua implementazione deve superare i test CTS che coprono questa funzionalità del modulo MultiViewTest e della libreria JNI nativa per l'API nativa.