Perangkat yang menjalankan Android 10 mendukung format gambar terkompresi HEIC, merek khusus encoding video efisiensi tinggi (HEVC) dari format file gambar efisiensi tinggi (HEIF) sebagaimana ditentukan dalam ISO/IEC 23008-12 . Gambar yang dikodekan HEIC menawarkan kualitas gambar yang lebih baik dengan ukuran file yang lebih kecil dibandingkan dengan file JPEG.
Gambar HEIC dihasilkan oleh kerangka kerja kamera yang meminta gambar yang tidak dikompresi dari HAL kamera dan mengirimkannya ke subsistem media untuk dikodekan oleh encoder HEIC atau HEVC.
Persyaratan
Untuk mendukung format gambar HEIC, perangkat Anda harus memiliki encoder perangkat keras yang mendukung MIMETYPE_IMAGE_ANDROID_HEIC
atau MIMETYPE_VIDEO_HEVC
dengan mode kualitas konstan .
Penerapan
Untuk mendukung format gambar HEIC di perangkat Anda, terapkan codec HEIC/HEVC dan berikan dukungan untuk konfigurasi aliran yang diperlukan, yaitu aliran IMPLEMENTATION_DEFINED
/ YUV
dan aliran segmen aplikasi JPEG.
Media
Terapkan codec HEIC/HEVC dalam mode kualitas konstan (CQ) untuk perangkat keras yang sesuai sebagai berikut:
- Codec jenis HEVC menggunakan format
IMPLEMENTATION_DEFINED
dengan penggunaanGRALLOC_USAGE_HW_VIDEO_ENCODER
atau formatHAL_PIXEL_FORMAT_YCBCR_420_888
tergantung pada ukuran gambar. - Codec tipe HEIC menggunakan format
IMPLEMENTATION_DEFINED
dengan penggunaanGRALLOC_USAGE_HW_IMAGE_ENCODER
.
Kamera
Dalam metadata statis, setel ANDROID_HEIC_INFO_SUPPORTED
ke true, dan ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
ke nilai antara [1, 16]
, yang menunjukkan jumlah segmen aplikasi JPEG.
Untuk setiap kombinasi aliran wajib, perangkat kamera Anda harus mendukung pertukaran aliran JPEG dengan aliran HEIC dengan ukuran yang sama.
Untuk aliran keluaran HEIC di API publik, layanan kamera membuat dua aliran internal HAL:
- Aliran BLOB dengan flag penggunaan
JPEG_APPS_SEGMENT
untuk menyimpan segmen aplikasi termasuk segmen EXIF dan thumbnail - Aliran
IMPLEMENTATION_DEFINED
atauYCBCR_420_888
ukuran aliran HEIC bergantung pada codec target dan ukuran aliran HEIC
Berdasarkan ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
, kerangka kerja kamera mengalokasikan buffer yang cukup besar untuk HAL kamera untuk mengisi segmen aplikasi JPEG. Segmen APP1
diperlukan tetapi segmen yang mengikuti segmen APP1
( APP2
dan di atasnya) bersifat opsional. Kerangka kamera mengesampingkan tag EXIF di segmen APP1
yang dapat diturunkan dari metadata hasil tangkapan atau terkait dengan bitstream gambar utama dan mengirimkannya ke MediaMuxer
.
Karena encoder media menyematkan orientasi dalam metadata gambar keluaran, untuk memastikan orientasi yang konsisten antara gambar utama dan gambar mini, HAL kamera tidak boleh memutar gambar kecil berdasarkan android.jpeg.orientation.
Kerangka kerja menulis orientasi ke dalam metadata EXIF dan wadah HEIC.
Tag metadata statis, kontrol, dan dinamis yang terkait dengan format JPEG juga berlaku untuk format HEIC. Misalnya, tag metadata android.jpeg.orientation
dan android.jpeg.quality
dalam permintaan pengambilan digunakan untuk mengontrol orientasi dan kualitas gambar HEIC.
Untuk menggunakan format HEIC dalam aplikasi, gunakan API publik HEIC .
Untuk informasi lebih lanjut, lihat sumber berikut.
Kamera HAL
Ruang data buffer grafis
Ruang penggunaan buffer grafis
Validasi
Untuk memvalidasi bahwa implementasi Anda mendukung gambar HEIC, gunakan aplikasi pengujian TestingCamera2
dan jalankan pengujian CTS dan VTS kamera berikut.
Tes kamera CTS
-
NativeImageReaderTest#testHeic
-
ImageReaderTest#testHeic
-
ImageReaderTest#testRepeatingHeic
-
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
-
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
-
RobustnessTest#testMandatoryOutputCombinations
-
StillCaptureTest#testHeicExif
Tes VTS kamera