Mode 3A dan Transisi Status

Meskipun algoritme 3A sebenarnya masih sesuai dengan 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 hanya melibatkan pengaturan entri pemicu yang relevan dalam pengaturan untuk permintaan berikutnya guna menunjukkan dimulainya 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 dikontrol oleh pengaturan ANDROID_CONTROL_MODE. Ini memilih antara no 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 dikesampingkan oleh rutinitas 3A.
  • Dalam mode AUTO, mode AF, AE, dan AWB menjalankan algoritme independennya masing-masing, dan memiliki mode, status, dan entri metadata 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. Di SCENE_MODE selain FACE_PRIORITY, HAL harus mengganti nilai ANDROID_CONTROL_AE/AWB/AF_MODE agar menjadi mode yang disukai untuk SCENE_MODE yang dipilih. Misalnya, HAL mungkin lebih memilih SCENE_MODE_NIGHT untuk menggunakan mode CONTINUOUS_FOCUS AF. Pilihan pengguna apa pun terhadap AE/AWB/AF_MODE saat adegan harus diabaikan untuk mode pemandangan ini.
  • Untuk SCENE_MODE_FACE_PRIORITY, kontrol AE/AWB/AFMODE berfungsi seperti pada ANDROID_CONTROL_MODE_AUTO, namun rutinitas 3A harus bias terhadap pengukuran dan pemfokusan pada wajah mana pun yang terdeteksi dalam pemandangan.

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 Fokus otomatis satu sapuan. Tidak ada pergerakan lensa kecuali AF dipicu.
AF_MODE_MACRO Fokus otomatis sapuan tunggal dari jarak dekat. Tidak ada pergerakan lensa kecuali AF dipicu
AF_MODE_CONTINUOUS_VIDEO Pemfokusan berkelanjutan yang halus, untuk merekam video. Memicu segera mengunci fokus pada posisi saat ini. Membatalkan akan melanjutkan pemfokusan berkelanjutan.
AF_MODE_CONTINUOUS_PICTURE Pemfokusan berkelanjutan yang cepat, untuk pengambilan gambar diam tanpa jeda rana. Memicu fokus kunci setelah sapuan aktif selesai. Membatalkan akan melanjutkan pemfokusan berkelanjutan.
AF_MODE_EDOF Kedalaman pemfokusan bidang yang diperluas dan canggih. 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 algoritma AF saat ini, dilaporkan oleh HAL dalam metadata hasil.
AF_STATE_INAKTIF Tidak ada pemfokusan yang dilakukan, atau algoritme telah disetel ulang. Lensa tidak bergerak. Selalu status untuk MODE_OFF atau MODE_EDOF. Saat perangkat dibuka, perangkat harus dimulai dalam keadaan ini.
AF_STATE_PASSIVE_SCAN Algoritme fokus berkelanjutan saat ini sedang memindai fokus yang baik. Lensanya bergerak.
AF_STATE_PASSIVE_FOCUSED Algoritme fokus berkelanjutan meyakini bahwa fokusnya baik. Lensa tidak bergerak. HAL mungkin secara spontan meninggalkan keadaan ini.
AF_STATE_PASSIVE_UNFOCUSED Algoritme fokus berkelanjutan meyakini bahwa fokusnya tidak baik. Lensa tidak bergerak. HAL mungkin secara spontan meninggalkan keadaan ini.
AF_STATE_ACTIVE_SCAN Pemindaian yang dipicu oleh pengguna sedang berlangsung.
AF_STATE_FOCUSED_LOCKED Algoritme AF meyakininya 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 bergantung pada mode dan status. Ditetapkan oleh kerangka kerja dalam pengaturan permintaan.
AF_TRIGGER_IDLE Tidak ada pemicu saat ini.
AF_TRIGGER_START Memicu dimulainya pemindaian AF. Efeknya bergantung pada mode dan status.
AF_TRIGGER_BATAL Batalkan pemindaian AF saat ini jika ada, dan setel ulang algoritma ke default.
Entri metadata tambahan
ANDROID_CONTROL_AF_REGIONS Kontrol untuk memilih wilayah 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 Eksposur otomatis dinonaktifkan; pengguna mengontrol eksposur, penguatan, durasi bingkai, dan lampu kilat.
AE_MODE_ON Eksposur otomatis standar, dengan kontrol lampu kilat dinonaktifkan. Pengguna dapat mengatur flash untuk menyala atau ke mode obor.
AE_MODE_ON_AUTO_FLASH Eksposur otomatis standar, dengan lampu kilat menyala sesuai kebijaksanaan HAL untuk pengambilan gambar awal dan pengambilan gambar diam. Kontrol pengguna terhadap flash dinonaktifkan.
AE_MODE_ON_ALWAYS_FLASH Eksposur otomatis standar, dengan lampu kilat yang selalu menyala untuk pengambilan gambar, dan sesuai kebijaksanaan HAL untuk pengambilan gambar awal. Kontrol pengguna terhadap flash dinonaktifkan.
AE_MODE_ON_AUTO_FLASH_REDEYE Eksposur otomatis standar, dengan lampu kilat menyala sesuai kebijaksanaan HAL untuk pengambilan gambar awal dan pengambilan gambar diam. Gunakan flash burst di akhir urutan pra-pengambilan untuk mengurangi mata merah pada gambar akhir. Kontrol pengguna terhadap flash dinonaktifkan.
ANDROID_CONTROL_AE_STATE Metadata dinamis yang menjelaskan status algoritma AE saat ini, dilaporkan oleh HAL dalam metadata hasil.
AE_STATE_INAKTIF Status AE awal setelah peralihan mode. Saat perangkat dibuka, perangkat 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 mungkin 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 telah menyatukan eksposur tetapi percaya bahwa flash diperlukan untuk mendapatkan gambar yang cukup terang. Digunakan untuk menentukan apakah frame zero-shutter-lag dapat digunakan.
AE_STATE_PRECAPTURE HAL berada di tengah-tengah rangkaian pra-pengambilan. Tergantung pada mode AE, mode ini mungkin melibatkan penyalaan lampu kilat untuk pengukuran atau semburan pulsa lampu kilat 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 pra-pengambilan. HAL harus menggunakan permintaan berikutnya untuk mengukur eksposur/keseimbangan putih yang baik untuk pengambilan 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 algoritma AE. Rutinitas AE tidak dapat mengubah kecepatan bingkai di luar batasan ini.
ANDROID_CONTROL_AE_REGIONS Kontrol untuk memilih wilayah FOV yang harus digunakan untuk menentukan tingkat paparan 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 Memperbaiki pengaturan white balance yang baik untuk pencahayaan pijar (tungsten) dalam ruangan, kira-kira 2700K.
AWB_MODE_FLUORESCENT Memperbaiki pengaturan white balance yang baik untuk pencahayaan neon, kira-kira 5000K.
AWB_MODE_WARM_FLUORESCENT Memperbaiki pengaturan white balance yang baik untuk pencahayaan neon, kira-kira 3000K.
AWB_MODE_DAYLIGHT Memperbaiki pengaturan white balance yang bagus untuk siang hari, kira-kira 5500K.
AWB_MODE_CLOUDY_DAYLIGHT Memperbaiki pengaturan white balance yang bagus untuk siang hari yang mendung, kira-kira 6500K.
AWB_MODE_TWILIGHT Memperbaiki pengaturan white balance yang baik untuk mendekati matahari terbenam/matahari terbit, kira-kira 15000K.
AWB_MODE_SHADE Memperbaiki pengaturan white balance yang baik untuk area yang terkena sinar matahari secara tidak langsung, kira-kira 7500K.
ANDROID_CONTROL_AWB_STATE Metadata dinamis yang menjelaskan status algoritma AWB saat ini, dilaporkan oleh HAL dalam metadata hasil.
AWB_STATE_INAKTIF Status AWB awal setelah peralihan mode. Saat perangkat dibuka, perangkat 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 mungkin 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 INACTIVE. Demikian pula, beralih antara CONTROL_MODE atau CONTROL_SCENE_MODE jika CONTROL_MODE == USE_SCENE_MODE akan menyetel ulang semua status algoritme ke INACTIVE.

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 AKTIF_PINDAI

