Android 10 çalıştıran cihazlar, ISO/IEC 23008-12'de belirtilen yüksek verimli görüntü dosyası formatının (HEIF) yüksek verimli video kodlamaya (HEVC) özel bir markası olan HEIC sıkıştırılmış görüntü formatını destekler. HEIC kodlu görüntüler, JPEG dosyalarıyla karşılaştırıldığında daha küçük dosya boyutlarıyla daha iyi görüntü kalitesi sunar.
HEIC görüntüleri, kamera HAL'den sıkıştırılmamış bir görüntü talep eden ve bunu bir HEIC veya HEVC kodlayıcı tarafından kodlanmak üzere medya alt sistemine gönderen kamera çerçevesi tarafından oluşturulur.
Gereksinimler
HEIC görüntü formatını desteklemek için cihazınızda MIMETYPE_IMAGE_ANDROID_HEIC
veya sabit kalite moduna sahip MIMETYPE_VIDEO_HEVC
destekleyen bir donanım kodlayıcı bulunmalıdır.
Uygulama
Cihazınızda HEIC görüntü formatını desteklemek için bir HEIC/HEVC codec bileşeni uygulayın ve IMPLEMENTATION_DEFINED
/ YUV
akışları ve JPEG uygulama segmenti akışları olan gerekli akış yapılandırmaları için destek sağlayın.
Medya
İlgili donanım için HEIC/HEVC codec bileşenini sabit kalite (CQ) modunda aşağıdaki şekilde uygulayın:
- HEVC türü codec bileşeni, görüntü boyutuna bağlı olarak
GRALLOC_USAGE_HW_VIDEO_ENCODER
kullanımıylaIMPLEMENTATION_DEFINED
biçimini veyaHAL_PIXEL_FORMAT_YCBCR_420_888
biçimini kullanır. - HEIC türü codec bileşeni,
GRALLOC_USAGE_HW_IMAGE_ENCODER
kullanımıylaIMPLEMENTATION_DEFINED
biçimini kullanır.
Kamera
Statik meta verilerde, ANDROID_HEIC_INFO_SUPPORTED
değerini true olarak ve ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
değerini [1, 16]
arasında, JPEG uygulama segmentlerinin sayısını belirten bir değere ayarlayın.
Her zorunlu akış kombinasyonu için, kamera cihazınızın bir JPEG akışının aynı boyuttaki bir HEIC akışıyla değiştirilmesini desteklemesi gerekir.
Genel API'deki bir HEIC çıkış akışı için kamera hizmeti iki HAL dahili akışı oluşturur:
- EXIF ve küçük resim bölümleri de dahil olmak üzere uygulama bölümlerini depolamak için
JPEG_APPS_SEGMENT
kullanım bayrağına sahip bir BLOB akışı - Hedef codec bileşenine ve HEIC akış boyutuna bağlı olarak HEIC akışının boyutunda bir
IMPLEMENTATION_DEFINED
veyaYCBCR_420_888
akışı
ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
temel alınarak, kamera çerçevesi, kamera HAL'sinin JPEG uygulama bölümlerini doldurması için yeterince büyük arabellekler ayırır. APP1
segmenti gereklidir ancak APP1
segmentini takip eden segmentler ( APP2
ve üzeri) isteğe bağlıdır. Kamera çerçevesi, yakalama sonucu meta verilerinden türetilen veya ana görüntü bit akışıyla ilgili olan APP1
segmentindeki EXIF etiketlerini geçersiz kılar ve bunları MediaMuxer
gönderir.
Medya kodlayıcı, yönlendirmeyi çıkış görüntülerinin meta verilerine gömdüğü için, ana görüntü ile küçük resim arasında tutarlı bir yönlendirme sağlamak amacıyla kamera HAL'sinin, küçük resim görüntüsünü android.jpeg.orientation.
Çerçeve, yönlendirmeyi EXIF meta verilerine ve HEIC kapsayıcısına yazar.
JPEG formatıyla ilgili statik, kontrol ve dinamik meta veri etiketleri HEIC formatı için de geçerlidir. Örneğin, yakalama isteğindeki android.jpeg.orientation
ve android.jpeg.quality
meta veri etiketleri, HEIC görüntülerinin yönünü ve kalitesini kontrol etmek için kullanılır.
HEIC biçimini bir uygulamada kullanmak için HEIC genel API'sini kullanın.
Daha fazla bilgi için aşağıdaki kaynaklara bakın.
Kamera HAL'i
Grafik arabellek veri alanı
Grafik arabelleği kullanım alanı
Doğrulama
Uygulamanızın HEIC görüntülerini desteklediğini doğrulamak için TestingCamera2
test uygulamasını kullanın ve aşağıdaki kamera CTS ve VTS testlerini çalıştırın.
Kamera CTS testleri
-
NativeImageReaderTest#testHeic
-
ImageReaderTest#testHeic
-
ImageReaderTest#testRepeatingHeic
-
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
-
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
-
RobustnessTest#testMandatoryOutputCombinations
-
StillCaptureTest#testHeicExif
Kamera VTS testleri