Pencitraan HEIF

Perangkat yang menjalankan Android 10 mendukung HEIC format gambar terkompresi, merek khusus encoding video efisiensi (HEVC) dari gambar efisiensi tinggi dalam format file (HEIF) seperti yang ditentukan dalam ISO/IEC 23008-12. Penawaran gambar berenkode HEIC kualitas gambar yang lebih baik dengan ukuran file yang lebih kecil dibandingkan dengan file JPEG.

Gambar HEIC dihasilkan oleh framework kamera yang meminta file gambar dari kamera HAL dan mengirimkannya ke subsistem media untuk dienkode oleh encoder HEIC atau HEVC.

Persyaratan

Untuk mendukung format gambar HEIC, perangkat Anda harus memiliki encoder hardware mendukung MIMETYPE_IMAGE_ANDROID_HEIC atau MIMETYPE_VIDEO_HEVC dengan mode kualitas konstan.

Implementasi

Untuk mendukung format gambar HEIC di perangkat, terapkan codec HEIC/HEVC dan memberikan dukungan untuk konfigurasi streaming yang diperlukan, yang merupakan IMPLEMENTATION_DEFINED/YUV streaming dan streaming segmen aplikasi JPEG.

Media

Implementasikan codec HEIC/HEVC dalam mode kualitas konstan (CQ) untuk perangkat keras terkait sebagai berikut:

  • Codec jenis HEVC menggunakan IMPLEMENTATION_DEFINED dengan penggunaan GRALLOC_USAGE_HW_VIDEO_ENCODER atau Format HAL_PIXEL_FORMAT_YCBCR_420_888 bergantung pada ukuran gambar.
  • Codec jenis HEIC menggunakan format IMPLEMENTATION_DEFINED dengan Penggunaan GRALLOC_USAGE_HW_IMAGE_ENCODER.

Kamera

Di metadata statis, tetapkan ANDROID_HEIC_INFO_SUPPORTED ke benar (true), dan ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT dengan nilai antara [1, 16], yang menunjukkan jumlah segmen aplikasi JPEG.

Untuk setiap kombinasi streaming wajib, perangkat kamera Anda harus mendukung pertukaran streaming JPEG dengan streaming HEIC berukuran sama.

Untuk streaming output HEIC pada API publik, layanan kamera membuat dua HAL feed internal:

  • Streaming BLOB dengan tanda penggunaan JPEG_APPS_SEGMENT untuk menyimpan aplikasi segmen termasuk EXIF dan segmen thumbnail
  • Aliran data IMPLEMENTATION_DEFINED atau YCBCR_420_888 berukuran streaming HEIC bergantung pada codec target dan ukuran streaming HEIC

Berdasarkan ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT, framework kamera mengalokasikan buffer yang cukup besar bagi kamera HAL untuk mengisi aplikasi JPEG segmen. Segmen APP1 wajib diisi, tetapi segmen yang mengikuti APP1 segmen (APP2 dan lebih tinggi) bersifat opsional. Framework kamera mengganti EXIF tag di segmen APP1 yang dapat berasal dari metadata hasil pengambilan atau terkait dengan bitstream gambar utama dan mengirimkannya ke MediaMuxer.

Karena encoder media menyematkan orientasi dalam metadata output gambar utama, untuk memastikan orientasi yang konsisten antara gambar utama dan {i>thumbnail<i}, HAL kamera tidak boleh memutar gambar thumbnail berdasarkan android.jpeg.orientation. Framework ini menulis orientasi ke dalam EXIF metadata dan kontainer HEIC.

Tag metadata statis, kontrol, dan dinamis yang terkait dengan format JPEG juga berlaku untuk format HEIC. Misalnya, android.jpeg.orientation dan Tag metadata android.jpeg.quality dalam permintaan pengambilan digunakan untuk mengontrol orientasi dan kualitas gambar HEIC.

Untuk menggunakan format HEIC di aplikasi, gunakan API publik HEIC.

Untuk mengetahui informasi selengkapnya, lihat sumber berikut.

HAL Kamera

Ruang data buffer grafis

Ruang penggunaan buffer grafis

Validasi

Untuk memvalidasi bahwa penerapan Anda mendukung image HEIC, gunakan TestingCamera2 dan menjalankan tes CTS dan VTS kamera berikut.

Pengujian CTS Kamera

Pengujian VTS kamera