La funzione dei parametri di sessione riduce i ritardi consentendo ai client della videocamera di configurare attivamente il sottoinsieme di parametri di richiesta costosi, ovvero come parte della fase di inizializzazione della sessione di acquisizione. Con questo le implementazioni HAL ricevono i parametri del client durante di configurazione del flusso di dati anziché la prima richiesta di acquisizione, a seconda dei loro valori, prepara e crea la pipeline interna in modo efficiente.
In Android 10, puoi migliorare le prestazioni utilizzando la funzionalità facoltativa di riconfigurazione delle query per avere un maggiore controllo logica di riconfigurazione dei parametri delle sessioni interne. Per ulteriori informazioni, vedi Query di riconfigurazione della sessione.
Esempi e fonte
L'implementazione dei parametri della sessione di riferimento fa già parte CameraHal. Questo HAL utilizza la versione precedente dell'API Hal. La proprietà binderizzata CameraHal che implementa l'API HIDL per fotocamera deve utilizzare il rispettivo HIDL sessionParams per accedere a tutti i nuovi parametri della sessione in entrata durante la configurazione dello streaming.
I client delle videocamere possono eseguire query sulle chiavi di tutti i parametri di sessione supportati chiamando
getAvailableSessionKeys()
e alla fine impostano i loro valori iniziali
setSessionParameters()
.
Implementazione
L'implementazione di CameraHal deve compilare
ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
all'interno dei rispettivi metadati statici della videocamera e fornire un sottoinsieme
ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS
,
che contiene un elenco di chiavi che sono difficili da applicare per frame e che è possibile
causare ritardi imprevisti se modificati durante la durata della sessione di acquisizione.
Gli esempi tipici includono parametri che richiedono un hardware dispendioso in termini di tempo una riconfigurazione o una modifica alla pipeline della videocamera interna. Controllo sulla sessione i parametri possono essere applicati alle richieste di acquisizione, ma i clienti devono e sono previsti ritardi nell'app.
Il framework monitora tutte le richieste in entrata e se rileva un cambiamento nel di un parametro di sessione, riconfigura internamente la videocamera. Il nuovo la configurazione dello stream passata a CameraHal, quindi include la sessione aggiornata i valori dei parametri, che vengono utilizzati per configurare meglio la pipeline della fotocamera in modo efficiente.
Personalizzazione
Puoi definire i tag nell'elenco di parametri di sessione disponibile che viene compilato su lato CameraHal. Questa funzionalità non è attiva se CameraHal lascia la elenco parametri sessione disponibile vuoto.
Convalida
CTS include i seguenti nuovi casi per i parametri della sessione di test:
CameraDeviceTest#testSessionConfiguration
CameraDeviceTest#testCreateSessionWithParameters
CameraDeviceTest#testSessionParametersStateLeak
NativeCameraDeviceTest#testCameraDevicePreviewWithSessionParameters
In generale, dopo che un determinato parametro fa parte dell'elenco delle chiavi di sessione, il suo il valore corrente è incluso come parte dei parametri di sessione trasmessi durante lo streaming configurazione a livello di HAL.
I parametri di sessione devono essere selezionati con attenzione. I valori non devono cambiare spesso, se non del tutto, tra le configurazioni di streaming. Parametri che cambiano non sono adatti, ad esempio intercettano l'intenzione, e li aggiungono dell'elenco di parametri di sessione potrebbe causare errori CTS a causa di per eseguire una riconfigurazione.
Query di riconfigurazione della sessione
Android 10 introduce una sessione facoltativa
la funzionalità di riconfigurazione delle query
migliorare le prestazioni grazie alle riconfigurazioni dei flussi interni derivanti
le modifiche dei valori dei parametri
possono ridurre le prestazioni. Per risolvere questo problema,
HIDL
ICameraDeviceSession
La versione 3.5 e successive supporta il
isReconfigurationRequired
, che fornisce un controllo granulare sul parametro della sessione interna
la logica di riconfigurazione. Con questo metodo, può avvenire la riconfigurazione dei flussi
esattamente quando è necessario.
Gli argomenti per isReconfigurationRequired
fornire le informazioni richieste su ogni parametro di sessione in attesa
della modifica, consentendo diversi tipi di personalizzazioni specifiche per dispositivo.
Questa funzionalità è implementata solo nel servizio videocamera e nell'HAL della fotocamera. Là non sono API rivolte al pubblico. Se questa funzionalità viene implementata, i client delle videocamere devono osservare miglioramenti delle prestazioni quando si lavora con i parametri di sessione.
Implementazione
Per supportare le query di riconfigurazione della sessione, devi implementare il metodo
isReconfigurationRequired
per verificare se è necessaria la riconfigurazione completa del flusso per i nuovi
i valori dei parametri di sessione.
Se il cliente modifica il valore di un parametro di sessione pubblicizzato, la fotocamera
chiama isReconfigurationRequired
. A seconda dei valori specifici, l'HAL decide se una completa
la riconfigurazione del flusso è obbligatoria. Se l'HAL restituisce false
, la videocamera
che ignora la riconfigurazione interna. Se l'HAL restituisce true
,
il framework riconfigura i flussi e passa i nuovi valori parametro della sessione
di conseguenza.
Il metodo isReconfigurationRequired
può essere chiamato dal framework un po' di tempo
prima che venga inviata all'HAL una richiesta con nuovi parametri e la richiesta
può essere annullato prima di essere inviato. Di conseguenza, l'HAL non deve utilizzare
per modificarne il comportamento in qualsiasi modo.
L'implementazione dell'HAL deve soddisfare i seguenti requisiti:
- Il framework deve essere in grado di chiamare il metodo
isReconfigurationRequired
in qualsiasi momento dopo la configurazione della sessione attiva. - Non deve esserci alcun impatto sulle prestazioni delle richieste di videocamera in attesa. Nella in particolare, non devono verificarsi problemi o ritardi durante la normale in modalità flusso.
L'implementazione del dispositivo e dell'HAL deve rispettare le seguenti prestazioni requisiti:
- Le impostazioni della videocamera hardware e software non devono essere modificate.
- Non deve esserci alcun impatto visibile all'utente sulle prestazioni della videocamera.
isReconfigurationRequired
accetta i seguenti argomenti:
oldSessionParams
: parametri della sessione della sessione precedente. Di solito i parametri di sessione esistenti.newSessionParams
: nuovi parametri di sessione impostati dal client.
I codici di stato del reso previsti sono:
OK
: riconfigurazione della query richiesta riuscita.METHOD_NOT_SUPPORTED
: la fotocamera non supporta della query di riconfigurazione.INTERNAL_ERROR
: la query di riconfigurazione non può essere completata a causa di un errore interno.
I valori restituiti sono:
true
: la riconfigurazione dello stream è obbligatoria.false
: la riconfigurazione dello stream non è necessaria.
Per ignorare una query di riconfigurazione della sessione, l'HAL restituisce
METHOD_NOT_SUPPORTED
o false
. Ciò determina il servizio di videocamera predefinito
comportamento in cui viene attivata la riconfigurazione dello stream su ogni parametro di sessione
modifica.
Convalida
La funzionalità di query di riconfigurazione della sessione può essere convalidata utilizzando il test VTS
caso nel
CameraHidlTest#configureStreamsWithSessionParameters