Mulai sapuan AF

Lensa sekarang bergerak

AKTIF_PINDAI Sapuan AF selesai FOKUS_TERKUNCI

Jika AF berhasil

Lensa sekarang terkunci

AKTIF_PINDAI Sapuan AF selesai NOT_FOCUSED_LOCKED

Jika AF berhasil

Lensa sekarang terkunci

AKTIF_PINDAI AF_BATAL TIDAK AKTIF

Batalkan/reset AF

Lensa sekarang terkunci

FOKUS_TERKUNCI AF_BATAL TIDAK AKTIF Batalkan/reset AF
FOKUS_TERKUNCI AF_TRIGGER AKTIF_PINDAI

Mulai sapuan baru

Lensa sekarang bergerak

NOT_FOCUSED_LOCKED AF_BATAL TIDAK AKTIF Batalkan/reset AF
NOT_FOCUSED_LOCKED AF_TRIGGER AKTIF_PINDAI

Mulai sapuan baru

Lensa sekarang bergerak

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

Mulai sapuan AF

Lensa sekarang bergerak

TIDAK AKTIF AF_TRIGGER NOT_FOCUSED_LOCKED

Kueri status AF

Lensa sekarang terkunci

PASIF_SCAN HAL menyelesaikan pemindaian saat ini PASIF_FOKUS

