Configurazioni degli stream

Android include funzionalità che consentono ai client della videocamera di scegliere gli stream della videocamera ottimali per casi d'uso specifici e di garantire che determinate combinazioni di stream siano supportate dal dispositivo della 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 degli stream di configurazione consigliati e dell'API per eseguire query sulle funzionalità di combinazione di stream. 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.

Anche se StreamConfigurationMap fornisce informazioni esaustive sulla configurazione dello stream ai client della videocamera, non fornisce alcuna informazione sugli impatti in termini di efficienza, potenza o prestazioni 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 ciò porta clienti che utilizzano configurazioni di fotocamera e app non ottimali esaustive 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 simile, rendendo preferibili determinate dimensioni in termini di potenza e prestazioni.

Le mappe di configurazione degli stream consigliate non devono essere esaustive rispetto ai StreamConfigurationMap. Le mappe di configurazione suggerite devono rispettare i requisiti della sezione Implementazione e possono includere qualsiasi formato, dimensione o altro valore disponibile in StreamConfigurationMap. I formati, le dimensioni o altri valori nascosti non trovati in StreamConfigurationMap non possono essere inclusi nelle mappe di configurazione 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 attivare questa funzionalità, l'HAL della fotocamera deve compilare le seguenti voci statiche dei metadati:

  • android.scaler.availableRecommendedStreamConfigurations: il sottoinsieme consigliato di configurazioni di stream per casi d'uso specifici. La dichiarazione utilizza bitmap che indicano i casi d'uso suggeriti sotto forma di [1 << PREVIEW | 1 << RECORD..]. I casi d'uso estendono tupla regolare (formato, larghezza, altezza, input) con una voce aggiuntiva. I casi d'uso pubblici inesistenti o qualsiasi altro bit impostato nell'intervallo [PUBLIC_END, VENDOR_START] sono vietati.

    Queste informazioni vengono memorizzate nel tag metadati availableRecommendedStreamConfigurations.

    L'esempio seguente mostra un array per una configurazione di stream consigliata per una videocamera che supporta solo 4K e 1080p, dove entrambe le risoluzioni sono preferite per la registrazione video, ma solo 1080p è suggerita 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 Uno snapshot video deve includere configurazioni di stream almeno uguali alle risoluzioni RECORD massime e solo con la combinazione di formato/spazio dati BLOB + DATASPACE_JFIF (JPEG). Le configurazioni non devono causare glitch nell'anteprima e devono essere in grado di funzionare a 30 fps.
SNAPSHOT Le configurazioni degli stream di istantanee devono includere almeno una con dimensioni vicine a android.sensor.info.activeArraySize con la combinazione di formato/spazio dati BLOB + 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 dimensioni 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 della videocamera, le configurazioni consigliate per lo streaming RAW deve includere solo formati di output basati su RAW.

Altri casi d'uso

Puoi fornire stream di configurazione consigliati aggiuntivi per casi d'uso specifici della tua implementazione.

Convalida

Per testare l'implementazione degli stream di configurazione consigliati, esegui i 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 sulle combinazioni di funzionalità. 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à come 4K, 60 FPS, video HDR, UltraHDR, zoom ultrawide e stabilizzazione come controlli ortogonali.

Requisiti

Per supportare l'API per eseguire query sulle combinazioni di funzionalità, l'HAL della fotocamera deve implementare la 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 un dispositivo con fotocamera che supporta la stabilizzazione dell'anteprima, il valore restituito di isStreamCombinationWithSettingsSupported per una determinata combinazione deve essere lo stesso quando la stabilizzazione dell'anteprima è attiva o disattivata. In questo modo, lo spazio di ricerca per le query di combinazione di funzionalità viene ridotto.

Inoltre, per la classe di prestazioni multimediali 15, la fotocamera posteriore principale deve supportare la stabilizzazione dell'anteprima con anteprima HLG10 a 10 bit per l'anteprima 1080p e 720p e JPEG di dimensioni massime. Per ulteriori dettagli su questi requisiti, consulta la 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 funzionalità sottoposte a query dall'API, consulta la documentazione su sessionConfigurationQueryVersion in system/media/camera/docs/metadata_definitions.xml.

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

API pubbliche

Le app possono utilizzare le seguenti API pubbliche per eseguire query sulle 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 le query di combinazione di funzionalità se questo valore è uguale o superiore a VANILLA_ICE_CREAM.

  • OutputConfiguration: una classe che descrive l'output della videocamera, che può contenere una superficie differita ai fini delle query di combinazione di funzionalità a bassa latenza.

  • SessionConfiguration: una classe di utilità che descrive la configurazione della sessione, tra cui le combinazioni di stream e i parametri della sessione, che possono essere utilizzati per le query di combinazione di funzionalità.

Convalida

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

VTS

CTS

ITS della fotocamera