Android 10 çalıştıran cihazlar, ISO/IEC 23008-12'de belirtildiği gibi yüksek verimli resim dosyası biçiminin (HEIF) yüksek verimli video kodlamasına (HEVC) özgü bir markası olan HEIC sıkıştırılmış resim biçimini destekler. HEIC kodlu görüntüler, JPEG dosyalarına kıyasla daha küçük dosya boyutlarıyla daha iyi görüntü kalitesi sunar.
HEIC resimleri, kamera donanım soyutlama katmanından sıkıştırılmamış bir resim isteyen ve bunu HEIC veya HEVC kodlayıcı tarafından kodlanmak üzere 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
'ı destekleyen bir donanım kodlayıcı ve sabit kalite modu olmalıdır.
Uygulama
Cihazınızda HEIC resim biçimini desteklemek için 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 sabit kalite (CQ) modunda aşağıdaki gibi uygulayın:
- HEVC türü codec, görüntü boyutuna bağlı olarak
IMPLEMENTATION_DEFINED
biçiminiGRALLOC_USAGE_HW_VIDEO_ENCODER
kullanımıyla veyaHAL_PIXEL_FORMAT_YCBCR_420_888
biçimini kullanır. - HEIC türü codec,
IMPLEMENTATION_DEFINED
biçiminiGRALLOC_USAGE_HW_IMAGE_ENCODER
kullanımıyla tüketir.
Kamera
Statik meta verilerde ANDROID_HEIC_INFO_SUPPORTED
değerini doğru, ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
değerini ise [1, 16]
ile [1, 16]
arasında bir değere ayarlayın. Bu değer, JPEG uygulama segmentlerinin sayısını gösterir.
Her zorunlu akış kombinasyonu için kamera cihazınız, aynı boyuttaki bir JPEG akışını HEIC akışıyla değiştirmeyi desteklemelidir.
Herkese açık API'de HEIC çıkış akışı için kamera hizmeti iki HAL dahili akışı oluşturur:
- EXIF ve küçük resim segmentleri de 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ışının boyutuna bağlı olarak HEIC akışının boyutunda bir
IMPLEMENTATION_DEFINED
veyaYCBCR_420_888
akışı
ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
'ye göre kamera çerçevesi, kamera donanım soyutlama katmanının JPEG uygulama segmentlerini doldurması için yeterince büyük arabellekler ayırır. APP1
segmenti zorunludur ancak APP1
segmentini takip eden segmentler (APP2
ve üzeri) isteğe bağlıdır. Kamera çerçevesi, yakalama sonucu meta verilerinden elde edilebilen veya ana görüntü bit akışıyla ilgili olan APP1
segmentindeki EXIF etiketlerini geçersiz kılar ve bunları MediaMuxer
'ye gönderir.
Medya kodlayıcı, yönü çıkış resimlerinin meta verilerine yerleştirdiğinden ana resim ile küçük resim arasında tutarlı bir yön sağlamak için kamera HAL'ı, küçük resim görüntüsünü android.jpeg.orientation.
temelinde 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, yakalama isteğindeki android.jpeg.orientation
ve android.jpeg.quality
meta veri etiketleri, HEIC resimlerinin yönünü ve kalitesini kontrol etmek için kullanılır.
HEIC biçimini bir uygulamada kullanmak için HEIC herkese açık API'yi kullanın.
Daha fazla bilgi için aşağıdaki kaynaklara bakın.
Kamera HAL'ı
Grafik arabelleği veri alanı
Grafik arabellek 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