Perangkat yang menjalankan Android 10 dukungan HEIC format gambar terkompresi, efisiensi tinggi encoding video (HEVC) merek tertentu dari efisiensi tinggi format file gambar (HEIF) sebagaimana ditentukan dalam ISO / IEC 23.008-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 kamera meminta gambar terkompresi dari kamera HAL dan mengirimnya ke subsistem media yang akan dikodekan oleh HEIC atau HEVC encoder.
Persyaratan
Untuk mendukung format gambar HEIC, perangkat Anda harus memiliki encoder hardware pendukung MIMETYPE_IMAGE_ANDROID_HEIC
atau MIMETYPE_VIDEO_HEVC
dengan modus kualitas konstan .
Penerapan
Untuk mendukung format gambar HEIC pada perangkat Anda, menerapkan HEIC / HEVC codec dan memberikan dukungan untuk konfigurasi aliran yang dibutuhkan, yang merupakan IMPLEMENTATION_DEFINED
/ YUV
sungai dan segmen aplikasi JPEG sungai.
Media
Terapkan codec HEIC/HEVC dalam mode kualitas konstan (CQ) untuk perangkat keras yang sesuai sebagai berikut:
- The HEVC ketik mengkonsumsi codec baik
IMPLEMENTATION_DEFINED
Format denganGRALLOC_USAGE_HW_VIDEO_ENCODER
penggunaan atauHAL_PIXEL_FORMAT_YCBCR_420_888
format yang tergantung pada ukuran gambar. - The HEIC jenis codec mengkonsumsi yang
IMPLEMENTATION_DEFINED
Format denganGRALLOC_USAGE_HW_IMAGE_ENCODER
penggunaan.
Kamera
Dalam metadata statis, mengatur ANDROID_HEIC_INFO_SUPPORTED
ke benar, dan ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
untuk nilai antara [1, 16]
, 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:
- Sebuah aliran BLOB dengan
JPEG_APPS_SEGMENT
bendera penggunaan untuk menyimpan segmen aplikasi termasuk EXIF dan thumbnail segmen - Sebuah
IMPLEMENTATION_DEFINED
atauYCBCR_420_888
streaming ukuran aliran HEIC tergantung pada codec target dan ukuran aliran HEIC
Berdasarkan ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
, kamera kerangka mengalokasikan buffer yang cukup besar untuk HAL kamera untuk mengisi segmen aplikasi JPEG. The APP1
segmen diperlukan tetapi segmen mengikuti APP1
segmen ( APP2
dan di atas) adalah opsional. Kerangka kamera menimpa tag EXIF di APP1
segmen yang dapat diturunkan dari penangkapan hasil metadata atau terkait dengan bitstream gambar utama dan mengirimkannya ke MediaMuxer
.
Karena media encoder embeds orientasi dalam metadata gambar output, untuk memastikan orientasi konsisten antara gambar utama dan thumbnail, HAL kamera tidak harus memutar gambar thumbnail 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. Sebagai contoh, android.jpeg.orientation
dan android.jpeg.quality
tag metadata dalam permintaan capture digunakan untuk mengontrol orientasi dan kualitas gambar HEIC.
Untuk menggunakan format HEIC dalam sebuah aplikasi, menggunakan API publik HEIC .
Untuk informasi lebih lanjut, lihat sumber berikut.
Kamera HAL
Ruang data buffer grafis
Ruang penggunaan buffer grafis
Validasi
Untuk memvalidasi bahwa penerapan Anda mendukung gambar HEIC, gunakan TestingCamera2
aplikasi tes dan menjalankan kamera berikut CTS dan VTS tes.
Tes kamera CTS
-
NativeImageReaderTest#testHeic
-
ImageReaderTest#testHeic
-
ImageReaderTest#testRepeatingHeic
-
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
-
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
-
RobustnessTest#testMandatoryOutputCombinations
-
StillCaptureTest#testHeicExif
Tes VTS kamera