Referensi Struktur camera3_capture_result

Referensi Struktur camera3_capture_result

#include < camera3.h >

Bidang Data

uint32_t nomor_bingkai
const kamera_metadata_t * hasil
uint32_t jumlah_output_buffers
kamera const3_stream_buffer_t * keluaran_buffer
kamera const3_stream_buffer_t * masukan_buffer
uint32_t hasil_parsial

Detil Deskripsi

kamera3_capture_result_t:

Hasil pengambilan/pemrosesan ulang tunggal oleh perangkat kamera HAL. Ini dikirim ke kerangka kerja secara asinkron dengan process_capture_result(), sebagai respons terhadap satu permintaan penangkapan yang dikirim ke HAL dengan process_capture_request(). Beberapa panggilan process_capture_result() dapat dilakukan oleh HAL untuk setiap permintaan.

Setiap panggilan, semua dengan nomor frame yang sama, mungkin berisi beberapa subset buffer output, dan/atau metadata hasil. Metadata hanya dapat diberikan satu kali untuk nomor frame tertentu; semua panggilan lainnya harus menyetel metadata hasil ke NULL.

Struktur hasil berisi metadata keluaran dari pengambilan ini, dan kumpulan buffer keluaran yang telah/akan diisi untuk pengambilan ini. Setiap buffer keluaran mungkin dilengkapi dengan pagar sinkronisasi rilis yang akan ditunggu oleh kerangka kerja sebelum dibaca, jika buffer belum diisi oleh HAL.

>= KAMERA_DEVICE_API_VERSION_3_2:

Metadata dapat diberikan beberapa kali untuk satu nomor frame. Kerangka kerja ini akan mengumpulkan kumpulan hasil akhir dengan menggabungkan setiap hasil parsial menjadi kumpulan hasil total.

Jika buffer input diberikan dalam permintaan, HAL harus mengembalikannya di salah satu panggilan process_capture_result, dan panggilan tersebut mungkin hanya mengembalikan buffer input, tanpa buffer metadata dan output; pagar sinkronisasi harus ditangani dengan cara yang sama seperti yang dilakukan untuk buffer keluaran.

Pertimbangan kinerja:

Aplikasi juga akan segera menerima hasil parsial ini, sehingga mengirimkan hasil parsial merupakan pengoptimalan kinerja yang sangat disarankan untuk menghindari total latensi pipeline sebelum mengirimkan hasil yang diketahui sejak awal dalam pipeline.

Kasus penggunaan yang umum mungkin menghitung status AF di tengah proses; dengan segera mengembalikan status ke kerangka kerja, kami mendapatkan peningkatan kinerja sebesar 50% dan persepsi respons fokus otomatis.

Definisi pada baris 2251 file camera3.h .

Dokumentasi Lapangan

uint32_t nomor_bingkai

Nomor bingkai adalah bilangan bulat bertambah yang ditetapkan oleh kerangka kerja dalam permintaan yang dikirimkan untuk mengidentifikasi tangkapan ini secara unik. Ini juga digunakan untuk mengidentifikasi permintaan dalam notifikasi asinkron yang dikirim ke camera3_callback_ops_t.notify() .

Definisi pada baris 2258 file camera3.h .

const kamera3_stream_buffer_t * input_buffer

>= KAMERA_DEVICE_API_VERSION_3_2:

Pegangan buffer aliran masukan untuk pengambilan ini. Ini mungkin belum digunakan pada saat HAL memanggil process_capture_result(); kerangka kerja akan menunggu pagar sinkronisasi rilis yang disediakan oleh HAL sebelum menggunakan kembali buffer.

HAL harus menangani pagar sinkronisasi dengan cara yang sama seperti yang dilakukan untuk output_buffers.

Hanya satu buffer input yang diperbolehkan untuk dikirim per permintaan. Sama halnya dengan buffer keluaran, urutan buffer masukan yang dikembalikan harus dijaga oleh HAL.

Pertimbangan kinerja:

Buffer input harus dikembalikan sedini mungkin. Jika HAL mendukung pagar sinkronisasi, HAL dapat memanggil process_capture_result untuk menyerahkannya kembali dengan pagar sinkronisasi yang disetel dengan tepat. Jika pagar sinkronisasi tidak didukung, buffer hanya dapat dikembalikan ketika sudah digunakan, yang mungkin memerlukan waktu lama; HAL dapat memilih untuk menyalin buffer input ini agar buffer tersebut kembali lebih cepat.

Definisi pada baris 2361 file camera3.h .

uint32_t num_output_buffers

