Mode 3A dan transisi status

Halaman ini menjelaskan mode 3A dan mesin status untuk perangkat Android. Antarmuka HAL kamera, yang menentukan mesin status pada tingkat tinggi, memungkinkan implementasi HAL dan framework Android mengomunikasikan status 3A saat ini dan memicu peristiwa 3A. Implementasi HAL bertanggung jawab atas algoritma 3A yang mengontrol setelan mode 3A dan transisi status.

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

Memicu tindakan 3A hanya melibatkan penetapan entri pemicu yang relevan di setelan untuk permintaan berikutnya guna menunjukkan awal pemicu. Misalnya, pemicu untuk memulai pemindaian fokus otomatis menetapkan entri ANDROID_CONTROL_AF_TRIGGER ke ANDROID_CONTROL_AF_TRIGGER_START untuk satu permintaan; dan membatalkan pemindaian fokus otomatis dipicu dengan menetapkan ANDROID_CONTROL_AF_TRIGGER ke ANDROID_CONTRL_AF_TRIGGER_CANCEL. Jika tidak, entri tidak akan ada atau ditetapkan ke ANDROID_CONTROL_AF_TRIGGER_IDLE. Setiap 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. Mode ini memilih antara tidak ada 3A (ANDROID_CONTROL_MODE_OFF), mode AUTO normal (ANDROID_CONTROL_MODE_AUTO), dan menggunakan setelan mode scene (ANDROID_CONTROL_USE_SCENE_MODE):

  • Dalam mode NONAKTIF, setiap mode fokus otomatis (AF), eksposur otomatis (AE), dan white balance otomatis (AWB) secara efektif NONAKTIF, dan tidak ada kontrol pengambilan yang dapat diganti oleh rutinitas 3A.
  • Dalam mode AUTO, mode AF, AE, dan AWB semuanya menjalankan algoritma independennya sendiri, dan memiliki entri metadata mode, status, dan pemicunya sendiri, seperti yang tercantum di bagian berikutnya.
  • Di 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 AF CONTINUOUS_FOCUS. Setiap pilihan pengguna AE/AWB/AF_MODE saat scene harus diabaikan untuk mode scene ini.
  • Untuk SCENE_MODE_FACE_PRIORITY, kontrol AE/AWB/AFMODE berfungsi seperti dalam ANDROID_CONTROL_MODE_AUTO, tetapi rutinitas 3A harus bias terhadap pengukuran dan fokus pada wajah yang terdeteksi di dalam scene.

Setelan fokus otomatis dan entri hasil

