Mode 3A dan Transisi Status

Sementara algoritme 3A aktual hingga implementasi HAL, deskripsi mesin status tingkat tinggi ditentukan oleh antarmuka HAL untuk memungkinkan perangkat HAL dan kerangka kerja berkomunikasi tentang status 3A saat ini dan memicu peristiwa 3A.

Saat perangkat dibuka, semua status 3A individual harus STATE_INACTIVE. Konfigurasi aliran tidak mengatur ulang 3A. Misalnya, fokus terkunci harus dipertahankan di seluruh panggilan configure() .

Memicu tindakan 3A cukup dengan menyetel entri pemicu yang relevan dalam setelan untuk permintaan berikutnya guna menunjukkan awal pemicu. Misalnya, pemicu untuk memulai pemindaian fokus otomatis adalah menyetel entri ANDROID_CONTROL_AF_TRIGGER ke ANDROID_CONTROL_AF_TRIGGER_START untuk satu permintaan; dan membatalkan pemindaian fokus otomatis dipicu dengan menyetel ANDROID_CONTROL_AF_TRIGGER ke ANDROID_CONTRL_AF_TRIGGER_CANCEL. Jika tidak, entri tidak akan ada atau disetel ke ANDROID_CONTROL_AF_TRIGGER_IDLE. Setiap permintaan dengan entri pemicu yang disetel ke nilai non-IDLE akan diperlakukan sebagai peristiwa pemicu independen.

Di tingkat atas, 3A dikendalikan oleh setelan ANDROID_CONTROL_MODE. Ini memilih antara tidak ada 3A (ANDROID_CONTROL_MODE_OFF), mode AUTO normal (ANDROID_CONTROL_MODE_AUTO), dan menggunakan pengaturan mode pemandangan (ANDROID_CONTROL_USE_SCENE_MODE):

  • Dalam mode OFF, masing-masing mode auto-focus (AF), auto-exposure (AE), dan auto-whitebalance (AWB) secara efektif OFF, dan tidak ada kontrol pengambilan yang dapat ditimpa oleh rutinitas 3A.
  • Dalam mode AUTO, mode AF, AE, dan AWB semuanya menjalankan algoritme independennya sendiri, dan memiliki entri metadata mode, status, dan pemicunya sendiri, seperti yang tercantum di bagian berikutnya.
  • Dalam USE_SCENE_MODE, nilai entri ANDROID_CONTROL_SCENE_MODE harus digunakan untuk menentukan perilaku rutinitas 3A. Dalam SCENE_MODE selain FACE_PRIORITY, HAL harus mengganti nilai ANDROID_CONTROL_AE/AWB/AF_MODE menjadi mode yang diinginkan untuk SCENE_MODE yang dipilih. Misalnya, HAL mungkin lebih memilih SCENE_MODE_NIGHT untuk menggunakan mode CONTINUOUS_FOCUS AF. Pilihan pengguna AE/AWB/AF_MODE saat adegan harus diabaikan untuk mode pemandangan ini.
  • Untuk SCENE_MODE_FACE_PRIORITY, kontrol AE/AWB/AFMODE bekerja seperti pada ANDROID_CONTROL_MODE_AUTO, tetapi rutinitas 3A harus bias terhadap pengukuran dan pemfokusan pada setiap wajah yang terdeteksi dalam adegan.

Pengaturan fokus otomatis dan entri hasil

