Configurazioni di stream

Android include funzionalità che consentono i client della fotocamera per scegliere la videocamera ottimale per casi d'uso specifici e per garantire che determinate combinazioni di stream sono supportati dalla videocamera. Una configurazione dello stream fa riferimento a una singola lo stream della videocamera configurato nel dispositivo con videocamera e si riferisce a una combinazione di stream a uno o più insiemi di stream configurati nel dispositivo videocamera. Per ulteriori informazioni su queste funzioni, vedi le configurazioni degli stream consigliate e API per eseguire query su combinazioni di funzionalità.

Implementazione dei riferimenti

Esiste un'implementazione di riferimento lato fornitore della configurazione consigliata e l'API per eseguire query sulle funzionalità di combinazione dei flussi. Puoi trovare questo dell'implementazione QCamera3HWI.cpp

I fornitori di videocamere possono pubblicizzare le configurazioni di streaming consigliate per un uso specifico di assistenza ai client delle videocamere. Queste configurazioni consigliate per i flussi di dati, sottoinsiemi di StreamConfigurationMap, può aiutare i clienti delle videocamere a scegliere le configurazioni ottimali.

Sebbene StreamConfigurationMap fornisce informazioni esaustive sulla configurazione dello stream ai client videocamera, Non fornisce informazioni sull'efficienza, sulla potenza o sulle prestazioni l'impatto della scelta di uno stream rispetto a un altro. I clienti della fotocamera possono scegliere liberamente da tutte le possibili configurazioni di stream, ma in molti casi questo porta a clienti che utilizzano configurazioni di fotocamera e app non ottimali e dispendiose in termini di tempo.

Ad esempio, anche se alcuni formati YUV elaborati sono richiesti e devono essere supportati, la videocamera potrebbe non supportare in modo nativo i formati. Questo comporta un ulteriore passaggio di elaborazione per la conversione del formato e riduce efficienza operativa. Anche le dimensioni e le proporzioni corrispondenti possono avere un impatto rendere determinate dimensioni preferibili in termini di potenza e delle prestazioni.

Le mappe di configurazione degli stream consigliate non devono essere esaustive rispetto ai StreamConfigurationMap. Le mappe di configurazione suggerite devono seguire i requisiti della implementazione e può includere uno qualsiasi dei i formati, le dimensioni o altri valori disponibili in StreamConfigurationMap. Formati, dimensioni o altri valori nascosti non trovati in StreamConfigurationMap non possono essere incluse nelle mappe di configurazione degli stream consigliate.

Tutti i test rimangono invariati e non sono flessibili a seconda del test consigliato configurazioni dei flussi di dati.

Le configurazioni di streaming consigliate fornite dall'implementazione della videocamera sono facoltativi e il client della videocamera può ignorarli.

Implementazione

Per implementare questa funzionalità, segui questi passaggi.

Voci di metadati

Per abilitare questa funzionalità, la videocamera HAL deve compilare il seguente voci di metadati:

  • android.scaler.availableRecommendedStreamConfigurations: il sottoinsieme consigliato di configurazioni degli stream per casi d'uso specifici. La utilizza bitmap che indicano i casi d'uso suggeriti in sotto forma di [1 << PREVIEW | 1 << RECORD..]. I casi d'uso estendono tupla regolare (formato, larghezza, altezza, input) con una voce aggiuntiva. Casi d'uso pubblici non esistenti o altri bit impostati all'interno dell'intervallo [PUBLIC_END, VENDOR_START] è vietato.

    Queste informazioni vengono memorizzate availableRecommendedStreamConfigurations dei metadati.

    L'esempio seguente mostra un array per uno stream consigliato configurazione per un dispositivo videocamera che supporta solo 4K e 1080p, Entrambe le risoluzioni sono preferite per la registrazione video, ma solo 1080p suggeriti per l'anteprima.

    [3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT),
    1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
    
  • android.depth.availableRecommendedDepthStreamConfigurations (disponibile solo se supportato dal dispositivo): lo spazio dati di profondità consigliato configurazioni di streaming suggerite per questo dispositivo videocamera. Simile al sopra la voce dei metadati, una bitmap aggiuntiva del caso d'uso indica e casi d'uso specifici.

    Queste informazioni vengono memorizzate availableRecommendedInputOutputFormatsMap dei metadati.

  • android.scaler.availableRecommendedInputOutputFormatsMap (disponibile solo se supportata dal dispositivo): la mappatura dei formati delle immagini consigliati che vengono consigliati per questo dispositivo videocamera per gli stream di input, formati di output corrispondenti.

    Queste informazioni vengono memorizzate availableRecommendedDepthStreamConfigurations dei metadati.

Queste informazioni sono disponibili per i client che utilizzano le videocamere tramite recommendedStreamConfigurationMap tramite Google Cloud CLI o tramite l'API Compute Engine.

Casi d'uso obbligatori

È necessario fornire le configurazioni di flussi consigliate per i seguenti casi d'uso e soddisfare i requisiti corrispondenti:

