Sementara algoritma 3A yang sebenarnya bergantung pada implementasi HAL, deskripsi mesin status didefinisikan oleh antarmuka HAL untuk memungkinkan HAL dan kerangka kerja untuk berkomunikasi tentang status 3A saat ini dan memicu peristiwa 3A.
Ketika perangkat dibuka, semua
status 3A harus
NEG_INACTIVE.
Konfigurasi aliran data tidak mereset 3A. Misalnya, fokus terkunci harus
dipertahankan di seluruh panggilan configure()
.
Memicu tindakan 3A hanya melibatkan penetapan entri pemicu yang relevan di pengaturan untuk permintaan berikutnya untuk menunjukkan awal pemicu. Misalnya, pemicu untuk memulai pemindaian fokus otomatis adalah mengatur entri ANDROID_CONTROL_AF_TRIGGER ke ANDROID_CONTROL_AF_TRIGGER_START untuk satu permintaan; dan membatalkan pemindaian fokus otomatis dipicu oleh pengaturan ANDROID_CONTROL_AF_TRIGGER menjadi ANDROID_CONTRL_AF_TRIGGER_CANCEL. Jika tidak, entri tidak akan ada atau disetel ke ANDROID_CONTROL_AF_TRIGGER_IDLE. Masing-masing permintaan dengan entri pemicu yang ditetapkan ke nilai non-IDLE akan diperlakukan sebagai peristiwa pemicu independen.
Di tingkat teratas, 3A dikontrol oleh setelan ANDROID_CONTROL_MODE. Ini memilih antara tidak ada 3A (ANDROID_CONTROL_MODE_OFF), mode AUTO normal (ANDROID_CONTROL_MODE_AUTO), dan menggunakan setelan mode adegan (ANDROID_CONTROL_USE_SCENE_MODE):
- Dalam mode NONAKTIF, setiap fokus otomatis (AF), eksposur otomatis (AE), dan mode autowhite balance (AWB) secara efektif NONAKTIF, dan tidak ada kontrol pengambilan gambar dapat diganti oleh rutinitas 3A.
- Dalam mode AUTO, yaitu mode AF, AE, dan AWB, semuanya berjalan dan memiliki mode, status, dan pemicu entri metadata sendiri, seperti yang tercantum di bagian berikutnya.
- Pada USE_SCENE_MODE, nilai entri ANDROID_CONTROL_SCENE_MODE harus dapat digunakan untuk menentukan perilaku rutinitas 3A. Di SCENE_MODE selain FACE_PRIORITY, HAL harus mengganti nilai ANDROID_CONTROL_AE/AWB/AF_MODE menjadi mode yang disukai untuk yang dipilih SCENE_MODE. Misalnya, HAL mungkin lebih memilih SCENE_MODE_NIGHT untuk menggunakan Mode CONTINUOUS_FOCUS AF. AE/AWB/AF_MODE apa pun yang dipilih pengguna saat scene harus diabaikan untuk mode suasana ini.
- Untuk SCENE_MODE_FACE_PRIORITY, kontrol AE/AWB/AFMODE berfungsi seperti dalam ANDROID_CONTROL_MODE_AUTO, namun rutinitas 3A harus condong ke pengukuran dan berfokus pada wajah-wajah yang terdeteksi di adegan.
Setelan fokus otomatis dan entri hasil
Entri metadata utama | |
---|---|
ANDROID_CONTROL_AF_MODE | Kontrol untuk memilih mode fokus otomatis saat ini. Ditetapkan oleh framework di setelan permintaan. |
MODE_AF_NONAKTIF | AF dinonaktifkan; framework/aplikasi mengontrol posisi lensa secara langsung. |
MODE_OTOMATIS AF | Fokus otomatis satu sapuan. Tidak ada gerakan lensa kecuali AF dipicu. |
MACRO_MODE_AF | Fokus otomatis buka-tutup tunggal. Tidak ada gerakan lensa kecuali AF dipicu |
VIDEO_MODE_CONTINUOUS_AF | Fokus berkelanjutan yang lancar, untuk merekam video. Segera dipicu mengunci fokus di posisi saat ini. Membatalkan resume akan melanjutkan fokus berkelanjutan. |
GAMBAR_MODE_CONTINUOUS_AF | Pemfokusan berkelanjutan cepat, untuk pengambilan gambar tanpa jeda tetap. Pemicuan mengunci fokus setelah sapuan aktif saat ini selesai. Membatalkan resume fokus secara terus-menerus. |
MODE_EDOF_AF | Pemfokusan lebih mendalam bidang lanjutan. Tidak ada pemindaian fokus otomatis, jadi memicunya atau membatalkan tidak akan berdampak apa pun. Gambar difokuskan secara otomatis oleh HAL. |
ANDROID_CONTROL_AF_STATUS | Metadata dinamis yang menjelaskan status algoritma AF saat ini, dilaporkan oleh HAL dalam metadata hasil. |
AF_COUNTRY_INACTIVE | Tidak ada pemfokusan yang telah dilakukan, atau algoritma direset. Lensa tidak bergerak. Selalu status untuk MODE_OFF atau MODE_EDOF. Ketika perangkat dibuka, harus dimulai dari status ini. |
PINDAI_NEGARA_PASSIVE_AF | Algoritma fokus berkelanjutan saat ini memindai fokus yang baik. Lensa bergerak. |
AF_STATUS_PASSIVE_FOKUS | Algoritma fokus berkelanjutan meyakini bahwa fokusnya baik. Lensa tidak bergerak. HAL dapat langsung meninggalkan status ini. |
AF_STATUS_PASSIVE_TIDAK BERFOKUS | Algoritma fokus berkelanjutan meyakini bahwa algoritma tersebut tidak fokus dengan baik. Lensa tidak bergerak. HAL dapat langsung meninggalkan status ini. |
AF_STATUS_ACTIVE_SCAN | Pemindaian yang dipicu oleh pengguna sedang berlangsung. |
AF_STATUS_FOKUS_DIKUNCI | Algoritme AF yakin bahwa gambar difokuskan. Lensa tidak bergerak. |
DIKUNCI | Algoritme AF tidak dapat difokuskan. Lensa tidak bergerak. |
ANDROID_CONTROL_AF_TRIGGER | Kontrol untuk memulai pemindaian fokus otomatis, yang artinya bergantung pada mode dan status. Ditetapkan oleh framework di setelan permintaan. |
AF_TRIGGER_IDLE | Tidak ada pemicu saat ini. |
AF_TRIGGER_START | Memicu awal pemindaian AF. Efek bergantung pada mode dan status. |
AF_TRIGGER_CANCEL | Batalkan pemindaian AF saat ini jika ada, dan reset algoritma ke default. |
Entri metadata tambahan | |
---|---|
ANDROID_CONTROL_AF_REGION | Kontrol untuk memilih area ruang pandang (FOV) yang seharusnya digunakan untuk menentukan fokus yang baik. Ini berlaku untuk semua AF mode yang memindai fokus. Ditetapkan oleh framework di setelan permintaan. |
Setelan eksposur otomatis dan entri hasil
Entri metadata utama | |
---|---|
ANDROID_CONTROL_AE_MODE | Kontrol untuk memilih mode eksposur otomatis saat ini. Ditetapkan oleh di setelan permintaan. |
AE_MODE_NONAKTIF | Eksposur otomatis dinonaktifkan; pengguna mengontrol eksposur, penguatan, frame durasi, dan flash. |
AE_MODE_AKTIF | Eksposur otomatis standar, dengan kontrol flash dinonaktifkan. Pengguna dapat menyetel flash ke mode api atau senter. |
AE_MODE_ON_OTOMAT_FLASH | Eksposur otomatis standar, dengan flash aktif sesuai kebijaksanaan HAL untuk pengambilan gambar dan masih menangkap gambar. Kontrol pengguna atas flash dinonaktifkan. |
AE_MODE_AKTIF_ALWAYS_FLASH | Eksposur standar, dengan flash selalu diaktifkan untuk pengambilan gambar, dan pada efek HAL dalam pengambilan gambar. Kontrol pengguna atas flash dinonaktifkan. |
AE_MODE_ON_AUTO_FLASH_REDEYE | Eksposur otomatis standar, dengan flash aktif sesuai kebijaksanaan HAL untuk pengambilan gambar dan masih menangkap gambar. Gunakan flash burst di akhir urutan pra-tangkapan untuk mengurangi mata merah pada gambar akhir. Kontrol pengguna atas flash dinonaktifkan. |
ANDROID_CONTROL_AE_state | Metadata dinamis yang menjelaskan status algoritma AE saat ini, yang dilaporkan oleh HAL dalam metadata hasil. |
AE_COUNTRY_INACTIVE | Status AE awal setelah pengalihan mode. Ketika dibuka, perangkat harus dimulai dalam status ini. |
AE_COUNTRY_SEARCHING | AE tidak dikonvergensi ke nilai yang baik dan sedang menyesuaikan eksposur parameter. |
AE_NEGARA_KONVERGI | AE telah menemukan nilai eksposur yang baik untuk adegan saat ini, dan parameter eksposur tidak berubah. HAL dapat langsung meninggalkan pesan ini untuk mencari solusi yang lebih baik. |
DIKUNCI | AE telah dikunci dengan kontrol AE_LOCK. Nilai eksposur tidak berganti. |
AE_COUNTRY_FLASH_REQUIRED | HAL memiliki eksposur terkonvergensi tetapi percaya bahwa flash diperlukan untuk gambar yang cukup terang. Digunakan untuk menentukan apakah zero-shutter-lag {i>frame<i} dapat digunakan. |
AE_STATUS_PRECAPTURE | HAL berada di tengah urutan pra-tangkapan. Tergantung pada mode AE, mode ini mungkin melibatkan pengaktifan flash untuk pengukuran atau burst flash berkedip untuk mengurangi mata merah. |
ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER | Kontrol untuk memulai urutan pengukuran sebelum merekam pengukuran kualitas tinggi gambar. Ditetapkan oleh framework di setelan permintaan. |
PRECAPTURE_TRIGGER_IDLE | Tidak ada pemicu saat ini. |
PRECAPTURE_TRIGGER_START | Memulai urutan pra-tangkapan. HAL harus menggunakan permintaan selanjutnya untuk mengukur eksposur/keseimbangan putih yang baik untuk resolusi tinggi mendatang rekam video. |
Entri metadata tambahan | |
---|---|
ANDROID_CONTROL_AE_LOCK | Kontrol untuk mengunci kontrol AE ke nilai saat ini. |
ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION | Kontrol untuk menyesuaikan titik kecerahan target algoritme AE. |
ANDROID_CONTROL_AE_TARGET_FPS_RANGE | Kontrol untuk memilih rentang kecepatan frame target untuk algoritme AE. Rutinitas AE tidak dapat mengubah kecepatan frame di luar ini batas. |
ANDROID_CONTROL_AE_REGION | Kontrol untuk memilih area FOV yang harus digunakan menentukan tingkat paparan yang baik. Ini berlaku untuk semua mode AE selain OFF. |
Setelan white balance otomatis dan entri hasil
Entri metadata utama | |
---|---|
ANDROID_CONTROL_AWB_MODE | Kontrol untuk memilih mode white balance saat ini. |
MODE_AWB_NONAKTIF | White balance otomatis dinonaktifkan. Matriks warna kontrol pengguna. |
MODE_OTOMATIS_AWB | Keseimbangan putih otomatis diaktifkan; 3A mengontrol transformasi warna, mungkin menggunakan transformasi yang lebih kompleks daripada matriks sederhana. |
AWB_MODE_INCANDESCENT | Setelan white balance tetap yang baik untuk lampu pijar dalam ruangan (tungsten) pencahayaan, sekitar 2700K. |
MODE_FLUORESCENT_AWB | Memperbaiki setelan white balance yang baik untuk pencahayaan neon, kira-kira 5.000 RB. |
AWB_MODE_WARM_FLUORESCENT | Memperbaiki setelan white balance yang baik untuk pencahayaan neon, kira-kira 3.000 RB. |
AWB_MODE_DAYLIGHT | Memperbaiki setelan white balance yang bagus untuk siang hari, sekitar 5500K. |
AWB_MODE_CLOUDY_DAYLIGHT | Setelan white balance yang baik untuk siang hari saat mendung, sekitar 6.500 K, tetap bagus. |
AWB_MODE_TWILIGHT | Memperbaiki setelan white balance yang baik untuk saat mendekati matahari terbenam/terbit, kira-kira 15.000 RB. |
MODE_SHADE_AWB | Memperbaiki pengaturan {i>white balance<i} yang baik untuk area yang tidak langsung diterangi matahari, sekitar 7.500.000. |
ANDROID_CONTROL_AWB_state | Metadata dinamis yang menjelaskan status algoritma AWB saat ini, yang dilaporkan oleh HAL dalam metadata hasil. |
AWB_STATE_INACTIVE | Status AWB awal setelah peralihan mode. Ketika dibuka, perangkat harus dimulai dalam status ini. |
AWB_COUNTRY_SEARCHING | AWB tidak dikonvergensi ke nilai yang baik dan mengalami penyesuaian warna parameter. |
AWB_COUNTRY_CONVERGED | AWB telah menemukan nilai penyesuaian warna yang baik untuk adegan saat ini, dan parameter tidak berubah. HAL dapat langsung meninggalkan status ini untuk mencari solusi yang lebih baik. |
AWB_COUNTRY_TERKUNCI | AWB telah dikunci dengan kontrol AWB_LOCK. Penyesuaian warna nilainya tidak berubah. |
Entri metadata tambahan | |
---|---|
ANDROID_CONTROL_AWB_LOCK | Kontrol untuk mengunci penyesuaian warna AWB ke nilai saat ini. |
ANDROID_CONTROL_AWB_REGION | Kontrol untuk memilih area FOV yang harus digunakan menentukan keseimbangan warna yang baik. Ini hanya berlaku untuk keseimbangan putih otomatis mode. |
Catatan transisi mesin status umum
Beralih antara mode AF, AE, atau AWB selalu mereset status algoritme ke TIDAK AKTIF. Demikian pula, beralih antara CONTROL_MODE atau CONTROL_SCENE_MODE jika CONTROL_MODE == USE_SCENE_MODE menyetel ulang semua status algoritme menjadi INACTIVE.
Tabel di bawah ini adalah per mode.
Mesin status AF
mode = AF_MODE_OFF atau AF_MODE_EDOF | |||
---|---|---|---|
Status | Penyebab transformasi | Status baru | Catatan |
TIDAK AKTIF | AF dinonaktifkan |
mode = AF_MODE_AUTO atau AF_MODE_MACRO | |||
---|---|---|---|
Status | Penyebab transformasi | Status baru | Catatan |
TIDAK AKTIF | AF_TRIGGER | ACTIVE_SCAN | Mulai sapu AF Lens kini bergerak |
ACTIVE_SCAN | Sapu AF selesai | DIFOKUSKAN_DIKUNCI | Jika AF berhasil Lens kini dikunci |
ACTIVE_SCAN | Sapu AF selesai | TIDAK_FOKUS_DIKUNCI | Jika AF berhasil Lens kini dikunci |
ACTIVE_SCAN | AF_CANCEL | TIDAK AKTIF | Batalkan/reset AF Lens kini dikunci |
DIFOKUSKAN_DIKUNCI | AF_CANCEL | TIDAK AKTIF | Batalkan/reset AF |
DIFOKUSKAN_DIKUNCI | AF_TRIGGER | ACTIVE_SCAN | Mulai sapu baru Lens kini bergerak |
TIDAK_FOKUS_DIKUNCI | AF_CANCEL | TIDAK AKTIF | Batalkan/reset AF |
TIDAK_FOKUS_DIKUNCI | AF_TRIGGER | ACTIVE_SCAN | Mulai sapu baru Lens kini bergerak |
Semua negara bagian | Pengubahan mode | TIDAK AKTIF |
mode = AF_MODE_CONTINUOUS_VIDEO | |||
---|---|---|---|
Status | Penyebab transformasi | Status baru | Catatan |
TIDAK AKTIF | HAL memulai pemindaian baru | PINDAI_SALAH | Mulai sapu AF Lens kini bergerak |
TIDAK AKTIF | AF_TRIGGER | TIDAK_FOKUS_DIKUNCI | Kueri status AF Lens kini dikunci |
PINDAI_SALAH | HAL menyelesaikan pemindaian saat ini | BERFOKUS_SIRIP | Akhiri pemindaian AF Lens kini dikunci |
PINDAI_SALAH | AF_TRIGGER | DIFOKUSKAN_DIKUNCI | Transformasi segera jika fokusnya bagus Lens kini dikunci |
PINDAI_SALAH | AF_TRIGGER | TIDAK_FOKUS_DIKUNCI | Transformasi segera jika fokus buruk Lens kini dikunci |
PINDAI_SALAH | AF_CANCEL | TIDAK AKTIF | Reset posisi lensa Lens kini dikunci |
BERFOKUS_SIRIP | HAL memulai pemindaian baru | PINDAI_SALAH | Mulai pemindaian AF Lens kini bergerak |
BERFOKUS_SIRIP | AF_TRIGGER | DIFOKUSKAN_DIKUNCI | Transformasi segera jika fokusnya bagus Lens kini dikunci |
BERFOKUS_SIRIP | AF_TRIGGER | TIDAK_FOKUS_DIKUNCI | Transformasi langsung
jika fokus buruk
Lens kini dikunci |
DIFOKUSKAN_DIKUNCI | AF_TRIGGER | DIFOKUSKAN_DIKUNCI | Tanpa efek |
DIFOKUSKAN_DIKUNCI | AF_CANCEL | TIDAK AKTIF | Mulai ulang pemindaian AF |
TIDAK_FOKUS_DIKUNCI | AF_TRIGGER | TIDAK_FOKUS_DIKUNCI | Tanpa efek |
TIDAK_FOKUS_DIKUNCI | AF_CANCEL | TIDAK AKTIF | Mulai ulang pemindaian AF |
mode = AF_MODE_CONTINUOUS_PICTURE | |||
---|---|---|---|
Status | Penyebab transformasi | Status baru | Catatan |
TIDAK AKTIF | HAL memulai pemindaian baru | PINDAI_SALAH | Mulai pemindaian AF Lens kini bergerak |
TIDAK AKTIF | AF_TRIGGER | TIDAK_FOKUS_DIKUNCI | Kueri status AF Lens kini dikunci |
PINDAI_SALAH | HAL menyelesaikan pemindaian saat ini | BERFOKUS_SIRIP | Akhiri pemindaian AF
Lens kini dikunci |
PINDAI_SALAH | AF_TRIGGER | DIFOKUSKAN_DIKUNCI | Transformasi akhir setelah fokus bagus Lens kini dikunci |
PINDAI_SALAH | AF_TRIGGER | TIDAK_FOKUS_DIKUNCI | Transformasi akhir jika tidak dapat berfokus Lens kini dikunci |
PINDAI_SALAH | AF_CANCEL | TIDAK AKTIF | Reset posisi lensa Lens kini dikunci |
BERFOKUS_SIRIP | HAL memulai pemindaian baru | PINDAI_SALAH | Mulai pemindaian AF Lens kini bergerak |
BERFOKUS_SIRIP | AF_TRIGGER | DIFOKUSKAN_DIKUNCI | Transformasi langsung jika fokusnya baik Lens kini dikunci |
BERFOKUS_SIRIP | AF_TRIGGER | TIDAK_FOKUS_DIKUNCI | Transformasi langsung jika fokus buruk Lens kini dikunci |
DIFOKUSKAN_DIKUNCI | AF_TRIGGER | DIFOKUSKAN_DIKUNCI | Tanpa efek |
DIFOKUSKAN_DIKUNCI | AF_CANCEL | TIDAK AKTIF | Mulai ulang pemindaian AF |
TIDAK_FOKUS_DIKUNCI | AF_TRIGGER | TIDAK_FOKUS_DIKUNCI | Tanpa efek |
TIDAK_FOKUS_DIKUNCI | AF_CANCEL | TIDAK AKTIF | Mulai ulang pemindaian AF |
Mesin dengan status AE dan AWB
Mesin status AE dan AWB sebagian besar identik. AE memiliki tambahan Status FLASH_REQUIRED dan PRECAPTURE. Jadi baris di bawahnya merujuk pada kedua status harus diabaikan untuk mesin status AWB.
mode = mode AE_MODE_OFF / AWB bukan AUTO | |||
---|---|---|---|
Status | Penyebab transformasi | Status baru | Catatan |
TIDAK AKTIF | AE/AWB dinonaktifkan |
mode = AE_MODE_ON_* / AWB_MODE_AUTO | |||
---|---|---|---|
Status | Penyebab transformasi | Status baru | Catatan |
TIDAK AKTIF | HAL memulai pemindaian AE/AWB | MENELUSURI | |
TIDAK AKTIF | AE/AWB_LOCK aktif | TERKUNCI | Nilai dikunci |
MENELUSURI | HAL menyelesaikan pemindaian AE/AWB | DIKONVERSI | Nilai-nilai yang baik, tidak berubah |
MENELUSURI | HAL menyelesaikan pemindaian AE | FLASH_REQUIRED | Konvensional tetapi terlalu gelap tanpa flash |
MENELUSURI | AE/AWB_LOCK aktif | TERKUNCI | Nilai dikunci |
DIKONVERSI | HAL memulai pemindaian AE/AWB | MENELUSURI | Nilai dikunci |
DIKONVERSI | AE/AWB_LOCK aktif | TERKUNCI | Nilai dikunci |
FLASH_REQUIRED | HAL memulai pemindaian AE/AWB | MENELUSURI | Nilai dikunci |
FLASH_REQUIRED | AE/AWB_LOCK aktif | TERKUNCI | Nilai dikunci |
TERKUNCI | AE/AWB_LOCK nonaktif | MENELUSURI | Nilai tidak baik setelah membuka kunci |
TERKUNCI | AE/AWB_LOCK nonaktif | DIKONVERSI | Nilai yang baik setelah membuka kunci |
TERKUNCI | AE_LOCK nonaktif | FLASH_REQUIRED | Eksposur bagus, tetapi terlalu gelap |
Semua status AE | PRECAPTURE_MULAI | SIAPKAN | Mulai urutan pra-tangkapan |
SIAPKAN | Urutan selesai, AE_LOCK nonaktif | DIKONVERSI | Siap untuk pengambilan gambar berkualitas tinggi |
SIAPKAN | Urutan selesai, AE_LOCK aktif | TERKUNCI | Siap untuk pengambilan gambar berkualitas tinggi |
Aktifkan kontrol manual
Beberapa kontrol juga terlibat dalam mengkonfigurasi blok 3A perangkat untuk memungkinkan kontrol aplikasi langsung.
Model HAL untuk kontrol 3A adalah bahwa untuk setiap permintaan, HAL memeriksa status kolom kontrol 3A. Jika rutinitas 3A diaktifkan, maka rutinitas menggantikan variabel kontrol yang terkait dengan rutinitas itu, dan nilai penggantian ini kemudian tersedia di metadata hasil untuk rekam video. Sebagai contoh, jika {i>autoexposure<i} diaktifkan dalam sebuah permintaan, HAL harus menimpa kolom eksposur, perolehan, dan durasi frame (dan mungkin kolom flash, bergantung pada mode AE) dari permintaan. Tujuan daftar kontrol yang relevan adalah:
Nama kontrol | Unit | Catatan |
---|---|---|
mode android.control. | enum: OFF, AUTO, USE_SCENE_MODE | Kontrol 3A tingkat tinggi. Bila diatur ke NONAKTIF, semua kontrol 3A oleh HAL dinonaktifkan. Aplikasi harus menetapkan kolom untuk parameter pengambilan itu sendiri. Bila disetel ke OTOMATIS, tiap-tiap algoritme akan mengontrol android.control.* diberlakukan, seperti android.control.afMode. Jika ditetapkan ke USE_SCENE_MODE, setiap kontrol di android.control.* sebagian besar dinonaktifkan, dan HAL mengimplementasikan salah satu mode adegan (seperti ACTION, SUNSET, atau PESTA) sesuai keinginan. |
{i>android.control.afMode<i} | enum | NONAKTIF berarti kontrol lensa manual berfokus melalui android.lens.focusDistance. |
android.control.aeMode | enum | NONAKTIF berarti kontrol manual terhadap durasi eksposur/perolehan/frame melalui android.sensor.exposureTime / .sensitivity / .frameDuration |
android.control.awbMode | enum | NONAKTIF berarti kontrol white balance secara manual. |