Entri metadata utama
ANDROID_CONTROL_AF_MODE Kontrol untuk memilih mode fokus otomatis saat ini. Ditetapkan oleh kerangka kerja dalam pengaturan permintaan.
AF_MODE_OFF AF dinonaktifkan; kerangka/aplikasi secara langsung mengontrol posisi lensa.
AF_MODE_AUTO Autofokus sapuan tunggal. Tidak ada pergerakan lensa kecuali AF dipicu.
AF_MODE_MACRO Autofokus jarak dekat sapuan tunggal. Tidak ada pergerakan lensa kecuali AF dipicu
AF_MODE_CONTINUOUS_VIDEO Pemfokusan kontinu yang mulus, untuk merekam video. Pemicu segera mengunci fokus di posisi saat ini. Membatalkan melanjutkan pemfokusan berkelanjutan.
AF_MODE_CONTINUOUS_PICTURE Pemfokusan kontinu cepat, untuk pengambilan gambar diam tanpa rana-lag. Memicu kunci fokus setelah sapuan aktif saat ini selesai. Membatalkan melanjutkan pemfokusan berkelanjutan.
AF_MODE_EDOF Pemfokusan kedalaman bidang lanjutan yang diperluas. Tidak ada pemindaian fokus otomatis, jadi memicu atau membatalkannya tidak akan berpengaruh. Gambar difokuskan secara otomatis oleh HAL.
ANDROID_CONTROL_AF_STATE Metadata dinamis yang menjelaskan status algoritme AF saat ini, dilaporkan oleh HAL dalam metadata hasil.
AF_STATE_INACTIVE Tidak ada pemfokusan yang dilakukan, atau algoritme disetel ulang. Lensa tidak bergerak. Selalu status untuk MODE_OFF atau MODE_EDOF. Ketika perangkat dibuka, itu harus dimulai dalam keadaan ini.
AF_STATE_PASSIVE_SCAN Algoritme fokus berkelanjutan sedang memindai fokus yang baik. Lensa bergerak.
AF_STATE_PASSIVE_FOCUSED Sebuah algoritma fokus terus menerus percaya itu terfokus dengan baik. Lensa tidak bergerak. HAL dapat secara spontan meninggalkan keadaan ini.
AF_STATE_PASSIVE_UNFOCUSED Sebuah algoritma fokus terus menerus percaya itu tidak terfokus dengan baik. Lensa tidak bergerak. HAL dapat secara spontan meninggalkan keadaan ini.
AF_STATE_ACTIVE_SCAN Pemindaian yang dipicu oleh pengguna sedang berlangsung.
AF_STATE_FOCUSED_LOCKED Algoritma AF percaya itu terfokus. Lensa tidak bergerak.
AF_STATE_NOT_FOCUSED_LOCKED Algoritme AF tidak dapat fokus. Lensa tidak bergerak.
ANDROID_CONTROL_AF_TRIGGER Kontrol untuk memulai pemindaian fokus otomatis, yang artinya tergantung pada mode dan status. Ditetapkan oleh kerangka kerja dalam pengaturan permintaan.
AF_TRIGGER_IDLE Tidak ada pemicu saat ini.
AF_TRIGGER_START Pemicu dimulainya pemindaian AF. Efek tergantung pada mode dan status.
AF_TRIGGER_CANCEL Batalkan pemindaian AF saat ini jika ada, dan setel ulang algoritme ke default.
Entri metadata tambahan
ANDROID_CONTROL_AF_REGIONS Kontrol untuk memilih bidang bidang pandang (FOV) yang harus digunakan untuk menentukan fokus yang baik. Ini berlaku untuk semua mode AF yang memindai fokus. Ditetapkan oleh kerangka kerja dalam pengaturan permintaan.

Pengaturan eksposur otomatis dan entri hasil