Caso d'uso Requisito
PREVIEW Un'anteprima deve includere solo configurazioni di flussi elaborati senza stallo con formati di output come YUV_420_888 e IMPLEMENTATION_DEFINED.
RECORD Un record video deve includere configurazioni di streaming corrispondenti al contenuto pubblicizzato profili multimediali supportati nel formato IMPLEMENTATION_DEFINED.
VIDEO_SNAPSHOT Un'istantanea video deve includere configurazioni di stream almeno pari a grandi come le risoluzioni massime RECORD e solo con il BLOB + Combinazione formato/spazio dati DATASPACE_JFIF (JPEG). Le configurazioni non dovrebbe causare problemi di anteprima e dovrebbe funzionare a 30 fps.
SNAPSHOT Le configurazioni di stream di snapshot devono includerne almeno una con una dimensione chiusa a android.sensor.info.activeArraySize con il BLOB + Combinazione formato/spazio dati DATASPACE_JFIF (JPEG). Presa in considerazione a restrizioni su proporzioni, allineamento e ad altre limitazioni specifiche del fornitore. l'area della dimensione massima suggerita non deve essere inferiore al 97% del sensore dell'array.
ZSL (se supportato) Se supportate dal dispositivo videocamera, le configurazioni consigliate per lo stream di input devono essere pubblicizzati solo insieme ad altri output elaborati o in stallo formati.
RAW (se supportato) Se supportate dal dispositivo videocamera, le configurazioni consigliate per lo streaming RAW deve includere solo formati di output basati su RAW.

Altri casi d'uso

Puoi fornire ulteriori flussi di configurazione consigliati per i casi d'uso specifici per la tua implementazione.

Convalida

Per testare l'implementazione dei flussi di configurazione consigliati, esegui il comando seguenti test CTS e VTS:

API per eseguire query su combinazioni di caratteristiche

A partire da Android 15, la piattaforma Android fornisce un'API per eseguire query su combinazioni di caratteristiche. Questa API consente ai client della videocamera di interrogare se una specifica combinazione di funzionalità possa essere supportata dal dispositivo. Questa API è necessaria perché l'API camera2 modella diverse funzionalità, ad esempio 4K, 60 f/s, Video HDR, UltraHDR, zoom ultrawide e stabilizzazione come controlli ortogonali.

Requisiti

Per supportare l'API per eseguire query su combinazioni di funzionalità, l'HAL della videocamera deve implementare versione 3 dell'interfaccia ICameraDevice. Per maggiori dettagli, consulta Implementazione.

Se l'API è supportata, la stabilizzazione dell'anteprima deve essere ortogonale a altre funzionalità. Ciò significa che, per una fotocamera che supporta l'anteprima stabilizzazione, il valore restituito di isStreamCombinationWithSettingsSupported per una determinata combinazione deve essere lo stesso valore in fase di stabilizzazione dell'anteprima sia attivato o disattivato. In questo modo si riduce lo spazio di ricerca per le query di combinazioni di caratteristiche.

Inoltre, per la classe di prestazioni sui media 15, la fotocamera posteriore principale deve supporta la stabilizzazione dell'anteprima con anteprima HLG10 a 10 bit per 1080p e 720p anteprima e dimensioni massime dei file JPEG. Per ulteriori dettagli su questi requisiti, consulta sezione 2.2.7.2. Fotocamera del CDD.

Implementazione

Per supportare l'API per eseguire query su combinazioni di funzionalità, implementa quanto segue le API per le query basate su combinazione di funzionalità nella versione 3 di ICameraDevice:

Per le versioni precedenti alla 3 dell'interfaccia ICameraDevice, l'HAL dovrebbe implementare isStreamCombinationSupported .

Per ulteriori informazioni sulle combinazioni di caratteristiche richieste dall'API, consulta documentazione su sessionConfigurationQueryVersion in system/media/camera/docs/metadata_definitions.xml

Per un'implementazione di riferimento di questa funzione, consulta hardware/google/camera/devices/EmulatedCamera/hwl/

API pubbliche

Le app possono usare le seguenti API pubbliche per eseguire query su combinazioni di funzionalità supportate per il dispositivo:

  • CameraDevice.CameraDeviceSetup: Una rappresentazione limitata di CameraDevice che può essere utilizzata per eseguire query sulla caratteristica senza richiedere un'istanza CameraDevice.

  • getCameraDeviceSetup: Acquisisce un oggetto CameraDeviceSetup per un determinato ID fotocamera se isCameraDeviceSetupSupported restituisce true.

  • INFO_SESSION_CONFIGURATION_QUERY_VERSION: Supporta query di combinazioni di caratteristiche se questo valore è VANILLA_ICE_CREAM o superiore.

  • OutputConfiguration: Una classe che descrive l'output della fotocamera, che può contenere una superficie differita per allo scopo di query di combinazione di caratteristiche a bassa latenza.

  • SessionConfiguration: Una classe di utilità che descrive la configurazione della sessione, incluso lo streaming e parametri di sessione, utilizzabili per le caratteristiche di parole chiave combinate.

Convalida

Per convalidare l'implementazione di questa funzionalità, utilizza i seguenti VTS, CTS e Test ITS (CTS Verifier) della fotocamera:

VTT

CTS

Videocamera ITS