Mode 3A dan transisi status

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.