Les appareils équipés d'Android 10 sont compatibles avec le format d'image compressée HEIC, une marque spécifique de l'encodage vidéo haute efficacité (HEVC) du format de fichier image haute efficacité (HEIF) tel que spécifié dans la norme ISO/IEC 23008-12. Les images encodées au format HEIC offrent une meilleure qualité d'image avec des fichiers plus petits que les fichiers JPEG.
Les images HEIC sont générées par le framework de l'appareil photo qui demande une image non compressée à l'HAL de l'appareil photo et l'envoie au sous-système multimédia pour qu'elle soit encodée par un encodeur HEIC ou HEVC.
Conditions requises
Pour que votre appareil soit compatible avec le format d'image HEIC, il doit disposer d'un encodeur matériel compatible avec 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 assurez la compatibilité avec les configurations de flux requises, à savoir les flux IMPLEMENTATION_DEFINED
/YUV
et les flux de segments d'application JPEG.
Contenus multimédias
Implémentez le codec HEIC/HEVC en mode qualité constante (CQ) pour le matériel correspondant comme suit :
- Le codec de type HEVC utilise le format
IMPLEMENTATION_DEFINED
avec l'utilisationGRALLOC_USAGE_HW_VIDEO_ENCODER
ou le formatHAL_PIXEL_FORMAT_YCBCR_420_888
selon la taille de l'image. - Le codec de type HEIC utilise le format
IMPLEMENTATION_DEFINED
avec l'utilisationGRALLOC_USAGE_HW_IMAGE_ENCODER
.
Appareil photo
Dans les métadonnées statiques, définissez ANDROID_HEIC_INFO_SUPPORTED
sur "true" et ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
sur 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 de remplacer un flux JPEG par un flux HEIC de même taille.
Pour un flux de sortie HEIC au niveau de l'API publique, le service de caméra crée deux flux internes HAL :
- Flux BLOB avec le code d'utilisation
JPEG_APPS_SEGMENT
pour stocker les segments d'application, y compris les segments EXIF et de miniatures - Flux
IMPLEMENTATION_DEFINED
ouYCBCR_420_888
de la taille du flux HEIC en fonction du codec cible et de la taille du flux HEIC
Sur la base de ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
, le framework de l'appareil photo alloue des tampons suffisamment grands pour que le HAL de l'appareil photo puisse remplir les segments d'application JPEG. Le segment APP1
est obligatoire, mais les segments qui le suivent (APP2
et au-delà) sont facultatifs.APP1
Le framework de l'appareil photo remplace les tags EXIF du segment APP1
qui peuvent être dérivés des métadonnées du résultat de capture ou qui sont liés au flux de bits de l'image principale, et les envoie à MediaMuxer
.
Étant donné que l'encodeur multimédia intègre l'orientation dans les métadonnées des images de sortie, pour garantir une orientation cohérente entre l'image principale et la miniature, la HAL de l'appareil photo ne doit pas faire pivoter la miniature en fonction de android.jpeg.orientation.
. Le framework écrit l'orientation dans les métadonnées EXIF et le conteneur HEIC.
Les tags de métadonnées statiques, de contrôle et dynamiques associés au format JPEG s'appliquent également au format HEIC. Par exemple, les tags de métadonnées android.jpeg.orientation
et android.jpeg.quality
de la requête 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 l'API publique HEIC.
Pour en savoir plus, consultez les ressources suivantes.
HAL de l'appareil photo
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 l'application de test TestingCamera2
et exécutez les tests CTS et VTS de l'appareil photo suivants.
Tests CTS de l'appareil photo
NativeImageReaderTest#testHeic
ImageReaderTest#testHeic
ImageReaderTest#testRepeatingHeic
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
RobustnessTest#testMandatoryOutputCombinations
StillCaptureTest#testHeicExif
Tests VTS de l'appareil photo