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. Un nuovo output può essere mappato a uno stream specifico di videocamera condivisa selezionata dall'utente. Dopo aver aggiunto una superficie, puoi rimuoverla 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 quando sono 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 2 della videocamera vengono collegati e scollegati dinamicamente, conteggiati e gestiti dal componente dello splitter dello stream all'interno di uno stream di output condiviso dedicato all'interno del servizio della videocamera.
Esempi e origine
L'implementazione principale 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.