Questa pagina contiene informazioni dettagliate sulle differenze di versione in HAL per le videocamere, API e modelli associati Test della Compatibility Test Suite (CTS). Riguarda anche diversi modifiche all'architettura apportate per rafforzare e proteggere il framework della fotocamera in Android 7.0, il passaggio a Treble in Android 8.0 e gli aggiornamenti che i fornitori devono effettuare per supportare queste modifiche nell'implementazione delle fotocamere.
Terminologia
In questa pagina vengono utilizzati i seguenti termini:
- API Fotocamera1
- Framework della fotocamera a livello di app su dispositivi Android 4.4 e versioni precedenti, esposto
tramite la classe
android.hardware.Camera
. - API2 della fotocamera
- Framework della fotocamera a livello di app su dispositivi Android 5.0 e versioni successive, esposto
tramite il pacchetto
android.hardware.camera2
. - Videocamera HAL
- Il livello del modulo della videocamera implementato dai fornitori di SoC. Il pubblico a livello di app basati sull'HAL della fotocamera.
- Fotocamera HAL3.1
- Versione della fotocamera HAL rilasciata con Android 4.4.
- Videocamera HAL3.2
- Versione della fotocamera HAL rilasciata con Android 5.0.
- CTS API1 fotocamera
- Set di test CTS della fotocamera eseguiti sulla parte superiore della videocamera API1.
- CTS API2 fotocamera
- Set aggiuntivo di test CTS della fotocamera eseguito in base all'API Camera2.
- Alti
- Separa l'implementazione del fornitore (software di livello inferiore, specifico per dispositivo creati da produttori di silicio) dal framework del sistema operativo Android tramite una nuova l'interfaccia del fornitore.
- HIDL
- Lingua di definizione dell'interfaccia HAL introdotto con Treble e utilizzato per specificare l'interfaccia tra HAL e e i relativi utenti.
- VTT
- Suite di test del fornitore introdotta insieme Alti.
API Camera
Android include le seguenti API della fotocamera.
API Fotocamera1
Android 5.0 ha deprecato l'API Camera 1, che continua a essere gradualmente eliminata lo sviluppo della piattaforma è incentrato sull'API Camera2. Tuttavia, il periodo di eliminazione graduale potrebbero essere lunghi e le release Android continueranno a supportare le app Fotocamera API1 per per un po' di tempo. Nello specifico, il supporto continua per:
- Interfacce dell'API Camera1 per le app. App Fotocamera basate sulla fotocamera L'API1 dovrebbe funzionare come sui dispositivi con versioni di release di Android precedenti.
- Versioni HAL per fotocamera. Include il supporto per la fotocamera HAL1.0.
API2 della fotocamera
Il framework Camera API2 espone all'app il controllo della fotocamera di livello inferiore, che includono flussi burst/streaming zero-copy efficienti e controlli per frame di esposizione, guadagno, guadagni del bilanciamento del bianco, conversione del colore, riduzione del rumore, nitidezza, e altro ancora. Per maggiori dettagli, guarda il Panoramica video di Google I/O.
Android 5.0 e versioni successive include Camera API2; mentre i dispositivi con Android
Le versioni 5.0 e successive potrebbero non supportare tutte le funzionalità dell'API Camera 2. La
android.info.supportedHardwareLevel
proprietà su cui le app possono eseguire query
tramite l'interfaccia dell'API Camera segnala uno dei seguenti
livelli:
LEGACY
: questi dispositivi espongono funzionalità alle app tramite Interfacce API2 della fotocamera che hanno all'incirca le stesse funzionalità di quelle esposte alle app tramite le interfacce dell'API Camera1. Il codice dei framework legacy traduce concettualmente le chiamate API2 di Camera in chiamate API1 di Camera; dispositivi legacy non supportano le funzionalità API2 della fotocamera, come i controlli per frame.LIMITED
: questi dispositivi supportano alcune funzionalità dell'API Camera2 (ma non tutte) e la videocamera deve utilizzare HAL 3.2 o versioni successive.FULL
: questi dispositivi supportano tutte le principali funzionalità dei Fotocamera API2 e deve utilizzare Fotocamera HAL 3.2 o versioni successive e Android 5.0 o versioni successive.LEVEL_3
: questi dispositivi supportano la rielaborazione YUV e le immagini RAW acquisizioni, insieme a ulteriori configurazioni degli stream di output.EXTERNAL
: questi dispositivi sono simili aLIMITED
dispositivi con alcune eccezioni; ad esempio, alcune informazioni dei sensori non essere riportati o hanno frequenze fotogrammi meno stabili. Questo livello viene utilizzato per come le webcam USB.
Le capacità individuali sono esposte attraverso
Proprietà android.request.availableCapabilities
nell'API Camera2
interfacce. FULL
dispositivi richiedono MANUAL_SENSOR
e
MANUAL_POST_PROCESSING
, tra le altre. La
La funzionalità RAW
è facoltativa anche per i dispositivi FULL
.
LIMITED
dispositivi possono pubblicizzare un sottoinsieme di queste funzionalità,
incluso nessuno di questi. Tuttavia, la funzionalità BACKWARD_COMPATIBLE
devono essere sempre definiti.
Il livello hardware supportato del dispositivo e la videocamera specifica le funzionalità API2 che supporta, sono disponibili con i seguenti flag di funzionalità consenti il filtro di Google Play delle app fotocamera API2 della fotocamera.
android.hardware.camera.hardware_level.full
android.hardware.camera.capability.raw
android.hardware.camera.capability.manual_sensor
android.hardware.camera.capability.manual_post_processing
Requisiti CTS
I dispositivi con Android 5.0 e versioni successive devono superare l'API Camera 1 CTS, Fotocamera Test delle videocamere API2 CTS e CTS Verifier.
Dispositivi sprovvisti di implementazione della fotocamera HAL3.2
in grado di supportare l'intera interfaccia API2 della fotocamera, deve superare
Test CTS su API2. Tuttavia, il dispositivo funziona nell'API Camera2
Modalità LEGACY
(in cui le chiamate API2 di Camera vengono concettualmente mappate
alle chiamate API1 di Camera), quindi tutti i test CTS di Camera API2 relativi a funzionalità o
funzionalità che vanno oltre l'API Camera1 vengono ignorate automaticamente.
Sui dispositivi legacy, i test CTS API2 della fotocamera che vengono eseguiti utilizzano interfacce e funzionalità esistenti dell'API Camera pubblica senza nuove i tuoi requisiti. Bug esposti (e che causano un errore CTS dell'API2 della videocamera) sono presenti bug già presenti nell'HAL della fotocamera esistente del dispositivo, quindi Essere trovato dalle app Camera API1 esistenti. Non ci aspettiamo molti insetti di questa natura (tuttavia, eventuali bug di questo tipo devono essere risolti per superare i test CTS dell'API Camera).
Requisiti VTS
I dispositivi con Android 8.0 e versioni successive con implementazioni HAL binderizzate devono passa la fotocamera Test VTS.
Rafforzamento del framework della fotocamera
Per rafforzare la sicurezza del framework dei contenuti multimediali e della fotocamera, Android 7.0 sposta la fotocamera da mediaserver. A partire da Android 8.0, ogni videocamera vincolata L'HAL viene eseguito in un processo separato dal servizio fotocamera. I fornitori potrebbero dover cambiamenti nell'HAL della fotocamera a seconda della versione API e HAL in uso. La le seguenti sezioni descrivono nel dettaglio le modifiche all'architettura in AP1 e AP2 per HAL1 e HAL3 e requisiti generali.
Modifiche all'architettura per API1
La registrazione video API1 può presupporre che la videocamera e il codificatore video siano in diretta nello stesso e il processo di sviluppo. Quando si utilizza API1 su:
- HAL3, in cui il servizio videocamera utilizza BufferQueue per passare i buffer tra processi, non è necessario alcun aggiornamento del fornitore.
- HAL1, che supporta il passaggio dei metadati nei buffer video, i fornitori devono
aggiorna l'HAL per utilizzare
kMetadataBufferTypeNativeHandleSource
. (kMetadataBufferTypeCameraSource
non è più supportato su Android 7,0.
Modifiche all'architettura per API2
Per API2 su HAL1 o HAL3, BufferQueue passa i buffer in modo che i percorsi continuino al lavoro. L'architettura Android 7.0 per API2 su:
- L'HAL1 non è interessato dallo spostamento del servizio camera e nessun fornitore aggiornamento.
- L'HAL3 è interessato, ma non è previsto alcun aggiornamento del fornitore necessario:
Requisiti aggiuntivi
Le modifiche all'architettura apportate per la protezione avanzata dei contenuti multimediali e della fotocamera di sicurezza includono i seguenti requisiti aggiuntivi per i dispositivi.
- Disposizioni generali. I dispositivi richiedono larghezza di banda aggiuntiva a causa dell'IPC,
il che potrebbe interessare i casi d'uso delle videocamere sensibili al tempo, come i video ad alta velocità
registrazione in tempo reale. I fornitori possono misurare l'impatto effettivo eseguendo
android.hardware.camera2.cts.PerformanceTest
e Google Fotocamera per la registrazione di video ad alta velocità a 120/240 f/s. I dispositivi richiedono anche una piccola quantità di RAM aggiuntiva per creare il nuovo processo. - Passaggio dei metadati nei buffer video (solo HAL1). Se HAL1
memorizza metadati invece di dati di frame YUV reali nei buffer video, l'HAL deve
usa
kMetadataBufferTypeNativeHandleSource
come buffer dei metadati digita e trasmetteVideoNativeHandleMetadata
nei buffer video. (kMetadataBufferTypeCameraSource
non è più supportato su Android 7,0. ConVideoNativeHandleMetadata
, framework multimediali e fotocamera sono in grado di passare i buffer video tra i processi serializzando deserializzare correttamente gli handle nativi. - L'indirizzo dell'handle del buffer non sempre memorizza lo stesso buffer (solo HAL3). Per ogni richiesta di acquisizione, HAL3 ottiene gli indirizzi del buffer handle. L'HAL non può utilizzare gli indirizzi per identificare i buffer perché gli indirizzi può memorizzare un altro handle del buffer dopo che HAL ha restituito il buffer. Devi aggiornare l'HAL per utilizzare gli handle del buffer per identificare i buffer. Ad esempio, HAL riceve un handle del buffer indirizzo A, che memorizza l'handle A del buffer. Dopo il ritorno dell'HAL l'handle A del buffer, l'indirizzo A dell'handle del buffer potrebbe memorizzare l'handle B del buffer la prossima volta HAL la riceve.
- Aggiorna i criteri SELinux per cameraserver. Se i criteri SELinux specifici per dispositivo concedono autorizzazioni a mediaserver per eseguire la fotocamera, devi aggiornare i criteri SELinux per concedere a cameraserver le autorizzazioni appropriate. Me scoraggia la replica dei criteri SELinux di mediaserver per cameraserver (poiché mediaserver e cameraserver richiedono generalmente risorse diverse nello di sistema). Cameraserver deve avere solo le autorizzazioni necessarie per eseguire la videocamera funzionalità ed eventuali autorizzazioni non necessarie correlate alla fotocamera in mediaserver devono essere rimossi.
- Separazione tra Camera HAL e cameraserver. Android 8.0 e versioni successive separano inoltre la HAL della fotocamera rilegata in un processo diverso da cameraserver. IPC passa attraverso Interfacce definite HIDL.
Convalida
Per tutti i dispositivi che includono una fotocamera e eseguono Android 7.0, verifica con Android 7.0 CTS. Sebbene Android 7.0 non includa nuovi test CTS che verificano le modifiche al servizio delle videocamere, i test CTS esistenti non hanno esito positivo se non hai apportato gli aggiornamenti indicati sopra.
Per tutti i dispositivi che includono una fotocamera e con Android 8.0 e versioni successive, verifica l'implementazione del fornitore eseguendo VTS.
Cronologia delle versioni HAL della videocamera
Per un elenco dei test disponibili per valutare la fotocamera Android HAL, consulta la Test dell'HAL della fotocamera elenco di controllo.
Android 10
Android 10 introduce i seguenti aggiornamenti.
API Camera
- Miglioramenti della modalità multicamera che consentono alle fotocamere fisiche di da usare singolarmente o tramite telecamere logiche corrispondenti nascondendo ID fotocamera fisici. Consulta Supporto multi-fotocamera.
- Possibilità di verificare se una particolare configurazione di sessione è
supportate senza l'overhead delle prestazioni associato alla creazione di una nuova sessione.
Consulta
CameraDevice
- Possibilità di recuperare le configurazioni di flussi consigliate per un determinato utilizzo
per rendere il cliente più efficiente e performante. Consulta
getRecommendedStreamConfigurationMap
- Il supporto per formato immagine JPEG con profondità. Per ulteriori dettagli, consulta Specifica Profondità dinamica.
- Il supporto per Formato dell'immagine HEIC. Consulta Immagini HEIF.
- Miglioramenti alla privacy. Per il client sono necessarie alcune chiavi
per avere
CAMERA
autorizzazioni prima che possano essere recuperate daCameraCharacteristics
. ConsultagetKeysNeedingPermission
.
Videocamera HAL
Le seguenti versioni di Fotocamera HAL sono aggiornate in Android 10:
3,50
ICameraDevice
-
getPhysicalCameraCharacteristics
: Le informazioni statiche relative alla fotocamera per un ID fotocamera fisico a supporto di una logica videocamera. Consulta Supporto multi-fotocamera. isStreamCombinationSupported
: questo metodo supporta un'istanza API che aiuta i clienti a eseguire query se è supportata una configurazione di sessione. Vedi API per eseguire query su combinazioni di flussi di dati.
ICameraDeviceSession
-
isReconfigurationNeeded
: Metodo che indica al framework della videocamera se lo streaming completo è necessaria una riconfigurazione per eventuali nuovi valori parametro di sessione. Questo per evitare inutili ritardi nella riconfigurazione della videocamera. Consulta Query di riconfigurazione della sessione. - HAL
API di gestione del buffer: queste API consentono all'HAL della fotocamera di richiedere
buffer dal framework della fotocamera solo quando necessario, invece di accoppiare ciascun
di acquisire una richiesta di acquisizione con i buffer associati lungo la pipeline della fotocamera,
con un risparmio di memoria potenzialmente significativo.
-
signalStreamFlush
: segnala all'HAL che la videocamera che il servizio sta per eseguireconfigureStreams_3_5
e che l'HAL deve restituire tutti i buffer dei flussi designati. -
configureStreams_3_5
: simile aICameraDevice3.4.configureStreams
, ma in inoltre, il contatorestreamConfigCounter
viene fornito verifica la presenza di una condizione di gara traconfigureStreams_3_5
esignalStreamFlush
chiamate.
-
Aggiornamenti a ICameraDeviceCallback
:
-
requestStreamBuffers
: Callback sincrono che l'HAL della videocamera chiama per chiedere al server della videocamera buffer. ConsultarequestStreamBuffers
. -
returnStreamBuffers
: Callback sincrono per l'HAL della videocamera per restituire i buffer di output alla della videocamera. ConsultareturnStreamBuffers
.
3,40
Le chiavi che seguono vengono aggiunte ai metadati della fotocamera in Android 10:
- Formati dell'immagine
ANDROID_SCALER_AVAILABLE_FORMATS_RAW10
ANDROID_SCALER_AVAILABLE_FORMATS_RAW12
ANDROID_SCALER_AVAILABLE_FORMATS_Y8
- Tag dei metadati della videocamera
ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION
ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS
ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP
ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION
ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS
ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS
ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS
ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS
ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS
ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS
ANDROID_HEIC_INFO_SUPPORTED
ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
- Funzionalità
-
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA
-
- Valori per
ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT
chiaveANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO
ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR
- Configurazioni di stream di profondità dinamica disponibili
ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT
ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT
- Configurazioni di stream HEIC disponibili
-
ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT
ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT
-
Modulo Fotocamera
Le seguenti versioni del modulo della fotocamera sono aggiornate in Android 10:
2,50
- Aggiunge il metodo
notifyDeviceStateChange
per consentire ai dispositivi di inviare notifiche l'HAL della fotocamera quando cambiamenti fisici, ad esempio la piegatura, influiscono sulla il routing.
2,40
- I dispositivi che vengono lanciati con livello API 29 o superiore DEVONO segnalare
true
perisTorchModeSupported
.
Android 9
La release Android 9 introduce i seguenti aggiornamenti all'API Camera2 e dell'HAL.
API Camera
- Introduce l'API multi-camera per supportare meglio i dispositivi con di fotocamere rivolte nella stessa direzione, abilitando funzionalità quali bokeh e senza interruzioni. In questo modo le app possono visualizzare più videocamere su un dispositivo come una sola unità logica (fotocamera logica). Le richieste di acquisizione possono essere inviate anche a singoli con una singola fotocamera logica. Consulta Supporto multi-fotocamera.
- Introduce i parametri di sessione. I parametri di sessione sono un sottoinsieme dei i parametri di acquisizione disponibili che possono causare gravi ritardi di elaborazione quando modificato. Questi costi possono essere mitigati se i clienti trasmettono i loro valori iniziali durante l'inizializzazione della sessione di acquisizione. Consulta Parametri sessione.
- Aggiunge chiavi di dati di stabilizzazione ottica (OIS) per la stabilizzazione a livello di app e
e gli effetti sonori. Consulta
STATISTICS_OIS_SAMPLES
. - Aggiunge il supporto flash esterno. Consulta
CONTROL_AE_MODE_ON_EXTERNAL_FLASH
. - Aggiunge un intent di rilevamento del movimento in
CAPTURE_INTENT
. ConsultaCONTROL_CAPTURE_INTENT_MOTION_TRACKING
. - Ritira
LENS_RADIAL_DISTORTION
e aggiungeLENS_DISTORTION
al suo posto. - Aggiunge modalità di correzione delle distorsioni in
CaptureRequest
. ConsultaDISTORTION_CORRECTION_MODE
. - Aggiunge il supporto per le videocamere USB/UVC esterne sui dispositivi supportati. Consulta
INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL
.
Videocamera HAL
3,40
Aggiornamenti a ICameraDeviceSession
-
configureStreams_3_4
: Aggiunge il supporto persessionParameters
e le fotocamere logiche. -
processCaptureRequest_3_4
: Aggiunge il supporto dell'inclusione di ID videocamera fisici nella struttura dello stream.
Aggiornamenti a ICameraDeviceCallback
-
processCaptureResult_3_4
: Aggiunge metadati fisici della fotocamera nei risultati dell'acquisizione.
3,30
Le chiavi che seguono vengono aggiunte ai metadati della fotocamera in Android 9.
- Funzionalità
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME
- Tag dei metadati della videocamera
ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS
ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES
ANDROID_LENS_POSE_REFERENCE
-
ANDROID_LENS_DISTORTION
ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS
ANDROID_STATISTICS_OIS_DATA_MODE
ANDROID_STATISTICS_OIS_TIMESTAMPS
ANDROID_STATISTICS_OIS_X_SHIFTS
ANDROID_STATISTICS_OIS_Y_SHIFTS
Android 8.0
La release Android 8.0 introduce Treble. Con Treble, fotocamera HAL del fornitore le implementazioni devono essere binderizzati. Anche Android 8.0 contiene i seguenti miglioramenti principali al servizio Fotocamera:
- Piattaforme condivise: attiva la condivisione dello stesso su più piattaforme
OutputConfiguration
- API di sistema per modalità fotocamera personalizzate
onCaptureQueueEmpty
Per ulteriori informazioni su queste funzionalità, vedi le sezioni seguenti.
Piattaforme condivise
Questa funzionalità consente a un solo set di buffer di pilotare due output, come anteprima e codifica video, con conseguente riduzione del consumo energetico e della memoria. A supportano questa funzione, i produttori devono assicurarsi che la fotocamera HAL e Le implementazioni dell'HAL Gralloc possono creare buffer Gralloc utilizzati diversi consumatori (ad esempio compositore hardware/GPU e l'encoder), anziché un solo consumer. Il servizio di videocamera supera l'utilizzo da parte dei consumatori segnala alla fotocamera HAL e al gralloc HAL; devono allocare i tipi di buffer corretti oppure l'HAL della fotocamera deve restituire un errore che questa combinazione di consumatori non è supportata.
Consulta
enableSurfaceSharing
documentazione per gli sviluppatori
per ulteriori dettagli.
API di sistema per modalità fotocamera personalizzate
L'API della fotocamera pubblica definisce due modalità operative: normale e vincolata
registrazione ad alta velocità. Hanno una semantica piuttosto diversa; ad esempio
la modalità ad alta velocità è limitata a un massimo di due uscite specifiche alla volta. Vari
Gli OEM hanno espresso interesse nella definizione di altre modalità personalizzate per
specifiche per l'hardware. dietro le quinte, la modalità è solo un numero intero
passato a configure_streams
. Consulta:
hardware/camera/device/3.2/ICameraDeviceSession#configurestreams
.
Questa funzionalità include una chiamata API di sistema che le app della fotocamera OEM possono utilizzare per attivare un personalizzata. Queste modalità devono iniziare da un valore intero 0x8000 per evitare conflitti con modalità future aggiunte all'API pubblica.
Per supportare questa funzionalità, gli OEM devono solo aggiungere la nuova modalità all'HAL, attivata da questo numero intero passato all'HAL su configure_streams e quindi la loro app per la videocamera personalizzata usa l'API di sistema.
Il nome del metodo è
android.hardware.camera2.CameraDevice#createCustomCaptureSession
.
Consulta:
frameworks/base/core/java/android/hardware/camera2/CameraDevice
.
onAcquisisci dalla codaVuota
Lo scopo di questa API è ridurre la latenza delle modifiche di controllo come lo zoom
mantenendo la coda di richieste il più vuota possibile. onCaptureQueueEmpty
non richiede alcuna operazione HAL; era solo un'aggiunta lato framework. App che
Se vuoi approfittarne, devi aggiungere un ascoltatore al callback e rispondere
in modo appropriato. di solito l'invio di un'altra richiesta di acquisizione alla fotocamera
dispositivo.
Interfaccia HIDL della fotocamera
L'interfaccia di Camera HIDL è una revisione completa dell'interfaccia di Camera HAL che utilizza API stabili definite da HIDL. Tutte le funzionalità e le caratteristiche della fotocamera Presente nelle più recenti versioni legacy 3.4 e 2.4 (per le videocamere (modulo HIDL) sono anch'essi parte delle definizioni HIDL.
3.4
Aggiunte di minore entità ai metadati supportati e modifiche al supporto di data_space:
- Aggiungi i metadati statici
ANDROID_SENSOR_OPAQUE_RAW_SIZE
come obbligatori se il formatoRAW_OPAQUE
è supportato. - Aggiungi
ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
statico come obbligatori se è supportato qualsiasi formato RAW. - Passa a un campo
camera3_stream_t data_space
più flessibile utilizzando la definizione della versione 0 della codifica dello spazio dei dati. - Aggiunte di metadati generali disponibili per l'utilizzo per HALv3.2 o versioni successive:
-
ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3
ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST
ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL
ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL
ANDROID_SENSOR_OPAQUE_RAW_SIZE
ANDROID_SENSOR_OPTICAL_BLACK_REGIONS
-
3.3
Revisione secondaria dell'HAL con funzionalità espansa:
- Aggiornamenti delle API di rielaborazione OPAQUE e YUV.
- Supporto di base per buffer di output di profondità.
- Aggiunta del campo
data_space
acamera3_stream_t
. - È stato aggiunto il campo di rotazione a
camera3_stream_t
. - È stata aggiunta la modalità operativa della configurazione dello stream di camera3 a
camera3_stream_configuration_t
.
3.2
Revisione secondaria dell'HAL con funzionalità espansa:
- Ritira
get_metadata_vendor_tag_ops
. Utilizza le funzionalità diget_vendor_tag_ops
incamera_common.h
. - Ritira
register_stream_buffers
. Tutti i buffer Gralloc forniti dal framework all'HAL inprocess_capture_request
, potrebbero essere nuovi in qualsiasi momento. - Aggiungi un supporto per i risultati parziali.
process_capture_result
potrebbe essere viene richiamata più volte con un sottoinsieme dei risultati disponibili prima della se il risultato è disponibile. - Aggiungi modello manuale a
camera3_request_template
. App puoi utilizzare questo modello per controllare direttamente le impostazioni di acquisizione. - Rielabora le specifiche del flusso di input e bidirezionale.
- Modifica il percorso di ritorno del buffer di input. Il buffer viene restituito
process_capture_result
anzichéprocess_capture_request
.
3.1
Revisione secondaria dell'HAL con funzionalità espansa:
configure_streams
passa i flag di utilizzo dei consumatori all'HAL.- di flush per eliminare tutte le richieste/buffer in corso il più velocemente possibile.
3,0
Prima revisione dell'HAL con funzionalità espansa:
- Grande modifica della versione poiché l'ABI è completamente diversa. Nessuna modifica al le funzionalità hardware o il modello operativo richiesti a partire dalla versione 2.0.
- Interfacce per coda di flusso e richiesta di input rielaborate: chiamate framework in HAL con la prossima richiesta e i buffer di flusso già eliminati in coda. Supporto del framework di sincronizzazione ed è necessario per un'implementazione efficiente.
- Spostamento degli attivatori nelle richieste e della maggior parte delle notifiche nei risultati.
- Consolidamento di tutti i callback in un framework in un'unica struttura e configurazione
in una singola chiamata
initialize()
. - Trasformazione della configurazione degli stream in una singola chiamata per semplificarne la gestione.
Gli stream bidirezionali sostituiscono
STREAM_FROM_STREAM
costrutto. - semantica in modalità limitata per dispositivi hardware meno recenti/limitati.
2,0
Rilascio iniziale dell'HAL con funzionalità estesa (Android 4.2) [camera2.h]:
- Sufficiente per implementare le
android.hardware.Camera
esistenti tramite Google Cloud CLI o tramite l'API Compute Engine. - Consente la coda ZSL nel livello di servizio fotocamera.
- Non testato per nessuna nuova funzionalità come il controllo dell'acquisizione manuale e i file RAW di Bayer acquisizione, rielaborazione dei dati RAW ecc.
1,0
Fotocamera Android iniziale HAL (Android 4.0) [camera.h]:
- Convertita dal livello di astrazione CameraHardwareInterface C++.
- Supporta l'API
android.hardware.Camera
.
Cronologia delle versioni del modulo Fotocamera
Questa sezione contiene informazioni sul controllo delle versioni del modulo per l'hardware della videocamera
basato su camera_module_t.common.module_api_version
. I due
esadecimali più significativi rappresentano la versione principale e i due minimi
significativi rappresentano la versione secondaria.
2.4
Questa versione del modulo della videocamera aggiunge le seguenti modifiche all'API:
- Supporto per modalità torcia. Il framework può attivare la modalità torcia per qualsiasi
fotocamera dotata di flash, senza bisogno di aprire una fotocamera. La
fotocamera ha una priorità più alta di accedere all'unità flash rispetto alla fotocamera
modulo; l'apertura di un dispositivo con videocamera spegne la torcia, se era stata attivata
attraverso l'interfaccia del modulo. In caso di conflitti tra le risorse, ad esempio
open()
viene chiamato per aprire un dispositivo fotocamera, il modulo HAL della fotocamera devi informare il framework tramite il callback dello stato della modalità torcia che è stata disattivata. - Supporto per fotocamere esterne (ad es. videocamera con attacco a caldo USB). La
Gli aggiornamenti dell'API specificano che le informazioni statiche della fotocamera sono disponibili solo quando la videocamera
collegato e pronto per l'uso per le videocamere hot-plug esterne. Chiamate per diventare statici
le informazioni sono chiamate non valide se lo stato della videocamera è diverso
CAMERA_DEVICE_STATUS_PRESENT
. Il framework conta esclusivamente i callback di modifica dello stato del dispositivo per gestire l'elenco delle videocamere esterne disponibili. - Suggerimenti di arbitrato per la fotocamera. Aggiunge il supporto per indicare esplicitamente
il numero di fotocamere che possono essere aperte e utilizzate contemporaneamente. A
specificare combinazioni valide di dispositivi,
resource_cost
e I campiconflicting_devices
devono essere sempre impostati nel Strutturacamera_info
restituita daget_camera_info
chiamata. - Metodo di inizializzazione del modulo. Chiamata dal servizio videocamera dopo il caricamento del modulo HAL per consentire l'inizializzazione una tantum dell'HAL. Viene chiamato prima che vengano richiamati altri metodi del modulo.
2.3
Questa versione del modulo della fotocamera aggiunge il supporto aperto per i dispositivi HAL per le fotocamere precedenti.
Il framework può utilizzarlo per aprire il dispositivo della fotocamera come versione HAL del dispositivo precedente
Dispositivo HAL se lo stesso dispositivo può supportare più versioni API.
Chiamata aperta al modulo hardware standard
(common.methods->open
) continua
per aprire la videocamera con l'ultima versione supportata, ossia
anche la versione elencata in camera_info_t.device_version
.
2,2
Questa versione del modulo della videocamera aggiunge il supporto per il tag del fornitore dal modulo e
ritira la versione precedente di vendor_tag_query_ops
che in precedenza erano solo
accessibile con un dispositivo aperto.
2.1
Questa versione del modulo della videocamera aggiunge il supporto per i callback asincroni alla
dal modulo HAL della fotocamera, che viene utilizzato per notificare il framework
sulle modifiche allo stato del modulo della videocamera. Moduli che forniscono un'istanza
Il metodo set_callbacks()
deve segnalare almeno questo numero di versione.
2,0
I moduli della videocamera che segnalano questo numero di versione implementano la seconda versione
dell'interfaccia HAL del modulo videocamera. Dispositivi con fotocamera apribili tramite questa
può supportare la versione 1.0 o la versione 2.0 del dispositivo della videocamera
dell'HAL. Il campo device_version
di camera_info è sempre
valida; il campo static_camera_characteristics
di
camera_info
è valido se il campo device_version
è
2.0 o versioni successive.
1,0
I moduli videocamera che segnalano questi numeri di versione implementano il modello iniziale
modulo videocamera HAL. Tutti i dispositivi con videocamera possono essere aperti tramite questa
supporta solo la versione 1 dell'HAL per dispositivo videocamera. La
device_version
e static_camera_characteristics
i campi di camera_info
non sono validi. Solo il
L'API android.hardware.Camera
può essere supportata da questo modulo e dai relativi
dispositivi mobili.