Perangkat yang menjalankan Android 10 mendukung format gambar terkompresi HEIC, encoding video efisiensi tinggi (HEVC) khusus merek format file gambar efisiensi tinggi (HEIF) sebagaimana ditentukan dalam ISO/IEC 23008-12. Gambar yang dienkode dengan HEIC menawarkan kualitas gambar yang lebih baik dengan ukuran file yang lebih kecil dibandingkan dengan file JPEG.
Gambar HEIC dibuat oleh framework kamera yang meminta gambar tidak terkompresi dari HAL kamera dan mengirimkannya ke subsistem media untuk dienkode oleh encoder HEIC atau HEVC.
Persyaratan
Untuk mendukung format gambar HEIC, perangkat Anda harus memiliki encoder hardware yang mendukung
MIMETYPE_IMAGE_ANDROID_HEIC
atau
MIMETYPE_VIDEO_HEVC
dengan
mode kualitas konstan.
Implementasi
Untuk mendukung format gambar HEIC di perangkat Anda, terapkan codec HEIC/HEVC
dan berikan dukungan untuk konfigurasi streaming yang diperlukan, yaitu
streaming IMPLEMENTATION_DEFINED
/YUV
dan streaming segmen aplikasi JPEG.
Media
Terapkan codec HEIC/HEVC dalam mode kualitas konstan (CQ) untuk hardware yang sesuai sebagai berikut:
- Codec jenis HEVC menggunakan format
IMPLEMENTATION_DEFINED
dengan penggunaanGRALLOC_USAGE_HW_VIDEO_ENCODER
atau formatHAL_PIXEL_FORMAT_YCBCR_420_888
, bergantung pada ukuran gambar. - Codec jenis HEIC menggunakan format
IMPLEMENTATION_DEFINED
dengan penggunaanGRALLOC_USAGE_HW_IMAGE_ENCODER
.
Kamera
Di metadata statis, tetapkan ANDROID_HEIC_INFO_SUPPORTED
ke benar, 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 penukaran aliran JPEG dengan aliran HEIC berukuran sama.
Untuk aliran output HEIC di API publik, layanan kamera membuat dua aliran internal HAL:
- Aliran BLOB dengan tanda penggunaan
JPEG_APPS_SEGMENT
untuk menyimpan segmen aplikasi, termasuk segmen EXIF dan thumbnail - Aliran
IMPLEMENTATION_DEFINED
atauYCBCR_420_888
berukuran aliran HEIC, bergantung pada codec target dan ukuran aliran HEIC
Berdasarkan ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
, framework kamera mengalokasikan buffer yang cukup besar bagi HAL kamera untuk mengisi segmen aplikasi JPEG. Segmen APP1
wajib ada, tetapi segmen setelah segmen APP1
(APP2
dan seterusnya) bersifat opsional. Framework kamera menggantikan tag EXIF
di segmen APP1
yang dapat diperoleh dari metadata hasil pengambilan gambar
atau terkait dengan bitstream gambar utama dan mengirimkannya ke MediaMuxer
.
Karena encoder media menyematkan orientasi dalam metadata gambar output, untuk memastikan orientasi yang konsisten antara gambar utama dan thumbnail, HAL kamera tidak boleh memutar gambar thumbnail berdasarkan android.jpeg.orientation.
Framework menulis orientasi ke dalam metadata EXIF dan penampung 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 di aplikasi, gunakan HEIC public API.
Untuk informasi selengkapnya, lihat sumber berikut.
HAL Kamera
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.
Pengujian CTS kamera
NativeImageReaderTest#testHeic
ImageReaderTest#testHeic
ImageReaderTest#testRepeatingHeic
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
RobustnessTest#testMandatoryOutputCombinations
StillCaptureTest#testHeicExif
Pengujian VTS kamera