Android 10 çalıştıran cihazlar, ISO/IEC 23008-12'de belirtildiği üzere yüksek verimli resim dosyası biçiminin (HEIF) yüksek verimli video kodlamasına (HEVC) özel bir markası olan HEIC sıkıştırılmış resim biçimini destekler. HEIC kodlamalı resimler, JPEG dosyalarına kıyasla daha küçük dosya boyutlarında daha iyi resim kalitesi sunar.
HEIC resimleri, kamera HAL'den sıkıştırılmamış bir resim isteyen ve bu resmi HEIC veya HEVC kodlayıcı tarafından kodlanması için medya alt sistemine gönderen kamera çerçevesi tarafından oluşturulur.
Şartlar
HEIC resim biçimini desteklemek için cihazınızda MIMETYPE_IMAGE_ANDROID_HEIC
veya MIMETYPE_VIDEO_HEVC
'i sabit kalite moduyla destekleyen bir donanım kodlayıcı olmalıdır.
Uygulama
Cihazınızda HEIC resim biçimini desteklemek için bir HEIC/HEVC codec'i uygulayın ve gerekli akış yapılandırmaları (IMPLEMENTATION_DEFINED
/YUV
akışları ve JPEG uygulama segmenti akışları) için destek sağlayın.
Medya
HEIC/HEVC codec'ini, ilgili donanım için aşağıdaki gibi sabit kalite (CQ) modunda uygulayın:
- HEVC türü codec, resim 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'i,
GRALLOC_USAGE_HW_IMAGE_ENCODER
kullanımıylaIMPLEMENTATION_DEFINED
biçimini tüketir.
Kamera
Statik meta verilerde ANDROID_HEIC_INFO_SUPPORTED
değerini true olarak, ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
değerini ise JPEG uygulama segmentlerinin sayısını belirten [1, 16]
ile [1, 16]
arasında bir değer olarak ayarlayın.
Her zorunlu yayın kombinasyonu için kamera cihazınız, JPEG yayınının aynı boyutta bir HEIC yayınıyla değiştirilmesini desteklemelidir.
Kamera hizmeti, herkese açık API'deki HEIC çıkış akışı için iki HAL dahili akışı oluşturur:
- EXIF ve küçük resim segmentleri dahil olmak üzere uygulama segmentlerini depolamak için
JPEG_APPS_SEGMENT
kullanım işaretine sahip bir BLOB akışı - Hedef codec'e ve HEIC akış boyutuna bağlı olarak HEIC akışının boyutuna
IMPLEMENTATION_DEFINED
veyaYCBCR_420_888
akışı
Kamera çerçevesi, ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
'e bağlı olarak kamera HAL'inin JPEG uygulama segmentlerini doldurması için yeterince büyük arabellekler ayırır. APP1
segmenti zorunludur ancak APP1
segmentini (APP2
ve üzeri) takip eden segmentler isteğe bağlıdır. Kamera çerçevesi, APP1
segmentindeki, yakalama sonucu meta verilerinden türetilebilecek veya ana resim bit akışıyla ilgili olan EXIF etiketlerini geçersiz kılar ve MediaMuxer
'a gönderir.
Medya kodlayıcı, yönü çıkış resimlerinin meta verilerine yerleştirdiği için ana resim ile küçük resim arasında tutarlı bir yön sağlamak amacıyla kamera HAL'i, küçük resimi android.jpeg.orientation.
'ye göre döndürmemelidir. Çerçeve, yönü EXIF meta verilerine ve HEIC kapsayıcısına yazar.
JPEG biçimiyle ilgili statik, kontrol ve dinamik meta veri etiketleri HEIC biçimi için de geçerlidir. Örneğin, kayıt isteğinde bulunan android.jpeg.orientation
ve android.jpeg.quality
meta veri etiketleri, HEIC resimlerinin yönünü ve kalitesini kontrol etmek için kullanılır.
Bir uygulamada HEIC biçimini kullanmak için HEIC herkese açık API'sini kullanın.
Daha fazla bilgi için aşağıdaki kaynaklara bakın.
Kamera HAL
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