Entri metadata utama
ANDROID_CONTROL_AE_MODE Kontrol untuk memilih mode eksposur otomatis saat ini. Ditetapkan oleh kerangka kerja dalam pengaturan permintaan.
AE_MODE_OFF Autoexposure dinonaktifkan; pengguna mengontrol eksposur, penguatan, durasi bingkai, dan lampu kilat.
AE_MODE_ON Autoexposure standar, dengan kontrol flash dinonaktifkan. Pengguna dapat mengatur flash ke api atau ke mode obor.
AE_MODE_ON_AUTO_FLASH Autoexposure standar, dengan flash pada kebijaksanaan HAL untuk precapture dan still capture. Kontrol pengguna flash dinonaktifkan.
AE_MODE_ON_ALWAYS_FLASH Autoexposure standar, dengan flash selalu diaktifkan untuk pengambilan gambar, dan atas kebijaksanaan HAL untuk pengambilan gambar sebelumnya. Kontrol pengguna flash dinonaktifkan.
AE_MODE_ON_AUTO_FLASH_REDEYE Autoexposure standar, dengan flash pada kebijaksanaan HAL untuk precapture dan still capture. Gunakan flash burst di akhir urutan pra-pengambilan untuk mengurangi mata merah di gambar akhir. Kontrol pengguna flash dinonaktifkan.
ANDROID_CONTROL_AE_STATE Metadata dinamis yang menjelaskan status algoritme AE saat ini, dilaporkan oleh HAL dalam metadata hasil.
AE_STATE_INACTIVE Status AE awal setelah sakelar mode. Ketika perangkat dibuka, itu harus dimulai dalam keadaan ini.
AE_STATE_SEARCHING AE tidak terkonvergensi ke nilai yang baik dan sedang menyesuaikan parameter eksposur.
AE_STATE_CONVERGED AE telah menemukan nilai eksposur yang baik untuk pemandangan saat ini, dan parameter eksposur tidak berubah. HAL dapat secara spontan meninggalkan keadaan ini untuk mencari solusi yang lebih baik.
AE_STATE_LOCKED AE telah dikunci dengan kontrol AE_LOCK. Nilai eksposur tidak berubah.
AE_STATE_FLASH_REQUIRED HAL memiliki eksposur konvergen tetapi percaya bahwa flash diperlukan untuk gambar yang cukup terang. Digunakan untuk menentukan apakah frame zero-shutter-lag dapat digunakan.
AE_STATE_PRECAPTURE HAL berada di tengah urutan precapture. Tergantung pada mode AE, mode ini mungkin melibatkan penembakan blitz untuk pengukuran atau ledakan pulsa blitz untuk pengurangan mata merah.
ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER Kontrol untuk memulai urutan pengukuran sebelum mengambil gambar berkualitas tinggi. Ditetapkan oleh kerangka kerja dalam pengaturan permintaan.
PRECAPTURE_TRIGGER_IDLE Tidak ada pemicu saat ini.
PRECAPTURE_TRIGGER_START Mulai urutan precapture. HAL harus menggunakan permintaan berikutnya untuk mengukur eksposur/keseimbangan putih yang baik untuk pengambilan gambar resolusi tinggi yang akan datang.
Entri metadata tambahan
ANDROID_CONTROL_AE_LOCK Kontrol untuk mengunci kontrol AE ke nilainya saat ini.
ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION Kontrol untuk menyesuaikan titik kecerahan target algoritma AE.
ANDROID_CONTROL_AE_TARGET_FPS_RANGE Kontrol untuk memilih rentang kecepatan bingkai target untuk algoritme AE. Rutinitas AE tidak dapat mengubah kecepatan bingkai menjadi di luar batas ini.
ANDROID_CONTROL_AE_REGIONS Kontrol untuk memilih wilayah FOV yang harus digunakan untuk menentukan tingkat eksposur yang baik. Ini berlaku untuk semua mode AE ​​selain OFF.

Pengaturan whitebalance otomatis dan entri hasil