Entri metadata utama
ANDROID_CONTROL_AF_MODE Kontrol untuk memilih mode fokus otomatis saat ini. Ditetapkan oleh framework dalam setelan permintaan.
AF_MODE_OFF AF dinonaktifkan; framework/aplikasi secara langsung mengontrol posisi lensa.
AF_MODE_AUTO Fokus otomatis sekali geser. Tidak ada gerakan lensa kecuali jika AF dipicu.
AF_MODE_MACRO Fokus otomatis dekat dengan sekali geser. Tidak ada gerakan lensa kecuali jika AF dipicu
AF_MODE_CONTINUOUS_VIDEO Fokus berkelanjutan yang lancar, untuk merekam video. Pemicu akan langsung mengunci fokus di posisi saat ini. Pembatalan akan melanjutkan fokus berkelanjutan.
AF_MODE_CONTINUOUS_PICTURE Fokus berkelanjutan yang cepat, untuk pengambilan gambar diam tanpa jeda shutter. Memicu kunci fokus setelah pembersihan yang saat ini aktif selesai. Membatalkan akan melanjutkan fokus berkelanjutan.
AF_MODE_EDOF Fokus kedalaman bidang yang diperluas dan canggih. Tidak ada pemindaian fokus otomatis, sehingga memicu atau membatalkan pemindaian tidak akan berpengaruh. Gambar difokuskan secara otomatis oleh HAL.
ANDROID_CONTROL_AF_STATE Metadata dinamis yang menjelaskan status algoritma AF saat ini, yang dilaporkan oleh HAL dalam metadata hasil.
AF_STATE_INACTIVE Tidak ada pemfokusan yang dilakukan, atau algoritma direset. Lensa tidak bergerak. Selalu status untuk MODE_OFF atau MODE_EDOF. Saat dibuka, perangkat harus dimulai dalam status ini.
AF_STATE_PASSIVE_SCAN Algoritma fokus kontinu saat ini memindai untuk mendapatkan fokus yang baik. Lensa bergerak.
AF_STATE_PASSIVE_FOCUSED Algoritma fokus berkelanjutan yakin bahwa fokusnya sudah baik. Lensa tidak bergerak. HAL dapat secara spontan keluar dari status ini.
AF_STATE_PASSIVE_UNFOCUSED Algoritma fokus berkelanjutan yakin bahwa fokusnya tidak baik. Lensa tidak bergerak. HAL dapat secara spontan keluar dari status ini.
AF_STATE_ACTIVE_SCAN Pemindaian yang dipicu oleh pengguna sedang berlangsung.
AF_STATE_FOCUSED_LOCKED Algoritma AF yakin bahwa fokusnya sudah tepat. Lensa tidak bergerak.
AF_STATE_NOT_FOCUSED_LOCKED Algoritma AF tidak dapat memfokuskan. 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_REGIONS Kontrol untuk memilih area bidang pandang (FOV) yang harus digunakan untuk menentukan fokus yang baik. Hal ini berlaku untuk semua mode AF 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 framework dalam setelan permintaan.
AE_MODE_OFF Eksposur otomatis dinonaktifkan; pengguna mengontrol eksposur, gain, durasi frame, dan flash.
AE_MODE_ON Eksposur otomatis standar, dengan kontrol flash dinonaktifkan. Pengguna dapat menyetel flash ke mode tembak atau senter.
AE_MODE_ON_AUTO_FLASH Eksposur otomatis standar, dengan flash aktif sesuai kebijaksanaan HAL untuk pra-perekaman dan perekaman diam. Kontrol flash pengguna dinonaktifkan.
AE_MODE_ON_ALWAYS_FLASH Eksposur otomatis standar, dengan flash yang selalu diaktifkan untuk pengambilan gambar, dan atas pertimbangan HAL untuk pra-pengambilan gambar. Kontrol flash pengguna dinonaktifkan.
AE_MODE_ON_AUTO_FLASH_REDEYE Eksposur otomatis standar, dengan flash aktif sesuai kebijaksanaan HAL untuk pra-perekaman dan perekaman diam. Gunakan flash burst di akhir urutan pra-ambilan untuk mengurangi efek mata merah pada gambar akhir. Kontrol flash pengguna dinonaktifkan.
AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY Peningkatan Cahaya Redup akan otomatis menyesuaikan kecerahan streaming Pratinjau dalam kondisi cahaya redup. Hal ini dapat menyebabkan peningkatan blur gerakan dan derau dalam kondisi cahaya redup. Produsen perangkat harus memastikan kecepatan frame tidak turun di bawah 10 fps.
ANDROID_CONTROL_AE_STATE Metadata dinamis yang menjelaskan status algoritma AE saat ini, yang dilaporkan oleh HAL dalam metadata hasil.
AE_STATE_INACTIVE Status AE awal setelah mode beralih. Saat dibuka, perangkat harus dimulai dalam status ini.
AE_STATE_SEARCHING AE tidak dikonvergensikan ke nilai yang baik dan menyesuaikan parameter eksposur.
AE_STATE_CONVERGED AE telah menemukan nilai eksposur yang baik untuk scene saat ini, dan parameter eksposur tidak berubah. HAL dapat secara spontan keluar dari status 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 mengonvergensi eksposur, tetapi yakin 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 pra-perekaman. Bergantung pada mode AE, mode ini dapat melibatkan pengaktifan flash untuk pengukuran atau serangkaian pulsa flash untuk pengurangan mata merah.
ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER Kontrol untuk memulai urutan pengukuran sebelum mengambil gambar berkualitas tinggi. Ditetapkan oleh framework di setelan permintaan.
PRECAPTURE_TRIGGER_IDLE Tidak ada pemicu saat ini.
PRECAPTURE_TRIGGER_START Mulai urutan pra-perekaman. HAL harus menggunakan permintaan berikutnya untuk mengukur eksposur/white balance yang baik untuk pengambilan beresolusi tinggi mendatang.
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 algoritma AE.
ANDROID_CONTROL_AE_TARGET_FPS_RANGE Kontrol untuk memilih rentang kecepatan frame target untuk algoritma AE. Rutinitas AE tidak dapat mengubah kecepatan frame agar berada di luar batas ini.
ANDROID_CONTROL_AE_REGIONS Kontrol untuk memilih area FOV yang harus digunakan untuk menentukan tingkat eksposur yang baik. Hal ini berlaku untuk semua mode AE selain NONAKTIF.

Setelan dan entri hasil autowhitebalance

