Les appareils exécutant Android 10 sont compatibles avec le format d'image compressé HEIC , une marque spécifique de codage vidéo haute efficacité (HEVC) du format de fichier image haute efficacité (HEIF), comme 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 au 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 être compatible avec le format d'image HEIC, votre appareil doit disposer d'un encodeur matériel
compatible avec
MIMETYPE_IMAGE_ANDROID_HEIC
ou
MIMETYPE_VIDEO_HEVC
en mode de
qualité constante.
Implémentation
Pour être compatible avec 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 de qualité constante (CQ) pour le matériel correspondant comme suit :
- Le codec de type HEVC consomme le format
IMPLEMENTATION_DEFINEDavec l'utilisationGRALLOC_USAGE_HW_VIDEO_ENCODERou le formatHAL_PIXEL_FORMAT_YCBCR_420_888, selon la taille de l'image. - Le codec de type HEIC consomme le format
IMPLEMENTATION_DEFINEDavec 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 appareil photo doit être compatible avec l'échange d'un flux JPEG avec un flux HEIC de même taille.
Pour un flux de sortie HEIC dans l'API publique, le service de l'appareil photo crée deux flux internes HAL :
- Un flux BLOB avec l'indicateur d'utilisation
JPEG_APPS_SEGMENTpour stocker les segments d'application, y compris les segments EXIF et de miniatures - Un flux
IMPLEMENTATION_DEFINEDouYCBCR_420_888de la taille du flux HEIC, en fonction du codec cible et de la taille du flux HEIC
En fonction 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 suivent le segment APP1 (APP2 et versions ultérieures) sont facultatifs. Le framework de l'appareil photo remplace les balises EXIF du segment APP1 qui peuvent être dérivées des métadonnées du résultat de capture ou qui sont liées au flux binaire 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, le HAL de l'appareil photo ne doit pas faire pivoter l'image miniature en fonction de android.jpeg.orientation.. Le framework écrit l'orientation dans les métadonnées EXIF et le conteneur HEIC.
Les balises de métadonnées statiques, de contrôle et dynamiques liées au format JPEG s'appliquent également au format HEIC. Par exemple, les balises de métadonnées android.jpeg.orientation et android.jpeg.quality de la requête de capture sont utilisées 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 sources 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'
TestingCamera2
application de test et exécutez les tests CTS et VTS suivants pour l'appareil photo.
Tests CTS pour l'appareil photo
NativeImageReaderTest#testHeicImageReaderTest#testHeicImageReaderTest#testRepeatingHeicReprocessCaptureTest#testBasicYuvToHeicReprocessingReprocessCaptureTest#testBasicOpaqueToHeicReprocessingRobustnessTest#testMandatoryOutputCombinationsStillCaptureTest#testHeicExif
Tests VTS pour l'appareil photo