I dispositivi con Android 10 supportano HEIC formato immagine compresso, un alto La specifica marca HEVC (efficiency Video Codifica) dell'immagine ad alta efficienza (HEIF) come specificato in ISO/IEC 23008-12. Le immagini con codifica HEIC offrono migliore qualità delle immagini con file di dimensioni inferiori rispetto ai file JPEG.
Le immagini HEIC vengono generate dal framework della fotocamera che richiede un file non compresso immagine dal camera HAL e la invia al sottosistema multimediale per essere codificati da un codificatore HEIC o HEVC.
Requisiti
Per supportare il formato delle immagini HEIC, il dispositivo deve disporre di un codificatore hardware
supporto
MIMETYPE_IMAGE_ANDROID_HEIC
o
MIMETYPE_VIDEO_HEVC
con
modalità qualità costante.
Implementazione
Per supportare il formato dell'immagine HEIC sul tuo dispositivo, implementa un codec HEIC/HEVC
e supportare le configurazioni di streaming richieste, che sono
IMPLEMENTATION_DEFINED
/YUV
stream e stream di segmenti di app JPEG.
Contenuti multimediali
Implementare il codec HEIC/HEVC in modalità di qualità costante (CQ) per il l'hardware corrispondente:
- Il codec di tipo HEVC utilizza
IMPLEMENTATION_DEFINED
con l'utilizzo diGRALLOC_USAGE_HW_VIDEO_ENCODER
oHAL_PIXEL_FORMAT_YCBCR_420_888
a seconda delle dimensioni dell'immagine. - Il codec di tipo HEIC utilizza il formato
IMPLEMENTATION_DEFINED
con Utilizzo diGRALLOC_USAGE_HW_IMAGE_ENCODER
.
Fotocamera
Nei metadati statici, imposta ANDROID_HEIC_INFO_SUPPORTED
su true e
ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
a un valore compreso tra [1, 16]
,
che indica il numero di segmenti di app JPEG.
Per ogni combinazione di stream obbligatoria, la videocamera deve supportare lo scambio uno stream JPEG con uno stream HEIC delle stesse dimensioni.
Per uno stream di output HEIC nell'API pubblica, il servizio videocamera crea due HAL stream interni:
- Uno stream BLOB con il flag di utilizzo
JPEG_APPS_SEGMENT
per archiviare l'app segmenti, inclusi segmenti EXIF e miniature - Uno stream
IMPLEMENTATION_DEFINED
oYCBCR_420_888
delle dimensioni del Stream HEIC in base al codec target e alle dimensioni dello stream HEIC
In base a ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
, il framework della fotocamera
assegna buffer sufficientemente grandi da consentire all'HAL della fotocamera di compilare l'app JPEG
segmenti. Il segmento APP1
è obbligatorio, ma i segmenti che seguono il APP1
(APP2
e superiori) sono facoltativi. Il framework della fotocamera sostituisce il file EXIF
tag nel segmento APP1
che possono essere ricavati dai metadati dei risultati dell'acquisizione
oppure sono correlati al bitstream dell'immagine principale e li invia a MediaMuxer
.
Poiché il codificatore multimediale incorpora l'orientamento nei metadati
immagini, per garantire un orientamento coerente tra l'immagine principale e la miniatura,
la fotocamera HAL non deve ruotare l'immagine della miniatura in base al
android.jpeg.orientation.
Il framework scrive l'orientamento nel file EXIF
dei metadati e del container HEIC.
Anche i tag dei metadati statici, di controllo e dinamici correlati al formato JPEG
si applicano al formato HEIC. Ad esempio, android.jpeg.orientation
e
I tag di metadati di android.jpeg.quality
nella richiesta di acquisizione vengono utilizzati per controllare
l'orientamento e la qualità delle immagini HEIC.
Per utilizzare il formato HEIC in un'app, usa la API pubblica HEIC.
Per saperne di più, consulta le seguenti fonti.
Fotocamera HAL
Spazio dati buffer grafico
Spazio di utilizzo del buffer grafico
Convalida
Per verificare che la tua implementazione supporti le immagini HEIC, utilizza la classe
TestingCamera2
testare l'app ed eseguire i seguenti test CTS e VTS della videocamera.
Test CTS della fotocamera
NativeImageReaderTest#testHeic
ImageReaderTest#testHeic
ImageReaderTest#testRepeatingHeic
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
RobustnessTest#testMandatoryOutputCombinations
StillCaptureTest#testHeicExif
Test VTS della fotocamera