Geräte mit Android 10 unterstützen den HEIC Komprimiertes Bildformat, eine hohe Spezifische Marke des Bilds mit hoher Effizienz (Effizienz-Videocodierung (HEVC)) Dateiformat (HEIF) gemäß den ISO/IEC 23008-12. HEIC-codierte Bilder bieten Bessere Bildqualität bei kleineren Dateigrößen im Vergleich zu JPEG-Dateien.
HEIC-Bilder werden vom Kamera-Framework generiert und fordern ein unkomprimiertes Bild aus der Kamera-HAL und sendet ihn an das Mediensubsystem, mit einem HEIC- oder HEVC-Encoder codiert sein.
Voraussetzungen
Damit das HEIC-Bildformat unterstützt wird, muss dein Gerät über einen Hardware-Encoder verfügen
unterstützend
MIMETYPE_IMAGE_ANDROID_HEIC
oder
MIMETYPE_VIDEO_HEVC
mit dem
Modus „Kontinuierliche Qualität“.
Implementierung
Damit das HEIC-Bildformat auf deinem Gerät unterstützt wird, musst du einen HEIC/HEVC-Codec implementieren
und unterstützen die erforderlichen Streamkonfigurationen, also die
IMPLEMENTATION_DEFINED
/YUV
Streams und JPEG-App-Segment-Streams.
Medien
Implementieren Sie den HEIC/HEVC-Codec im CQ-Modus (Konstante Qualität) für die der entsprechenden Hardware an:
- Der Codec des HEVC-Typs verwendet entweder den
IMPLEMENTATION_DEFINED
mit derGRALLOC_USAGE_HW_VIDEO_ENCODER
-Verwendung oder demHAL_PIXEL_FORMAT_YCBCR_420_888
-Format abhängig von der Bildgröße. - Der HEIC-Codec verwendet das
IMPLEMENTATION_DEFINED
-Format mit dem Nutzung vonGRALLOC_USAGE_HW_IMAGE_ENCODER
.
Kamera
Setzen Sie in den statischen Metadaten ANDROID_HEIC_INFO_SUPPORTED
auf „true“ und
ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
auf einen Wert zwischen [1, 16]
,
gibt die Anzahl der App-Segmente im JPEG-Format an.
Für jede obligatorische Stream-Kombination muss die Kamera den Austausch der Daten unterstützen. einen JPEG-Stream mit einem HEIC-Stream derselben Größe.
Für einen HEIC-Ausgabestream an der öffentlichen API erstellt der Kameradienst zwei HAL internen Streams:
- Ein BLOB-Stream mit dem Nutzungs-Flag
JPEG_APPS_SEGMENT
zum Speichern der App Segmente, einschließlich EXIF- und Thumbnail-Segmente - Ein
IMPLEMENTATION_DEFINED
- oderYCBCR_420_888
-Stream in der Größe des HEIC-Stream abhängig vom Ziel-Codec und der HEIC-Streamgröße
Basierend auf ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
, dem Kamera-Framework
Weist Puffer zu, die groß genug sind, damit der Kamera-HAL die JPEG-App füllen kann.
Segmente. Das APP1
-Segment ist erforderlich, aber Segmente, die der APP1
folgen
Segment (APP2
und höher) sind optional. Das Kamera-Framework überschreibt die EXIF-Datei
Tags im APP1
-Segment, die aus den Metadaten der Erfassungsergebnisse abgeleitet werden können
oder mit dem Bitstream des Hauptbilds zusammenhängen, und sendet sie an MediaMuxer
.
Weil der Medienencoder die Ausrichtung in die Metadaten der Ausgabe einbettet.
um eine einheitliche Ausrichtung zwischen Hauptbild und Thumbnail sicherzustellen,
darf der Kamera-HAL das Thumbnail-Bild nicht basierend auf
android.jpeg.orientation.
Das Framework schreibt die Ausrichtung in die EXIF-Datei.
Metadaten- und HEIC-Container.
Die statischen, Steuer- und dynamischen Metadaten-Tags, die sich auf das JPEG-Format beziehen,
für das HEIC-Format. Zum Beispiel werden android.jpeg.orientation
und
Mit android.jpeg.quality
-Metadaten-Tags in der Erfassungsanfrage wird gesteuert,
Ausrichtung und Qualität von HEIC-Bildern.
Wenn du das HEIC-Format in einer App verwenden möchtest, verwende die Methode Öffentliche HEIC API
Weitere Informationen finden Sie in den folgenden Quellen.
Kamera-HAL
Grafikzwischenspeicher-Datenbereich
Nutzungsbereich des Grafikpuffers
Zertifizierungsstufe
Mit dem Parameter
TestingCamera2
Test-App und führe die folgenden CTS- und VTS-Tests für die Kamera durch.
CTS-Tests der Kamera
NativeImageReaderTest#testHeic
ImageReaderTest#testHeic
ImageReaderTest#testRepeatingHeic
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
RobustnessTest#testMandatoryOutputCombinations
StillCaptureTest#testHeicExif
VTS-Tests der Kamera