Akhiri pemindaian AF

Lensa sekarang terkunci

PASIF_SCAN AF_TRIGGER FOKUS_TERKUNCI

Transformasi segera jika fokusnya bagus

Lensa sekarang terkunci

PASIF_SCAN AF_TRIGGER NOT_FOCUSED_LOCKED

Transformasi segera jika fokus buruk

Lensa sekarang terkunci

PASIF_SCAN AF_BATAL TIDAK AKTIF

Atur ulang posisi lensa

Lensa sekarang terkunci

PASIF_FOKUS HAL memulai pemindaian baru PASIF_SCAN

Mulai pemindaian AF

Lensa sekarang bergerak

PASIF_FOKUS AF_TRIGGER FOKUS_TERKUNCI

Transformasi segera jika fokusnya bagus

Lensa sekarang terkunci

PASIF_FOKUS AF_TRIGGER NOT_FOCUSED_LOCKED Transformasi segera jika fokus buruk

Lensa sekarang terkunci

FOKUS_TERKUNCI AF_TRIGGER FOKUS_TERKUNCI Tidak berpengaruh
FOKUS_TERKUNCI AF_BATAL TIDAK AKTIF Mulai ulang pemindaian AF
NOT_FOCUSED_LOCKED AF_TRIGGER NOT_FOCUSED_LOCKED Tidak berpengaruh
NOT_FOCUSED_LOCKED AF_BATAL TIDAK AKTIF Mulai ulang pemindaian AF
modus = AF_MODE_CONTINUOUS_PICTURE
Negara Penyebab transformasi negara bagian baru Catatan
TIDAK AKTIF HAL memulai pemindaian baru PASIF_SCAN

Mulai pemindaian AF

Lensa sekarang bergerak

TIDAK AKTIF AF_TRIGGER NOT_FOCUSED_LOCKED

Kueri status AF

Lensa sekarang terkunci

PASIF_SCAN HAL menyelesaikan pemindaian saat ini PASIF_FOKUS Akhiri pemindaian AF

Lensa sekarang terkunci