Entri metadata utama
ANDROID_CONTROL_AWB_MODE Kontrol untuk memilih mode white balance 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 Setelan white balance tetap yang cocok untuk pencahayaan pijar (tungsten) dalam ruangan, sekitar 2700K.
AWB_MODE_FLUORESCENT Setelan white balance tetap yang cocok untuk pencahayaan fluorescent, sekitar 5.000 K.
AWB_MODE_WARM_FLUORESCENT Setelan white balance tetap yang cocok untuk pencahayaan fluorescent, sekitar 3000K.
AWB_MODE_DAYLIGHT Setelan white balance tetap yang cocok untuk cahaya siang hari, sekitar 5500K.
AWB_MODE_CLOUDY_DAYLIGHT Setelan white balance tetap yang cocok untuk cahaya siang hari yang mendung, sekitar 6500K.
AWB_MODE_TWILIGHT Setelan white balance tetap yang cocok untuk saat mendekati matahari terbenam/terbit, sekitar 15.000 K.
AWB_MODE_SHADE Setelan white balance tetap yang cocok untuk area yang diterangi matahari secara tidak langsung, sekitar 7500K.
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 tombol mode ditekan. Saat dibuka, perangkat harus dimulai dalam status ini.
AWB_STATE_SEARCHING AWB tidak dikonvergensikan ke nilai yang baik dan mengubah parameter penyesuaian warna.
AWB_STATE_CONVERGED AWB telah menemukan nilai penyesuaian warna yang baik untuk scene saat ini, dan parameter tidak berubah. HAL dapat secara spontan keluar dari status 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 nilai saat ini.
ANDROID_CONTROL_AWB_REGIONS Kontrol untuk memilih area FOV yang harus digunakan untuk menentukan keseimbangan warna yang baik. Hal ini hanya berlaku untuk mode autowhitebalance.

Catatan transisi mesin status umum

Beralih antarmode AF, AE, atau AWB selalu mereset status algoritma ke TIDAK AKTIF. Demikian pula, beralih antara CONTROL_MODE atau CONTROL_SCENE_MODE jika CONTROL_MODE == USE_SCENE_MODE mereset semua status algoritma ke INACTIVE.

Tabel di bawah 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 sapuan AF

Lensa sekarang bergerak

ACTIVE_SCAN Pemindaian AF selesai FOCUSED_LOCKED

Jika AF berhasil

Lensa kini terkunci

ACTIVE_SCAN Pemindaian AF selesai NOT_FOCUSED_LOCKED

Jika AF berhasil

Lensa kini terkunci

ACTIVE_SCAN AF_CANCEL TIDAK AKTIF

Membatalkan/mereset AF

Lensa kini terkunci

FOCUSED_LOCKED AF_CANCEL TIDAK AKTIF Membatalkan/mereset AF
FOCUSED_LOCKED AF_TRIGGER ACTIVE_SCAN

Mulai pemindaian baru

Lensa sekarang bergerak

NOT_FOCUSED_LOCKED AF_CANCEL TIDAK AKTIF Membatalkan/mereset AF
NOT_FOCUSED_LOCKED AF_TRIGGER ACTIVE_SCAN

Mulai pemindaian baru

Lensa sekarang bergerak

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

Mulai sapuan AF

Lensa sekarang bergerak

TIDAK AKTIF AF_TRIGGER NOT_FOCUSED_LOCKED

Kueri status AF

Lensa kini terkunci

PASSIVE_SCAN HAL menyelesaikan pemindaian saat ini PASSIVE_FOCUSED

Mengakhiri pemindaian AF

Lensa kini terkunci

PASSIVE_SCAN AF_TRIGGER FOCUSED_LOCKED

Transformasi langsung jika fokus bagus

Lensa kini terkunci

PASSIVE_SCAN AF_TRIGGER NOT_FOCUSED_LOCKED

Transformasi langsung jika fokus buruk

Lensa kini terkunci

PASSIVE_SCAN AF_CANCEL TIDAK AKTIF

Mereset posisi lensa

Lensa kini terkunci

PASSIVE_FOCUSED HAL memulai pemindaian baru PASSIVE_SCAN

Mulai pemindaian AF

Lensa sekarang bergerak

PASSIVE_FOCUSED AF_TRIGGER FOCUSED_LOCKED

Transformasi langsung jika fokus bagus

Lensa kini terkunci

PASSIVE_FOCUSED AF_TRIGGER NOT_FOCUSED_LOCKED Transformasi langsung jika fokus buruk

Lensa kini terkunci

FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED Tanpa efek
FOCUSED_LOCKED AF_CANCEL TIDAK AKTIF Memulai ulang pemindaian AF
NOT_FOCUSED_LOCKED AF_TRIGGER NOT_FOCUSED_LOCKED Tanpa efek
NOT_FOCUSED_LOCKED AF_CANCEL TIDAK AKTIF Memulai ulang pemindaian AF
mode = AF_MODE_CONTINUOUS_PICTURE
Status Penyebab transformasi Status baru Catatan
TIDAK AKTIF HAL memulai pemindaian baru PASSIVE_SCAN