Entri metadata utama
ANDROID_CONTROL_AWB_MODE Kontrol untuk memilih mode keseimbangan putih saat ini.
AWB_MODE_OFF Keseimbangan putih otomatis dinonaktifkan. Pengguna mengontrol matriks warna.
AWB_MODE_AUTO Keseimbangan putih otomatis diaktifkan; 3A mengontrol transformasi warna, mungkin menggunakan transformasi yang lebih kompleks daripada matriks sederhana.
AWB_MODE_INCANDESCENT Pengaturan white balance tetap baik untuk pencahayaan pijar dalam ruangan (tungsten), kira-kira 2700K.
AWB_MODE_FLUORESCENT Pengaturan white balance tetap baik untuk pencahayaan fluorescent, kira-kira 5000K.
AWB_MODE_WARM_FLUORESCENT Pengaturan white balance tetap baik untuk pencahayaan fluorescent, kira-kira 3000K.
AWB_MODE_DAYLIGHT Pengaturan white balance tetap baik untuk siang hari, kira-kira 5500K.
AWB_MODE_CLOUDY_DAYLIGHT Pengaturan keseimbangan putih tetap baik untuk siang hari yang mendung, kira-kira 6500K.
AWB_MODE_TWILIGHT Pengaturan white balance tetap baik untuk mendekati matahari terbenam/terbit, kira-kira 15000K.
AWB_MODE_SHADE Pengaturan white balance tetap baik untuk area yang diterangi matahari secara tidak langsung, kira-kira 7500K.
ANDROID_CONTROL_AWB_STATE Metadata dinamis yang menjelaskan status algoritme AWB saat ini, dilaporkan oleh HAL dalam metadata hasil.
AWB_STATE_INACTIVE Status AWB awal setelah sakelar mode. Ketika perangkat dibuka, itu harus dimulai dalam keadaan ini.
AWB_STATE_SEARCHING AWB tidak terkonvergensi ke nilai yang baik dan mengubah parameter penyesuaian warna.
AWB_STATE_CONVERGED AWB telah menemukan nilai penyesuaian warna yang baik untuk pemandangan saat ini, dan parameternya tidak berubah. HAL dapat secara spontan meninggalkan keadaan ini untuk mencari solusi yang lebih baik.
AWB_STATE_LOCKED AWB telah dikunci dengan kontrol AWB_LOCK. Nilai penyesuaian warna tidak berubah.
Entri metadata tambahan
ANDROID_CONTROL_AWB_LOCK Kontrol untuk mengunci penyesuaian warna AWB ke nilainya saat ini.
ANDROID_CONTROL_AWB_REGIONS Kontrol untuk memilih wilayah FOV yang harus digunakan untuk menentukan keseimbangan warna yang baik. Ini hanya berlaku untuk mode keseimbangan putih otomatis.

Catatan transisi mesin keadaan umum

Beralih antara mode AF, AE, atau AWB selalu menyetel ulang 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 ke TIDAK AKTIF.

Tabel di bawah ini adalah per-mode.

Mesin status AF

mode = AF_MODE_OFF atau AF_MODE_EDOF
Negara Penyebab transformasi negara bagian baru Catatan
TIDAK AKTIF AF dinonaktifkan
mode = AF_MODE_AUTO atau AF_MODE_MACRO
Negara Penyebab transformasi negara bagian baru Catatan
TIDAK AKTIF AF_TRIGGER ACTIVE_SCAN

Mulai sapuan AF

Lensa sekarang bergerak

ACTIVE_SCAN Sapuan AF selesai FOCUSED_LOCKED

Jika AF berhasil

Lensa sekarang terkunci

ACTIVE_SCAN Sapuan AF selesai NOT_FOCUSED_LOCKED

Jika AF berhasil

Lensa sekarang terkunci

ACTIVE_SCAN AF_CANCEL TIDAK AKTIF

Batalkan/setel ulang AF

Lensa sekarang terkunci

FOCUSED_LOCKED AF_CANCEL TIDAK AKTIF Batalkan/setel ulang AF
FOCUSED_LOCKED AF_TRIGGER ACTIVE_SCAN

Mulai sapuan baru

Lensa sekarang bergerak

NOT_FOCUSED_LOCKED AF_CANCEL TIDAK AKTIF Batalkan/setel ulang AF
NOT_FOCUSED_LOCKED AF_TRIGGER ACTIVE_SCAN

Mulai sapuan baru

Lensa sekarang bergerak

Semua negara bagian Perubahan mode TIDAK AKTIF
mode = AF_MODE_CONTINUOUS_VIDEO
Negara Penyebab transformasi negara bagian baru Catatan
TIDAK AKTIF HAL memulai pemindaian baru PASSIVE_SCAN

