Fitur abstraksi hardware kamera (HAL) kamera Android menghubungkan level yang lebih tinggi Camera API framework di android.hardware.camera2 ke {i>driver<i} kamera dan perangkat keras yang mendasarinya. Mulai Android 13, antarmuka HAL kamera pengembangan aplikasi menggunakan AIDL. Android 8.0 diperkenalkan Treble, mengalihkan Camera HAL API ke antarmuka stabil yang didefinisikan oleh bahasa deskripsi antarmuka HAL (HIDL). Jika sebelumnya Anda telah mengembangkan modul dan driver HAL kamera untuk Android 7.0 dan lebih rendah, berhati-hatilah terhadap perubahan dalam pipeline kamera.
HAL kamera AIDL
Untuk perangkat yang menjalankan Android 13 atau yang lebih baru, kamera menyertakan dukungan untuk HAL kamera AIDL. Framework kamera juga mendukung HIDL kamera HAL, namun fitur kamera ditambahkan dalam Android 13 atau yang lebih baru hanya tersedia melalui Antarmuka HAL kamera AIDL. Untuk menerapkan fitur tersebut pada perangkat yang diupgrade ke Android 13 atau yang lebih baru, produsen perangkat harus memigrasikan proses HAL mereka dari penggunaan antarmuka kamera HIDL ke kamera AIDL antarmuka.
Untuk mempelajari manfaat AIDL, lihat AIDL untuk HAL.
Mengimplementasikan HAL kamera AIDL
Untuk implementasi referensi HAL kamera AIDL, lihat
hardware/google/camera/common/hal/aidl_service/
.
Spesifikasi HAL kamera AIDL berada di lokasi berikut:
- Penyedia kamera:
hardware/interfaces/camera/provider/aidl/
- Perangkat kamera:
hardware/interfaces/camera/device/aidl/
- Metadata kamera:
hardware/interfaces/camera/metadata/aidl/
- Jenis data umum:
hardware/interfaces/camera/common/aidl/
Untuk perangkat yang bermigrasi ke AIDL, produsen perangkat mungkin perlu memodifikasi File kebijakan (sepolicy) dan RC Android SELinux bergantung pada kodenya karena ada berbagai struktur penetapan harga.
Validasi HAL kamera AIDL
Untuk menguji implementasi HAL kamera AIDL Anda, pastikan perangkat meneruskan semua
Uji CTS dan VTS. Android 13 memperkenalkan AIDL VTS
menguji,
VtsAidlHalCameraProvider_TargetTest.cpp
.
Fitur Kamera HAL3
Tujuan dari desain ulang Android Camera API adalah untuk secara substansial meningkatkan kemampuan aplikasi untuk mengontrol subsistem kamera pada perangkat Android sekaligus menata ulang API agar lebih efisien dan mudah dikelola. Persyaratan tambahan memudahkan pembuatan aplikasi kamera berkualitas tinggi di Android perangkat yang dapat beroperasi dengan andal di berbagai produk sambil tetap menggunakan algoritma spesifik per perangkat jika memungkinkan untuk memaksimalkan kualitas dan tingkat tinggi.
Versi 3 subsistem kamera menyusun mode operasi menjadi tampilan terpadu tunggal, yang dapat digunakan untuk menerapkan mode sebelumnya dan beberapa hal lainnya, seperti mode burst. Ini menghasilkan kontrol pengguna yang lebih baik untuk fokus, eksposur, dan lainnya pascapemrosesan, seperti pengurangan derau, kontras dan mempertajam. Selain itu, tampilan yang disederhanakan ini memudahkan aplikasi untuk menggunakan berbagai fungsi kamera.
API memodelkan subsistem kamera sebagai pipeline yang mengonversi masuk permintaan pengambilan frame ke dalam frame, dengan basis 1:1. Permintaan mengenkapsulasi semua informasi konfigurasi tentang penangkapan dan pemrosesan sebuah {i>frame<i}. Ini termasuk resolusi dan format {i>pixel<i}; sensor manual, lensa, dan flash kontrol; Mode operasi 3A; Kontrol pemrosesan RAW->YUV; pembuatan statistik; dan seterusnya.
Secara sederhana, framework aplikasi meminta bingkai dari kamera subsistem, dan subsistem kamera mengembalikan hasil ke aliran output. Di beberapa Selain itu, metadata yang berisi informasi seperti ruang warna dan lensa {i>shading<i} akan dibuat untuk setiap set hasil. Anda bisa menganggap kamera versi 3 sebagai pipeline ke aliran satu arah kamera versi 1. Konversi ini mengonversi setiap rekaman menjadi satu gambar yang diambil sensor, yang akan diproses menjadi:
- Objek hasil dengan metadata tentang pengambilan gambar.
- Satu hingga N buffer data gambar, masing-masing ke platform tujuannya sendiri.
Kumpulan kemungkinan platform output sudah dikonfigurasi sebelumnya:
- Setiap platform adalah tujuan untuk aliran buffer gambar dari resolusi.
- Hanya sejumlah kecil platform yang dapat dikonfigurasi sebagai output sekaligus (~3).
Permintaan berisi semua setelan pengambilan yang diinginkan dan daftar output
tempat untuk mendorong buffer gambar ke permintaan ini (dari total
kumpulan yang dikonfigurasi). Permintaan dapat bersifat satu kali (dengan capture()
), atau permintaan
dapat diulang tanpa batas waktu (dengan setRepeatingRequest()
). Tangkapan
memiliki prioritas daripada permintaan berulang.
Ringkasan Kamera HAL1
Versi 1 dari subsistem kamera ini dirancang sebagai kotak hitam dengan tingkat berikut ini dan tiga mode operasi berikut:
- Pratinjau
- Perekaman Video
- Ambil Gambar
Setiap mode memiliki kemampuan yang sedikit berbeda dan tumpang tindih. Hal ini membuat sulit untuk mengimplementasikan fitur baru seperti mode burst, yang berada di antara dua mode operasinya.
Android 7.0 terus mendukung kamera HAL1 karena banyak perangkat masih mengandalkan anotasi. Selain itu, layanan kamera Android mendukung implementasi kedua HAL (1 dan 3), yang berguna ketika Anda ingin mendukung sistem manajemen proyek kamera dengan kamera HAL1 dan kamera belakang yang lebih canggih dengan kamera HAL3.
Ada satu modul HAL kamera (dengan modulnya sendiri versi number), yang mencantumkan beberapa perangkat kamera independen yang masing-masing memiliki nomor versinya sendiri. Diperlukan modul kamera 2 atau yang lebih baru untuk mendukung perangkat 2 atau yang lebih baru, dan modul kamera tersebut dapat memiliki campuran perangkat kamera (ini adalah yang kami maksud ketika kami mengatakan Android mendukung penerapan HAL).