Les appareils équipés d'Android 10 sont compatibles avec la technologie HEIC format d'image compressé, brand spécifique à l'encodage vidéo HEVC de l'image à haute efficacité format de fichier HEIF, comme indiqué dans ISO/IEC 23008-12 : Les images encodées au format HEIC offrent de meilleure qualité d'image avec des fichiers de taille réduite par rapport aux fichiers JPEG.
Les images HEIC sont générées par le framework de l'appareil photo qui demande une image image issue de HAL de la caméra et l'envoie au sous-système multimédia être encodées par un encodeur HEIC ou HEVC.
Conditions requises
Pour prendre en charge le format d'image HEIC, votre appareil doit être équipé d'un encodeur matériel.
soutien
MIMETYPE_IMAGE_ANDROID_HEIC
ou
MIMETYPE_VIDEO_HEVC
avec le
Mode de qualité constante.
Implémentation
Pour prendre en charge le format d'image HEIC sur votre appareil, implémentez un codec HEIC/HEVC.
et fournissent la compatibilité avec les configurations de flux requises, qui sont
IMPLEMENTATION_DEFINED
flux sur YUV
et flux de segments d'application JPEG.
Contenus multimédias
Implémentez le codec HEIC/HEVC en mode Constant Quality (CQ) pour la matériel correspondant, comme suit:
- Le codec de type HEVC utilise le codec
IMPLEMENTATION_DEFINED
avec l'utilisation deGRALLOC_USAGE_HW_VIDEO_ENCODER
ouHAL_PIXEL_FORMAT_YCBCR_420_888
en fonction de la taille de l'image. - Le codec de type HEIC utilise le format
IMPLEMENTATION_DEFINED
avec le Utilisation deGRALLOC_USAGE_HW_IMAGE_ENCODER
.
Appareil photo
Dans les métadonnées statiques, définissez ANDROID_HEIC_INFO_SUPPORTED
sur "true".
de ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
à une valeur comprise entre [1, 16]
;
indiquant le nombre de segments d'application JPEG.
Pour chaque combinaison de flux obligatoire, votre caméra doit permettre l'échange un flux JPEG avec un flux HEIC de la même taille.
Pour un flux de sortie HEIC au niveau de l'API publique, le service de caméra crée deux HAL flux internes:
- Un flux BLOB avec l'indicateur d'utilisation
JPEG_APPS_SEGMENT
pour stocker l'application segments, y compris les segments EXIF et de vignettes - Un flux
IMPLEMENTATION_DEFINED
ouYCBCR_420_888
de la taille du Flux HEIC en fonction du codec cible et de la taille du flux HEIC
Basé sur ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
, le framework de l'appareil photo
alloue une taille de mémoire tampon suffisante pour que le HAL de l'appareil photo puisse remplir l'application JPEG.
segments. Le segment "APP1
" est obligatoire, mais les segments qui suivent le APP1
segment (APP2
ou supérieur) sont facultatifs. Le framework de l'appareil photo remplace l'affichage EXIF
tags dans le segment APP1
pouvant être dérivés des métadonnées du résultat de la capture
ou sont liées au flux de bits de l'image principale et les envoie à MediaMuxer
.
Comme l'encodeur multimédia intègre l'orientation dans les métadonnées de la sortie
images, afin de garantir une orientation cohérente entre l'image principale et la miniature,
le HAL de la caméra ne doit pas faire pivoter l'image miniature en fonction
android.jpeg.orientation.
: le framework écrit l'orientation dans l'affichage EXIF.
de métadonnées et le conteneur HEIC.
Les balises de métadonnées statiques, de contrôle et dynamiques associées au format JPEG sont également
au format HEIC. Par exemple, android.jpeg.orientation
et
Les tags de métadonnées android.jpeg.quality
dans la demande de capture sont utilisés pour contrôler
l'orientation et la qualité des images HEIC.
Pour utiliser le format HEIC dans une application, utilisez le API publique HEIC :
Pour en savoir plus, consultez les sources suivantes.
HAL de la caméra
Espace de données du tampon graphique
Espace d'utilisation du tampon graphique
Validation
Pour vérifier que votre implémentation est compatible avec les images HEIC, utilisez le
TestingCamera2
l'application de test et exécutez les tests CTS et VTS de la caméra suivants.
Tests CTS de l'appareil photo
NativeImageReaderTest#testHeic
ImageReaderTest#testHeic
ImageReaderTest#testRepeatingHeic
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
RobustnessTest#testMandatoryOutputCombinations
StillCaptureTest#testHeicExif
Tests VTS de la caméra