Mulai sapuan AF

Lensa sekarang bergerak

TIDAK AKTIF AF_TRIGGER NOT_FOCUSED_LOCKED

Permintaan status AF

Lensa sekarang terkunci

PASSIVE_SCAN HAL menyelesaikan pemindaian saat ini PASSIVE_FOCUSED

Akhiri pemindaian AF

Lensa sekarang terkunci

PASSIVE_SCAN AF_TRIGGER FOCUSED_LOCKED

Transformasi langsung jika fokusnya bagus

Lensa sekarang terkunci

PASSIVE_SCAN AF_TRIGGER NOT_FOCUSED_LOCKED

Transformasi langsung jika fokus buruk

Lensa sekarang terkunci

PASSIVE_SCAN AF_CANCEL TIDAK AKTIF

Atur ulang posisi lensa

Lensa sekarang terkunci

PASSIVE_FOCUSED HAL memulai pemindaian baru PASSIVE_SCAN

Mulai pemindaian AF

Lensa sekarang bergerak

PASSIVE_FOCUSED AF_TRIGGER FOCUSED_LOCKED

Transformasi langsung jika fokusnya bagus

Lensa sekarang terkunci

PASSIVE_FOCUSED AF_TRIGGER NOT_FOCUSED_LOCKED Transformasi langsung jika fokus buruk

Lensa sekarang terkunci

FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED Tidak berpengaruh
FOCUSED_LOCKED AF_CANCEL TIDAK AKTIF Mulai ulang pemindaian AF
NOT_FOCUSED_LOCKED AF_TRIGGER NOT_FOCUSED_LOCKED Tidak berpengaruh
NOT_FOCUSED_LOCKED AF_CANCEL TIDAK AKTIF Mulai ulang pemindaian AF
mode = AF_MODE_CONTINUOUS_PICTURE
Negara Penyebab transformasi negara bagian baru Catatan
TIDAK AKTIF HAL memulai pemindaian baru PASSIVE_SCAN

Mulai pemindaian AF

Lensa sekarang bergerak

TIDAK AKTIF AF_TRIGGER NOT_FOCUSED_LOCKED

Permintaan status AF

Lensa sekarang terkunci

PASSIVE_SCAN HAL menyelesaikan pemindaian saat ini PASSIVE_FOCUSED Akhiri pemindaian AF

Lensa sekarang terkunci

PASSIVE_SCAN AF_TRIGGER FOCUSED_LOCKED

Transformasi akhirnya setelah fokus baik

Lensa sekarang terkunci

PASSIVE_SCAN AF_TRIGGER NOT_FOCUSED_LOCKED

Transformasi akhirnya jika tidak bisa fokus

Lensa sekarang terkunci

PASSIVE_SCAN AF_CANCEL TIDAK AKTIF

Atur ulang posisi lensa

Lensa sekarang terkunci

PASSIVE_FOCUSED HAL memulai pemindaian baru PASSIVE_SCAN

Mulai pemindaian AF

Lensa sekarang bergerak

PASSIVE_FOCUSED AF_TRIGGER FOCUSED_LOCKED

Transformasi langsung jika fokusnya bagus

Lensa sekarang terkunci

PASSIVE_FOCUSED AF_TRIGGER NOT_FOCUSED_LOCKED

Transformasi langsung jika fokus buruk

Lensa sekarang terkunci

FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED Tidak berpengaruh
FOCUSED_LOCKED AF_CANCEL TIDAK AKTIF Mulai ulang pemindaian AF
NOT_FOCUSED_LOCKED AF_TRIGGER NOT_FOCUSED_LOCKED Tidak berpengaruh
NOT_FOCUSED_LOCKED AF_CANCEL TIDAK AKTIF Mulai ulang pemindaian AF

Mesin status AE dan AWB

Mesin negara AE dan AWB sebagian besar identik. AE memiliki status FLASH_REQUIRED dan PRECAPTURE tambahan. Jadi baris di bawah yang merujuk ke dua status tersebut harus diabaikan untuk mesin status AWB.