PASIF_SCAN AF_TRIGGER FOKUS_TERKUNCI

Transformasi akhirnya fokus dengan baik

Lensa sekarang terkunci

PASIF_SCAN AF_TRIGGER NOT_FOCUSED_LOCKED

Transformasi akhirnya jika tidak bisa fokus

Lensa sekarang terkunci

PASIF_SCAN AF_BATAL TIDAK AKTIF

Atur ulang posisi lensa

Lensa sekarang terkunci

PASIF_FOKUS HAL memulai pemindaian baru PASIF_SCAN

Mulai pemindaian AF

Lensa sekarang bergerak

PASIF_FOKUS AF_TRIGGER FOKUS_TERKUNCI

Transformasi segera jika fokusnya bagus

Lensa sekarang terkunci

PASIF_FOKUS AF_TRIGGER NOT_FOCUSED_LOCKED

Transformasi segera jika fokus buruk

Lensa sekarang terkunci

FOKUS_TERKUNCI AF_TRIGGER FOKUS_TERKUNCI Tidak berpengaruh
FOKUS_TERKUNCI AF_BATAL TIDAK AKTIF Mulai ulang pemindaian AF
NOT_FOCUSED_LOCKED AF_TRIGGER NOT_FOCUSED_LOCKED Tidak berpengaruh
NOT_FOCUSED_LOCKED AF_BATAL 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 mengacu pada kedua status tersebut harus diabaikan untuk mesin status AWB.

mode = mode AE_MODE_OFF / AWB bukan AUTO
Negara Penyebab transformasi negara bagian baru Catatan
TIDAK AKTIF AE/AWB dinonaktifkan
modus = AE_MODE_ON_* / AWB_MODE_AUTO
Negara Penyebab transformasi negara bagian baru Catatan
TIDAK AKTIF HAL memulai pemindaian AE/AWB PENCARIAN
TIDAK AKTIF AE/AWB_LOCK aktif TERKUNCI Nilai terkunci
PENCARIAN HAL menyelesaikan pemindaian AE/AWB KONVERGASI Nilai-nilai yang baik, tidak berubah
PENCARIAN HAL menyelesaikan pemindaian AE FLASH_REQUIRED Menyatu tetapi terlalu gelap tanpa flash
PENCARIAN AE/AWB_LOCK aktif TERKUNCI Nilai terkunci
KONVERGASI HAL memulai pemindaian AE/AWB PENCARIAN Nilai terkunci
KONVERGASI AE/AWB_LOCK aktif TERKUNCI Nilai terkunci
FLASH_REQUIRED HAL memulai pemindaian AE/AWB PENCARIAN Nilai terkunci
FLASH_REQUIRED AE/AWB_LOCK aktif TERKUNCI Nilai terkunci
TERKUNCI AE/AWB_LOCK mati PENCARIAN Nilai tidak bagus setelah dibuka
TERKUNCI AE/AWB_LOCK mati KONVERGASI Nilai bagus setelah dibuka
TERKUNCI AE_LOCK mati FLASH_REQUIRED Eksposur bagus, tapi terlalu gelap
Semua negara bagian AE PRECAPTURE_START PRATANGKAP Mulai urutan pra-pengambilan
PRATANGKAP Urutan selesai, AE_LOCK nonaktif KONVERGASI Siap untuk pengambilan gambar berkualitas tinggi
PRATANGKAP Urutan selesai, AE_LOCK aktif TERKUNCI Siap untuk pengambilan gambar berkualitas tinggi

Mengaktifkan kontrol manual

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

Model HAL untuk kontrol 3A adalah untuk setiap permintaan, HAL memeriksa status bidang kontrol 3A. Jika rutin 3A diaktifkan, maka rutin tersebut akan mengambil alih variabel kontrol yang berhubungan dengan rutin 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 kemungkinan bidang flash, bergantung pada mode AE) dari permintaan tersebut. Daftar pengendalian yang relevan adalah:

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