imagerie HEIF

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 de GRALLOC_USAGE_HW_VIDEO_ENCODER ou HAL_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 de GRALLOC_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 ou YCBCR_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

Tests VTS de la caméra