Mulai pemindaian AF

Lensa sekarang bergerak

TIDAK AKTIF AF_TRIGGER NOT_FOCUSED_LOCKED

Kueri status AF

Lensa kini terkunci

PASSIVE_SCAN HAL menyelesaikan pemindaian saat ini PASSIVE_FOCUSED Mengakhiri pemindaian AF

Lensa kini terkunci

PASSIVE_SCAN AF_TRIGGER FOCUSED_LOCKED

Transformasi yang akan terjadi setelah fokus bagus

Lensa kini terkunci

PASSIVE_SCAN AF_TRIGGER NOT_FOCUSED_LOCKED

Transformasi akhir jika tidak dapat difokuskan

Lensa kini terkunci

PASSIVE_SCAN AF_CANCEL TIDAK AKTIF

Mereset posisi lensa

Lensa kini 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 kini terkunci

PASSIVE_FOCUSED AF_TRIGGER NOT_FOCUSED_LOCKED

Transformasi langsung jika fokus buruk

Lensa kini terkunci

FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED Tanpa efek
FOCUSED_LOCKED AF_CANCEL TIDAK AKTIF Memulai ulang pemindaian AF
NOT_FOCUSED_LOCKED AF_TRIGGER NOT_FOCUSED_LOCKED Tanpa efek
NOT_FOCUSED_LOCKED AF_CANCEL TIDAK AKTIF Memulai ulang pemindaian AF

Mesin status AE dan AWB

Mesin status 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
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 CONVERGED Nilai yang baik, tidak berubah
MENELUSURI HAL menyelesaikan pemindaian AE FLASH_REQUIRED Terfokus, tetapi terlalu gelap tanpa flash
MENELUSURI AE/AWB_LOCK aktif TERKUNCI Nilai dikunci
CONVERGED HAL memulai pemindaian AE/AWB MENELUSURI Nilai dikunci
CONVERGED 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 bagus setelah unlock
TERKUNCI AE/AWB_LOCK nonaktif CONVERGED Nilai bagus setelah membuka kunci
TERKUNCI AE_LOCK nonaktif FLASH_REQUIRED Eksposur bagus, tetapi terlalu gelap
Semua status AE PRECAPTURE_START PRA-PENANGKAPAN Memulai urutan pra-perekaman
PRA-PENANGKAPAN Urutan selesai, AE_LOCK nonaktif CONVERGED Siap untuk perekaman berkualitas tinggi
PRA-PENANGKAPAN Urutan selesai, AE_LOCK aktif TERKUNCI Siap untuk perekaman berkualitas tinggi

Mengaktifkan kontrol manual

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

Model HAL untuk kontrol 3A adalah bahwa untuk setiap permintaan, HAL memeriksa status kolom kontrol 3A. Jika rutinitas 3A diaktifkan, rutinitas tersebut akan mengganti variabel kontrol yang terkait dengan rutinitas tersebut, dan nilai penggantian ini kemudian tersedia di metadata hasil untuk pengambilan tersebut. Jadi, misalnya, jika eksposur otomatis diaktifkan dalam permintaan, HAL harus menimpa kolom eksposur, gain, dan durasi frame (dan kemungkinan kolom flash, bergantung pada mode AE) permintaan. Daftar kontrol yang relevan adalah:

Nama kontrol Unit Catatan
android.control.mode enum: OFF, AUTO, USE_SCENE_MODE Kontrol 3A tingkat tinggi. Jika disetel ke NONAKTIF, semua kontrol 3A oleh HAL akan dinonaktifkan. Aplikasi harus menetapkan kolom untuk parameter pengambilan itu sendiri. Jika disetel ke AUTO, setiap kontrol algoritma di android.control.* akan diterapkan, seperti android.control.afMode. Jika ditetapkan ke USE_SCENE_MODE, setiap kontrol di android.control.* sebagian besar dinonaktifkan, dan HAL menerapkan salah satu setelan mode scene (seperti ACTION, SUNSET, atau PARTY) sesuai keinginan.
android.control.afMode enum NON aktif berarti kontrol manual fokus lensa melalui android.lens.focusDistance.
android.control.aeMode enum NON aktif berarti kontrol manual durasi eksposur/gain/frame melalui android.sensor.exposureTime / .sensitivity / .frameDuration
android.control.awbMode enum NONAKTIF berarti kontrol manual terhadap keseimbangan putih.