Pencitraan HEIF

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

Gambar HEIC dihasilkan oleh kerangka kamera yang meminta gambar yang tidak terkompresi dari kamera HAL 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 pada 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 terkait sebagai berikut:

  • Codec tipe HEVC menggunakan format IMPLEMENTATION_DEFINED dengan penggunaan GRALLOC_USAGE_HW_VIDEO_ENCODER atau format HAL_PIXEL_FORMAT_YCBCR_420_888 bergantung pada ukuran gambar.
  • Codec tipe HEIC menggunakan format IMPLEMENTATION_DEFINED dengan penggunaan GRALLOC_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 tanda penggunaan JPEG_APPS_SEGMENT untuk menyimpan segmen aplikasi termasuk EXIF ​​dan segmen thumbnail
  • Aliran IMPLEMENTATION_DEFINED atau YCBCR_420_888 ukuran aliran HEIC bergantung pada codec target dan ukuran aliran HEIC

Berdasarkan ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT , kerangka kamera mengalokasikan buffer yang cukup besar agar kamera HAL dapat mengisi segmen aplikasi JPEG. Segmen APP1 wajib diisi tetapi segmen yang mengikuti segmen APP1 ( APP2 dan lebih tinggi) bersifat opsional. Kerangka kamera mengesampingkan tag EXIF ​​di segmen APP1 yang dapat berasal 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 kecil, kamera HAL tidak boleh memutar gambar kecil berdasarkan android.jpeg.orientation. Kerangka kerja ini 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 kamera CTS dan VTS berikut.

Tes kamera CTS

Tes kamera VTS