mode = AE_MODE_OFF / mode AWB bukan AUTO
Negara Penyebab transformasi negara bagian baru Catatan
TIDAK AKTIF AE/AWB dinonaktifkan
mode = AE_MODE_ON_* / AWB_MODE_AUTO
Negara Penyebab transformasi negara bagian baru Catatan
TIDAK AKTIF HAL memulai pemindaian AE/AWB MENCARI
TIDAK AKTIF AE/AWB_LOCK aktif TERKUNCI Nilai terkunci
MENCARI HAL menyelesaikan pemindaian AE/AWB KONVERSI Nilai bagus, tidak berubah
MENCARI HAL menyelesaikan pemindaian AE FLASH_REQUIRED Konvergen tapi terlalu gelap tanpa flash
MENCARI AE/AWB_LOCK aktif TERKUNCI Nilai terkunci
KONVERSI HAL memulai pemindaian AE/AWB MENCARI Nilai terkunci
KONVERSI AE/AWB_LOCK aktif TERKUNCI Nilai terkunci
FLASH_REQUIRED HAL memulai pemindaian AE/AWB MENCARI Nilai terkunci
FLASH_REQUIRED AE/AWB_LOCK aktif TERKUNCI Nilai terkunci
TERKUNCI AE/AWB_LOCK nonaktif MENCARI Nilai tidak bagus setelah dibuka
TERKUNCI AE/AWB_LOCK nonaktif KONVERSI Nilai bagus setelah membuka kunci
TERKUNCI AE_LOCK mati FLASH_REQUIRED Eksposur bagus, tapi terlalu gelap
Semua negara bagian AE PRECAPTURE_START PRECAPTURE Mulai urutan precapture
PRECAPTURE Urutan selesai, AE_LOCK off KONVERSI Siap untuk tangkapan berkualitas tinggi
PRECAPTURE Urutan selesai, AE_LOCK aktif TERKUNCI Siap untuk tangkapan berkualitas tinggi

Mengaktifkan kontrol manual

Beberapa kontrol juga terlibat dalam mengonfigurasi blok 3A perangkat untuk memungkinkan kontrol aplikasi langsung.

Model HAL untuk kontrol 3A adalah bahwa untuk setiap permintaan, HAL memeriksa keadaan bidang kontrol 3A. Jika ada rutin 3A yang diaktifkan, maka rutin tersebut akan menimpa variabel kontrol yang terkait dengan rutinitas tersebut, dan nilai penggantian ini kemudian tersedia dalam metadata hasil untuk pengambilan tersebut. Jadi misalnya, jika eksposur otomatis diaktifkan dalam permintaan, HAL harus menimpa bidang eksposur, penguatan, dan durasi bingkai (dan berpotensi bidang flash, tergantung pada mode AE) dari permintaan. Daftar kontrol yang relevan adalah:

Nama kontrol Satuan Catatan
android.control.mode enum: OFF, AUTO, USE_SCENE_MODE Kontrol 3A tingkat tinggi. Saat diatur ke OFF, semua kontrol 3A oleh HAL dinonaktifkan. Aplikasi harus mengatur bidang untuk parameter pengambilan itu sendiri. Jika disetel ke AUTO, kontrol algoritme individual di android.control.* akan berlaku, seperti android.control.afMode. Saat diatur ke USE_SCENE_MODE, kontrol individu di android.control.* sebagian besar dinonaktifkan, dan HAL mengimplementasikan salah satu pengaturan mode pemandangan (seperti ACTION, SUNSET, atau PARTY) sesuai keinginan.
android.control.afMode enum OFF berarti kontrol manual pemfokusan lensa melalui android.lens.focusDistance.
android.control.aeMode enum OFF berarti kontrol manual dari eksposur/perolehan/durasi frame melalui android.sensor.exposureTime / .sensitivity / .frameDuration
android.control.awbMode enum OFF berarti kontrol manual white balance.