Kamera HAL3

Hardware Abstraction Layer (HAL) kamera Android menghubungkan API framework kamera tingkat yang lebih tinggi di android.hardware.camera2 ke driver kamera dan perangkat keras yang mendasarinya. Android 8.0 memperkenalkan Treble , mengalihkan CameraHal API ke antarmuka stabil yang ditentukan oleh HAL Interface Description Language (HIDL). Jika sebelumnya Anda telah mengembangkan modul dan driver kamera HAL untuk Android 7.0 dan yang lebih rendah, waspadai perubahan signifikan pada saluran kamera.

Fitur kamera HAL3

Tujuan dari desain ulang Android Camera API adalah untuk secara substansial meningkatkan kemampuan aplikasi untuk mengontrol subsistem kamera pada perangkat Android sambil mengatur ulang API agar lebih efisien dan dapat dipelihara. Kontrol tambahan mempermudah pembuatan aplikasi kamera berkualitas tinggi pada perangkat Android yang dapat beroperasi dengan andal di beberapa produk sambil tetap menggunakan algoritme khusus perangkat bila memungkinkan untuk memaksimalkan kualitas dan kinerja.

Versi 3 dari subsistem kamera menyusun mode operasi menjadi satu tampilan terpadu, yang dapat digunakan untuk mengimplementasikan mode sebelumnya dan beberapa mode lainnya, seperti mode burst. Ini menghasilkan kontrol pengguna yang lebih baik untuk fokus dan eksposur dan lebih banyak pasca-pemrosesan, seperti pengurangan noise, kontras, dan penajaman. Selanjutnya, tampilan yang disederhanakan ini memudahkan pengembang aplikasi untuk menggunakan berbagai fungsi kamera.

API memodelkan subsistem kamera sebagai saluran yang mengubah permintaan masuk untuk pengambilan bingkai menjadi bingkai, dengan basis 1:1. Permintaan merangkum semua informasi konfigurasi tentang penangkapan dan pemrosesan bingkai. Ini termasuk resolusi dan format piksel; sensor manual, lensa dan kontrol lampu kilat; 3A mode operasi; RAW-> kontrol pemrosesan YUV; generasi statistik; dan seterusnya.

Secara sederhana, kerangka kerja aplikasi meminta bingkai dari subsistem kamera, dan subsistem kamera mengembalikan hasil ke aliran keluaran. Selain itu, metadata yang berisi informasi seperti ruang warna dan bayangan lensa dihasilkan untuk setiap rangkaian hasil. Anda dapat menganggap kamera versi 3 sebagai saluran ke aliran satu arah kamera versi 1. Ini mengubah setiap permintaan pengambilan menjadi satu gambar yang ditangkap oleh sensor, yang diproses menjadi:

  • Objek Hasil dengan metadata tentang penangkapan.
  • Satu hingga N buffer data gambar, masing-masing ke Surface tujuannya sendiri.

Kumpulan kemungkinan keluaran Surface telah dikonfigurasikan sebelumnya:

  • Setiap Permukaan adalah tujuan untuk aliran buffer gambar dengan resolusi tetap.
  • Hanya sejumlah kecil Permukaan yang dapat dikonfigurasi sebagai output sekaligus (~3).

Permintaan berisi semua pengaturan pengambilan yang diinginkan dan daftar Permukaan keluaran untuk memasukkan buffer gambar ke dalam permintaan ini (dari total set yang dikonfigurasi). Permintaan dapat dilakukan sekali saja (dengan capture() ), atau dapat diulang tanpa batas waktu (dengan setRepeatingRequest() ). Tangkapan memiliki prioritas di atas permintaan berulang.

Model data kamera

Gambar 1. Model operasi inti kamera

Gambaran umum kamera HAL1

Versi 1 dari subsistem kamera dirancang sebagai kotak hitam dengan kontrol tingkat tinggi dan tiga mode operasi berikut:

  • Pratinjau
  • Rekaman video
  • Masih Menangkap

Setiap mode memiliki kemampuan yang sedikit berbeda dan tumpang tindih. Hal ini mempersulit penerapan fitur baru seperti mode burst, yang berada di antara dua mode operasi.

Diagram blok kamera

Gambar 2. Komponen kamera

Android 7.0 terus mendukung kamera HAL1 karena banyak perangkat masih mengandalkannya. Selain itu, layanan kamera Android mendukung penerapan kedua HAL (1 dan 3), yang berguna saat Anda ingin mendukung kamera depan yang kurang mampu dengan kamera HAL1 dan kamera belakang yang lebih canggih dengan kamera HAL3.

Ada modul HAL kamera tunggal (dengan nomor versinya sendiri ), yang mencantumkan beberapa perangkat kamera independen yang masing-masing memiliki nomor versinya sendiri. Modul kamera 2 atau yang lebih baru diperlukan untuk mendukung perangkat 2 atau yang lebih baru, dan modul kamera tersebut dapat memiliki campuran versi perangkat kamera (inilah yang kami maksud ketika kami mengatakan Android mendukung penerapan kedua HAL).