Parametri sessione

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:

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