Jumlah buffer keluaran yang dikembalikan dalam struktur hasil ini. Harus kurang dari atau sama dengan jumlah permintaan pengambilan yang cocok. Jika ini kurang dari jumlah buffer dalam permintaan penangkapan, setidaknya satu panggilan lagi ke process_capture_result dengan frame_number yang sama harus dilakukan, untuk mengembalikan buffer output yang tersisa ke kerangka kerja. Ini mungkin hanya nol jika struktur menyertakan metadata hasil yang valid atau buffer input dikembalikan dalam hasil ini.

Definisi pada baris 2296 file camera3.h .

const camera3_stream_buffer_t * output_buffers

Pegangan untuk buffer aliran keluaran untuk pengambilan ini. Mereka mungkin belum terisi pada saat HAL memanggil process_capture_result(); kerangka kerja akan menunggu pagar sinkronisasi rilis yang disediakan oleh HAL sebelum membaca buffer.

HAL harus menyetel pagar sinkronisasi rilis buffer aliran ke fd sinkronisasi yang valid, atau ke -1 jika buffer sudah terisi.

Jika HAL mengalami kesalahan saat memproses buffer, dan buffer tidak terisi, kolom status buffer harus disetel ke CAMERA3_BUFFER_STATUS_ERROR. Jika HAL tidak menunggu di pagar perolehan sebelum menemukan kesalahan, pagar perolehan harus disalin ke pagar pelepasan, untuk memungkinkan kerangka kerja menunggu di pagar sebelum menggunakan kembali buffer.

Pagar perolehan harus disetel ke -1 untuk semua buffer keluaran. Jika num_output_buffers adalah nol, ini mungkin NULL. Dalam hal ini, setidaknya satu panggilan process_capture_result lagi harus dilakukan oleh HAL untuk menyediakan buffer keluaran.

Ketika process_capture_result dipanggil dengan buffer baru untuk sebuah frame, semua buffer frame sebelumnya untuk aliran terkait tersebut harus sudah dikirimkan (pagar belum perlu diberi sinyal).

>= KAMERA_DEVICE_API_VERSION_3_2:

Buffer Gralloc untuk suatu bingkai dapat dikirim ke kerangka kerja sebelum pemberitahuan SHUTTER yang sesuai.

Pertimbangan kinerja:

Buffer yang dikirim ke kerangka kerja tidak akan dikirim ke lapisan aplikasi sampai stempel waktu pemaparan telah diterima melalui panggilan SHUTTER notify(). Sangat disarankan untuk mengirimkan panggilan itu sedini mungkin.

Definisi pada baris 2335 file camera3.h .

uint32_t hasil_parsial

>= KAMERA_DEVICE_API_VERSION_3_2:

Untuk memanfaatkan hasil parsial, HAL harus menyetel metadata statis android.request.partialResultCount ke jumlah hasil parsial yang akan dikirimkan untuk setiap frame.

Setiap hasil pengambilan baru dengan hasil parsial harus menyetel kolom ini (partial_result) ke nilai inklusif yang berbeda antara 1 dan android.request.partialResultCount.

HAL yang tidak ingin memanfaatkan fitur ini tidak boleh menyetel android.request.partialResultCount atau parsial_result ke nilai selain 1.

Nilai ini harus disetel ke 0 bila hasil tangkapan hanya berisi buffer dan tidak ada metadata.

Definisi pada baris 2381 file camera3.h .

const camera_metadata_t * hasil

Metadata hasil untuk pengambilan ini. Ini berisi informasi tentang parameter penangkapan akhir, keadaan perangkat keras penangkapan dan pasca-pemrosesan, keadaan algoritma 3A, jika diaktifkan, dan keluaran dari setiap unit statistik yang diaktifkan.

Hanya satu panggilan ke process_capture_result() dengan frame_number tertentu yang dapat menyertakan metadata hasil. Semua panggilan lain untuk frame_number yang sama harus menyetelnya ke NULL.

Jika terjadi kesalahan saat menghasilkan metadata hasil, hasil harus berupa buffer metadata kosong, dan notify() harus dipanggil dengan ERROR_RESULT.

>= KAMERA_DEVICE_API_VERSION_3_2:

Beberapa panggilan ke process_capture_result() dengan frame_number tertentu mungkin menyertakan metadata hasil.

Metadata parsial yang dikirimkan tidak boleh menyertakan kunci metadata apa pun yang dikembalikan dalam hasil parsial sebelumnya untuk frame tertentu. Setiap hasil parsial baru untuk frame tersebut juga harus menetapkan nilai parsial_result yang berbeda.

Jika notify telah dipanggil dengan ERROR_RESULT, semua hasil parsial lebih lanjut untuk frame tersebut akan diabaikan oleh framework.

Definisi pada baris 2285 file camera3.h .


Dokumentasi untuk struct ini dihasilkan dari file berikut:
  • perangkat keras/libhardware/termasuk/perangkat keras/ kamera3.h